QGIS API Documentation 4.1.0-Master (376402f9aeb)
Loading...
Searching...
No Matches
qgsfilebaseddataitemprovider.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsfilebaseddataitemprovider.h
3 --------------------------------------
4 Date : July 2021
5 Copyright : (C) 2021 by Nyall Dawson
6 Email : nyall dot dawson 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
16#ifndef QGSFILEBASEDDATAITEMPROVIDER_H
17#define QGSFILEBASEDDATAITEMPROVIDER_H
18
19#include "qgis_core.h"
20#include "qgis_sip.h"
23#include "qgsdataitemprovider.h"
24#include "qgslayeritem.h"
26
27#include <QString>
28#include <QVector>
29
30#define SIP_NO_FILE
31
33
35
36
37class QgsDataItem;
38
49class CORE_EXPORT QgsProviderSublayerItem final : public QgsLayerItem
50{
51 Q_OBJECT
52 public:
60 QgsProviderSublayerItem( QgsDataItem *parent, const QString &name, const QgsProviderSublayerDetails &details, const QString &filePath );
61 QString layerName() const override;
62 QVector<QgsDataItem *> createChildren() override;
64
71
72 private:
73 static Qgis::BrowserLayerType layerTypeFromSublayer( const QgsProviderSublayerDetails &sublayer );
74
76};
77
78
86{
87 Q_OBJECT
88 public:
95 QgsFileDataCollectionGroupItem( QgsDataItem *parent, const QString &groupName, const QString &path );
96
100 void appendSublayer( const QgsProviderSublayerDetails &sublayer );
101
102 bool hasDragEnabled() const override;
103 QgsMimeDataUtils::UriList mimeUris() const override;
104
105 private:
106 QList< QgsProviderSublayerDetails > mSublayers;
107};
108
118class CORE_EXPORT QgsFileDataCollectionItem final : public QgsDataCollectionItem
119{
120 Q_OBJECT
121 public:
132 QgsFileDataCollectionItem( QgsDataItem *parent, const QString &name, const QString &path, const QList< QgsProviderSublayerDetails> &sublayers, const QVariantMap &extraUriParts = QVariantMap() );
133
134 QVector<QgsDataItem *> createChildren() override;
135 bool hasDragEnabled() const override;
136
152 bool canAddVectorLayers() const;
153
154 QgsMimeDataUtils::UriList mimeUris() const override;
156
164
172
177 QList<QgsProviderSublayerDetails> sublayers() const;
178
179 private:
180 QList< QgsProviderSublayerDetails> mSublayers;
181 QVariantMap mExtraUriParts;
182 mutable bool mHasCachedCapabilities = false;
183 mutable QgsAbstractDatabaseProviderConnection::Capabilities mCachedCapabilities;
184 mutable Qgis::DatabaseProviderConnectionCapabilities2 mCachedCapabilities2;
185 mutable bool mHasCachedDropSupport = false;
186 mutable bool mCachedSupportsDrop = false;
187};
188
189
200{
201 public:
202 QString name() override;
204 QgsDataItem *createDataItem( const QString &path, QgsDataItem *parentItem ) override SIP_FACTORY;
205
219 static QgsDataItem *createLayerItemForPath( const QString &path, QgsDataItem *parentItem, const QStringList &providers, const QVariantMap &extraUriParts, Qgis::SublayerQueryFlags queryFlags );
220
221 bool handlesDirectoryPath( const QString &path ) override;
222
224
225 private:
226 static QgsDataItem *createDataItemForPathPrivate(
227 const QString &path, QgsDataItem *parentItem, const QStringList *allowedProviders, Qgis::SublayerQueryFlags queryFlags, const QVariantMap &extraUriParts
228 );
229};
230
231#endif // QGSFILEBASEDDATAITEMPROVIDER_H
QFlags< DataItemProviderCapability > DataItemProviderCapabilities
Capabilities for data item providers.
Definition qgis.h:1059
BrowserLayerType
Browser item layer types.
Definition qgis.h:1068
QFlags< SublayerQueryFlag > SublayerQueryFlags
Sublayer query flags.
Definition qgis.h:1518
QFlags< DatabaseProviderConnectionCapability2 > DatabaseProviderConnectionCapabilities2
Definition qgis.h:5910
Provides common functionality for database based connections.
QgsDataCollectionItem(QgsDataItem *parent, const QString &name, const QString &path=QString(), const QString &providerKey=QString())
Constructor for QgsDataCollectionItem, with the specified parent item.
Interface for providers that add custom data items to the browser tree.
Base class for all items in the model.
Definition qgsdataitem.h:50
QgsDataItem(Qgis::BrowserItemType type, QgsDataItem *parent, const QString &name, const QString &path, const QString &providerKey=QString())
Constructor for QgsDataItem, with the specified parent item.
virtual QVector< QgsDataItem * > createChildren()
Create children.
QString name() const
Returns the name of the item (the displayed text for the item).
QString path() const
QgsDataItem * parent() const
Gets item parent.
A data item provider for file based data sources.
static QgsDataItem * createLayerItemForPath(const QString &path, QgsDataItem *parentItem, const QStringList &providers, const QVariantMap &extraUriParts, Qgis::SublayerQueryFlags queryFlags)
Static method to create a data item for sublayers corresponding to a file-like path.
Qgis::DataItemProviderCapabilities capabilities() const override
Returns combination of flags from QgsDataProvider::DataCapabilities.
static const QgsSettingsEntryString * settingsScanItemsInBrowser
bool handlesDirectoryPath(const QString &path) override
Returns true if the provider will handle the directory at the specified path.
QgsDataItem * createDataItem(const QString &path, QgsDataItem *parentItem) override
Create a new instance of QgsDataItem (or nullptr) for given path and parent item.
QgsFileDataCollectionGroupItem(QgsDataItem *parent, const QString &groupName, const QString &path)
Constructor for QgsFileDataCollectionGroupItem.
void appendSublayer(const QgsProviderSublayerDetails &sublayer)
Adds a sublayer to the group.
QgsAbstractDatabaseProviderConnection::Capabilities databaseConnectionCapabilities() const
Returns the associated connection capabilities, if a databaseConnection() is available.
QgsFileDataCollectionItem(QgsDataItem *parent, const QString &name, const QString &path, const QList< QgsProviderSublayerDetails > &sublayers, const QVariantMap &extraUriParts=QVariantMap())
Constructor for QgsFileDataCollectionItem.
QList< QgsProviderSublayerDetails > sublayers() const
Returns the sublayers.
bool canAddVectorLayers() const
Returns true if the file is likely to support addition of vector layers.
Qgis::DatabaseProviderConnectionCapabilities2 databaseConnectionCapabilities2() const
Returns extended connection capabilities, if a databaseConnection() is available.
QgsAbstractDatabaseProviderConnection * databaseConnection() const override
For data items that represent a DB connection or one of its children, this method returns a connectio...
QgsLayerItem(QgsDataItem *parent, const QString &name, const QString &path, const QString &uri, Qgis::BrowserLayerType layerType, const QString &providerKey)
Constructor for QgsLayerItem.
bool hasDragEnabled() const override
Returns true if the item may be dragged.
QgsMimeDataUtils::UriList mimeUris() const override
Returns mime URIs for the data item, most data providers will only return a single URI but some data ...
virtual QString layerName() const
Returns the layer name.
QList< QgsMimeDataUtils::Uri > UriList
Contains details about a sub layer available from a dataset.
QgsProviderSublayerItem(QgsDataItem *parent, const QString &name, const QgsProviderSublayerDetails &details, const QString &filePath)
Constructor for QgsProviderSublayerItem.
QgsProviderSublayerDetails sublayerDetails() const
Returns the sublayer details for the item.
A string settings entry.
#define SIP_FACTORY
Definition qgis_sip.h:83