QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgslayermetadataresultsmodel.h
Go to the documentation of this file.
1/***************************************************************************
2 qgslayermetadataresultsmodel.h - QgsLayerMetadataResultsModel
3
4 ---------------------
5 begin : 1.9.2022
6 copyright : (C) 2022 by ale
7 email : [your-email-here]
8 ***************************************************************************
9 * *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 * *
15 ***************************************************************************/
16#ifndef QGSLAYERMETADATARESULTSMODEL_H
17#define QGSLAYERMETADATARESULTSMODEL_H
18
19#include "qgis_gui.h"
20#include "qgis_sip.h"
22
23#include <QAbstractTableModel>
24#include <QObject>
25#include <QThread>
26
27class QgsFeedback;
28
29
31
32#ifndef SIP_RUN
33
38class QgsMetadataResultsFetcher : public QObject
39{
40 Q_OBJECT
41
42 public:
44 QgsMetadataResultsFetcher( const QgsAbstractLayerMetadataProvider *metadataProvider, const QgsMetadataSearchContext &searchContext, QgsFeedback *feedback );
45
47 void fetchMetadata();
48
49 signals:
50
52 void resultsReady( const QgsLayerMetadataSearchResults &results );
53
54 private:
55 const QgsAbstractLayerMetadataProvider *mLayerMetadataProvider = nullptr;
56 QgsMetadataSearchContext mSearchContext;
57 QgsFeedback *mFeedback;
58};
59
60#endif
61
63
71class GUI_EXPORT QgsLayerMetadataResultsModel : public QAbstractTableModel
72{
73 Q_OBJECT
74
75 public:
80 explicit QgsLayerMetadataResultsModel( const QgsMetadataSearchContext &searchContext, QObject *parent = nullptr );
81
82 ~QgsLayerMetadataResultsModel() override;
83
84
85 // QAbstractTableModel interface
86
87 int rowCount( const QModelIndex &parent ) const override;
88 int columnCount( const QModelIndex &parent ) const override;
89 QVariant data( const QModelIndex &index, int role ) const override;
90 QVariant headerData( int section, Qt::Orientation orientation, int role ) const override;
91
93 void reload();
94
96 void reloadAsync();
97
98 // *INDENT-OFF*
99
106 enum class CustomRole SIP_MONKEYPATCH_SCOPEENUM_UNNEST( QgsLayerMetadataResultsModel, Roles ) : int
107 {
108 Metadata = Qt::ItemDataRole::UserRole,
109 };
110 Q_ENUM( CustomRole )
111 // *INDENT-ON*
112
113
116 enum Sections
117 {
119 Identifier,
121 Title,
123 Abstract,
125 DataProviderName,
127 GeometryType,
128 };
129
130 public slots:
131
135 void resultsReady( const QgsLayerMetadataSearchResults &results );
136
140 void cancel();
141
142 signals:
143
147 void progressChanged( int progress );
148
149 private:
150 std::unique_ptr<QgsFeedback> mFeedback;
151 QgsLayerMetadataSearchResults mResult;
152 QgsMetadataSearchContext mSearchContext;
153 std::vector<std::unique_ptr<QgsMetadataResultsFetcher>> mWorkers;
154 std::vector<std::unique_ptr<QThread>> mWorkerThreads;
155};
156
157#endif // QGSLAYERMETADATARESULTSMODEL_H
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition qgsfeedback.h:44
#define SIP_MONKEYPATCH_SCOPEENUM_UNNEST(OUTSIDE_CLASS, FORMERNAME)
Definition qgis_sip.h:268