QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
QGCMapEngineManager.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtQmlIntegration/QtQmlIntegration>
4
5#include "QGCTileSet.h"
6#include "QGCMapTaskBase.h"
7
11
12class QGCMapEngineManager : public QObject
13{
14 Q_OBJECT
15 // QML_ELEMENT
16 // QML_UNCREATABLE("")
17 Q_MOC_INCLUDE("QmlObjectListModel.h")
18 Q_MOC_INCLUDE("QGCCachedTileSet.h")
19 Q_PROPERTY(bool fetchElevation MEMBER _fetchElevation NOTIFY fetchElevationChanged)
20 Q_PROPERTY(bool importReplace MEMBER _importReplace NOTIFY importReplaceChanged)
22 Q_PROPERTY(int actionProgress READ actionProgress NOTIFY actionProgressChanged)
23 Q_PROPERTY(int selectedCount READ selectedCount NOTIFY selectedCountChanged)
25 Q_PROPERTY(QString errorMessage READ errorMessage NOTIFY errorMessageChanged)
26 Q_PROPERTY(QString tileCountStr READ tileCountStr NOTIFY tileCountChanged)
27 Q_PROPERTY(QString tileSizeStr READ tileSizeStr NOTIFY tileSizeChanged)
28 Q_PROPERTY(QStringList mapList READ mapList CONSTANT)
29 Q_PROPERTY(QStringList mapProviderList READ mapProviderList CONSTANT)
30 Q_PROPERTY(QStringList elevationProviderList READ elevationProviderList CONSTANT)
31 Q_PROPERTY(quint64 tileCount READ tileCount NOTIFY tileCountChanged)
32 Q_PROPERTY(quint64 tileSize READ tileSize NOTIFY tileSizeChanged)
33
34public:
35 explicit QGCMapEngineManager(QObject *parent = nullptr);
38
45 Q_ENUM(ImportAction)
46
47 Q_INVOKABLE bool exportSets(const QString &path = QString());
48 Q_INVOKABLE bool findName(const QString &name) const;
49 Q_INVOKABLE bool importSets(const QString &path = QString());
50
55 Q_INVOKABLE bool importArchive(const QString &archivePath);
56 Q_INVOKABLE QString getUniqueName() const;
57 Q_INVOKABLE void deleteTileSet(QGCCachedTileSet *tileSet);
58 Q_INVOKABLE void loadTileSets();
59 Q_INVOKABLE void renameTileSet(QGCCachedTileSet *tileSet, const QString &newName);
61 Q_INVOKABLE void selectAll();
62 Q_INVOKABLE void selectNone();
63 Q_INVOKABLE void startDownload(const QString &name, const QString &mapType);
64 Q_INVOKABLE void updateForCurrentView(double lon0, double lat0, double lon1, double lat1, int minZoom, int maxZoom, const QString &mapName);
65
66 Q_INVOKABLE static QString loadSetting(const QString &key, const QString &defaultValue);
67 Q_INVOKABLE static QStringList mapTypeList(const QString &provider);
68 Q_INVOKABLE static void saveSetting(const QString &key, const QString &value);
69
70 ImportAction importAction() const { return _importAction; }
71 int actionProgress() const { return _actionProgress; }
72 int selectedCount() const;
73 QmlObjectListModel *tileSets() { return _tileSets; }
74 QString errorMessage() const { return _errorMessage; }
75 QString tileCountStr() const;
76 QString tileSizeStr() const;
77 quint64 tileCount() const { return (_imageSet.tileCount + _elevationSet.tileCount); }
78 quint64 tileSize() const { return (_imageSet.tileSize + _elevationSet.tileSize); }
79
80 void setActionProgress(int percentage) { if (percentage != _actionProgress) { _actionProgress = percentage; emit actionProgressChanged(); } }
81 void setErrorMessage(const QString &error) { if (error != _errorMessage) { _errorMessage = error; emit errorMessageChanged(); } }
82 void setImportAction(ImportAction action) { if (action != _importAction) { _importAction = action; emit importActionChanged(); } }
83
84 static QStringList mapList();
85 static QStringList mapProviderList();
86 static QStringList elevationProviderList();
87
88signals:
99
100public slots:
101 void taskError(QGCMapTask::TaskType type, const QString &error);
102
103private slots:
104 void _actionCompleted();
105 void _actionProgressHandler(int percentage) { setActionProgress(percentage); }
106 void _resetCompleted() { loadTileSets(); }
107 void _tileSetDeleted(quint64 setID);
108 void _tileSetFetched(QGCCachedTileSet *tileSets);
109 void _tileSetSaved(QGCCachedTileSet *set);
110 void _updateTotals(quint32 totaltiles, quint64 totalsize, quint32 defaulttiles, quint64 defaultsize);
111 void _handleExtractionProgress(qreal progress);
112 void _handleExtractionFinished(bool success);
113
114private:
115 QmlObjectListModel *_tileSets = nullptr;
116 QGCTileSet _imageSet;
117 QGCTileSet _elevationSet;
119 double _topleftLat = 0.;
120 double _topleftLon = 0.;
121 double _bottomRightLat = 0.;
122 double _bottomRightLon = 0.;
123 int _minZoom = 0;
124 int _maxZoom = 0;
125 int _actionProgress = 0;
126 quint64 _setID = UINT64_MAX;
127 QString _errorMessage;
128 bool _fetchElevation = true;
129 bool _importReplace = false;
130 QGCCompressionJob *_extractionJob = nullptr;
131 QString _extractionOutputDir;
132
133 static constexpr const char *kQmlOfflineMapKeyName = "QGCOfflineMap";
134};
Error error
QObject wrapper for compression operations with progress signals.
static QStringList mapProviderList()
Q_INVOKABLE bool findName(const QString &name) const
Q_INVOKABLE void resetAction()
QmlObjectListModel * tileSets()
static QGCMapEngineManager * instance()
void taskError(QGCMapTask::TaskType type, const QString &error)
static Q_INVOKABLE QString loadSetting(const QString &key, const QString &defaultValue)
Q_INVOKABLE bool importArchive(const QString &archivePath)
Q_INVOKABLE void selectAll()
void setActionProgress(int percentage)
QString tileCountStr() const
static QStringList elevationProviderList()
static Q_INVOKABLE void saveSetting(const QString &key, const QString &value)
static QStringList mapList()
static Q_INVOKABLE QStringList mapTypeList(const QString &provider)
Q_INVOKABLE void startDownload(const QString &name, const QString &mapType)
QString tileSizeStr() const
Q_INVOKABLE void renameTileSet(QGCCachedTileSet *tileSet, const QString &newName)
Q_INVOKABLE void deleteTileSet(QGCCachedTileSet *tileSet)
Q_INVOKABLE void selectNone()
void fetchElevationChanged()
quint64 tileCount() const
Q_INVOKABLE bool importSets(const QString &path=QString())
Q_INVOKABLE bool exportSets(const QString &path=QString())
Q_INVOKABLE QString getUniqueName() const
Q_INVOKABLE void loadTileSets()
ImportAction importAction() const
void setImportAction(ImportAction action)
void setErrorMessage(const QString &error)
void actionProgressChanged()
Q_INVOKABLE void updateForCurrentView(double lon0, double lat0, double lon1, double lat1, int minZoom, int maxZoom, const QString &mapName)
QString errorMessage() const
quint64 tileCount
Definition QGCTileSet.h:29
quint64 tileSize
Definition QGCTileSet.h:30