@@ -61,18 +61,30 @@ void QgsRendererV2Widget::contextMenuViewCategories( const QPoint & )
61
61
void QgsRendererV2Widget::changeSymbolColor ()
62
62
{
63
63
QList<QgsSymbolV2*> symbolList = selectedSymbols ();
64
- if ( symbolList.size () < 1 )
64
+ if ( symbolList.isEmpty () )
65
65
{
66
66
return ;
67
67
}
68
68
69
- QColor color = QgsColorDialogV2::getColor ( symbolList.at ( 0 )->color (), this , " Change Symbol Color" , true );
69
+ QgsSymbolV2* firstSymbol = nullptr ;
70
+ Q_FOREACH ( QgsSymbolV2* symbol, symbolList )
71
+ {
72
+ if ( symbol )
73
+ {
74
+ firstSymbol = symbol;
75
+ break ;
76
+ }
77
+ }
78
+ if ( !firstSymbol )
79
+ return ;
80
+
81
+ QColor color = QgsColorDialogV2::getColor ( firstSymbol->color (), this , " Change Symbol Color" , true );
70
82
if ( color.isValid () )
71
83
{
72
- QList<QgsSymbolV2*>::iterator symbolIt = symbolList.begin ();
73
- for ( ; symbolIt != symbolList.end (); ++symbolIt )
84
+ Q_FOREACH ( QgsSymbolV2* symbol, symbolList )
74
85
{
75
- ( *symbolIt )->setColor ( color );
86
+ if ( symbol )
87
+ symbol->setColor ( color );
76
88
}
77
89
refreshSymbolView ();
78
90
}
@@ -81,20 +93,32 @@ void QgsRendererV2Widget::changeSymbolColor()
81
93
void QgsRendererV2Widget::changeSymbolTransparency ()
82
94
{
83
95
QList<QgsSymbolV2*> symbolList = selectedSymbols ();
84
- if ( symbolList.size () < 1 )
96
+ if ( symbolList.isEmpty () )
85
97
{
86
98
return ;
87
99
}
88
100
101
+ QgsSymbolV2* firstSymbol = nullptr ;
102
+ Q_FOREACH ( QgsSymbolV2* symbol, symbolList )
103
+ {
104
+ if ( symbol )
105
+ {
106
+ firstSymbol = symbol;
107
+ break ;
108
+ }
109
+ }
110
+ if ( !firstSymbol )
111
+ return ;
112
+
89
113
bool ok;
90
- double oldTransparency = ( 1 - symbolList. at ( 0 ) ->alpha () ) * 100 ; // convert to percents
114
+ double oldTransparency = ( 1 - firstSymbol ->alpha () ) * 100 ; // convert to percents
91
115
double transparency = QInputDialog::getDouble ( this , tr ( " Transparency" ), tr ( " Change symbol transparency [%]" ), oldTransparency, 0.0 , 100.0 , 0 , &ok );
92
116
if ( ok )
93
117
{
94
- QList<QgsSymbolV2*>::iterator symbolIt = symbolList.begin ();
95
- for ( ; symbolIt != symbolList.end (); ++symbolIt )
118
+ Q_FOREACH ( QgsSymbolV2* symbol, symbolList )
96
119
{
97
- ( *symbolIt )->setAlpha ( 1 - transparency / 100 );
120
+ if ( symbol )
121
+ symbol->setAlpha ( 1 - transparency / 100 );
98
122
}
99
123
refreshSymbolView ();
100
124
}
@@ -103,22 +127,34 @@ void QgsRendererV2Widget::changeSymbolTransparency()
103
127
void QgsRendererV2Widget::changeSymbolUnit ()
104
128
{
105
129
QList<QgsSymbolV2*> symbolList = selectedSymbols ();
106
- if ( symbolList.size () < 1 )
130
+ if ( symbolList.isEmpty () )
107
131
{
108
132
return ;
109
133
}
110
134
135
+ QgsSymbolV2* firstSymbol = nullptr ;
136
+ Q_FOREACH ( QgsSymbolV2* symbol, symbolList )
137
+ {
138
+ if ( symbol )
139
+ {
140
+ firstSymbol = symbol;
141
+ break ;
142
+ }
143
+ }
144
+ if ( !firstSymbol )
145
+ return ;
146
+
111
147
bool ok;
112
- int currentUnit = ( symbolList. at ( 0 ) ->outputUnit () == QgsSymbolV2::MM ) ? 0 : 1 ;
148
+ int currentUnit = ( firstSymbol ->outputUnit () == QgsSymbolV2::MM ) ? 0 : 1 ;
113
149
QString item = QInputDialog::getItem ( this , tr ( " Symbol unit" ), tr ( " Select symbol unit" ), QStringList () << tr ( " Millimeter" ) << tr ( " Map unit" ), currentUnit, false , &ok );
114
150
if ( ok )
115
151
{
116
152
QgsSymbolV2::OutputUnit unit = ( item.compare ( tr ( " Millimeter" ) ) == 0 ) ? QgsSymbolV2::MM : QgsSymbolV2::MapUnit;
117
153
118
- QList<QgsSymbolV2*>::iterator symbolIt = symbolList.begin ();
119
- for ( ; symbolIt != symbolList.end (); ++symbolIt )
154
+ Q_FOREACH ( QgsSymbolV2* symbol, symbolList )
120
155
{
121
- ( *symbolIt )->setOutputUnit ( unit );
156
+ if ( symbol )
157
+ symbol->setOutputUnit ( unit );
122
158
}
123
159
refreshSymbolView ();
124
160
}
@@ -127,7 +163,7 @@ void QgsRendererV2Widget::changeSymbolUnit()
127
163
void QgsRendererV2Widget::changeSymbolWidth ()
128
164
{
129
165
QList<QgsSymbolV2*> symbolList = selectedSymbols ();
130
- if ( symbolList.size () < 1 )
166
+ if ( symbolList.isEmpty () )
131
167
{
132
168
return ;
133
169
}
@@ -139,11 +175,13 @@ void QgsRendererV2Widget::changeSymbolWidth()
139
175
{
140
176
if ( !dlg.mDDBtn ->isActive () )
141
177
{
142
- QList<QgsSymbolV2*>::iterator symbolIt = symbolList.begin ();
143
- for ( ; symbolIt != symbolList.end (); ++symbolIt )
178
+ Q_FOREACH ( QgsSymbolV2* symbol, symbolList )
144
179
{
145
- if (( *symbolIt )->type () == QgsSymbolV2::Line )
146
- static_cast <QgsLineSymbolV2*>( *symbolIt )->setWidth ( dlg.mSpinBox ->value () );
180
+ if ( !symbol )
181
+ continue ;
182
+
183
+ if ( symbol->type () == QgsSymbolV2::Line )
184
+ static_cast <QgsLineSymbolV2*>( symbol )->setWidth ( dlg.mSpinBox ->value () );
147
185
}
148
186
}
149
187
refreshSymbolView ();
@@ -153,7 +191,7 @@ void QgsRendererV2Widget::changeSymbolWidth()
153
191
void QgsRendererV2Widget::changeSymbolSize ()
154
192
{
155
193
QList<QgsSymbolV2*> symbolList = selectedSymbols ();
156
- if ( symbolList.size () < 1 )
194
+ if ( symbolList.isEmpty () )
157
195
{
158
196
return ;
159
197
}
@@ -165,11 +203,13 @@ void QgsRendererV2Widget::changeSymbolSize()
165
203
{
166
204
if ( !dlg.mDDBtn ->isActive () )
167
205
{
168
- QList<QgsSymbolV2*>::iterator symbolIt = symbolList.begin ();
169
- for ( ; symbolIt != symbolList.end (); ++symbolIt )
206
+ Q_FOREACH ( QgsSymbolV2* symbol, symbolList )
170
207
{
171
- if (( *symbolIt )->type () == QgsSymbolV2::Marker )
172
- static_cast <QgsMarkerSymbolV2*>( *symbolIt )->setSize ( dlg.mSpinBox ->value () );
208
+ if ( !symbol )
209
+ continue ;
210
+
211
+ if ( symbol->type () == QgsSymbolV2::Marker )
212
+ static_cast <QgsMarkerSymbolV2*>( symbol )->setSize ( dlg.mSpinBox ->value () );
173
213
}
174
214
}
175
215
refreshSymbolView ();
@@ -179,7 +219,7 @@ void QgsRendererV2Widget::changeSymbolSize()
179
219
void QgsRendererV2Widget::changeSymbolAngle ()
180
220
{
181
221
QList<QgsSymbolV2*> symbolList = selectedSymbols ();
182
- if ( symbolList.size () < 1 )
222
+ if ( symbolList.isEmpty () )
183
223
{
184
224
return ;
185
225
}
@@ -191,11 +231,13 @@ void QgsRendererV2Widget::changeSymbolAngle()
191
231
{
192
232
if ( !dlg.mDDBtn ->isActive () )
193
233
{
194
- QList<QgsSymbolV2*>::iterator symbolIt = symbolList.begin ();
195
- for ( ; symbolIt != symbolList.end (); ++symbolIt )
234
+ Q_FOREACH ( QgsSymbolV2* symbol, symbolList )
196
235
{
197
- if (( *symbolIt )->type () == QgsSymbolV2::Marker )
198
- static_cast <QgsMarkerSymbolV2*>( *symbolIt )->setAngle ( dlg.mSpinBox ->value () );
236
+ if ( !symbol )
237
+ continue ;
238
+
239
+ if ( symbol->type () == QgsSymbolV2::Marker )
240
+ static_cast <QgsMarkerSymbolV2*>( symbol )->setAngle ( dlg.mSpinBox ->value () );
199
241
}
200
242
}
201
243
refreshSymbolView ();
@@ -460,17 +502,30 @@ void QgsDataDefinedValueDialog::init( const QString & description )
460
502
QgsDataDefined dd = symbolDataDefined ();
461
503
mDDBtn ->init ( mLayer , &dd, QgsDataDefinedButton::Double, description );
462
504
mDDBtn ->registerGetExpressionContextCallback ( &_getExpressionContext, this );
463
- mSpinBox ->setValue ( value ( mSymbolList .back () ) );
505
+
506
+ QgsSymbolV2* initialSymbol = nullptr ;
507
+ Q_FOREACH ( QgsSymbolV2* symbol, mSymbolList )
508
+ {
509
+ if ( symbol )
510
+ {
511
+ initialSymbol = symbol;
512
+ }
513
+ }
514
+ mSpinBox ->setValue ( initialSymbol ? value ( initialSymbol ) : 0 );
464
515
mSpinBox ->setEnabled ( !mDDBtn ->isActive () );
465
516
}
466
517
467
518
QgsDataDefined QgsDataDefinedValueDialog::symbolDataDefined () const
468
519
{
520
+ if ( mSymbolList .isEmpty () || !mSymbolList .back () )
521
+ return QgsDataDefined ();
522
+
469
523
// check that all symbols share the same size expression
470
524
QgsDataDefined dd = symbolDataDefined ( mSymbolList .back () );
471
525
Q_FOREACH ( QgsSymbolV2 * it, mSymbolList )
472
526
{
473
- if ( symbolDataDefined ( it ) != dd ) return QgsDataDefined ();
527
+ if ( !it || symbolDataDefined ( it ) != dd )
528
+ return QgsDataDefined ();
474
529
}
475
530
return dd;
476
531
}
0 commit comments