QGIS API Documentation  3.16.0-Hannover (43b64b13f3)
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 
148 #ifdef SIP_RUN
149  SIP_PYOBJECT __repr__();
150  % MethodCode
151  QString str = QStringLiteral( "<QgsMimeDataUtils::Uri (%1): %2>" ).arg( sipCpp->providerKey, sipCpp->uri );
152  sipRes = PyUnicode_FromString( str.toUtf8().constData() );
153  % End
154 #endif
155  };
156  typedef QList<QgsMimeDataUtils::Uri> UriList;
157 
161  static QMimeData *encodeUriList( const UriList &layers ) SIP_FACTORY;
162 
163  static bool isUriList( const QMimeData *data );
164 
165  static UriList decodeUriList( const QMimeData *data );
166 
171  static QByteArray layerTreeNodesToUriList( const QList<QgsLayerTreeNode *> &nodes );
172 
179  static bool hasOriginatedFromCurrentAppInstance( const QgsMimeDataUtils::Uri &uri );
180 
181  private:
182  static QString encode( const QStringList &items );
183  static QStringList decode( const QString &encoded );
184  static QByteArray uriListToByteArray( const UriList &layers );
185 
186 
187  friend class TestQgsMimeDataUtils;
188 
189 };
190 
192 
193 #endif // QGSMIMEDATAUTILS_H
194 
QgsMimeDataUtils::Uri::name
QString name
Human readable name to be used e.g. in layer tree.
Definition: qgsmimedatautils.h:121
QgsMimeDataUtils::Uri::uri
QString uri
Identifier of the data source recognized by its providerKey.
Definition: qgsmimedatautils.h:123
QgsMimeDataUtils::Uri::isValid
bool isValid() const
Returns whether the object contains valid data.
Definition: qgsmimedatautils.h:58
QgsLayerTreeNode
This class is a base class for nodes in a layer tree.
Definition: qgslayertreenode.h:75
QgsMimeDataUtils::Uri::supportedFormats
QStringList supportedFormats
Definition: qgsmimedatautils.h:125
QgsMimeDataUtils::Uri::layerType
QString layerType
Type of URI.
Definition: qgsmimedatautils.h:110
QgsWkbTypes::Type
Type
The WKB type describes the number of dimensions a geometry has.
Definition: qgswkbtypes.h:70
QgsMimeDataUtils::UriList
QList< QgsMimeDataUtils::Uri > UriList
Definition: qgsmimedatautils.h:156
SIP_FACTORY
#define SIP_FACTORY
Definition: qgis_sip.h:76
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(QgsMeshTimeSettings)
QgsWkbTypes::Unknown
@ Unknown
Definition: qgswkbtypes.h:71
QgsMeshLayer
Represents a mesh layer supporting display of data on structured or unstructured meshes.
Definition: qgsmeshlayer.h:95
qgis_sip.h
QgsMimeDataUtils::Uri::pId
QString pId
Unique ID associated with application instance.
Definition: qgsmimedatautils.h:138
QgsRasterLayer
Represents a raster layer.
Definition: qgsrasterlayer.h:71
QgsMimeDataUtils::Uri
Definition: qgsmimedatautils.h:41
QgsMimeDataUtils::Uri::supportedCrs
QStringList supportedCrs
Definition: qgsmimedatautils.h:124
QgsMimeDataUtils::Uri::providerKey
QString providerKey
For "vector" / "raster" type: provider id.
Definition: qgsmimedatautils.h:118
QgsMimeDataUtils::Uri::layerId
QString layerId
Layer ID, if uri is associated with a layer from a QgsProject.
Definition: qgsmimedatautils.h:131
QgsMimeDataUtils
Definition: qgsmimedatautils.h:37
QgsMimeDataUtils::Uri::Uri
Uri()=default
Constructs invalid URI.
QgsVectorLayer
Represents a vector layer which manages a vector based data sets.
Definition: qgsvectorlayer.h:387
QgsMapLayer
Base class for all map layer types.
Definition: qgsmaplayer.h:83
QgsLayerItem
Item that represents a layer that can be opened with one of the providers.
Definition: qgsdataitem.h:507
qgswkbtypes.h