20
20
QgsSearchWidgetToolButton::QgsSearchWidgetToolButton ( QWidget* parent )
21
21
: QToolButton( parent )
22
22
, mAvailableFilterFlags( QgsSearchWidgetWrapper::EqualTo | QgsSearchWidgetWrapper::NotEqualTo | QgsSearchWidgetWrapper::CaseInsensitive )
23
+ , mDefaultFilterFlags( QgsSearchWidgetWrapper::EqualTo )
23
24
, mFilterFlags( QgsSearchWidgetWrapper::EqualTo )
24
- , mSearchWrapper( nullptr )
25
25
, mMenu( nullptr )
26
26
{
27
27
setFocusPolicy ( Qt::StrongFocus );
@@ -35,22 +35,19 @@ QgsSearchWidgetToolButton::QgsSearchWidgetToolButton( QWidget* parent )
35
35
updateState ();
36
36
}
37
37
38
- void QgsSearchWidgetToolButton::setSearchWidgetWrapper ( QgsSearchWidgetWrapper* wrapper )
39
- {
40
- mSearchWrapper = wrapper;
41
- setAvailableFlags ( mSearchWrapper ->supportedFlags () );
42
- setActiveFlags ( QgsSearchWidgetWrapper::FilterFlags () );
43
- connect ( mSearchWrapper , SIGNAL ( valueChanged () ), this , SLOT ( searchWidgetValueChanged () ) );
44
- connect ( mSearchWrapper , SIGNAL ( valueCleared () ), this , SLOT ( setInactive () ) );
45
- }
46
-
47
38
void QgsSearchWidgetToolButton::setAvailableFlags ( QgsSearchWidgetWrapper::FilterFlags flags )
48
39
{
49
40
mFilterFlags &= flags;
50
41
mAvailableFilterFlags = flags;
42
+ mDefaultFilterFlags = mDefaultFilterFlags & flags;
51
43
updateState ();
52
44
}
53
45
46
+ void QgsSearchWidgetToolButton::setDefaultFlags ( QgsSearchWidgetWrapper::FilterFlags flags )
47
+ {
48
+ mDefaultFilterFlags = flags & mAvailableFilterFlags ;
49
+ }
50
+
54
51
void QgsSearchWidgetToolButton::setActiveFlags ( QgsSearchWidgetWrapper::FilterFlags flags )
55
52
{
56
53
// sanitize list
@@ -194,9 +191,6 @@ void QgsSearchWidgetToolButton::setInactive()
194
191
if ( !isActive () )
195
192
return ;
196
193
197
- if ( mSearchWrapper )
198
- mSearchWrapper ->clearWidget ();
199
-
200
194
QgsSearchWidgetWrapper::FilterFlags newFlags;
201
195
Q_FOREACH ( QgsSearchWidgetWrapper::FilterFlag flag, QgsSearchWidgetWrapper::nonExclusiveFilterFlags () )
202
196
{
@@ -215,12 +209,7 @@ void QgsSearchWidgetToolButton::setActive()
215
209
216
210
Q_FOREACH ( QgsSearchWidgetWrapper::FilterFlag flag, QgsSearchWidgetWrapper::exclusiveFilterFlags () )
217
211
{
218
- if ( mSearchWrapper && mSearchWrapper ->defaultFlags () & flag )
219
- {
220
- toggleFlag ( flag );
221
- return ;
222
- }
223
- else if ( !mSearchWrapper && mAvailableFilterFlags & flag )
212
+ if ( mDefaultFilterFlags & flag )
224
213
{
225
214
toggleFlag ( flag );
226
215
return ;
@@ -230,9 +219,6 @@ void QgsSearchWidgetToolButton::setActive()
230
219
231
220
void QgsSearchWidgetToolButton::updateState ()
232
221
{
233
- if ( mSearchWrapper )
234
- mSearchWrapper ->setEnabled ( !( mFilterFlags & QgsSearchWidgetWrapper::IsNull ) );
235
-
236
222
bool active = false ;
237
223
QStringList toolTips;
238
224
Q_FOREACH ( QgsSearchWidgetWrapper::FilterFlag flag, QgsSearchWidgetWrapper::exclusiveFilterFlags () )
@@ -262,4 +248,6 @@ void QgsSearchWidgetToolButton::updateState()
262
248
setText ( tr ( " Exclude field" ) );
263
249
setToolTip ( QString () );
264
250
}
251
+
252
+ emit activeFlagsChanged ( mFilterFlags );
265
253
}
0 commit comments