Skip to content

Commit cd3f12f

Browse files
author
Arunmozhi
committedOct 11, 2012
change symbols for selected categories; retains colors
1 parent 7faa1b2 commit cd3f12f

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed
 

‎src/gui/symbology-ng/qgscategorizedsymbolrendererv2widget.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,49 @@ QgsFeatureRendererV2* QgsCategorizedSymbolRendererV2Widget::renderer()
151151
return mRenderer;
152152
}
153153

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+
154184
void QgsCategorizedSymbolRendererV2Widget::changeCategorizedSymbol()
155185
{
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
156197
QgsSymbolV2* newSymbol = mCategorizedSymbol->clone();
157198

158199
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, mLayer, this );

‎src/gui/symbology-ng/qgscategorizedsymbolrendererv2widget.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ class GUI_EXPORT QgsCategorizedSymbolRendererV2Widget : public QgsRendererV2Widg
7373
//! return a list of keys for the categories unders selection
7474
QList<QVariant> selectedCategories();
7575

76+
//! change the selected symbols alone for the change button, if there is a selection
77+
void changeSelectedSymbols();
78+
7679
void changeCategorySymbol();
7780

7881
QList<QgsSymbolV2*> selectedSymbols();

0 commit comments

Comments
 (0)
Please sign in to comment.