QGIS API Documentation  3.16.0-Hannover (43b64b13f3)
qgslayertreelayer.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgslayertreelayer.h
3  --------------------------------------
4  Date : May 2014
5  Copyright : (C) 2014 by Martin Dobias
6  Email : wonder dot sk at gmail dot com
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef QGSLAYERTREELAYER_H
17 #define QGSLAYERTREELAYER_H
18 
19 #include "qgis_core.h"
20 #include "qgis_sip.h"
21 #include "qgslayertreenode.h"
22 #include "qgsmaplayerref.h"
23 #include "qgsreadwritecontext.h"
24 #include "qgslegendpatchshape.h"
25 
26 class QgsMapLayer;
27 
43 class CORE_EXPORT QgsLayerTreeLayer : public QgsLayerTreeNode
44 {
45  Q_OBJECT
46  public:
47  explicit QgsLayerTreeLayer( QgsMapLayer *layer );
48 
49 #ifndef SIP_RUN
50  QgsLayerTreeLayer( const QgsLayerTreeLayer &other );
51 #endif
52 
56  explicit QgsLayerTreeLayer( const QString &layerId, const QString &name = QString(), const QString &source = QString(), const QString &provider = QString() );
57 
63  QString layerId() const { return mRef.layerId; }
64 
74  QgsMapLayer *layer() const { return mRef.get(); }
75 
83  QString name() const override;
84 
92  void setName( const QString &n ) override;
93 
99  void setUseLayerName( bool use = true );
100 
105  bool useLayerName() const;
106 
111  static QgsLayerTreeLayer *readXml( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY;
112 
118  static QgsLayerTreeLayer *readXml( QDomElement &element, const QgsProject *project, const QgsReadWriteContext &context ) SIP_FACTORY;
119 
120  void writeXml( QDomElement &parentElement, const QgsReadWriteContext &context ) override;
121 
122  QString dump() const override;
123 
124  QgsLayerTreeLayer *clone() const override SIP_FACTORY;
125 
130  void resolveReferences( const QgsProject *project, bool looseMatching = false ) override;
131 
137  void setLabelExpression( const QString &expression );
138 
144  QString labelExpression() const { return mLabelExpression; }
145 
152  QgsLegendPatchShape patchShape() const;
153 
160  void setPatchShape( const QgsLegendPatchShape &shape );
161 
171  QSizeF patchSize() const { return mPatchSize; }
172 
182  void setPatchSize( QSizeF size ) { mPatchSize = size; }
183 
190  {
194  };
195 
204  LegendNodesSplitBehavior legendSplitBehavior() const { return mSplitBehavior; }
205 
214  void setLegendSplitBehavior( LegendNodesSplitBehavior behavior ) { mSplitBehavior = behavior; }
215 
216  signals:
217 
221  void layerLoaded();
222 
228 
229  protected:
230  void attachToLayer();
231 
235  QString mLayerName;
238 
240  bool mUseLayerName = true;
241 
242  private slots:
243 
248  void layerNameChanged();
249 
254  void layerWillBeDeleted();
255 
256  private:
257 
258 #ifdef SIP_RUN
259 
263  QgsLayerTreeLayer( const QgsLayerTreeLayer &other );
264 #endif
265 
266  QgsLegendPatchShape mPatchShape;
267  QSizeF mPatchSize;
268  LegendNodesSplitBehavior mSplitBehavior = UseDefaultLegendSetting;
269 
270  QgsLayerTreeLayer &operator=( const QgsLayerTreeLayer & ) = delete;
271 };
272 
273 
274 
275 #endif // QGSLAYERTREELAYER_H
QgsLayerTreeNode
This class is a base class for nodes in a layer tree.
Definition: qgslayertreenode.h:75
QgsReadWriteContext
The class is used as a container of context for various read/write operations on other objects.
Definition: qgsreadwritecontext.h:35
QgsLayerTreeLayer::layerLoaded
void layerLoaded()
Emitted when a previously unavailable layer got loaded.
QgsLayerTreeLayer::layerId
QString layerId() const
Returns the ID for the map layer associated with this node.
Definition: qgslayertreelayer.h:63
qgsreadwritecontext.h
QgsLegendPatchShape
Represents a patch shape for use in map legends.
Definition: qgslegendpatchshape.h:31
QgsProject
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition: qgsproject.h:95
QgsLayerTreeLayer::mLayerName
QString mLayerName
Layer name - only used if layer does not exist or if mUseLayerName is false.
Definition: qgslayertreelayer.h:235
SIP_FACTORY
#define SIP_FACTORY
Definition: qgis_sip.h:76
QgsLayerTreeLayer::mRef
QgsMapLayerRef mRef
Weak reference to the layer (or just it's ID if the reference is not resolved yet)
Definition: qgslayertreelayer.h:233
QgsLayerTreeLayer::setPatchSize
void setPatchSize(QSizeF size)
Sets the user (overridden) size for the legend node.
Definition: qgslayertreelayer.h:182
QgsLayerTreeLayer::UseDefaultLegendSetting
@ UseDefaultLegendSetting
Inherit default legend column splitting setting.
Definition: qgslayertreelayer.h:191
QgsLayerTreeNode::dump
virtual QString dump() const =0
Returns string with layer tree structure. For debug purposes only.
QgsLayerTreeLayer
Layer tree node points to a map layer.
Definition: qgslayertreelayer.h:44
QgsLayerTreeNode::writeXml
virtual void writeXml(QDomElement &parentElement, const QgsReadWriteContext &context)=0
Write layer tree to XML.
qgis_sip.h
QgsLayerTreeLayer::LegendNodesSplitBehavior
LegendNodesSplitBehavior
Legend node column split behavior.
Definition: qgslayertreelayer.h:190
QgsLayerTreeLayer::AllowSplittingLegendNodesOverMultipleColumns
@ AllowSplittingLegendNodesOverMultipleColumns
Allow splitting node's legend nodes across multiple columns.
Definition: qgslayertreelayer.h:192
qgslegendpatchshape.h
QgsLayerTreeLayer::layer
QgsMapLayer * layer() const
Returns the map layer associated with this node.
Definition: qgslayertreelayer.h:74
QgsLayerTreeNode::readXml
static QgsLayerTreeNode * readXml(QDomElement &element, const QgsReadWriteContext &context)
Read layer tree from XML.
Definition: qgslayertreenode.cpp:51
QgsLayerTreeLayer::PreventSplittingLegendNodesOverMultipleColumns
@ PreventSplittingLegendNodesOverMultipleColumns
Prevent splitting node's legend nodes across multiple columns.
Definition: qgslayertreelayer.h:193
QgsLayerTreeLayer::layerWillBeUnloaded
void layerWillBeUnloaded()
Emitted when a previously available layer got unloaded (from layer registry).
QgsLayerTreeLayer::mLabelExpression
QString mLabelExpression
Expression to evaluate in the legend.
Definition: qgslayertreelayer.h:237
QgsLayerTreeNode::setName
virtual void setName(const QString &name)=0
Set name of the node.
QgsMapLayer
Base class for all map layer types.
Definition: qgsmaplayer.h:83
qgslayertreenode.h
QgsLayerTreeNode::clone
virtual QgsLayerTreeNode * clone() const =0
Create a copy of the node. Returns new instance.
QgsLayerTreeNode::name
virtual QString name() const =0
Returns name of the node.
QgsLayerTreeLayer::legendSplitBehavior
LegendNodesSplitBehavior legendSplitBehavior() const
Returns the column split behavior for the node.
Definition: qgslayertreelayer.h:204
qgsmaplayerref.h
QgsLayerTreeLayer::setLegendSplitBehavior
void setLegendSplitBehavior(LegendNodesSplitBehavior behavior)
Sets the column split behavior for the node.
Definition: qgslayertreelayer.h:214
_LayerRef< QgsMapLayer >
QgsLayerTreeLayer::patchSize
QSizeF patchSize() const
Returns the user (overridden) size for the legend node.
Definition: qgslayertreelayer.h:171