Skip to content

Commit

Permalink
Updates to QGIS app to use layer tree view instead of legend widget
Browse files Browse the repository at this point in the history
  • Loading branch information
wonder-sk committed May 21, 2014
1 parent bbdf144 commit 21b2a9a
Show file tree
Hide file tree
Showing 8 changed files with 155 additions and 90 deletions.
180 changes: 91 additions & 89 deletions src/app/qgisapp.cpp

Large diffs are not rendered by default.

13 changes: 13 additions & 0 deletions src/core/layertree/qgslayertreenode.cpp
Expand Up @@ -242,6 +242,19 @@ QgsLayerTreeLayer *QgsLayerTreeGroup::findLayer(const QString& layerId)
return 0;
}

QList<QgsLayerTreeLayer*> QgsLayerTreeGroup::findLayers() const
{
QList<QgsLayerTreeLayer*> list;
foreach (QgsLayerTreeNode* child, mChildren)
{
if (child->nodeType() == QgsLayerTreeNode::NodeLayer)
list << static_cast<QgsLayerTreeLayer*>(child);
else if (child->nodeType() == QgsLayerTreeNode::NodeGroup)
list << static_cast<QgsLayerTreeGroup*>(child)->findLayers();
}
return list;
}

QgsLayerTreeGroup* QgsLayerTreeGroup::findGroup(const QString& name)
{
foreach (QgsLayerTreeNode* child, mChildren)
Expand Down
1 change: 1 addition & 0 deletions src/core/layertree/qgslayertreenode.h
Expand Up @@ -163,6 +163,7 @@ class QgsLayerTreeGroup : public QgsLayerTreeNode
void removeAllChildren();

QgsLayerTreeLayer* findLayer(const QString& layerId);
QList<QgsLayerTreeLayer*> findLayers() const;
QgsLayerTreeGroup* findGroup(const QString& name);

static QgsLayerTreeGroup* readXML(QDomElement& element);
Expand Down
32 changes: 32 additions & 0 deletions src/core/layertree/qgslayertreeutils.cpp
Expand Up @@ -2,6 +2,8 @@

#include "qgslayertreenode.h"

#include "qgsvectorlayer.h"

#include <QDomElement>

bool QgsLayerTreeUtils::readOldLegend(QgsLayerTreeGroup* root, const QDomElement& legendElem)
Expand Down Expand Up @@ -92,3 +94,33 @@ void QgsLayerTreeUtils::addLegendLayerToTreeWidget( const QDomElement& layerElem

parent->addChildNode(layerNode);
}



bool QgsLayerTreeUtils::layersEditable( const QList<QgsLayerTreeLayer*>& layerNodes )
{
foreach ( QgsLayerTreeLayer* layerNode, layerNodes )
{
QgsVectorLayer *vl = qobject_cast<QgsVectorLayer*>( layerNode->layer() );
if ( !vl )
continue;

if ( vl->isEditable() )
return true;
}
return false;
}

bool QgsLayerTreeUtils::layersModified( const QList<QgsLayerTreeLayer*>& layerNodes )
{
foreach ( QgsLayerTreeLayer* layerNode, layerNodes )
{
QgsVectorLayer *vl = qobject_cast<QgsVectorLayer*>( layerNode->layer() );
if ( !vl )
continue;

if ( vl->isEditable() && vl->isModified() )
return true;
}
return false;
}
4 changes: 4 additions & 0 deletions src/core/layertree/qgslayertreeutils.h
Expand Up @@ -2,10 +2,12 @@
#define QGSLAYERTREEUTILS_H

#include <qnamespace.h>
#include <QList>

class QDomElement;

class QgsLayerTreeGroup;
class QgsLayerTreeLayer;

class CORE_EXPORT QgsLayerTreeUtils
{
Expand All @@ -17,6 +19,8 @@ class CORE_EXPORT QgsLayerTreeUtils
static QString checkStateToXml(Qt::CheckState state);
static Qt::CheckState checkStateFromXml(QString txt);

static bool layersEditable( const QList<QgsLayerTreeLayer*>& layerNodes );
static bool layersModified( const QList<QgsLayerTreeLayer*>& layerNodes );


protected:
Expand Down
11 changes: 11 additions & 0 deletions src/gui/layertree/qgslayertreeview.cpp
Expand Up @@ -186,3 +186,14 @@ QList<QgsLayerTreeLayer*> QgsLayerTreeView::selectedLayerNodes() const
}
return layerNodes;
}

QList<QgsMapLayer*> QgsLayerTreeView::selectedLayers() const
{
QList<QgsMapLayer*> list;
foreach (QgsLayerTreeLayer* node, selectedLayerNodes())
{
if (node->layer())
list << node->layer();
}
return list;
}
2 changes: 2 additions & 0 deletions src/gui/layertree/qgslayertreeview.h
Expand Up @@ -36,6 +36,8 @@ class GUI_EXPORT QgsLayerTreeView : public QTreeView
QList<QgsLayerTreeNode*> selectedNodes(bool skipInternal = false) const;
QList<QgsLayerTreeLayer*> selectedLayerNodes() const;

QList<QgsMapLayer*> selectedLayers() const;

protected:
void contextMenuEvent(QContextMenuEvent* event);

Expand Down
2 changes: 1 addition & 1 deletion src/gui/layertree/qgslayertreeviewdefaultactions.h
Expand Up @@ -29,7 +29,7 @@ class GUI_EXPORT QgsLayerTreeViewDefaultActions : public QObject
QAction* actionMakeTopLevel(QObject* parent = 0);
QAction* actionGroupSelected(QObject* parent = 0);

protected slots:
public slots:
void addGroup();
void removeGroupOrLayer();
void renameGroupOrLayer();
Expand Down

0 comments on commit 21b2a9a

Please sign in to comment.