25
25
QgsMapLayerStyleManager::QgsMapLayerStyleManager ( QgsMapLayer* layer )
26
26
: mLayer( layer )
27
27
{
28
- QgsMapLayerStyle defaultStyle;
29
- defaultStyle.readFromLayer ( mLayer );
30
- mStyles .insert ( QString (), defaultStyle );
28
+ reset ();
29
+ }
30
+
31
+ void QgsMapLayerStyleManager::reset ()
32
+ {
33
+ mStyles .insert ( QString (), QgsMapLayerStyle () ); // insert entry for the default current style
34
+ mCurrentStyle .clear ();
31
35
}
32
36
33
37
void QgsMapLayerStyleManager::readXml ( const QDomElement& mgrElement )
@@ -49,8 +53,6 @@ void QgsMapLayerStyleManager::readXml( const QDomElement& mgrElement )
49
53
50
54
void QgsMapLayerStyleManager::writeXml ( QDomElement& mgrElement ) const
51
55
{
52
- const_cast <QgsMapLayerStyleManager*>( this )->syncCurrentStyle ();
53
-
54
56
QDomDocument doc = mgrElement.ownerDocument ();
55
57
mgrElement.setAttribute ( " current" , mCurrentStyle );
56
58
@@ -70,8 +72,13 @@ QStringList QgsMapLayerStyleManager::styles() const
70
72
71
73
QgsMapLayerStyle QgsMapLayerStyleManager::style ( const QString& name ) const
72
74
{
73
- if ( name == mCurrentStyle ) // make sure it is sync'ed
74
- const_cast <QgsMapLayerStyleManager*>( this )->syncCurrentStyle ();
75
+ if ( name == mCurrentStyle )
76
+ {
77
+ // current style's entry is always kept invalid - get the style data from layer's properties
78
+ QgsMapLayerStyle curr;
79
+ curr.readFromLayer ( mLayer );
80
+ return curr;
81
+ }
75
82
76
83
return mStyles .value ( name );
77
84
}
@@ -128,17 +135,14 @@ bool QgsMapLayerStyleManager::setCurrentStyle( const QString& name )
128
135
if ( mCurrentStyle == name )
129
136
return true ; // nothing to do
130
137
131
- syncCurrentStyle ( ); // sync before unloading it
138
+ mStyles [ mCurrentStyle ]. readFromLayer ( mLayer ); // sync before unloading it
132
139
mCurrentStyle = name;
133
140
mStyles [mCurrentStyle ].writeToLayer ( mLayer );
141
+ mStyles [mCurrentStyle ].clear (); // current style does not keep any stored data
134
142
mLayer ->triggerRepaint ();
135
143
return true ;
136
144
}
137
145
138
- void QgsMapLayerStyleManager::syncCurrentStyle ()
139
- {
140
- mStyles [mCurrentStyle ].readFromLayer ( mLayer );
141
- }
142
146
143
147
// -----
144
148
@@ -151,6 +155,11 @@ bool QgsMapLayerStyle::isValid() const
151
155
return !mXmlData .isEmpty ();
152
156
}
153
157
158
+ void QgsMapLayerStyle::clear ()
159
+ {
160
+ mXmlData .clear ();
161
+ }
162
+
154
163
QString QgsMapLayerStyle::dump () const
155
164
{
156
165
return mXmlData ;
@@ -195,6 +204,10 @@ void QgsMapLayerStyle::readXml( const QDomElement& styleElement )
195
204
196
205
void QgsMapLayerStyle::writeXml ( QDomElement& styleElement ) const
197
206
{
207
+ // the currently selected style has no content stored here (layer has all the information inside)
208
+ if ( !isValid () )
209
+ return ;
210
+
198
211
QDomDocument docX;
199
212
docX.setContent ( mXmlData );
200
213
styleElement.appendChild ( docX.documentElement () );
0 commit comments