22#include "moc_qgssearchwidgettoolbutton.cpp"
25 : QToolButton( parent )
31 setFocusPolicy( Qt::StrongFocus );
32 setPopupMode( QToolButton::InstantPopup );
34 mMenu =
new QMenu(
this );
35 connect( mMenu, &QMenu::aboutToShow,
this, &QgsSearchWidgetToolButton::aboutToShowMenu );
44 mFilterFlags &= flags;
45 mAvailableFilterFlags = flags;
46 mDefaultFilterFlags = mDefaultFilterFlags & flags;
52 mDefaultFilterFlags = flags & mAvailableFilterFlags;
64 if ( !( mAvailableFilterFlags & flag ) )
78 if ( !( mAvailableFilterFlags & flag ) )
88 mFilterFlags = newFlags;
95 if ( !( flag & mAvailableFilterFlags ) )
100 if ( flag & mFilterFlags )
101 mFilterFlags &= ~flag;
103 mFilterFlags |= flag;
111 mFilterFlags &= ~exclusiveFlag;
114 mFilterFlags |= flag;
125 if ( mFilterFlags & flag )
131void QgsSearchWidgetToolButton::aboutToShowMenu()
134 bool fieldActive =
false;
138 if ( !( mAvailableFilterFlags & flag ) )
145 connect( action, &QAction::triggered,
this, &QgsSearchWidgetToolButton::actionSelected );
146 action->setData( flag );
147 action->setCheckable(
true );
148 if ( mFilterFlags & flag )
151 action->setChecked(
true );
155 QAction *clearAction = mMenu->addAction( tr(
"Exclude Field" ) );
157 clearAction->setCheckable(
true );
158 clearAction->setChecked( !fieldActive );
159 if ( mMenu->actions().count() > 0 )
161 mMenu->insertAction( mMenu->actions().at( 0 ), clearAction );
162 mMenu->insertSeparator( mMenu->actions().at( 1 ) );
165 mMenu->addAction( clearAction );
167 mMenu->addSeparator();
172 if ( !( mAvailableFilterFlags & flag ) )
179 connect( action, &QAction::triggered,
this, &QgsSearchWidgetToolButton::actionSelected );
180 action->setData( flag );
181 action->setCheckable(
true );
182 if ( mFilterFlags & flag )
183 action->setChecked(
true );
187void QgsSearchWidgetToolButton::actionSelected()
193void QgsSearchWidgetToolButton::searchWidgetValueChanged()
207 if ( !( mAvailableFilterFlags & flag ) || !( mFilterFlags & flag ) )
211 mFilterFlags = newFlags;
223 if ( mDefaultFilterFlags & flag )
231void QgsSearchWidgetToolButton::updateState()
234 QStringList toolTips;
238 if ( mFilterFlags & flag )
247 if ( mFilterFlags & flag )
255 const QString text = toolTips.join( QLatin1String(
", " ) );
261 setText( tr(
"Exclude Field" ) );
262 setToolTip( QString() );