29
29
QIcon QgsCollapsibleGroupBox::mCollapseIcon ;
30
30
QIcon QgsCollapsibleGroupBox::mExpandIcon ;
31
31
32
- QgsCollapsibleGroupBox::QgsCollapsibleGroupBox ( QWidget *parent )
33
- : QGroupBox( parent )
32
+ QgsCollapsibleGroupBox::QgsCollapsibleGroupBox ( QWidget *parent, QSettings* settings )
33
+ : QGroupBox( parent ), mSettings( settings )
34
34
{
35
35
init ();
36
36
}
37
37
38
38
QgsCollapsibleGroupBox::QgsCollapsibleGroupBox ( const QString &title,
39
- QWidget *parent )
40
- : QGroupBox( title, parent )
39
+ QWidget *parent, QSettings* settings )
40
+ : QGroupBox( title, parent ), mSettings( settings )
41
41
{
42
42
init ();
43
43
}
44
44
45
45
QgsCollapsibleGroupBox::~QgsCollapsibleGroupBox ()
46
46
{
47
47
saveState ();
48
+ if ( mDelSettings ) // local settings obj to delete
49
+ delete mSettings ;
50
+ mSettings = 0 ; // null the pointer (in case of outside settings obj)
51
+ }
52
+
53
+
54
+ void QgsCollapsibleGroupBox::setSettings ( QSettings* settings )
55
+ {
56
+ if ( mDelSettings ) // local settings obj to delete
57
+ delete mSettings ;
58
+ mSettings = settings;
59
+ mDelSettings = false ; // don't delete outside obj
48
60
}
49
61
50
62
void QgsCollapsibleGroupBox::init ()
51
63
{
64
+ // use pointer to app qsettings if no custom qsettings specified
65
+ // custom qsettings object may be from Python plugin
66
+ mDelSettings = false ;
67
+ if ( !mSettings )
68
+ {
69
+ mSettings = new QSettings ();
70
+ mDelSettings = true ; // only delete obj created by class
71
+ }
52
72
// variables
53
73
mCollapsed = false ;
54
74
mSaveCollapsedState = true ;
@@ -183,23 +203,25 @@ QString QgsCollapsibleGroupBox::saveKey() const
183
203
184
204
void QgsCollapsibleGroupBox::loadState ()
185
205
{
206
+ if ( !mSettings )
207
+ return ;
208
+
186
209
if ( !isEnabled () || ( !mSaveCollapsedState && !mSaveCheckedState ) )
187
210
return ;
188
211
189
212
setUpdatesEnabled ( false );
190
213
191
- QSettings settings;
192
214
QString key = saveKey ();
193
215
QVariant val;
194
216
if ( mSaveCheckedState )
195
217
{
196
- val = settings. value ( key + " /checked" );
218
+ val = mSettings -> value ( key + " /checked" );
197
219
if ( ! val.isNull () )
198
220
setChecked ( val.toBool () );
199
221
}
200
222
if ( mSaveCollapsedState )
201
223
{
202
- val = settings. value ( key + " /collapsed" );
224
+ val = mSettings -> value ( key + " /collapsed" );
203
225
if ( ! val.isNull () )
204
226
setCollapsed ( val.toBool () );
205
227
}
@@ -209,16 +231,18 @@ void QgsCollapsibleGroupBox::loadState()
209
231
210
232
void QgsCollapsibleGroupBox::saveState ()
211
233
{
234
+ if ( !mSettings )
235
+ return ;
236
+
212
237
if ( !isEnabled () || ( !mSaveCollapsedState && !mSaveCheckedState ) )
213
238
return ;
214
239
215
- QSettings settings;
216
240
QString key = saveKey ();
217
241
218
242
if ( mSaveCheckedState )
219
- settings. setValue ( key + " /checked" , isChecked () );
243
+ mSettings -> setValue ( key + " /checked" , isChecked () );
220
244
if ( mSaveCollapsedState )
221
- settings. setValue ( key + " /collapsed" , isCollapsed () );
245
+ mSettings -> setValue ( key + " /collapsed" , isCollapsed () );
222
246
}
223
247
224
248
void QgsCollapsibleGroupBox::checkToggled ( bool chkd )
@@ -340,4 +364,3 @@ void QgsCollapsibleGroupBox::setCollapsed( bool collapse )
340
364
}
341
365
emit collapsedStateChanged ( this );
342
366
}
343
-
0 commit comments