25 #include <QHBoxLayout>
29 , mCaseString( QStringLiteral(
"LIKE" ) )
38 void QgsDefaultSearchWidgetWrapper::setCaseString(
int caseSensitiveCheckState )
40 if ( caseSensitiveCheckState == Qt::Checked )
42 mCaseString = QStringLiteral(
"LIKE" );
46 mCaseString = QStringLiteral(
"ILIKE" );
58 bool numeric = ( fldType == QVariant::Int || fldType == QVariant::Double || fldType == QVariant::LongLong );
64 if ( exp == nullValue )
70 str = QStringLiteral(
"%1 %2 '%3'" )
72 numeric ? QStringLiteral(
"=" ) : mCaseString,
74 exp.replace(
'\'', QLatin1String(
"''" ) )
76 '%' + exp.replace(
'\'', QLatin1String(
"''" ) ) +
'%' );
83 return new QWidget( parent );
100 case QVariant::Double:
101 case QVariant::LongLong:
102 case QVariant::ULongLong:
104 case QVariant::DateTime:
109 case QVariant::String:
126 case QVariant::Double:
127 case QVariant::LongLong:
128 case QVariant::ULongLong:
133 case QVariant::DateTime:
137 case QVariant::String:
155 return fieldName +
" IS NULL";
157 return fieldName +
" IS NOT NULL";
163 case QVariant::Double:
164 case QVariant::LongLong:
165 case QVariant::ULongLong:
168 return fieldName +
'=' + mLineEdit->text();
170 return fieldName +
"<>" + mLineEdit->text();
172 return fieldName +
'>' + mLineEdit->text();
174 return fieldName +
'<' + mLineEdit->text();
176 return fieldName +
">=" + mLineEdit->text();
178 return fieldName +
"<=" + mLineEdit->text();
183 case QVariant::DateTime:
187 return fieldName +
"='" + mLineEdit->text() +
'\'';
189 return fieldName +
"<>'" + mLineEdit->text() +
'\'';
191 return fieldName +
">'" + mLineEdit->text() +
'\'';
193 return fieldName +
"<'" + mLineEdit->text() +
'\'';
195 return fieldName +
">='" + mLineEdit->text() +
'\'';
197 return fieldName +
"<='" + mLineEdit->text() +
'\'';
201 case QVariant::String:
206 if ( mCheckbox && mCheckbox->isChecked() )
207 return fieldName + ( ( flags &
EqualTo ) ?
"=" :
"<>" )
210 return QStringLiteral(
"lower(%1)" ).arg( fieldName )
211 + ( ( flags &
EqualTo ) ?
"=" :
"<>" ) +
216 QString exp = fieldName + ( mCheckbox && mCheckbox->isChecked() ?
" LIKE " :
" ILIKE " );
219 value = value.remove( 0, 1 );
228 exp.prepend(
"NOT (" ).append(
')' );
244 mLineEdit->setText( QString() );
249 mLineEdit->setEnabled( enabled );
251 mCheckbox->setEnabled( enabled );
257 mContainer->setLayout(
new QHBoxLayout() );
258 mContainer->layout()->setContentsMargins( 0, 0, 0, 0 );
261 if ( fldType == QVariant::String )
271 mContainer->layout()->addWidget( mLineEdit );
272 mContainer->setFocusProxy( mLineEdit );
274 if ( fldType == QVariant::String )
276 mCheckbox =
new QCheckBox( QStringLiteral(
"Case sensitive" ) );
277 mContainer->layout()->addWidget( mCheckbox );
278 connect( mCheckbox, &QCheckBox::stateChanged,
this, &QgsDefaultSearchWidgetWrapper::setCaseString );
279 mCheckbox->setChecked( Qt::Unchecked );
282 connect( mLineEdit, &QLineEdit::textChanged,
this, &QgsDefaultSearchWidgetWrapper::textChanged );
283 connect( mLineEdit, &QLineEdit::returnPressed,
this, &QgsDefaultSearchWidgetWrapper::filterChanged );
286 mCaseString = QStringLiteral(
"ILIKE" );
304 void QgsDefaultSearchWidgetWrapper::filterChanged()
309 void QgsDefaultSearchWidgetWrapper::textChanged(
const QString &text )
311 if ( text.isEmpty() )
static QString nullRepresentation()
This string is used to represent the value NULL throughout QGIS.
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
Gets 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...
Represents a vector layer which manages a vector based data sets.
QgsFields fields() const FINAL
Returns the list of fields of this layer.