@@ -119,13 +119,12 @@ void QgsLegend::handleCurrentItemChanged( QTreeWidgetItem* current, QTreeWidgetI
119
119
void QgsLegend::addGroup ()
120
120
{
121
121
QgsLegendGroup* group = new QgsLegendGroup ( this , tr ( " group" ) );
122
- mStateOfCheckBoxes . insert ( std::make_pair ( group , Qt::Checked ) ); // insert the check state into the map to query for changes later
122
+ group-> setData ( 0 , Qt::UserRole , Qt::Checked );
123
123
setExpanded ( indexFromItem ( group ), true );
124
124
}
125
125
126
126
void QgsLegend::removeAll ()
127
127
{
128
- mStateOfCheckBoxes .clear ();
129
128
clear ();
130
129
mPixmapWidthValues .clear ();
131
130
mPixmapHeightValues .clear ();
@@ -182,8 +181,6 @@ void QgsLegend::removeLayer( QString layer_key )
182
181
183
182
if ( ll && ll->layer () && ll->layer ()->getLayerID () == layer_key )
184
183
{
185
- // remove the map entry for the checkbox
186
- mStateOfCheckBoxes .erase ( ll );
187
184
removeItem ( ll );
188
185
delete ll;
189
186
@@ -501,12 +498,12 @@ void QgsLegend::addLayer( QgsMapLayer * layer )
501
498
if ( llayer->isVisible () )
502
499
{
503
500
llayer->setCheckState ( 0 , Qt::Checked );
504
- mStateOfCheckBoxes . insert ( std::make_pair ( llayer , Qt::Checked ) );
501
+ llayer-> setData ( 0 , Qt::UserRole , Qt::Checked );
505
502
}
506
503
else
507
504
{
508
505
llayer->setCheckState ( 0 , Qt::Unchecked );
509
- mStateOfCheckBoxes . insert ( std::make_pair ( llayer , Qt::Unchecked ) );
506
+ llayer-> setData ( 0 , Qt::UserRole , Qt::Unchecked );
510
507
}
511
508
blockSignals ( false );
512
509
@@ -909,7 +906,6 @@ bool QgsLegend::readXML( QDomNode& legendnode )
909
906
if ( !child.isNull () )
910
907
{
911
908
clear (); // remove all items first
912
- mStateOfCheckBoxes .clear ();
913
909
914
910
do
915
911
{
@@ -927,24 +923,24 @@ bool QgsLegend::readXML( QDomNode& legendnode )
927
923
if ( checked == " Qt::Checked" )
928
924
{
929
925
theGroup->setCheckState ( 0 , Qt::Checked );
930
- mStateOfCheckBoxes . insert ( std::make_pair ( theGroup , Qt::Checked ) );
926
+ theGroup-> setData ( 0 , Qt::UserRole , Qt::Checked );
931
927
}
932
928
else if ( checked == " Qt::Unchecked" )
933
929
{
934
930
theGroup->setCheckState ( 0 , Qt::Unchecked );
935
- mStateOfCheckBoxes . insert ( std::make_pair ( theGroup , Qt::Unchecked ) );
931
+ theGroup-> setData ( 0 , Qt::UserRole , Qt::Checked );
936
932
}
937
933
else if ( checked == " Qt::PartiallyChecked" )
938
934
{
939
935
theGroup->setCheckState ( 0 , Qt::PartiallyChecked );
940
- mStateOfCheckBoxes . insert ( std::make_pair ( theGroup , Qt::PartiallyChecked ) );
936
+ theGroup-> setData ( 0 , Qt::UserRole , Qt::PartiallyChecked );
941
937
}
942
938
blockSignals ( false );
943
939
lastGroup = theGroup;
944
940
}
945
941
else if ( childelem.tagName () == " legendlayer" )
946
942
{
947
- bool isOpen; // to recieve info whether the item is open or closed
943
+ bool isOpen; // to receive info whether the item is open or closed
948
944
lastLayer = readLayerFromXML (childelem, isOpen);
949
945
950
946
if (lastLayer)
@@ -1039,13 +1035,13 @@ QgsLegendLayer* QgsLegend::readLayerFromXML(QDomElement& childelem, bool& isOpen
1039
1035
{
1040
1036
ll->setVisible (true );
1041
1037
ll->setCheckState ( 0 , Qt::Checked );
1042
- mStateOfCheckBoxes . insert ( std::make_pair ( ll , Qt::Checked ) );
1038
+ ll-> setData ( 0 , Qt::UserRole , Qt::Checked );
1043
1039
}
1044
1040
else if ( checked == " Qt::Unchecked" )
1045
1041
{
1046
1042
ll->setVisible (false );
1047
1043
ll->setCheckState ( 0 , Qt::Unchecked );
1048
- mStateOfCheckBoxes . insert ( std::make_pair ( ll , Qt::Unchecked ) );
1044
+ ll-> setData ( 0 , Qt::UserRole , Qt::Unchecked );
1049
1045
}
1050
1046
blockSignals ( false );
1051
1047
@@ -1336,8 +1332,6 @@ void QgsLegend::removeItem( QTreeWidgetItem* item )
1336
1332
1337
1333
void QgsLegend::updateMapCanvasLayerSet ()
1338
1334
{
1339
- // std::deque<QString> layers = layerIDs();
1340
-
1341
1335
QList<QgsMapCanvasLayer> layers;
1342
1336
1343
1337
// create list of the layers
@@ -1484,12 +1478,8 @@ void QgsLegend::handleItemChange( QTreeWidgetItem* item, int row )
1484
1478
theLegendLayer->layer ()->setLayerName ( theLegendLayer->text ( 0 ) );
1485
1479
}
1486
1480
1487
- std::map<QTreeWidgetItem*, Qt::CheckState>::iterator it = mStateOfCheckBoxes .find ( item );
1488
- if ( it == mStateOfCheckBoxes .end () )
1489
- return ;
1490
-
1491
1481
// has the checkState changed?
1492
- if ( it-> second == item->checkState ( 0 ) )
1482
+ if ( item-> data ( 0 , Qt::UserRole). toInt () == item->checkState ( 0 ) )
1493
1483
return ;
1494
1484
1495
1485
QgsLegendGroup* lg = dynamic_cast <QgsLegendGroup *>( item ); // item is a legend group
@@ -1518,7 +1508,7 @@ void QgsLegend::handleItemChange( QTreeWidgetItem* item, int row )
1518
1508
blockSignals ( true );
1519
1509
( *iter )->setCheckState ( 0 , item->checkState ( 0 ) );
1520
1510
blockSignals ( false );
1521
- mStateOfCheckBoxes [( *iter )] = item->checkState ( 0 );
1511
+ item-> setData ( 0 , Qt::UserRole, item->checkState ( 0 ) );
1522
1512
if (( *iter )->layer () )
1523
1513
{
1524
1514
( *iter )->setVisible ( item->checkState ( 0 ) == Qt::Checked );
@@ -1529,7 +1519,7 @@ void QgsLegend::handleItemChange( QTreeWidgetItem* item, int row )
1529
1519
// off, as turning it on causes a refresh.
1530
1520
if ( renderFlagState )
1531
1521
mMapCanvas ->setRenderFlag ( true );
1532
- mStateOfCheckBoxes [ item] = item->checkState ( 0 );
1522
+ item-> setData ( 0 , Qt::UserRole, item->checkState ( 0 ) );
1533
1523
}
1534
1524
1535
1525
QgsLegendLayer* ll = dynamic_cast <QgsLegendLayer *>( item ); // item is a legend layer
@@ -1538,7 +1528,7 @@ void QgsLegend::handleItemChange( QTreeWidgetItem* item, int row )
1538
1528
blockSignals ( true );
1539
1529
ll->setCheckState ( 0 , item->checkState ( 0 ) );
1540
1530
blockSignals ( false );
1541
- mStateOfCheckBoxes [ll] = item ->checkState ( 0 );
1531
+ ll-> setData ( 0 , Qt::UserRole, ll ->checkState ( 0 ) );
1542
1532
if (ll->layer () )
1543
1533
{
1544
1534
ll->setVisible ( item->checkState ( 0 ) == Qt::Checked );
@@ -1547,7 +1537,7 @@ void QgsLegend::handleItemChange( QTreeWidgetItem* item, int row )
1547
1537
if ( ll->parent () )
1548
1538
{
1549
1539
static_cast <QgsLegendGroup*>( ll->parent () )->updateCheckState ();
1550
- mStateOfCheckBoxes [ ll->parent ()] = ll->parent ()->checkState ( 0 );
1540
+ ll->parent ()-> setData ( 0 , Qt::UserRole, ll->parent ()->checkState ( 0 ) );
1551
1541
}
1552
1542
// If it was on, turn it back on, otherwise leave it
1553
1543
// off, as turning it on causes a refresh.
@@ -1557,7 +1547,7 @@ void QgsLegend::handleItemChange( QTreeWidgetItem* item, int row )
1557
1547
}
1558
1548
mMapCanvas ->freeze ( false );
1559
1549
// update check state of the legend group
1560
- mStateOfCheckBoxes [ item] = item->checkState ( 0 );
1550
+ item-> setData ( 0 , Qt::UserRole, item->checkState ( 0 ) );
1561
1551
}
1562
1552
1563
1553
// update layer set
0 commit comments