QGIS API Documentation 3.41.0-Master (88383c3d16f)
Loading...
Searching...
No Matches
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
37class CORE_EXPORT QgsMimeDataUtils
38{
39 public:
40
41 struct CORE_EXPORT Uri
42 {
44 Uri() = default;
46 explicit Uri( const QString &encData );
47
53 explicit Uri( QgsMapLayer *layer );
54
58 bool isValid() const { return !layerType.isEmpty(); }
59
61 QString data() const;
62
68 QgsVectorLayer *vectorLayer( bool &owner, QString &error ) const;
69
75 QgsRasterLayer *rasterLayer( bool &owner, QString &error ) const;
76
82 QgsMeshLayer *meshLayer( bool &owner, QString &error ) const;
83
93 QgsMapLayer *mapLayer() const;
94
119 QString layerType;
120
127 QString providerKey;
128
130 QString name;
132 QString uri;
133 QStringList supportedCrs;
134 QStringList supportedFormats;
135
140 QString layerId;
141
147 QString pId;
148
156
161 QString filePath;
162
163#ifdef SIP_RUN
164 SIP_PYOBJECT __repr__();
165 % MethodCode
166 QString str = QStringLiteral( "<QgsMimeDataUtils::Uri (%1): %2>" ).arg( sipCpp->providerKey, sipCpp->uri );
167 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
168 % End
169#endif
170 };
171 typedef QList<QgsMimeDataUtils::Uri> UriList;
172
176 static QMimeData *encodeUriList( const UriList &layers ) SIP_FACTORY;
177
178 static bool isUriList( const QMimeData *data );
179
180 static UriList decodeUriList( const QMimeData *data );
181
185 static QByteArray layerTreeNodesToUriList( const QList<QgsLayerTreeNode *> &nodes );
186
193 static bool hasOriginatedFromCurrentAppInstance( const QgsMimeDataUtils::Uri &uri );
194
195 private:
196 static QString encode( const QStringList &items );
197 static QStringList decode( const QString &encoded );
198 static QByteArray uriListToByteArray( const UriList &layers );
199
200
201 friend class TestQgsMimeDataUtils;
202
203};
204
206
207#endif // QGSMIMEDATAUTILS_H
208
WkbType
The WKB type describes the number of dimensions a geometry has.
Definition qgis.h:256
@ Unknown
Unknown.
Item that represents a layer that can be opened with one of the providers.
This class is a base class for nodes in a layer tree.
Base class for all map layer types.
Definition qgsmaplayer.h:76
Represents a mesh layer supporting display of data on structured or unstructured meshes.
Contains utility functions for working with MIME data.
QList< QgsMimeDataUtils::Uri > UriList
Represents a raster layer.
Represents a vector layer which manages a vector based data sets.
#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.