QGIS API Documentation  2.17.0-Master (0497e4a)
qgsmaplayerlegend.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmaplayerlegend.h
3  --------------------------------------
4  Date : July 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 QGSMAPLAYERLEGEND_H
17 #define QGSMAPLAYERLEGEND_H
18 
19 #include <QObject>
20 
21 class QgsLayerTreeLayer;
23 class QgsPluginLayer;
24 class QgsRasterLayer;
25 class QgsVectorLayer;
26 
27 
34 class CORE_EXPORT QgsMapLayerLegend : public QObject
35 {
36  Q_OBJECT
37  public:
38  explicit QgsMapLayerLegend( QObject *parent = nullptr );
39 
40  // TODO: type, load/save settings
41 
46  virtual QList<QgsLayerTreeModelLegendNode*> createLayerTreeModelLegendNodes( QgsLayerTreeLayer* nodeLayer ) = 0;
47 
48  // TODO: support for layer tree view delegates
49 
51  static QgsMapLayerLegend* defaultVectorLegend( QgsVectorLayer* vl );
52 
54  static QgsMapLayerLegend* defaultRasterLegend( QgsRasterLayer* rl );
55 
57  static QgsMapLayerLegend* defaultPluginLegend( QgsPluginLayer* pl );
58 
59  signals:
61  void itemsChanged();
62 };
63 
64 
70 class CORE_EXPORT QgsMapLayerLegendUtils
71 {
72  public:
73  static void setLegendNodeOrder( QgsLayerTreeLayer* nodeLayer, const QList<int>& order );
74  static QList<int> legendNodeOrder( QgsLayerTreeLayer* nodeLayer );
75  static bool hasLegendNodeOrder( QgsLayerTreeLayer* nodeLayer );
76 
77  static void setLegendNodeUserLabel( QgsLayerTreeLayer* nodeLayer, int originalIndex, const QString& newLabel );
78  static QString legendNodeUserLabel( QgsLayerTreeLayer* nodeLayer, int originalIndex );
79  static bool hasLegendNodeUserLabel( QgsLayerTreeLayer* nodeLayer, int originalIndex );
80 
82  static void applyLayerNodeProperties( QgsLayerTreeLayer* nodeLayer, QList<QgsLayerTreeModelLegendNode*>& nodes );
83 };
84 
85 
86 #include <QHash>
87 
93 {
94  Q_OBJECT
95 
96  public:
98 
100 
101  private:
102  QgsVectorLayer* mLayer;
103 };
104 
105 
111 {
112  Q_OBJECT
113 
114  public:
116 
118 
119  private:
120  QgsRasterLayer* mLayer;
121 };
122 
123 
129 {
130  Q_OBJECT
131 
132  public:
134 
136 
137  private:
138  QgsPluginLayer* mLayer;
139 };
140 
141 #endif // QGSMAPLAYERLEGEND_H
This class provides qgis with the ability to render raster datasets onto the mapcanvas.
Base class for plugin layers.
Default legend implementation for raster layers.
The QgsMapLayerLegend class is abstract interface for implementations of legends for one map layer...
Miscellaneous utility functions for handling of map layer legend.
Default legend implementation for plugin layers.
The QgsLegendRendererItem class is abstract interface for legend items returned from QgsMapLayerLegen...
Default legend implementation for vector layers.
Represents a vector layer which manages a vector based data sets.
virtual QList< QgsLayerTreeModelLegendNode * > createLayerTreeModelLegendNodes(QgsLayerTreeLayer *nodeLayer)=0
Return list of legend nodes to be used for a particular layer tree layer node.
Layer tree node points to a map layer.