18
18
#include " qgslegendmodel.h"
19
19
#include " qgscomposerlegenditem.h"
20
20
#include " qgsfield.h"
21
+ #include " qgslayertree.h"
21
22
#include " qgsmaplayer.h"
22
23
#include " qgsmaplayerregistry.h"
23
24
#include " qgsrasterlayer.h"
@@ -50,6 +51,31 @@ QgsLegendModel::~QgsLegendModel()
50
51
{
51
52
}
52
53
54
+ void QgsLegendModel::setLayerSetAndGroups ( QgsLayerTreeGroup* rootGroup )
55
+ {
56
+ clear ();
57
+ addGroupFromLayerTree ( rootGroup, invisibleRootItem () );
58
+ }
59
+
60
+ void QgsLegendModel::addGroupFromLayerTree ( QgsLayerTreeGroup* parentGroup, QStandardItem* parentItem )
61
+ {
62
+ foreach ( QgsLayerTreeNode* node, parentGroup->children () )
63
+ {
64
+ if ( QgsLayerTree::isGroup ( node ) )
65
+ {
66
+ QgsLayerTreeGroup* nodeGroup = QgsLayerTree::toGroup ( node );
67
+ QStandardItem* groupItem = addGroup ( nodeGroup->name (), -1 , parentItem );
68
+ addGroupFromLayerTree ( nodeGroup, groupItem );
69
+ }
70
+ else if ( QgsLayerTree::isLayer ( node ) )
71
+ {
72
+ QgsLayerTreeLayer* nodeLayer = QgsLayerTree::toLayer ( node );
73
+ if ( nodeLayer->layer () )
74
+ addLayer ( nodeLayer->layer (), -1 , QString (), parentItem );
75
+ }
76
+ }
77
+ }
78
+
53
79
void QgsLegendModel::setLayerSetAndGroups ( const QStringList& layerIds, const QList< GroupLayerInfo >& groupInfo )
54
80
{
55
81
setLayerSet ( layerIds );
@@ -115,21 +141,24 @@ void QgsLegendModel::setLayerSet( const QStringList& layerIds, double scaleDenom
115
141
}
116
142
}
117
143
118
- QStandardItem* QgsLegendModel::addGroup ( QString text, int position )
144
+ QStandardItem* QgsLegendModel::addGroup ( QString text, int position, QStandardItem* parentItem )
119
145
{
120
146
if ( text.isNull () )
121
147
text = tr ( " Group" );
122
148
149
+ if ( !parentItem )
150
+ parentItem = invisibleRootItem ();
151
+
123
152
QgsComposerGroupItem* groupItem = new QgsComposerGroupItem ( text );
124
153
groupItem->setUserText ( text );
125
154
126
155
if ( position == -1 )
127
156
{
128
- position = invisibleRootItem () ->rowCount ();
157
+ position = parentItem ->rowCount ();
129
158
}
130
159
QList<QStandardItem *> itemsList;
131
160
itemsList << groupItem << new QgsComposerStyleItem ( groupItem );
132
- invisibleRootItem () ->insertRow ( position, itemsList );
161
+ parentItem ->insertRow ( position, itemsList );
133
162
134
163
emit layersChanged ();
135
164
return groupItem;
@@ -524,13 +553,16 @@ void QgsLegendModel::removeLayer( const QString& layerId )
524
553
}
525
554
}
526
555
527
- void QgsLegendModel::addLayer ( QgsMapLayer* theMapLayer, double scaleDenominator, QString rule )
556
+ void QgsLegendModel::addLayer ( QgsMapLayer* theMapLayer, double scaleDenominator, QString rule, QStandardItem* parentItem )
528
557
{
529
558
if ( !theMapLayer )
530
559
{
531
560
return ;
532
561
}
533
562
563
+ if ( !parentItem )
564
+ parentItem = invisibleRootItem ();
565
+
534
566
QgsComposerLayerItem* layerItem = new QgsComposerLayerItem ( theMapLayer->name () );
535
567
if ( theMapLayer->title () != " " )
536
568
{
@@ -543,7 +575,7 @@ void QgsLegendModel::addLayer( QgsMapLayer* theMapLayer, double scaleDenominator
543
575
544
576
QList<QStandardItem *> itemsList;
545
577
itemsList << layerItem << new QgsComposerStyleItem ( layerItem );
546
- invisibleRootItem () ->appendRow ( itemsList );
578
+ parentItem ->appendRow ( itemsList );
547
579
548
580
switch ( theMapLayer->type () )
549
581
{
0 commit comments