@@ -227,6 +227,22 @@ void QgsSymbolLegendNode::uncheckAllItems()
227
227
checkAll ( false );
228
228
}
229
229
230
+ void QgsSymbolLegendNode::toggleAllItems ()
231
+ {
232
+ QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( mLayerNode ->layer () );
233
+ if ( !vlayer || !vlayer->renderer () )
234
+ return ;
235
+
236
+ const QgsLegendSymbolList symbolList = vlayer->renderer ()->legendSymbolItems ();
237
+ for ( const auto &item : symbolList )
238
+ {
239
+ vlayer->renderer ()->checkLegendSymbolItem ( item.ruleKey (), ! vlayer->renderer ()->legendSymbolItemChecked ( item.ruleKey () ) );
240
+ }
241
+
242
+ emit dataChanged ();
243
+ vlayer->triggerRepaint ();
244
+ }
245
+
230
246
QgsRenderContext *QgsLayerTreeModelLegendNode::createTemporaryRenderContext () const
231
247
{
232
248
double scale = 0.0 ;
@@ -239,7 +255,7 @@ QgsRenderContext *QgsLayerTreeModelLegendNode::createTemporaryRenderContext() co
239
255
return nullptr ;
240
256
241
257
// setup temporary render context
242
- std::unique_ptr<QgsRenderContext> context ( new QgsRenderContext );
258
+ std::unique_ptr<QgsRenderContext> context = qgis::make_unique< QgsRenderContext>( );
243
259
context->setScaleFactor ( dpi / 25.4 );
244
260
context->setRendererScale ( scale );
245
261
context->setMapToPixel ( QgsMapToPixel ( mupp ) );
@@ -252,8 +268,8 @@ void QgsSymbolLegendNode::checkAll( bool state )
252
268
if ( !vlayer || !vlayer->renderer () )
253
269
return ;
254
270
255
- QgsLegendSymbolList symbolList = vlayer->renderer ()->legendSymbolItems ();
256
- Q_FOREACH ( const QgsLegendSymbolItem &item, symbolList )
271
+ const QgsLegendSymbolList symbolList = vlayer->renderer ()->legendSymbolItems ();
272
+ for ( const auto &item : symbolList )
257
273
{
258
274
vlayer->renderer ()->checkLegendSymbolItem ( item.ruleKey (), state );
259
275
}
0 commit comments