Skip to content

Commit b6ae2e7

Browse files
carolinuxm-kuhn
authored andcommittedJun 28, 2015
Fixes for search widgets
1 parent 4ebf087 commit b6ae2e7

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed
 

‎src/app/qgsattributetabledialog.cpp

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,7 @@ void QgsAttributeTableDialog::filterColumnChanged( QObject* filterAction )
423423
// delete previous widget
424424
if ( mCurrentSearchWidgetWrapper != 0 )
425425
{
426+
mCurrentSearchWidgetWrapper->widget()->setVisible( false );
426427
delete mCurrentSearchWidgetWrapper;
427428
}
428429
QString fieldName = mFilterButton->defaultAction()->text();
@@ -434,14 +435,14 @@ void QgsAttributeTableDialog::filterColumnChanged( QObject* filterAction )
434435
const QgsEditorWidgetConfig widgetConfig = mLayer->editorWidgetV2Config( fldIdx );
435436
mCurrentSearchWidgetWrapper = QgsEditorWidgetRegistry::instance()->
436437
createSearchWidget( widgetType, mLayer, fldIdx, widgetConfig, mFilterContainer );
437-
if (mCurrentSearchWidgetWrapper->applyDirectly())
438+
if ( mCurrentSearchWidgetWrapper->applyDirectly() )
438439
{
439-
connect( mCurrentSearchWidgetWrapper, SIGNAL( expressionChanged(QString) ), SLOT( filterQueryChanged(QString) ) );
440-
mApplyFilterButton->setVisible(false);
440+
connect( mCurrentSearchWidgetWrapper, SIGNAL( expressionChanged( QString ) ), SLOT( filterQueryChanged( QString ) ) );
441+
mApplyFilterButton->setVisible( false );
441442
}
442443
else
443444
{
444-
mApplyFilterButton->setVisible(true);
445+
mApplyFilterButton->setVisible( true );
445446
}
446447

447448
replaceSearchWidget( mFilterQuery, mCurrentSearchWidgetWrapper->widget() );
@@ -730,15 +731,20 @@ void QgsAttributeTableDialog::filterQueryAccepted()
730731

731732
void QgsAttributeTableDialog::setFilterExpression( QString filterString )
732733
{
733-
mFilterQuery->setText( filterString );
734-
mFilterButton->setDefaultAction( mActionAdvancedFilter );
735-
mFilterButton->setPopupMode( QToolButton::MenuButtonPopup );
736-
mFilterQuery->setVisible( true );
737-
if ( mCurrentSearchWidgetWrapper != 0 )
734+
if ( mCurrentSearchWidgetWrapper == 0 || !mCurrentSearchWidgetWrapper->applyDirectly() )
738735
{
739-
replaceSearchWidget( mCurrentSearchWidgetWrapper->widget(), mFilterQuery );
736+
mFilterQuery->setText( filterString );
737+
mFilterButton->setDefaultAction( mActionAdvancedFilter );
738+
mFilterButton->setPopupMode( QToolButton::MenuButtonPopup );
739+
mFilterQuery->setVisible( true );
740+
mApplyFilterButton->setVisible( true );
741+
if ( mCurrentSearchWidgetWrapper != 0 )
742+
{
743+
// replace search widget widget with the normal filter query line edit
744+
replaceSearchWidget( mCurrentSearchWidgetWrapper->widget(), mFilterQuery );
745+
}
740746
}
741-
mApplyFilterButton->setVisible( true );
747+
742748
mMainView->setFilterMode( QgsAttributeTableFilterModel::ShowFilteredList );
743749

744750
QgsFeatureIds filteredFeatures;

‎src/gui/editorwidgets/qgsdefaultsearchwidgetwrapper.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ void QgsDefaultSearchWidgetWrapper::setCaseString(int caseSensitiveCheckState)
5252

5353
void QgsDefaultSearchWidgetWrapper::setExpression(QString exp)
5454
{
55-
QString sensString = mCaseString;
5655
QVariant::Type fldType = layer()->pendingFields()[mFieldIdx].type();
5756
bool numeric = ( fldType == QVariant::Int || fldType == QVariant::Double || fldType == QVariant::LongLong );
5857

@@ -68,7 +67,7 @@ void QgsDefaultSearchWidgetWrapper::setExpression(QString exp)
6867
{
6968
str = QString( "%1 %2 '%3'" )
7069
.arg( QgsExpression::quotedColumnRef( fieldName ) )
71-
.arg( numeric ? "=" : sensString )
70+
.arg( numeric ? "=" : mCaseString )
7271
.arg( numeric
7372
? exp.replace( "'", "''" )
7473
:
@@ -94,9 +93,10 @@ void QgsDefaultSearchWidgetWrapper::initWidget( QWidget* widget )
9493
mContainer->setLayout(new QHBoxLayout() );
9594
mLineEdit = new QgsFilterLineEdit();
9695
mCheckbox = new QCheckBox("Case sensitive");
97-
mCheckbox->setChecked(Qt::Unchecked);
9896
mContainer->layout()->addWidget(mLineEdit);
9997
mContainer->layout()->addWidget(mCheckbox);
10098
connect( mLineEdit, SIGNAL( textChanged( QString ) ), this, SLOT( setExpression( QString ) ) );
10199
connect( mCheckbox, SIGNAL( stateChanged( int ) ), this, SLOT( setCaseString(int) ) );
100+
mCheckbox->setChecked(Qt::Unchecked);
101+
mCaseString = "ILIKE";
102102
}

0 commit comments

Comments
 (0)