28 , mPendingCanvasUpdate( false )
29 , mHasCustomLayerOrder( false )
30 , mAutoSetupOnFirstLayer( true )
31 , mAutoEnableCrsTransform( true )
32 , mLastLayerCount( root->findLayers().count() )
86 QStringList newOrder( order );
87 QStringList sortedNewOrder( order );
89 qSort( sortedNewOrder );
91 if ( defOrder.size() < sortedNewOrder.size() )
94 QSet<QString> ids( defOrder.toSet() );
96 for (
int i = 0; i < sortedNewOrder.size(); i++ )
98 if ( !ids.contains( sortedNewOrder[i] ) )
100 newOrder.removeAll( sortedNewOrder[i] );
101 sortedNewOrder.removeAt( i-- );
106 if ( defOrder != sortedNewOrder )
118 QList<QgsMapCanvasLayer> layers;
133 int currentLayerCount = layerNodes.count();
143 if ( layerNode->
layer() &&
193 mLastLayerCount = currentLayerCount;
194 if ( currentLayerCount == 0 )
204 QDomElement elem = doc.documentElement().firstChildElement(
"layer-tree-canvas" );
208 QStringList oldOrder;
217 QDomElement customOrderElem = elem.firstChildElement(
"custom-order" );
218 if ( !customOrderElem.isNull() )
221 QDomElement itemElem = customOrderElem.firstChildElement(
"item" );
222 while ( !itemElem.isNull() )
224 order.append( itemElem.text() );
225 itemElem = itemElem.nextSiblingElement(
"item" );
235 QDomElement elem = doc.createElement(
"layer-tree-canvas" );
236 QDomElement customOrderElem = doc.createElement(
"custom-order" );
241 QDomElement itemElem = doc.createElement(
"item" );
242 itemElem.appendChild( doc.createTextNode( layerId ) );
243 customOrderElem.appendChild( itemElem );
245 elem.appendChild( customOrderElem );
247 doc.documentElement().appendChild( elem );
268 QMetaObject::invokeMethod(
this,
"setCanvasLayers", Qt::QueuedConnection );
276 QStringList layerIds;
277 QList<QgsLayerTreeNode*> children = node->
children();
278 for (
int i = indexFrom; i <= indexTo; ++i )
292 foreach ( QString layerId, layerIds )
315 for (
int i = toRemove.count() - 1; i >= 0; --i )
330 if ( key ==
"overview" )
static bool readOldLegendLayerOrder(const QDomElement &legendElem, bool &hasCustomOrder, QStringList &order)
Try to load custom layer order from.
Layer tree group node serves as a container for layers and further groups.
void hasCustomLayerOrderChanged(bool)
void setCustomLayerOrder(const QStringList &order)
QgsLayerTreeGroup * mRoot
bool mHasCustomLayerOrder
QVariant customProperty(const QString &key, const QVariant &defaultValue=QVariant()) const
Read a custom property from layer.
QgsMapLayer * layer() const
A class that stores visibility and presence in overview flags together with pointer to the layer...
void setHasCustomLayerOrder(bool state)
const QgsMapSettings & mapSettings() const
Get access to properties used for map rendering.
bool hasCrsTransformEnabled() const
returns true if projections are enabled for this layer set
void setCanvasLayers()
force update of canvas layers from the layer tree. Normally this should not be needed to be called...
QStringList defaultLayerOrder() const
Map canvas is a class for displaying all GIS data types on a canvas.
QgsLayerTreeGroup * toGroup(QgsLayerTreeNode *node)
Cast node to a group. No type checking is done - use isGroup() to find out whether this operation is ...
void setDestinationCrs(const QgsCoordinateReferenceSystem &crs)
sets destination coordinate reference system
void setCrsTransformEnabled(bool enabled)
sets whether to use projections for this layer set
Qt::CheckState isVisible() const
void nodeCustomPropertyChanged(QgsLayerTreeNode *node, QString key)
bool mAutoEnableCrsTransform
void setLayerSet(QList< QgsMapCanvasLayer > &layers)
QList< QgsLayerTreeLayer * > findLayers() const
Find all layer nodes. Searches recursively the whole sub-tree.
void nodeAddedChildren(QgsLayerTreeNode *node, int indexFrom, int indexTo)
This class is a base class for nodes in a layer tree.
void nodeVisibilityChanged()
QList< QgsLayerTreeNode * > children()
Get list of children of the node. Children are owned by the parent.
bool isLayer(QgsLayerTreeNode *node)
Check whether the node is a valid layer node.
void readProject(const QDomDocument &doc)
QgsLayerTreeMapCanvasBridge(QgsLayerTreeGroup *root, QgsMapCanvas *canvas, QObject *parent=0)
Constructor: does not take ownership of the layer tree nor canvas.
void deferredSetCanvasLayers()
void nodeRemovedChildren()
QgsLayerTreeLayer * toLayer(QgsLayerTreeNode *node)
Cast node to a layer. No type checking is done - use isLayer() to find out whether this operation is ...
bool mPendingCanvasUpdate
QStringList mCustomLayerOrder
bool mAutoSetupOnFirstLayer
void zoomToFullExtent()
Zoom to the full extent of all layers.
Class for storing a coordinate reference system (CRS)
QgsLayerTreeLayer * findLayer(const QString &layerId) const
Find layer node representing the map layer specified by its ID. Searches recursively the whole sub-tr...
const QgsCoordinateReferenceSystem & crs() const
Returns layer's spatial reference system.
void writeProject(QDomDocument &doc)
void customLayerOrderChanged(const QStringList &order)
void setMapUnits(QGis::UnitType mapUnits)
Set map units (needed by project properties dialog)
QgsCoordinateReferenceSystem mFirstCRS
Represents a vector layer which manages a vector based data sets.
bool isGroup(QgsLayerTreeNode *node)
Check whether the node is a valid group node.
Layer tree node points to a map layer.
QGis::UnitType mapUnits() const