QGIS API Documentation  3.21.0-Master (909859188c)
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 
25 class QgsLayerItem;
26 class QgsLayerTreeNode;
27 class QgsVectorLayer;
28 class QgsRasterLayer;
29 class QgsMeshLayer;
30 class QgsMapLayer;
31 
36 class 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 
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 
110  QString layerType;
111 
118  QString providerKey;
119 
121  QString name;
123  QString uri;
124  QStringList supportedCrs;
125  QStringList supportedFormats;
126 
131  QString layerId;
132 
138  QString pId;
139 
147 
152  QString filePath;
153 
154 #ifdef SIP_RUN
155  SIP_PYOBJECT __repr__();
156  % MethodCode
157  QString str = QStringLiteral( "<QgsMimeDataUtils::Uri (%1): %2>" ).arg( sipCpp->providerKey, sipCpp->uri );
158  sipRes = PyUnicode_FromString( str.toUtf8().constData() );
159  % End
160 #endif
161  };
162  typedef QList<QgsMimeDataUtils::Uri> UriList;
163 
167  static QMimeData *encodeUriList( const UriList &layers ) SIP_FACTORY;
168 
169  static bool isUriList( const QMimeData *data );
170 
171  static UriList decodeUriList( const QMimeData *data );
172 
177  static QByteArray layerTreeNodesToUriList( const QList<QgsLayerTreeNode *> &nodes );
178 
185  static bool hasOriginatedFromCurrentAppInstance( const QgsMimeDataUtils::Uri &uri );
186 
187  private:
188  static QString encode( const QStringList &items );
189  static QStringList decode( const QString &encoded );
190  static QByteArray uriListToByteArray( const UriList &layers );
191 
192 
193  friend class TestQgsMimeDataUtils;
194 
195 };
196 
198 
199 #endif // QGSMIMEDATAUTILS_H
200 
Item that represents a layer that can be opened with one of the providers.
Definition: qgslayeritem.h:30
This class is a base class for nodes in a layer tree.
Base class for all map layer types.
Definition: qgsmaplayer.h:72
Represents a mesh layer supporting display of data on structured or unstructured meshes.
Definition: qgsmeshlayer.h:96
QList< QgsMimeDataUtils::Uri > UriList
Represents a raster layer.
Represents a vector layer which manages a vector based data sets.
Type
The WKB type describes the number of dimensions a geometry has.
Definition: qgswkbtypes.h:70
#define str(x)
Definition: qgis.cpp:37
#define SIP_FACTORY
Definition: qgis_sip.h:76
Q_DECLARE_METATYPE(QgsMeshTimeSettings)
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.