QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgslayeritem.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgslayeritem.h.cpp
3 -------------------
4 begin : 2011-04-01
5 copyright : (C) 2011 Radim Blazek
6 email : radim dot blazek at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#include "qgslayeritem.h"
19#include "qgsmaplayer.h"
20#include "qgsvectorlayer.h"
21#include "qgsiconutils.h"
22
24{
26}
27
29{
31}
32
34{
36}
37
39{
41}
42
44{
46}
47
49{
51}
52
54{
56}
57
59{
61}
62
64{
66}
67
69{
70 if ( parent() )
71 {
72 return parent()->databaseConnection();
73 }
74 return nullptr;
75}
76
78{
79 return mLayerMetadata;
80}
81
83{
84 mLayerMetadata = metadata;
85}
86
88{
90}
91
92QgsLayerItem::QgsLayerItem( QgsDataItem *parent, const QString &name, const QString &path,
93 const QString &uri, Qgis::BrowserLayerType layerType, const QString &providerKey )
94 : QgsDataItem( Qgis::BrowserItemType::Layer, parent, name, path, providerKey )
95 , mUri( uri )
96 , mLayerType( layerType )
97{
98 mIconName = iconName( layerType );
99}
100
102{
103 switch ( mLayerType )
104 {
107
110
113
116
119
122
132 }
133
134 return Qgis::LayerType::Vector; // no warnings
135}
136
138{
139 switch ( layer->type() )
140 {
142 {
143 switch ( qobject_cast< QgsVectorLayer * >( layer )->geometryType() )
144 {
147
150
153
156
159 }
160
161 return Qgis::BrowserLayerType::Vector; // no warnings
162 }
163
178 return Qgis::BrowserLayerType::Vector; // will never happen!
179 }
180 return Qgis::BrowserLayerType::Vector; // no warnings
181}
182
184{
185 return qgsEnumValueToKey( layerType );
186}
187
189{
190 switch ( layerType )
191 {
193 return QStringLiteral( "/mIconPointLayer.svg" );
195 return QStringLiteral( "/mIconLineLayer.svg" );
197 return QStringLiteral( "/mIconPolygonLayer.svg" );
199 return QStringLiteral( "/mIconGeometryCollectionLayer.svg" );
202 return QStringLiteral( "/mIconTableLayer.svg" );
204 return QStringLiteral( "/mIconRaster.svg" );
206 return QStringLiteral( "/mIconMeshLayer.svg" );
208 return QStringLiteral( "/mIconPointCloudLayer.svg" );
210 return QStringLiteral( "/mIconVectorTileLayer.svg" );
212 return QStringLiteral( "/mIconTiledSceneLayer.svg" );
213
217 return QStringLiteral( "/mIconLayer.png" );
218 }
220}
221
223{
224 return false;
225}
226
228{
229 //QgsDebugMsg ( mPath + " x " + other->mPath );
230 if ( type() != other->type() )
231 {
232 return false;
233 }
234 //const QgsLayerItem *o = qobject_cast<const QgsLayerItem *> ( other );
235 const QgsLayerItem *o = qobject_cast<const QgsLayerItem *>( other );
236 if ( !o )
237 return false;
238
239 return ( mPath == o->mPath && mName == o->mName && mUri == o->mUri && mProviderKey == o->mProviderKey );
240}
241
243{
245
246 switch ( mapLayerType() )
247 {
249 u.layerType = QStringLiteral( "vector" );
250 switch ( mLayerType )
251 {
254 break;
257 break;
260 break;
263 break;
264
275 break;
276 }
277 break;
279 u.layerType = QStringLiteral( "raster" );
280 break;
282 u.layerType = QStringLiteral( "mesh" );
283 break;
285 u.layerType = QStringLiteral( "vector-tile" );
286 break;
288 u.layerType = QStringLiteral( "pointcloud" );
289 break;
291 u.layerType = QStringLiteral( "tiled-scene" );
292 break;
294 u.layerType = QStringLiteral( "plugin" );
295 break;
297 u.layerType = QStringLiteral( "group" );
298 break;
300 u.layerType = QStringLiteral( "annotation" );
301 break;
302 }
303
305 u.name = layerName();
306 u.uri = uri();
309
311 {
312 u.filePath = path();
313 }
314
315 return { u };
316}
The Qgis class provides global constants for use throughout the application.
Definition: qgis.h:54
@ ItemRepresentsFile
Item's path() directly represents a file on disk (since QGIS 3.22)
@ Polygon
Polygons.
@ Unknown
Unknown types.
@ Null
No geometry.
BrowserLayerType
Browser item layer types.
Definition: qgis.h:736
@ Point
Vector point layer.
@ Plugin
Plugin based layer.
@ Line
Vector line layer.
@ TiledScene
Tiled scene layer (since QGIS 3.34)
@ Polygon
Vector polygon layer.
@ Table
Database table.
@ Vector
Generic vector layer.
@ VectorTile
Vector tile layer.
@ Raster
Raster layer.
@ TableLayer
Vector non-spatial layer.
@ Database
Database layer.
@ PointCloud
Point cloud layer.
LayerType
Types of layers that can be added to a map.
Definition: qgis.h:114
@ Group
Composite group layer. Added in QGIS 3.24.
@ Plugin
Plugin based layer.
@ TiledScene
Tiled scene layer. Added in QGIS 3.34.
@ Annotation
Contains freeform, georeferenced annotations. Added in QGIS 3.16.
@ Vector
Vector layer.
@ VectorTile
Vector tile layer. Added in QGIS 3.14.
@ Mesh
Mesh layer. Added in QGIS 3.2.
@ Raster
Raster layer.
@ PointCloud
Point cloud layer. Added in QGIS 3.18.
WkbType
The WKB type describes the number of dimensions a geometry has.
Definition: qgis.h:182
@ LineString
LineString.
@ Polygon
Polygon.
@ NoGeometry
No geometry.
The QgsAbstractDatabaseProviderConnection class provides common functionality for DB based connection...
Base class for all items in the model.
Definition: qgsdataitem.h:46
QString mName
Definition: qgsdataitem.h:441
QString mPath
Definition: qgsdataitem.h:447
virtual QgsAbstractDatabaseProviderConnection * databaseConnection() const
For data items that represent a DB connection or one of its children, this method returns a connectio...
Qgis::BrowserItemType type() const
Definition: qgsdataitem.h:318
QString mIconName
Definition: qgsdataitem.h:449
QString path() const
Definition: qgsdataitem.h:348
QgsDataItem * parent() const
Gets item parent.
Definition: qgsdataitem.h:324
virtual Qgis::BrowserItemCapabilities capabilities2() const
Returns the capabilities for the data item.
Definition: qgsdataitem.h:297
QString mProviderKey
Definition: qgsdataitem.h:442
static QIcon iconLine()
Returns an icon representing line geometries.
static QIcon iconPolygon()
Returns an icon representing polygon geometries.
static QIcon iconForWkbType(Qgis::WkbType type)
Returns the icon for a vector layer whose geometry type is provided.
static QIcon iconDefaultLayer()
Returns a default icon for layers, which aren't the standard raster/vector/... types.
static QIcon iconPointCloud()
Returns an icon representing point cloud layers.
static QIcon iconPoint()
Returns an icon representing point geometries.
static QIcon iconTable()
Returns an icon representing non-spatial layers (tables).
static QIcon iconRaster()
Returns an icon representing raster layers.
static QIcon iconMesh()
Returns an icon representing mesh layers.
static QIcon iconVectorTile()
Returns an icon representing vector tile layers.
Item that represents a layer that can be opened with one of the providers.
Definition: qgslayeritem.h:31
QStringList supportedFormats() const
Returns the supported formats.
Definition: qgslayeritem.h:84
static QIcon iconPoint()
QString uri() const
Returns layer uri or empty string if layer cannot be created.
Definition: qgslayeritem.h:71
static Qgis::BrowserLayerType typeFromMapLayer(QgsMapLayer *layer)
Returns the layer item type corresponding to a QgsMapLayer layer.
virtual Q_DECL_DEPRECATED bool deleteLayer()
Delete this layer item Use QgsDataItemGuiProvider::deleteLayer instead.
static QIcon iconLine()
QString mUri
The URI.
Definition: qgslayeritem.h:113
QStringList supportedCrs() const
Returns the supported CRS.
Definition: qgslayeritem.h:79
static QIcon iconTable()
static QString layerTypeAsString(Qgis::BrowserLayerType layerType)
Returns the string representation of the given layerType.
static QIcon iconDefault()
QgsAbstractDatabaseProviderConnection * databaseConnection() const override
For data items that represent a DB connection or one of its children, this method returns a connectio...
QString providerKey() const
Returns provider key.
Definition: qgslayeritem.h:74
static QIcon iconRaster()
static QIcon iconMesh()
Returns icon for mesh layer type.
QgsLayerItem(QgsDataItem *parent, const QString &name, const QString &path, const QString &uri, Qgis::BrowserLayerType layerType, const QString &providerKey)
Constructor for QgsLayerItem.
Qgis::BrowserLayerType mLayerType
The layer type.
Definition: qgslayeritem.h:115
static QIcon iconForWkbType(Qgis::WkbType type)
Returns the icon for a vector layer whose geometry type is provided.
Qgis::LayerType mapLayerType() const
Returns the associated map layer type.
static QIcon iconPolygon()
QgsMimeDataUtils::UriList mimeUris() const override
Returns mime URIs for the data item, most data providers will only return a single URI but some data ...
void setLayerMetadata(const QgsLayerMetadata &metadata)
Set layer's metadata.
static QIcon iconPointCloud()
Returns icon for point cloud layer.
static QIcon iconVectorTile()
Returns icon for vector tile layer.
const QgsLayerMetadata & layerMetadata() const
Returns layer's metadata, it may be a default constructed metadata if metadata is not explicitly set.
virtual QString layerName() const
Definition: qgslayeritem.h:142
bool equal(const QgsDataItem *other) override
Returns true if this item is equal to another item (by testing item type and path).
static QString iconName(Qgis::BrowserLayerType layerType)
Returns the icon name of the given layerType.
A structured metadata store for a map layer.
Base class for all map layer types.
Definition: qgsmaplayer.h:75
Qgis::LayerType type
Definition: qgsmaplayer.h:82
QList< QgsMimeDataUtils::Uri > UriList
QString qgsEnumValueToKey(const T &value, bool *returnOk=nullptr)
Returns the value for the given key of an enum.
Definition: qgis.h:5398
#define BUILTIN_UNREACHABLE
Definition: qgis.h:5853
Qgis::WkbType wkbType
WKB type, if associated with a vector layer, or QgsWkbTypes::Unknown if not yet known.
QString filePath
Path to file, if uri is associated with a file.
QString uri
Identifier of the data source recognized by its providerKey.
QString name
Human readable name to be used e.g. in layer tree.
QString providerKey
For "vector" / "raster" type: provider id.
QString layerType
Type of URI.