QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgsmimedatautils.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsmimedatautils.h
3 ---------------------
4 begin : November 2011
5 copyright : (C) 2011 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#ifndef QGSMIMEDATAUTILS_H
16#define QGSMIMEDATAUTILS_H
17
18#include <QMimeData>
19#include <QStringList>
20
21#include "qgis_core.h"
22#include "qgis_sip.h"
23#include "qgswkbtypes.h"
24
25class QgsLayerItem;
27class QgsVectorLayer;
28class QgsRasterLayer;
29class QgsMeshLayer;
30class QgsMapLayer;
31
36class CORE_EXPORT QgsMimeDataUtils
37{
38 public:
39
40 struct CORE_EXPORT Uri
41 {
43 Uri() = default;
45 explicit Uri( const QString &encData );
46
52 explicit Uri( QgsMapLayer *layer );
53
57 bool isValid() const { return !layerType.isEmpty(); }
58
60 QString data() const;
61
67 QgsVectorLayer *vectorLayer( bool &owner, QString &error ) const;
68
74 QgsRasterLayer *rasterLayer( bool &owner, QString &error ) const;
75
81 QgsMeshLayer *meshLayer( bool &owner, QString &error ) const;
82
92 QgsMapLayer *mapLayer() const;
93
112 QString layerType;
113
120 QString providerKey;
121
123 QString name;
125 QString uri;
126 QStringList supportedCrs;
127 QStringList supportedFormats;
128
133 QString layerId;
134
140 QString pId;
141
149
154 QString filePath;
155
156#ifdef SIP_RUN
157 SIP_PYOBJECT __repr__();
158 % MethodCode
159 QString str = QStringLiteral( "<QgsMimeDataUtils::Uri (%1): %2>" ).arg( sipCpp->providerKey, sipCpp->uri );
160 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
161 % End
162#endif
163 };
164 typedef QList<QgsMimeDataUtils::Uri> UriList;
165
169 static QMimeData *encodeUriList( const UriList &layers ) SIP_FACTORY;
170
171 static bool isUriList( const QMimeData *data );
172
173 static UriList decodeUriList( const QMimeData *data );
174
178 static QByteArray layerTreeNodesToUriList( const QList<QgsLayerTreeNode *> &nodes );
179
186 static bool hasOriginatedFromCurrentAppInstance( const QgsMimeDataUtils::Uri &uri );
187
188 private:
189 static QString encode( const QStringList &items );
190 static QStringList decode( const QString &encoded );
191 static QByteArray uriListToByteArray( const UriList &layers );
192
193
194 friend class TestQgsMimeDataUtils;
195
196};
197
199
200#endif // QGSMIMEDATAUTILS_H
201
WkbType
The WKB type describes the number of dimensions a geometry has.
Definition: qgis.h:182
@ Unknown
Unknown.
Item that represents a layer that can be opened with one of the providers.
Definition: qgslayeritem.h:31
This class is a base class for nodes in a layer tree.
Base class for all map layer types.
Definition: qgsmaplayer.h:75
Represents a mesh layer supporting display of data on structured or unstructured meshes.
Definition: qgsmeshlayer.h:101
QList< QgsMimeDataUtils::Uri > UriList
Represents a raster layer.
Represents a vector layer which manages a vector based data sets.
#define str(x)
Definition: qgis.cpp:38
#define SIP_FACTORY
Definition: qgis_sip.h:76
Q_DECLARE_METATYPE(QgsDatabaseQueryLogEntry)
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 pId
Unique ID associated with application instance.
QString providerKey
For "vector" / "raster" type: provider id.
QString layerId
Layer ID, if uri is associated with a layer from a QgsProject.
Uri()=default
Constructs invalid URI.
QString layerType
Type of URI.
bool isValid() const
Returns whether the object contains valid data.