Skip to content

Commit 56ee3f4

Browse files
committed
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
}

0 commit comments

Comments
 (0)