Skip to content

Commit 56ee3f4

Browse files
committedMay 21, 2014
Added helper namespace QgsLayerTree
1 parent ebd8aea commit 56ee3f4

11 files changed

+146
-117
lines changed
 

‎src/app/qgisapp.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,9 @@
135135
#include "qgsgpsinformationwidget.h"
136136
#include "qgsguivectorlayertools.h"
137137
#include "qgslabelinggui.h"
138+
#include "qgslayertree.h"
138139
#include "qgslayertreemapcanvasbridge.h"
139140
#include "qgslayertreemodel.h"
140-
#include "qgslayertreenode.h"
141141
#include "qgslayertreeregistrybridge.h"
142142
#include "qgslayertreeutils.h"
143143
#include "qgslayertreeview.h"
@@ -2251,8 +2251,8 @@ void QgisApp::layerTreeViewCurrentChanged(const QModelIndex& current, const QMod
22512251
if (QgsLayerTreeNode* currentNode = mLayerTreeView->currentNode())
22522252
{
22532253
QgsLayerTreeNode* parentNode = currentNode->parent();
2254-
if (parentNode && parentNode->nodeType() == QgsLayerTreeNode::NodeGroup)
2255-
parentGroup = static_cast<QgsLayerTreeGroup*>(parentNode);
2254+
if (QgsLayerTree::isGroup(parentNode))
2255+
parentGroup = QgsLayerTree::toGroup(parentNode);
22562256
}
22572257

22582258
index = current.row();
@@ -6770,17 +6770,17 @@ void QgisApp::setLayerCRS()
67706770

67716771
foreach ( QgsLayerTreeNode* node, mLayerTreeView->selectedNodes() )
67726772
{
6773-
if ( node->nodeType() == QgsLayerTreeNode::NodeGroup )
6773+
if ( QgsLayerTree::isGroup( node ) )
67746774
{
6775-
foreach ( QgsLayerTreeLayer* child, static_cast<QgsLayerTreeGroup*>( node )->findLayers() )
6775+
foreach ( QgsLayerTreeLayer* child, QgsLayerTree::toGroup( node )->findLayers() )
67766776
{
67776777
if ( child->layer() )
67786778
child->layer()->setCrs( crs );
67796779
}
67806780
}
6781-
else if ( node->nodeType() == QgsLayerTreeNode::NodeLayer )
6781+
else if ( QgsLayerTree::isLayer( node ) )
67826782
{
6783-
QgsLayerTreeLayer* nodeLayer = static_cast<QgsLayerTreeLayer*>( node );
6783+
QgsLayerTreeLayer* nodeLayer = QgsLayerTree::toLayer( node );
67846784
if (nodeLayer->layer())
67856785
nodeLayer->layer()->setCrs( crs );
67866786
}

‎src/app/qgsapplayertreeviewmenuprovider.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
#include "qgisapp.h"
55
#include "qgsapplication.h"
66
#include "qgsclipboard.h"
7+
#include "qgslayertree.h"
78
#include "qgslayertreemodel.h"
8-
#include "qgslayertreenode.h"
99
#include "qgslayertreeviewdefaultactions.h"
1010
#include "qgsproject.h"
1111
#include "qgsrasterlayer.h"
@@ -38,7 +38,7 @@ QMenu* QgsAppLayerTreeViewMenuProvider::createContextMenu()
3838
else if (QgsLayerTreeNode* node = mView->layerTreeModel()->index2node(idx))
3939
{
4040
// layer or group selected
41-
if (node->nodeType() == QgsLayerTreeNode::NodeGroup)
41+
if (QgsLayerTree::isGroup(node))
4242
{
4343
menu->addAction( actions->actionZoomToGroup(mCanvas, menu) );
4444
menu->addAction( actions->actionRemoveGroupOrLayer(menu) );
@@ -53,9 +53,9 @@ QMenu* QgsAppLayerTreeViewMenuProvider::createContextMenu()
5353

5454
menu->addAction( actions->actionAddGroup(menu) );
5555
}
56-
else if (node->nodeType() == QgsLayerTreeNode::NodeLayer)
56+
else if (QgsLayerTree::isLayer(node))
5757
{
58-
QgsMapLayer* layer = static_cast<QgsLayerTreeLayer*>(node)->layer();
58+
QgsMapLayer* layer = QgsLayerTree::toLayer(node)->layer();
5959

6060
menu->addAction( actions->actionZoomToLayer(mCanvas, menu) );
6161
menu->addAction( actions->actionShowInOverview(menu) );

‎src/app/qgsprojectlayergroupdialog.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
#include "qgisapp.h"
1818
#include "qgsapplication.h"
1919

20+
#include "qgslayertree.h"
2021
#include "qgslayertreemodel.h"
21-
#include "qgslayertreenode.h"
2222
#include "qgslayertreeutils.h"
2323

2424
#include <QDomDocument>
@@ -64,8 +64,8 @@ QStringList QgsProjectLayerGroupDialog::selectedGroups() const
6464
foreach( QModelIndex index, mTreeView->selectionModel()->selectedIndexes() )
6565
{
6666
QgsLayerTreeNode* node = model->index2node( index );
67-
if ( node->nodeType() == QgsLayerTreeNode::NodeGroup )
68-
groups << static_cast<QgsLayerTreeGroup*>( node )->name();
67+
if ( QgsLayerTree::isGroup(node) )
68+
groups << QgsLayerTree::toGroup( node )->name();
6969
}
7070
return groups;
7171
}
@@ -77,8 +77,8 @@ QStringList QgsProjectLayerGroupDialog::selectedLayerIds() const
7777
foreach( QModelIndex index, mTreeView->selectionModel()->selectedIndexes() )
7878
{
7979
QgsLayerTreeNode* node = model->index2node( index );
80-
if ( node->nodeType() == QgsLayerTreeNode::NodeLayer )
81-
layerIds << static_cast<QgsLayerTreeLayer*>( node )->layerId();
80+
if ( QgsLayerTree::isLayer(node) )
81+
layerIds << QgsLayerTree::toLayer( node )->layerId();
8282
}
8383
return layerIds;
8484
}
@@ -90,8 +90,8 @@ QStringList QgsProjectLayerGroupDialog::selectedLayerNames() const
9090
foreach( QModelIndex index, mTreeView->selectionModel()->selectedIndexes() )
9191
{
9292
QgsLayerTreeNode* node = model->index2node( index );
93-
if ( node->nodeType() == QgsLayerTreeNode::NodeLayer )
94-
layerNames << static_cast<QgsLayerTreeLayer*>( node )->layerName();
93+
if ( QgsLayerTree::isLayer(node) )
94+
layerNames << QgsLayerTree::toLayer( node )->layerName();
9595
}
9696
return layerNames;
9797
}
@@ -188,8 +188,8 @@ void QgsProjectLayerGroupDialog::removeEmbeddedNodes( QgsLayerTreeGroup* node )
188188
{
189189
if ( child->customProperty("embedded").toBool() )
190190
childrenToRemove << child;
191-
else if ( child->nodeType() == QgsLayerTreeNode::NodeGroup )
192-
removeEmbeddedNodes( static_cast<QgsLayerTreeGroup*>( child ) );
191+
else if ( QgsLayerTree::isGroup(child) )
192+
removeEmbeddedNodes( QgsLayerTree::toGroup( child ) );
193193
}
194194
foreach ( QgsLayerTreeNode* childToRemove, childrenToRemove )
195195
node->removeChildNode( childToRemove );

‎src/core/layertree/qgslayertree.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#ifndef QGSLAYERTREE_H
2+
#define QGSLAYERTREE_H
3+
4+
#include "qgslayertreenode.h"
5+
6+
namespace QgsLayerTree
7+
{
8+
inline bool isGroup(QgsLayerTreeNode* node)
9+
{
10+
return node && node->nodeType() == QgsLayerTreeNode::NodeGroup;
11+
}
12+
inline bool isLayer(QgsLayerTreeNode* node)
13+
{
14+
return node && node->nodeType() == QgsLayerTreeNode::NodeLayer;
15+
}
16+
17+
inline QgsLayerTreeGroup* toGroup(QgsLayerTreeNode* node)
18+
{
19+
return static_cast<QgsLayerTreeGroup*>(node);
20+
}
21+
inline QgsLayerTreeLayer* toLayer(QgsLayerTreeNode* node)
22+
{
23+
return static_cast<QgsLayerTreeLayer*>(node);
24+
}
25+
26+
}
27+
28+
#endif // QGSLAYERTREE_H

‎src/core/layertree/qgslayertreenode.cpp

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include "qgsmaplayerregistry.h"
44

5+
#include "qgslayertree.h"
56
#include "qgslayertreeutils.h"
67

78

@@ -163,10 +164,10 @@ QgsLayerTreeLayer* QgsLayerTreeGroup::addLayer(QgsMapLayer* layer)
163164

164165
void QgsLayerTreeGroup::connectToChildNode(QgsLayerTreeNode* node)
165166
{
166-
if (node->nodeType() == QgsLayerTreeNode::NodeLayer)
167+
if (QgsLayerTree::isLayer(node))
167168
{
168169
// TODO: this could be handled directly by LayerTreeLayer by listening to QgsMapLayerRegistry...
169-
//QgsLayerTreeLayer* nodeLayer = static_cast<QgsLayerTreeLayer*>(node);
170+
//QgsLayerTreeLayer* nodeLayer = QgsLayerTree::toLayer(node);
170171
//connect(nodeLayer->layer(), SIGNAL(destroyed()), this, SLOT(layerDestroyed()));
171172
}
172173

@@ -209,9 +210,9 @@ void QgsLayerTreeGroup::removeLayer(QgsMapLayer* layer)
209210
{
210211
foreach (QgsLayerTreeNode* child, mChildren)
211212
{
212-
if (child->nodeType() == QgsLayerTreeNode::NodeLayer)
213+
if (QgsLayerTree::isLayer(child))
213214
{
214-
QgsLayerTreeLayer* childLayer = static_cast<QgsLayerTreeLayer*>(child);
215+
QgsLayerTreeLayer* childLayer = QgsLayerTree::toLayer(child);
215216
if (childLayer->layer() == layer)
216217
{
217218
removeChildAt(mChildren.indexOf(child));
@@ -237,15 +238,15 @@ QgsLayerTreeLayer *QgsLayerTreeGroup::findLayer(const QString& layerId)
237238
{
238239
foreach (QgsLayerTreeNode* child, mChildren)
239240
{
240-
if (child->nodeType() == QgsLayerTreeNode::NodeLayer)
241+
if (QgsLayerTree::isLayer(child))
241242
{
242-
QgsLayerTreeLayer* childLayer = static_cast<QgsLayerTreeLayer*>(child);
243+
QgsLayerTreeLayer* childLayer = QgsLayerTree::toLayer(child);
243244
if (childLayer->layerId() == layerId)
244245
return childLayer;
245246
}
246-
else if (child->nodeType() == QgsLayerTreeNode::NodeGroup)
247+
else if (QgsLayerTree::isGroup(child))
247248
{
248-
QgsLayerTreeLayer* res = static_cast<QgsLayerTreeGroup*>(child)->findLayer(layerId);
249+
QgsLayerTreeLayer* res = QgsLayerTree::toGroup(child)->findLayer(layerId);
249250
if (res)
250251
return res;
251252
}
@@ -258,10 +259,10 @@ QList<QgsLayerTreeLayer*> QgsLayerTreeGroup::findLayers() const
258259
QList<QgsLayerTreeLayer*> list;
259260
foreach (QgsLayerTreeNode* child, mChildren)
260261
{
261-
if (child->nodeType() == QgsLayerTreeNode::NodeLayer)
262-
list << static_cast<QgsLayerTreeLayer*>(child);
263-
else if (child->nodeType() == QgsLayerTreeNode::NodeGroup)
264-
list << static_cast<QgsLayerTreeGroup*>(child)->findLayers();
262+
if (QgsLayerTree::isLayer(child))
263+
list << QgsLayerTree::toLayer(child);
264+
else if (QgsLayerTree::isGroup(child))
265+
list << QgsLayerTree::toGroup(child)->findLayers();
265266
}
266267
return list;
267268
}
@@ -270,9 +271,9 @@ QgsLayerTreeGroup* QgsLayerTreeGroup::findGroup(const QString& name)
270271
{
271272
foreach (QgsLayerTreeNode* child, mChildren)
272273
{
273-
if (child->nodeType() == QgsLayerTreeNode::NodeGroup)
274+
if (QgsLayerTree::isGroup(child))
274275
{
275-
QgsLayerTreeGroup* childGroup = static_cast<QgsLayerTreeGroup*>(child);
276+
QgsLayerTreeGroup* childGroup = QgsLayerTree::toGroup(child);
276277
if (childGroup->name() == name)
277278
return childGroup;
278279
else
@@ -365,10 +366,10 @@ void QgsLayerTreeGroup::setVisible(Qt::CheckState state)
365366
// update children to have the correct visibility
366367
foreach (QgsLayerTreeNode* child, mChildren)
367368
{
368-
if (child->nodeType() == NodeGroup)
369-
static_cast<QgsLayerTreeGroup*>(child)->setVisible(mChecked);
370-
else if (child->nodeType() == NodeLayer)
371-
static_cast<QgsLayerTreeLayer*>(child)->setVisible(mChecked == Qt::Checked);
369+
if (QgsLayerTree::isGroup(child))
370+
QgsLayerTree::toGroup(child)->setVisible(mChecked);
371+
else if (QgsLayerTree::isLayer(child))
372+
QgsLayerTree::toLayer(child)->setVisible(mChecked == Qt::Checked);
372373
}
373374

374375
mChangingChildVisibility = false;
@@ -380,10 +381,10 @@ QStringList QgsLayerTreeGroup::childLayerIds() const
380381
QStringList lst;
381382
foreach (QgsLayerTreeNode* child, mChildren)
382383
{
383-
if (child->nodeType() == NodeGroup)
384-
lst << static_cast<QgsLayerTreeGroup*>(child)->childLayerIds();
385-
else if (child->nodeType() == NodeLayer)
386-
lst << static_cast<QgsLayerTreeLayer*>(child)->layerId();
384+
if (QgsLayerTree::isGroup(child))
385+
lst << QgsLayerTree::toGroup(child)->childLayerIds();
386+
else if (QgsLayerTree::isLayer(child))
387+
lst << QgsLayerTree::toLayer(child)->layerId();
387388
}
388389
return lst;
389390
}
@@ -407,15 +408,15 @@ void QgsLayerTreeGroup::updateVisibilityFromChildren()
407408

408409
foreach (QgsLayerTreeNode* child, mChildren)
409410
{
410-
if (child->nodeType() == QgsLayerTreeNode::NodeLayer)
411+
if (QgsLayerTree::isLayer(child))
411412
{
412-
bool layerVisible = static_cast<QgsLayerTreeLayer*>(child)->isVisible();
413+
bool layerVisible = QgsLayerTree::toLayer(child)->isVisible();
413414
if (layerVisible) hasVisible = true;
414415
if (!layerVisible) hasHidden = true;
415416
}
416-
else if (child->nodeType() == QgsLayerTreeNode::NodeGroup)
417+
else if (QgsLayerTree::isGroup(child))
417418
{
418-
Qt::CheckState state = static_cast<QgsLayerTreeGroup*>(child)->isVisible();
419+
Qt::CheckState state = QgsLayerTree::toGroup(child)->isVisible();
419420
if (state == Qt::Checked || state == Qt::PartiallyChecked) hasVisible = true;
420421
if (state == Qt::Unchecked || state == Qt::PartiallyChecked) hasHidden = true;
421422
}

‎src/core/layertree/qgslayertreeregistrybridge.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#include "qgsmaplayerregistry.h"
44

5-
#include "qgslayertreenode.h"
5+
#include "qgslayertree.h"
66

77
#include "qgsproject.h"
88

@@ -67,8 +67,8 @@ void QgsLayerTreeRegistryBridge::groupAddedChildren(int indexFrom, int indexTo)
6767
for (int i = indexFrom; i <= indexTo; ++i)
6868
{
6969
QgsLayerTreeNode* child = group->children()[i];
70-
if (child->nodeType() == QgsLayerTreeNode::NodeGroup)
71-
connectToGroup(static_cast<QgsLayerTreeGroup*>(child));
70+
if (QgsLayerTree::isGroup(child))
71+
connectToGroup(QgsLayerTree::toGroup(child));
7272
}
7373
}
7474

@@ -77,13 +77,13 @@ static void _collectLayerIdsInGroup(QgsLayerTreeGroup* group, int indexFrom, int
7777
for (int i = indexFrom; i <= indexTo; ++i)
7878
{
7979
QgsLayerTreeNode* child = group->children()[i];
80-
if (child->nodeType() == QgsLayerTreeNode::NodeLayer)
80+
if (QgsLayerTree::isLayer(child))
8181
{
82-
lst << static_cast<QgsLayerTreeLayer*>(child)->layerId();
82+
lst << QgsLayerTree::toLayer(child)->layerId();
8383
}
84-
else if (child->nodeType() == QgsLayerTreeNode::NodeGroup)
84+
else if (QgsLayerTree::isGroup(child))
8585
{
86-
_collectLayerIdsInGroup(static_cast<QgsLayerTreeGroup*>(child), 0, child->children().count()-1, lst);
86+
_collectLayerIdsInGroup(QgsLayerTree::toGroup(child), 0, child->children().count()-1, lst);
8787
}
8888
}
8989
}
@@ -119,8 +119,8 @@ void QgsLayerTreeRegistryBridge::connectToGroup(QgsLayerTreeGroup* group)
119119

120120
foreach (QgsLayerTreeNode* child, group->children())
121121
{
122-
if (child->nodeType() == QgsLayerTreeNode::NodeGroup)
123-
connectToGroup(static_cast<QgsLayerTreeGroup*>(child));
122+
if (QgsLayerTree::isGroup(child))
123+
connectToGroup(QgsLayerTree::toGroup(child));
124124
}
125125
}
126126

‎src/core/qgsproject.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
#include "qgsdatasourceuri.h"
2424
#include "qgsexception.h"
25-
#include "qgslayertreenode.h"
25+
#include "qgslayertree.h"
2626
#include "qgslayertreeutils.h"
2727
#include "qgslayertreeregistrybridge.h"
2828
#include "qgslogger.h"
@@ -1768,7 +1768,7 @@ bool QgsProject::createEmbeddedGroup( const QString& groupName, const QString& p
17681768
}
17691769

17701770
// clone the group sub-tree (it is used already in a tree, we cannot just tear it off)
1771-
QgsLayerTreeGroup* newGroup = static_cast<QgsLayerTreeGroup*>( group->clone() );
1771+
QgsLayerTreeGroup* newGroup = QgsLayerTree::toGroup( group->clone() );
17721772
delete root;
17731773
root = 0;
17741774

@@ -1804,16 +1804,16 @@ void QgsProject::initializeEmbeddedSubtree( const QString& projectFilePath, QgsL
18041804
// all nodes in the subtree will have "embedded" custom property set
18051805
child->setCustomProperty( "embedded", true );
18061806

1807-
if ( child->nodeType() == QgsLayerTreeNode::NodeGroup )
1807+
if ( QgsLayerTree::isGroup( child ) )
18081808
{
1809-
initializeEmbeddedSubtree( projectFilePath, static_cast<QgsLayerTreeGroup*>( child ) );
1809+
initializeEmbeddedSubtree( projectFilePath, QgsLayerTree::toGroup( child ) );
18101810
}
1811-
else if ( child->nodeType() == QgsLayerTreeNode::NodeLayer )
1811+
else if ( QgsLayerTree::isLayer( child ) )
18121812
{
18131813
// load the layer into our project
18141814
QList<QDomNode> brokenNodes;
18151815
QList< QPair< QgsVectorLayer*, QDomElement > > vectorLayerList;
1816-
createEmbeddedLayer( static_cast<QgsLayerTreeLayer*>( child )->layerId(), projectFilePath, brokenNodes, vectorLayerList, false );
1816+
createEmbeddedLayer( QgsLayerTree::toLayer( child )->layerId(), projectFilePath, brokenNodes, vectorLayerList, false );
18171817
}
18181818
}
18191819
}

‎src/gui/layertree/qgslayertreemapcanvasbridge.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include "qgslayertreemapcanvasbridge.h"
22

3-
#include "qgslayertreenode.h"
3+
#include "qgslayertree.h"
44

55
#include "qgsmapcanvas.h"
66

@@ -25,9 +25,9 @@ QStringList QgsLayerTreeMapCanvasBridge::defaultLayerOrder() const
2525

2626
void QgsLayerTreeMapCanvasBridge::defaultLayerOrder(QgsLayerTreeNode* node, QStringList& order) const
2727
{
28-
if (node->nodeType() == QgsLayerTreeNode::NodeLayer)
28+
if (QgsLayerTree::isLayer(node))
2929
{
30-
QgsLayerTreeLayer* nodeLayer = static_cast<QgsLayerTreeLayer*>(node);
30+
QgsLayerTreeLayer* nodeLayer = QgsLayerTree::toLayer(node);
3131
order << nodeLayer->layerId();
3232
}
3333

@@ -73,9 +73,9 @@ void QgsLayerTreeMapCanvasBridge::connectToNode(QgsLayerTreeNode *node)
7373
connect(node, SIGNAL(removedChildren(int,int)), this, SLOT(nodeRemovedChildren()));
7474
connect(node, SIGNAL(visibilityChanged(Qt::CheckState)), this, SLOT(nodeVisibilityChanged()));
7575

76-
if (node->nodeType() == QgsLayerTreeNode::NodeLayer)
76+
if (QgsLayerTree::isLayer(node))
7777
{
78-
QString layerId = static_cast<QgsLayerTreeLayer*>(node)->layerId();
78+
QString layerId = QgsLayerTree::toLayer(node)->layerId();
7979
if (!mCustomLayerOrder.contains(layerId))
8080
mCustomLayerOrder.append(layerId);
8181
}
@@ -107,9 +107,9 @@ void QgsLayerTreeMapCanvasBridge::setCanvasLayers()
107107

108108
void QgsLayerTreeMapCanvasBridge::setCanvasLayers(QgsLayerTreeNode *node, QList<QgsMapCanvasLayer> &layers)
109109
{
110-
if (node->nodeType() == QgsLayerTreeNode::NodeLayer)
110+
if (QgsLayerTree::isLayer(node))
111111
{
112-
QgsLayerTreeLayer* nodeLayer = static_cast<QgsLayerTreeLayer*>(node);
112+
QgsLayerTreeLayer* nodeLayer = QgsLayerTree::toLayer(node);
113113
layers << QgsMapCanvasLayer(nodeLayer->layer(), nodeLayer->isVisible(), nodeLayer->customProperty("overview", 0).toInt());
114114
}
115115

‎src/gui/layertree/qgslayertreemodel.cpp

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include "qgslayertreemodel.h"
22

3-
#include "qgslayertreenode.h"
3+
#include "qgslayertree.h"
44

55
#include <QMimeData>
66
#include <QTextStream>
@@ -39,9 +39,9 @@ void QgsLayerTreeModel::connectToNode(QgsLayerTreeNode* node)
3939
connect(node, SIGNAL(removedChildren(int,int)), this, SLOT(nodeRemovedChildren()));
4040
connect(node, SIGNAL(visibilityChanged(Qt::CheckState)), this, SLOT(nodeVisibilityChanded()));
4141

42-
if (node->nodeType() == QgsLayerTreeNode::NodeLayer && testFlag(ShowSymbology))
42+
if (QgsLayerTree::isLayer(node) && testFlag(ShowSymbology))
4343
{
44-
addSymbologyToLayer(static_cast<QgsLayerTreeLayer*>(node));
44+
addSymbologyToLayer(QgsLayerTree::toLayer(node));
4545
}
4646

4747
foreach (QgsLayerTreeNode* child, node->children())
@@ -75,9 +75,9 @@ int QgsLayerTreeModel::rowCount(const QModelIndex &parent) const
7575
if (parent.isValid() && parent.column() != 0)
7676
return 0;
7777

78-
if (n->nodeType() == QgsLayerTreeNode::NodeLayer)
78+
if (QgsLayerTree::isLayer(n))
7979
{
80-
QgsLayerTreeLayer* nL = static_cast<QgsLayerTreeLayer*>(n);
80+
QgsLayerTreeLayer* nL = QgsLayerTree::toLayer(n);
8181

8282
return mSymbologyNodes[nL].count();
8383
}
@@ -108,9 +108,9 @@ QModelIndex QgsLayerTreeModel::index(int row, int column, const QModelIndex &par
108108
if (!n || column != 0 || row >= rowCount(parent))
109109
return QModelIndex();
110110

111-
if (testFlag(ShowSymbology) && n->nodeType() == QgsLayerTreeNode::NodeLayer)
111+
if (testFlag(ShowSymbology) && QgsLayerTree::isLayer(n))
112112
{
113-
QgsLayerTreeLayer* nL = static_cast<QgsLayerTreeLayer*>(n);
113+
QgsLayerTreeLayer* nL = QgsLayerTree::toLayer(n);
114114
Q_ASSERT(mSymbologyNodes.contains(nL));
115115
return createIndex(row, column, static_cast<QObject*>(mSymbologyNodes[nL].at(row)));
116116
}
@@ -163,11 +163,11 @@ QVariant QgsLayerTreeModel::data(const QModelIndex &index, int role) const
163163
QgsLayerTreeNode* node = index2node(index);
164164
if (role == Qt::DisplayRole || role == Qt::EditRole)
165165
{
166-
if (node->nodeType() == QgsLayerTreeNode::NodeGroup)
167-
return static_cast<QgsLayerTreeGroup*>(node)->name();
168-
else if (node->nodeType() == QgsLayerTreeNode::NodeLayer)
166+
if (QgsLayerTree::isGroup(node))
167+
return QgsLayerTree::toGroup(node)->name();
168+
else if (QgsLayerTree::isLayer(node))
169169
{
170-
QgsLayerTreeLayer* nodeLayer = static_cast<QgsLayerTreeLayer*>(node);
170+
QgsLayerTreeLayer* nodeLayer = QgsLayerTree::toLayer(node);
171171
QString name = nodeLayer->layerName();
172172
if (nodeLayer->customProperty("showFeatureCount", 0).toInt() && role == Qt::DisplayRole)
173173
{
@@ -180,11 +180,11 @@ QVariant QgsLayerTreeModel::data(const QModelIndex &index, int role) const
180180
}
181181
else if ( role == Qt::DecorationRole && index.column() == 0 )
182182
{
183-
if (node->nodeType() == QgsLayerTreeNode::NodeGroup)
183+
if (QgsLayerTree::isGroup(node))
184184
return QgsDataCollectionItem::iconDir();
185-
else if (node->nodeType() == QgsLayerTreeNode::NodeLayer)
185+
else if (QgsLayerTree::isLayer(node))
186186
{
187-
QgsMapLayer* layer = static_cast<QgsLayerTreeLayer*>(node)->layer();
187+
QgsMapLayer* layer = QgsLayerTree::toLayer(node)->layer();
188188
if (!layer)
189189
return QVariant();
190190
if (layer->type() == QgsMapLayer::RasterLayer)
@@ -209,14 +209,14 @@ QVariant QgsLayerTreeModel::data(const QModelIndex &index, int role) const
209209
if (!testFlag(AllowVisibilityManagement))
210210
return QVariant();
211211

212-
if (node->nodeType() == QgsLayerTreeNode::NodeLayer)
212+
if (QgsLayerTree::isLayer(node))
213213
{
214-
QgsLayerTreeLayer* nodeLayer = static_cast<QgsLayerTreeLayer*>(node);
214+
QgsLayerTreeLayer* nodeLayer = QgsLayerTree::toLayer(node);
215215
return nodeLayer->isVisible() ? Qt::Checked : Qt::Unchecked;
216216
}
217-
else if (node->nodeType() == QgsLayerTreeNode::NodeGroup)
217+
else if (QgsLayerTree::isGroup(node))
218218
{
219-
QgsLayerTreeGroup* nodeGroup = static_cast<QgsLayerTreeGroup*>(node);
219+
QgsLayerTreeGroup* nodeGroup = QgsLayerTree::toGroup(node);
220220
return nodeGroup->isVisible();
221221
}
222222
}
@@ -225,7 +225,7 @@ QVariant QgsLayerTreeModel::data(const QModelIndex &index, int role) const
225225
QFont f;
226226
if (node->customProperty("embedded", false).toBool())
227227
f.setItalic(true);
228-
if (node->nodeType() == QgsLayerTreeNode::NodeLayer)
228+
if (QgsLayerTree::isLayer(node))
229229
f.setBold(true);
230230
return f;
231231
}
@@ -243,9 +243,9 @@ Qt::ItemFlags QgsLayerTreeModel::flags(const QModelIndex& index) const
243243

244244
Qt::ItemFlags f = Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsDragEnabled;
245245
QgsLayerTreeNode* node = index2node(index);
246-
if (testFlag(AllowVisibilityManagement) && node->nodeType() == QgsLayerTreeNode::NodeLayer)
246+
if (testFlag(AllowVisibilityManagement) && QgsLayerTree::isLayer(node))
247247
f |= Qt::ItemIsUserCheckable;
248-
else if (node->nodeType() == QgsLayerTreeNode::NodeGroup)
248+
else if (QgsLayerTree::isGroup(node))
249249
f |= Qt::ItemIsDropEnabled | Qt::ItemIsUserCheckable;
250250
return f;
251251
}
@@ -261,29 +261,29 @@ bool QgsLayerTreeModel::setData(const QModelIndex& index, const QVariant& value,
261261
if (!testFlag(AllowVisibilityManagement))
262262
return false;
263263

264-
if (node->nodeType() == QgsLayerTreeNode::NodeLayer)
264+
if (QgsLayerTree::isLayer(node))
265265
{
266-
QgsLayerTreeLayer* layer = static_cast<QgsLayerTreeLayer*>(node);
266+
QgsLayerTreeLayer* layer = QgsLayerTree::toLayer(node);
267267
layer->setVisible(value.toInt() == Qt::Checked);
268268
}
269-
else if (node->nodeType() == QgsLayerTreeNode::NodeGroup)
269+
else if (QgsLayerTree::isGroup(node))
270270
{
271-
QgsLayerTreeGroup* group = static_cast<QgsLayerTreeGroup*>(node);
271+
QgsLayerTreeGroup* group = QgsLayerTree::toGroup(node);
272272
group->setVisible((Qt::CheckState)value.toInt());
273273
}
274274
return true;
275275
}
276276
else if (role == Qt::EditRole)
277277
{
278-
if (node->nodeType() == QgsLayerTreeNode::NodeLayer)
278+
if (QgsLayerTree::isLayer(node))
279279
{
280-
QgsLayerTreeLayer* layer = static_cast<QgsLayerTreeLayer*>(node);
280+
QgsLayerTreeLayer* layer = QgsLayerTree::toLayer(node);
281281
layer->setLayerName(value.toString());
282282
emit dataChanged(index, index);
283283
}
284-
else if (node->nodeType() == QgsLayerTreeNode::NodeGroup)
284+
else if (QgsLayerTree::isGroup(node))
285285
{
286-
static_cast<QgsLayerTreeGroup*>(node)->setName(value.toString());
286+
QgsLayerTree::toGroup(node)->setName(value.toString());
287287
emit dataChanged(index, index);
288288
}
289289
}
@@ -433,8 +433,8 @@ void QgsLayerTreeModel::layerRendererChanged()
433433

434434
void QgsLayerTreeModel::removeSymbologyFromSubtree(QgsLayerTreeNode* node)
435435
{
436-
if (node->nodeType() == QgsLayerTreeNode::NodeLayer)
437-
removeSymbologyFromLayer(static_cast<QgsLayerTreeLayer*>(node));
436+
if (QgsLayerTree::isLayer(node))
437+
removeSymbologyFromLayer(QgsLayerTree::toLayer(node));
438438

439439
foreach (QgsLayerTreeNode* child, node->children())
440440
removeSymbologyFromSubtree(child);
@@ -620,7 +620,7 @@ bool QgsLayerTreeModel::dropMimeData(const QMimeData* data, Qt::DropAction actio
620620
return false;
621621

622622
QgsLayerTreeNode* nodeParent = index2node(parent);
623-
if (!nodeParent || nodeParent->nodeType() != QgsLayerTreeNode::NodeGroup)
623+
if (!QgsLayerTree::isGroup(nodeParent))
624624
return false;
625625

626626
QByteArray encodedData = data->data("application/qgis.layertreemodeldata");
@@ -648,17 +648,17 @@ bool QgsLayerTreeModel::dropMimeData(const QMimeData* data, Qt::DropAction actio
648648
if (nodes.count() == 0)
649649
return false;
650650

651-
static_cast<QgsLayerTreeGroup*>(nodeParent)->insertChildNodes(row, nodes);
651+
QgsLayerTree::toGroup(nodeParent)->insertChildNodes(row, nodes);
652652

653653
return true;
654654
}
655655

656656
bool QgsLayerTreeModel::removeRows(int row, int count, const QModelIndex& parent)
657657
{
658658
QgsLayerTreeNode* parentNode = index2node(parent);
659-
if (parentNode && parentNode->nodeType() == QgsLayerTreeNode::NodeGroup)
659+
if (QgsLayerTree::isGroup(parentNode))
660660
{
661-
static_cast<QgsLayerTreeGroup*>(parentNode)->removeChildren(row, count);
661+
QgsLayerTree::toGroup(parentNode)->removeChildren(row, count);
662662
return true;
663663
}
664664
return false;

‎src/gui/layertree/qgslayertreeview.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include "qgslayertreeview.h"
22

3+
#include "qgslayertree.h"
34
#include "qgslayertreemodel.h"
4-
#include "qgslayertreenode.h"
55
#include "qgslayertreeviewdefaultactions.h"
66

77
#include <QMenu>
@@ -99,7 +99,7 @@ void QgsLayerTreeView::modelRowsInserted(QModelIndex index, int start, int end)
9999
if (!parentNode)
100100
return;
101101

102-
if (parentNode->nodeType() == QgsLayerTreeNode::NodeLayer)
102+
if (QgsLayerTree::isLayer(parentNode))
103103
return; // layers have only symbology nodes (no expanded/collapsed handling)
104104

105105
for (int i = start; i <= end; ++i)
@@ -143,8 +143,8 @@ QgsMapLayer* QgsLayerTreeView::layerForIndex(const QModelIndex& index) const
143143
QgsLayerTreeNode* node = layerTreeModel()->index2node(index);
144144
if (node)
145145
{
146-
if (node->nodeType() == QgsLayerTreeNode::NodeLayer)
147-
return static_cast<QgsLayerTreeLayer*>(node)->layer();
146+
if (QgsLayerTree::isLayer(node))
147+
return QgsLayerTree::toLayer(node)->layer();
148148
}
149149
else
150150
{
@@ -165,13 +165,13 @@ QgsLayerTreeNode* QgsLayerTreeView::currentNode() const
165165
QgsLayerTreeGroup* QgsLayerTreeView::currentGroupNode() const
166166
{
167167
QgsLayerTreeNode* node = currentNode();
168-
if (node && node->nodeType() == QgsLayerTreeNode::NodeGroup)
169-
return static_cast<QgsLayerTreeGroup*>(node);
170-
else if (node && node->nodeType() == QgsLayerTreeNode::NodeLayer)
168+
if (QgsLayerTree::isGroup(node))
169+
return QgsLayerTree::toGroup(node);
170+
else if (QgsLayerTree::isLayer(node))
171171
{
172172
QgsLayerTreeNode* parent = node->parent();
173-
if (parent && parent->nodeType() == QgsLayerTreeNode::NodeGroup)
174-
return static_cast<QgsLayerTreeGroup*>(node);
173+
if (QgsLayerTree::isGroup(parent))
174+
return QgsLayerTree::toGroup(node);
175175
}
176176
// TODO: also handle if symbology is selected?
177177

@@ -188,8 +188,8 @@ QList<QgsLayerTreeLayer*> QgsLayerTreeView::selectedLayerNodes() const
188188
QList<QgsLayerTreeLayer*> layerNodes;
189189
foreach (QgsLayerTreeNode* node, selectedNodes())
190190
{
191-
if (node->nodeType() == QgsLayerTreeNode::NodeLayer)
192-
layerNodes << static_cast<QgsLayerTreeLayer*>(node);
191+
if (QgsLayerTree::isLayer(node))
192+
layerNodes << QgsLayerTree::toLayer(node);
193193
}
194194
return layerNodes;
195195
}

‎src/gui/layertree/qgslayertreeviewdefaultactions.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#include "qgslayertreeviewdefaultactions.h"
22

33
#include "qgsapplication.h"
4+
#include "qgslayertree.h"
45
#include "qgslayertreemodel.h"
5-
#include "qgslayertreenode.h"
66
#include "qgslayertreeview.h"
77
#include "qgsmapcanvas.h"
88
#include "qgsmaplayerregistry.h"
@@ -129,13 +129,13 @@ void QgsLayerTreeViewDefaultActions::showInOverview()
129129
void QgsLayerTreeViewDefaultActions::showFeatureCount()
130130
{
131131
QgsLayerTreeNode* node = mView->currentNode();
132-
if (!node || node->nodeType() != QgsLayerTreeNode::NodeLayer)
132+
if (!QgsLayerTree::isLayer(node))
133133
return;
134134

135135

136136
node->setCustomProperty("showFeatureCount", node->customProperty("showFeatureCount", 0).toInt() ? 0 : 1);
137137

138-
mView->layerTreeModel()->refreshLayerSymbology(static_cast<QgsLayerTreeLayer*>(node));
138+
mView->layerTreeModel()->refreshLayerSymbology(QgsLayerTree::toLayer(node));
139139
}
140140

141141
void QgsLayerTreeViewDefaultActions::zoomToLayer()

0 commit comments

Comments
 (0)
Please sign in to comment.