21 : QToolButton( parent )
27 setFocusPolicy( Qt::StrongFocus );
28 setPopupMode( QToolButton::InstantPopup );
30 mMenu =
new QMenu(
this );
31 connect( mMenu, &QMenu::aboutToShow,
this, &QgsSearchWidgetToolButton::aboutToShowMenu );
40 mFilterFlags &= flags;
41 mAvailableFilterFlags = flags;
42 mDefaultFilterFlags = mDefaultFilterFlags & flags;
48 mDefaultFilterFlags = flags & mAvailableFilterFlags;
54 QgsSearchWidgetWrapper::FilterFlags newFlags;
60 if ( !( mAvailableFilterFlags & flag ) )
74 if ( !( mAvailableFilterFlags & flag ) )
84 mFilterFlags = newFlags;
91 if ( !( flag & mAvailableFilterFlags ) )
96 if ( flag & mFilterFlags )
97 mFilterFlags &= ~flag;
107 mFilterFlags &= ~exclusiveFlag;
110 mFilterFlags |= flag;
121 if ( mFilterFlags & flag )
127 void QgsSearchWidgetToolButton::aboutToShowMenu()
130 bool fieldActive =
false;
134 if ( !( mAvailableFilterFlags & flag ) )
141 connect( action, &QAction::triggered,
this, &QgsSearchWidgetToolButton::actionSelected );
142 action->setData( flag );
143 action->setCheckable(
true );
144 if ( mFilterFlags & flag )
147 action->setChecked(
true );
151 QAction *clearAction = mMenu->addAction( tr(
"Exclude Field" ) );
153 clearAction->setCheckable(
true );
154 clearAction->setChecked( !fieldActive );
155 if ( mMenu->actions().count() > 0 )
157 mMenu->insertAction( mMenu->actions().at( 0 ), clearAction );
158 mMenu->insertSeparator( mMenu->actions().at( 1 ) );
161 mMenu->addAction( clearAction );
163 mMenu->addSeparator();
168 if ( !( mAvailableFilterFlags & flag ) )
175 connect( action, &QAction::triggered,
this, &QgsSearchWidgetToolButton::actionSelected );
176 action->setData( flag );
177 action->setCheckable(
true );
178 if ( mFilterFlags & flag )
179 action->setChecked(
true );
183 void QgsSearchWidgetToolButton::actionSelected()
189 void QgsSearchWidgetToolButton::searchWidgetValueChanged()
199 QgsSearchWidgetWrapper::FilterFlags newFlags;
203 if ( !( mAvailableFilterFlags & flag ) || !( mFilterFlags & flag ) )
207 mFilterFlags = newFlags;
219 if ( mDefaultFilterFlags & flag )
227 void QgsSearchWidgetToolButton::updateState()
230 QStringList toolTips;
234 if ( mFilterFlags & flag )
243 if ( mFilterFlags & flag )
251 QString text = toolTips.join( QStringLiteral(
", " ) );
257 setText( tr(
"Exclude Field" ) );
258 setToolTip( QString() );