QGIS API Documentation 4.3.0-Master (389d690bb77)
Loading...
Searching...
No Matches
qgsstacdataitems.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsstacdataitems.h
3 ---------------------
4 begin : August 2024
5 copyright : (C) 2024 by Stefanos Natsis
6 email : uclaros 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 QGSSTACDATAITEMS_H
17#define QGSSTACDATAITEMS_H
18
19#include "qgis_core.h"
20#include "qgsconnectionsitem.h"
21#include "qgsdataitemprovider.h"
22#include "qgslayeritem.h"
23#include "qgsstaccatalog.h"
24#include "qgsstacitem.h"
25
26#include <QString>
27#include <QUrl>
28
29#define SIP_NO_FILE
30
31using namespace Qt::StringLiterals;
32
35
37
38
43class CORE_EXPORT QgsStacAssetItem : public QgsDataItem
44{
45 Q_OBJECT
46 public:
47 QgsStacAssetItem( QgsDataItem *parent, const QString &name, const QgsStacAsset *asset );
48
49 bool equal( const QgsDataItem *other ) override;
50 QVariant sortKey() const override { return u"4 %1"_s.arg( mName ); }
51 void updateToolTip();
52 const QgsStacAsset *stacAsset() const { return mStacAsset; }
53 QgsStacController *stacController() const;
54
55 private:
56 const QgsStacAsset *mStacAsset;
57 const QString mName;
58};
59
60
65class CORE_EXPORT QgsStacAssetLayerItem : public QgsLayerItem
66{
67 Q_OBJECT
68 public:
72 static QgsStacAssetLayerItem *createItemForAsset( QgsDataItem *parent, const QString &name, const QgsStacAsset *asset, const QString &authcfg );
73
77 QgsStacAssetLayerItem( QgsDataItem *parent, const QString &name, const QgsStacAsset *asset, const QgsMimeDataUtils::Uri &uri, Qgis::BrowserLayerType layerType, const QString &providerKey );
78
79 bool hasDragEnabled() const override;
80 QgsMimeDataUtils::UriList mimeUris() const override;
81 bool equal( const QgsDataItem *other ) override;
82 QVariant sortKey() const override { return u"4 %1"_s.arg( mName ); }
83 void updateToolTip();
84 const QgsStacAsset *stacAsset() const { return mStacAsset; }
85 QgsStacController *stacController() const;
86
87 private:
88 const QgsStacAsset *mStacAsset;
89 QgsMimeDataUtils::Uri mUri;
90 const QString mName;
91};
92
93
98class CORE_EXPORT QgsStacFetchMoreItem : public QgsDataItem
99{
100 Q_OBJECT
101 public:
102 QgsStacFetchMoreItem( QgsDataItem *parent, const QString &name );
103
104 bool handleDoubleClick() override;
105 QVariant sortKey() const override { return u"3"_s; }
106};
107
112class CORE_EXPORT QgsStacItemItem : public QgsDataItem
113{
114 Q_OBJECT
115 public:
116 QgsStacItemItem( QgsDataItem *parent, const QString &name, const QString &path );
117
118 QVector<QgsDataItem *> createChildren() override;
119 bool hasDragEnabled() const override;
120 QgsMimeDataUtils::UriList mimeUris() const override;
121 bool equal( const QgsDataItem *other ) override;
122 QVariant sortKey() const override { return u"2 %1"_s.arg( mName ); }
123
124 void updateToolTip();
125 QgsStacController *stacController() const;
126
128 void setStacItem( std::unique_ptr< QgsStacItem > item );
129
131 QgsStacItem *stacItem() const;
132
133 public slots:
134 void itemRequestFinished( int requestId, QString error );
135
136 private:
137 std::unique_ptr< QgsStacItem > mStacItem;
138 QString mUri;
139 QString mConnName;
140};
141
146class CORE_EXPORT QgsStacCatalogItem : public QgsDataCollectionItem
147{
148 Q_OBJECT
149 public:
150 QgsStacCatalogItem( QgsDataItem *parent, const QString &name, const QString &path );
151
152 QVector<QgsDataItem *> createChildren() override;
153 bool equal( const QgsDataItem *other ) override;
154 QVariant sortKey() const override { return u"1 %1"_s.arg( mName ); }
155
156 void updateToolTip();
157
159 void setStacCatalog( std::unique_ptr< QgsStacCatalog > object );
160
162 QgsStacCatalog *stacCatalog() const;
163
164 void fetchMoreChildren();
165
166 bool isCatalog() const;
167 bool isCollection() const;
168 QgsStacController *stacController() const;
169 QgsStacCatalog *rootCatalog() const;
170 QgsStacFetchMoreItem *fetchMoreItem() const;
171
172 public slots:
173 void childrenCreated() override;
174
175 private slots:
176 void onControllerFinished( int requestId, const QString &error );
177
178 private:
180 QVector< QgsDataItem * > createItems( const QVector<QgsStacItem *> items );
181 QVector< QgsDataItem * > createCollections( const QVector<QgsStacCollection *> collections );
182
184 QString mUri;
185 QString mConnName;
186 bool mIsCollection = false;
187 std::unique_ptr< QgsStacCatalog > mStacCatalog;
188 QUrl mFetchMoreUrl;
189};
190
195class CORE_EXPORT QgsStacConnectionItem : public QgsStacCatalogItem
196{
197 Q_OBJECT
198 public:
199 QgsStacConnectionItem( QgsDataItem *parent, const QString &connectionName );
200
201 QgsStacController *controller() const;
202
203 private:
205 QString mUri;
206 QString mConnName;
207 std::unique_ptr<QgsStacController> mController;
208};
209
214class CORE_EXPORT QgsStacRootItem : public QgsConnectionsRootItem
215{
216 Q_OBJECT
217 public:
218 QgsStacRootItem( QgsDataItem *parent, const QString &name, const QString &path );
219
220 QVector<QgsDataItem *> createChildren() override;
221
222 QVariant sortKey() const override { return 3; }
223
224 public slots:
225 void onConnectionsChanged();
226};
227
232class CORE_EXPORT QgsStacDataItemProvider : public QgsDataItemProvider
233{
234 public:
235 QString name() override;
236 QString dataProviderKey() const override;
237 Qgis::DataItemProviderCapabilities capabilities() const override;
238 QgsDataItem *createDataItem( const QString &path, QgsDataItem *parentItem ) override;
239};
240
242
243#endif // QGSSTACDATAITEMS_H
QFlags< DataItemProviderCapability > DataItemProviderCapabilities
Capabilities for data item providers.
Definition qgis.h:1073
BrowserLayerType
Browser item layer types.
Definition qgis.h:1082
A browser item that represents a root group of connections from a single data provider.
A browser item for collections of data.
Interface for providers that add custom data items to the browser tree.
Base class for all items in the model.
Definition qgsdataitem.h:50
virtual QVariant sortKey() const
Returns the sorting key for the item.
virtual bool handleDoubleClick()
Called when a user double clicks on the item.
virtual QVector< QgsDataItem * > createChildren()
Create children.
virtual void childrenCreated()
virtual bool hasDragEnabled() const
Returns true if the item may be dragged.
QString name() const
Returns the name of the item (the displayed text for the item).
virtual QgsMimeDataUtils::UriList mimeUris() const
Returns mime URIs for the data item, most data providers will only return a single URI but some data ...
virtual bool equal(const QgsDataItem *other)
Returns true if this item is equal to another item (by testing item type and path).
A browser item that represents a layer that can be opened with one of the providers.
QList< QgsMimeDataUtils::Uri > UriList
Stores data associated with a STAC asset.
Stores data associated with a STAC Collection.
Handles STAC requests.