20
20
#include " qgsmaplayer.h"
21
21
#include " qgslogger.h"
22
22
#include " qgslegend.h"
23
+ #include " qgslegendgroup.h"
24
+ #include " qgslegendlayer.h"
23
25
#include " qgslegendlayer.h"
24
26
#include " qgsproject.h"
25
27
@@ -33,10 +35,6 @@ QgsLayerOrder::QgsLayerOrder( QgsLegend *legend, QWidget * parent, const char *n
33
35
{
34
36
setObjectName ( name );
35
37
36
- // track visibility changed in legend
37
- connect ( mLegend , SIGNAL ( itemChanged ( QTreeWidgetItem *, int ) ),
38
- this , SLOT ( legendItemChanged ( QTreeWidgetItem *, int ) ) );
39
-
40
38
// track if legend mode changes
41
39
connect ( mLegend , SIGNAL ( updateDrawingOrderChecked ( bool ) ),
42
40
this , SLOT ( updateDrawingOrderChecked ( bool ) ) );
@@ -114,35 +112,28 @@ QListWidgetItem *QgsLayerOrder::layerItem( QgsMapLayer *layer ) const
114
112
115
113
void QgsLayerOrder::itemChanged ( QListWidgetItem *item )
116
114
{
117
- QgsDebugMsg ( " Entering." );
118
- QgsDebugMsg ( QString ( " item=%1" ).arg ( item ? item->text () : " (null item)" ) );
119
-
120
- QgsMapLayer *layer = qobject_cast<QgsMapLayer *>( item->data ( Qt::UserRole ).value <QObject*>() );
121
- mLegend ->setLayerVisible ( layer, item->checkState () == Qt::Checked );
122
-
115
+ QString name = item->text ();
116
+ QString id = item->data ( Qt::UserRole ).toString ();
117
+ bool embeddedGroup = item->data ( Qt::UserRole + 1 ).toBool ();
118
+ if ( embeddedGroup )
119
+ {
120
+ QgsLegendGroup* grp = mLegend ->findLegendGroup ( name, id );
121
+ if ( grp )
122
+ {
123
+ grp->setCheckState ( 0 , item->checkState () );
124
+ }
125
+ }
126
+ else
127
+ {
128
+ QgsLegendLayer* ll = mLegend ->findLegendLayer ( id );
129
+ if ( ll )
130
+ {
131
+ ll->setCheckState ( 0 , item->checkState () );
132
+ }
133
+ }
123
134
updateLayerOrder ();
124
135
}
125
136
126
- void QgsLayerOrder::legendItemChanged ( QTreeWidgetItem *item, int col )
127
- {
128
- QgsDebugMsg ( " Entering." );
129
-
130
- if ( col != 0 )
131
- return ;
132
-
133
- QgsDebugMsg ( QString ( " legendItem changed=%1" ).arg ( item ? item->text ( 0 ) : " (null item)" ) );
134
-
135
- QgsLegendLayer *ll = dynamic_cast < QgsLegendLayer * >( item );
136
- if ( !ll )
137
- return ;
138
-
139
- QListWidgetItem *lwi = layerItem ( ll->layer () );
140
- if ( !lwi )
141
- return ;
142
-
143
- lwi->setCheckState ( item->checkState ( col ) );
144
- }
145
-
146
137
void QgsLayerOrder::mousePressEvent ( QMouseEvent * e )
147
138
{
148
139
QgsDebugMsg ( " Entering." );
0 commit comments