28#include "moc_qgsdefaultsearchwidgetwrapper.cpp"
32 , mCaseString( QStringLiteral(
"LIKE" ) )
41void QgsDefaultSearchWidgetWrapper::setCaseString(
int caseSensitiveCheckState )
43 if ( caseSensitiveCheckState == Qt::Checked )
45 mCaseString = QStringLiteral(
"LIKE" );
49 mCaseString = QStringLiteral(
"ILIKE" );
79 exp = QString::number( doubleValue );
82 str = QStringLiteral(
"%1 %2 '%3'" )
83 .arg(
QgsExpression::quotedColumnRef( fieldName ), isNumeric ? QStringLiteral(
"=" ) : mCaseString, isNumeric ? exp.replace(
'\'', QLatin1String(
"''" ) ) :
'%' + exp.replace(
'\'', QLatin1String(
"''" ) ) +
'%' );
90 return new QWidget( parent );
105 case QMetaType::Type::Int:
106 case QMetaType::Type::UInt:
107 case QMetaType::Type::Double:
108 case QMetaType::Type::LongLong:
109 case QMetaType::Type::ULongLong:
110 case QMetaType::Type::QDate:
111 case QMetaType::Type::QDateTime:
112 case QMetaType::Type::QTime:
116 case QMetaType::Type::QString:
132 case QMetaType::Type::Int:
133 case QMetaType::Type::UInt:
134 case QMetaType::Type::Double:
135 case QMetaType::Type::LongLong:
136 case QMetaType::Type::ULongLong:
139 case QMetaType::Type::QDate:
140 case QMetaType::Type::QDateTime:
141 case QMetaType::Type::QTime:
144 case QMetaType::Type::QString:
162 return fieldName +
" IS NULL";
164 return fieldName +
" IS NOT NULL";
166 QString text = mLineEdit->text();
174 text = QString::number( doubleValue );
181 case QMetaType::Type::Int:
182 case QMetaType::Type::UInt:
183 case QMetaType::Type::Double:
184 case QMetaType::Type::LongLong:
185 case QMetaType::Type::ULongLong:
188 return fieldName +
'=' + text;
190 return fieldName +
"<>" + text;
192 return fieldName +
'>' + text;
194 return fieldName +
'<' + text;
196 return fieldName +
">=" + text;
198 return fieldName +
"<=" + text;
202 case QMetaType::Type::QDate:
203 case QMetaType::Type::QDateTime:
204 case QMetaType::Type::QTime:
207 return fieldName +
"='" + text +
'\'';
209 return fieldName +
"<>'" + text +
'\'';
211 return fieldName +
">'" + text +
'\'';
213 return fieldName +
"<'" + text +
'\'';
215 return fieldName +
">='" + text +
'\'';
217 return fieldName +
"<='" + text +
'\'';
221 case QMetaType::Type::QString:
226 if ( mCheckbox && mCheckbox->isChecked() )
227 return fieldName + ( ( flags &
EqualTo ) ?
"=" :
"<>" )
230 return QStringLiteral(
"lower(%1)" ).arg( fieldName )
235 QString exp = fieldName + ( mCheckbox && mCheckbox->isChecked() ?
" LIKE " :
" ILIKE " );
238 value = value.remove( 0, 1 );
247 exp.prepend(
"NOT (" ).append(
')' );
263 mLineEdit->setText( QString() );
268 mLineEdit->setEnabled( enabled );
270 mCheckbox->setEnabled( enabled );
276 mContainer->setLayout(
new QHBoxLayout() );
277 mContainer->layout()->setContentsMargins( 0, 0, 0, 0 );
280 if ( fldType == QMetaType::Type::QString )
290 mContainer->layout()->addWidget( mLineEdit );
291 mContainer->setFocusProxy( mLineEdit );
293 if ( fldType == QMetaType::Type::QString )
295 mCheckbox =
new QCheckBox( QStringLiteral(
"Case sensitive" ) );
296 mContainer->layout()->addWidget( mCheckbox );
297 connect( mCheckbox, &QCheckBox::stateChanged,
this, &QgsDefaultSearchWidgetWrapper::setCaseString );
298 mCheckbox->setChecked( Qt::Unchecked );
301 connect( mLineEdit, &QLineEdit::textChanged,
this, &QgsDefaultSearchWidgetWrapper::textChanged );
302 connect( mLineEdit, &QLineEdit::returnPressed,
this, &QgsDefaultSearchWidgetWrapper::filterChanged );
305 mCaseString = QStringLiteral(
"ILIKE" );
323void QgsDefaultSearchWidgetWrapper::filterChanged()
328void QgsDefaultSearchWidgetWrapper::textChanged(
const QString &text )
330 if ( text.isEmpty() )
static QString nullRepresentation()
Returns the string used to represent the value NULL throughout QGIS.
static double toDouble(const QString &input, bool *ok)
Converts input string to double value.
static QString quotedString(QString text)
Returns a quoted version of a string (in single quotes).
static QString quotedColumnRef(QString name)
Returns a quoted column reference (in double quotes).
A line edit with an autocompleter which takes unique values from a vector layer's fields.
QgsField at(int i) const
Returns the field at particular index (must be in range 0..N-1).
QLineEdit subclass with built in support for clearing the widget's value and handling custom null val...
static bool isNumericType(QMetaType::Type metaType)
Returns true if the specified metaType is a numeric type.
Represents a vector layer which manages a vector based dataset.