@@ -151,8 +151,49 @@ QgsFeatureRendererV2* QgsCategorizedSymbolRendererV2Widget::renderer()
151
151
return mRenderer ;
152
152
}
153
153
154
+ void QgsCategorizedSymbolRendererV2Widget::changeSelectedSymbols ()
155
+ {
156
+ QItemSelectionModel* m = viewCategories->selectionModel ();
157
+ QModelIndexList selectedIndexes = m->selectedRows ( 1 );
158
+
159
+ if ( m && selectedIndexes.size () > 0 )
160
+ {
161
+ QgsSymbolV2* newSymbol = mCategorizedSymbol ->clone ();
162
+ QgsSymbolV2SelectorDialog dlg ( newSymbol, mStyle , mLayer , this );
163
+ if ( !dlg.exec () )
164
+ {
165
+ delete newSymbol;
166
+ return ;
167
+ }
168
+
169
+ foreach ( QModelIndex idx, selectedIndexes )
170
+ {
171
+ if ( idx.isValid () )
172
+ {
173
+ int catIdx = mRenderer ->categoryIndexForValue ( idx.data ( Qt::UserRole + 1 ) );
174
+ QgsSymbolV2* newCatSymbol = newSymbol->clone ();
175
+ newCatSymbol->setColor ( mRenderer ->categories ()[catIdx].symbol ()->color () );
176
+ mRenderer ->updateCategorySymbol ( catIdx, newCatSymbol );
177
+ }
178
+ }
179
+ }
180
+
181
+ populateCategories ();
182
+ }
183
+
154
184
void QgsCategorizedSymbolRendererV2Widget::changeCategorizedSymbol ()
155
185
{
186
+ // When there is a slection, change the selected symbols alone
187
+ QItemSelectionModel* m = viewCategories->selectionModel ();
188
+ QModelIndexList i = m->selectedRows ();
189
+
190
+ if ( m && i.size () > 0 )
191
+ {
192
+ changeSelectedSymbols ();
193
+ return ;
194
+ }
195
+
196
+ // When there is no selection, change the base mCategorizedSymbol
156
197
QgsSymbolV2* newSymbol = mCategorizedSymbol ->clone ();
157
198
158
199
QgsSymbolV2SelectorDialog dlg ( newSymbol, mStyle , mLayer , this );
0 commit comments