23#include "moc_qgssearchwidgettoolbutton.cpp"
25using namespace Qt::StringLiterals;
28 : QToolButton( parent )
34 setFocusPolicy( Qt::StrongFocus );
35 setPopupMode( QToolButton::InstantPopup );
37 mMenu =
new QMenu(
this );
38 connect( mMenu, &QMenu::aboutToShow,
this, &QgsSearchWidgetToolButton::aboutToShowMenu );
47 mFilterFlags &= flags;
48 mAvailableFilterFlags = flags;
49 mDefaultFilterFlags = mDefaultFilterFlags & flags;
55 mDefaultFilterFlags = flags & mAvailableFilterFlags;
67 if ( !( mAvailableFilterFlags & flag ) )
81 if ( !( mAvailableFilterFlags & flag ) )
91 mFilterFlags = newFlags;
98 if ( !( flag & mAvailableFilterFlags ) )
103 if ( flag & mFilterFlags )
104 mFilterFlags &= ~flag;
106 mFilterFlags |= flag;
114 mFilterFlags &= ~exclusiveFlag;
117 mFilterFlags |= flag;
128 if ( mFilterFlags & flag )
134void QgsSearchWidgetToolButton::aboutToShowMenu()
137 bool fieldActive =
false;
141 if ( !( mAvailableFilterFlags & flag ) )
148 connect( action, &QAction::triggered,
this, &QgsSearchWidgetToolButton::actionSelected );
149 action->setData( flag );
150 action->setCheckable(
true );
151 if ( mFilterFlags & flag )
154 action->setChecked(
true );
158 QAction *clearAction = mMenu->addAction( tr(
"Exclude Field" ) );
160 clearAction->setCheckable(
true );
161 clearAction->setChecked( !fieldActive );
162 if ( mMenu->actions().count() > 0 )
164 mMenu->insertAction( mMenu->actions().at( 0 ), clearAction );
165 mMenu->insertSeparator( mMenu->actions().at( 1 ) );
168 mMenu->addAction( clearAction );
170 mMenu->addSeparator();
175 if ( !( mAvailableFilterFlags & flag ) )
182 connect( action, &QAction::triggered,
this, &QgsSearchWidgetToolButton::actionSelected );
183 action->setData( flag );
184 action->setCheckable(
true );
185 if ( mFilterFlags & flag )
186 action->setChecked(
true );
190void QgsSearchWidgetToolButton::actionSelected()
196void QgsSearchWidgetToolButton::searchWidgetValueChanged()
210 if ( !( mAvailableFilterFlags & flag ) || !( mFilterFlags & flag ) )
214 mFilterFlags = newFlags;
226 if ( mDefaultFilterFlags & flag )
234void QgsSearchWidgetToolButton::updateState()
237 QStringList toolTips;
241 if ( mFilterFlags & flag )
250 if ( mFilterFlags & flag )
258 const QString text = toolTips.join(
", "_L1 );
264 setText( tr(
"Exclude Field" ) );
265 setToolTip( QString() );