6
6
#include < QMenu>
7
7
#include < QContextMenuEvent>
8
8
9
- QgsLayerTreeView::QgsLayerTreeView (QWidget *parent) :
10
- QTreeView(parent)
9
+ QgsLayerTreeView::QgsLayerTreeView (QWidget *parent)
10
+ : QTreeView(parent)
11
+ , mCurrentLayer(0 )
11
12
{
12
13
setHeaderHidden (true );
13
14
@@ -19,6 +20,7 @@ QgsLayerTreeView::QgsLayerTreeView(QWidget *parent) :
19
20
20
21
connect (this , SIGNAL (collapsed (QModelIndex)), this , SLOT (updateExpandedStateToNode (QModelIndex)));
21
22
connect (this , SIGNAL (expanded (QModelIndex)), this , SLOT (updateExpandedStateToNode (QModelIndex)));
23
+ connect (this , SIGNAL (currentChanged (QModelIndex,QModelIndex)), this , SLOT (onCurrentChanged (QModelIndex)));
22
24
}
23
25
24
26
void QgsLayerTreeView::setModel (QAbstractItemModel* model)
@@ -38,6 +40,20 @@ QgsLayerTreeModel *QgsLayerTreeView::layerTreeModel()
38
40
return qobject_cast<QgsLayerTreeModel*>(model ());
39
41
}
40
42
43
+ QgsMapLayer* QgsLayerTreeView::currentLayer () const
44
+ {
45
+ return mCurrentLayer ;
46
+ }
47
+
48
+ void QgsLayerTreeView::setCurrentLayer (QgsMapLayer* layer)
49
+ {
50
+ if (mCurrentLayer == layer)
51
+ return ;
52
+
53
+ mCurrentLayer = layer;
54
+ emit currentLayerChanged (mCurrentLayer );
55
+ }
56
+
41
57
42
58
void QgsLayerTreeView::contextMenuEvent (QContextMenuEvent *event)
43
59
{
@@ -144,6 +160,19 @@ void QgsLayerTreeView::updateExpandedStateToNode(QModelIndex index)
144
160
node->setExpanded (isExpanded (index));
145
161
}
146
162
163
+ void QgsLayerTreeView::onCurrentChanged (QModelIndex current)
164
+ {
165
+ QgsLayerTreeNode* node = layerTreeModel ()->index2node (current);
166
+ if (!node)
167
+ return ; // TODO: maybe also support symbology nodes
168
+
169
+ QgsMapLayer* layer = 0 ;
170
+ if (node->nodeType () == QgsLayerTreeNode::NodeLayer)
171
+ layer = static_cast <QgsLayerTreeLayer*>(node)->layer ();
172
+
173
+ setCurrentLayer (layer);
174
+ }
175
+
147
176
void QgsLayerTreeView::updateExpandedStateFromNode (QgsLayerTreeNode* node)
148
177
{
149
178
QModelIndex idx = layerTreeModel ()->node2index (node);
0 commit comments