QGIS API Documentation  3.8.0-Zanzibar (11aff65)
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( 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 
109  QString layerType;
110 
117  QString providerKey;
118 
120  QString name;
122  QString uri;
123  QStringList supportedCrs;
124  QStringList supportedFormats;
125 
130  QString layerId;
131 
137  QString pId;
138 
146 
147 #ifdef SIP_RUN
148  SIP_PYOBJECT __repr__();
149  % MethodCode
150  QString str = QStringLiteral( "<QgsMimeDataUtils::Uri (%1): %2>" ).arg( sipCpp->providerKey, sipCpp->uri );
151  sipRes = PyUnicode_FromString( str.toUtf8().constData() );
152  % End
153 #endif
154  };
155  typedef QList<QgsMimeDataUtils::Uri> UriList;
156 
160  static QMimeData *encodeUriList( const UriList &layers ) SIP_FACTORY;
161 
162  static bool isUriList( const QMimeData *data );
163 
164  static UriList decodeUriList( const QMimeData *data );
165 
170  static QByteArray layerTreeNodesToUriList( const QList<QgsLayerTreeNode *> &nodes );
171 
178  static bool hasOriginatedFromCurrentAppInstance( const QgsMimeDataUtils::Uri &uri );
179 
180  private:
181  static QString encode( const QStringList &items );
182  static QStringList decode( const QString &encoded );
183  static QByteArray uriListToByteArray( const UriList &layers );
184 
185 
186  friend class TestQgsMimeDataUtils;
187 
188 };
189 
191 
192 #endif // QGSMIMEDATAUTILS_H
193 
QString layerType
Type of URI.
Base class for all map layer types.
Definition: qgsmaplayer.h:78
This class provides qgis with the ability to render raster datasets onto the mapcanvas.
QString name
Human readable name to be used e.g. in layer tree.
bool isValid() const
Returns whether the object contains valid data.
Type
The WKB type describes the number of dimensions a geometry has.
Definition: qgswkbtypes.h:68
Q_DECLARE_METATYPE(QgsMeshTimeSettings)
This class is a base class for nodes in a layer tree.
#define SIP_FACTORY
Definition: qgis_sip.h:69
QString pId
Unique ID associated with application instance.
QList< QgsMimeDataUtils::Uri > UriList
QString providerKey
For "vector" / "raster" type: provider id.
QString layerId
Layer ID, if uri is associated with a layer from a QgsProject.
QString uri
Identifier of the data source recognized by its providerKey.
Item that represents a layer that can be opened with one of the providers.
Definition: qgsdataitem.h:436
Represents a mesh layer supporting display of data on structured or unstructured meshes.
Definition: qgsmeshlayer.h:90
Represents a vector layer which manages a vector based data sets.