QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
QGCCachedTileSet.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QDateTime>
4#include <QtCore/QHash>
5#include <QtCore/QLoggingCategory>
6#include <QtCore/QMutex>
7#include <QtCore/QObject>
8#include <QtCore/QQueue>
9#include <QtCore/QString>
10#include <QtNetwork/QNetworkReply>
11
12Q_DECLARE_LOGGING_CATEGORY(QGCCachedTileSetLog)
13
14struct QGCTile;
16class QNetworkAccessManager;
17
18class QGCCachedTileSet : public QObject
19{
20 Q_OBJECT
21 Q_MOC_INCLUDE("QGCTile.h")
22
23 Q_PROPERTY(QString name READ name NOTIFY nameChanged)
24 Q_PROPERTY(QString mapTypeStr READ mapTypeStr CONSTANT)
25 Q_PROPERTY(double topleftLon READ topleftLon CONSTANT)
26 Q_PROPERTY(double topleftLat READ topleftLat CONSTANT)
27 Q_PROPERTY(double bottomRightLon READ bottomRightLon CONSTANT)
28 Q_PROPERTY(double bottomRightLat READ bottomRightLat CONSTANT)
29 Q_PROPERTY(int minZoom READ minZoom CONSTANT)
30 Q_PROPERTY(int maxZoom READ maxZoom CONSTANT)
31 Q_PROPERTY(quint32 totalTileCount READ totalTileCount NOTIFY totalTileCountChanged)
32 Q_PROPERTY(QString totalTileCountStr READ totalTileCountStr NOTIFY totalTileCountChanged)
33 Q_PROPERTY(quint64 totalTilesSize READ totalTilesSize NOTIFY totalTilesSizeChanged)
34 Q_PROPERTY(QString totalTilesSizeStr READ totalTilesSizeStr NOTIFY totalTilesSizeChanged)
35 Q_PROPERTY(quint32 uniqueTileCount READ uniqueTileCount NOTIFY uniqueTileCountChanged)
36 Q_PROPERTY(QString uniqueTileCountStr READ uniqueTileCountStr NOTIFY uniqueTileCountChanged)
37 Q_PROPERTY(quint64 uniqueTileSize READ uniqueTileSize NOTIFY uniqueTileSizeChanged)
38 Q_PROPERTY(QString uniqueTileSizeStr READ uniqueTileSizeStr NOTIFY uniqueTileSizeChanged)
39 Q_PROPERTY(quint32 savedTileCount READ savedTileCount NOTIFY savedTileCountChanged)
40 Q_PROPERTY(QString savedTileCountStr READ savedTileCountStr NOTIFY savedTileCountChanged)
41 Q_PROPERTY(quint64 savedTileSize READ savedTileSize NOTIFY savedTileSizeChanged)
42 Q_PROPERTY(QString savedTileSizeStr READ savedTileSizeStr NOTIFY savedTileSizeChanged)
43 Q_PROPERTY(QString downloadStatus READ downloadStatus NOTIFY savedTileSizeChanged)
44 Q_PROPERTY(QDateTime creationDate READ creationDate CONSTANT)
45 Q_PROPERTY(bool complete READ complete NOTIFY completeChanged)
46 Q_PROPERTY(bool defaultSet READ defaultSet CONSTANT)
47 Q_PROPERTY(quint64 id READ id CONSTANT)
48 Q_PROPERTY(bool deleting READ deleting NOTIFY deletingChanged)
49 Q_PROPERTY(bool downloading READ downloading NOTIFY downloadingChanged)
50 Q_PROPERTY(quint32 errorCount READ errorCount NOTIFY errorCountChanged)
51 Q_PROPERTY(QString errorCountStr READ errorCountStr NOTIFY errorCountChanged)
52 Q_PROPERTY(bool selected READ selected WRITE setSelected NOTIFY selectedChanged)
53
54public:
55 explicit QGCCachedTileSet(const QString &name, QObject *parent = nullptr);
57
58 Q_INVOKABLE void createDownloadTask();
59 Q_INVOKABLE void resumeDownloadTask();
60 Q_INVOKABLE void cancelDownloadTask();
61
62 const QString &name() const { return _name; }
63 const QString &mapTypeStr() const { return _mapTypeStr; }
64
65 double topleftLat() const { return _topleftLat; }
66 double topleftLon() const { return _topleftLon; }
67 double bottomRightLat() const { return _bottomRightLat; }
68 double bottomRightLon() const { return _bottomRightLon; }
69
70 quint32 totalTileCount() const { return _totalTileCount; }
71 QString totalTileCountStr() const;
72 quint64 totalTilesSize() const { return _totalTileSize; }
73 QString totalTilesSizeStr() const;
74 quint32 uniqueTileCount() const { return _uniqueTileCount; }
75 QString uniqueTileCountStr() const;
76 quint64 uniqueTileSize() const { return _uniqueTileSize; }
77 QString uniqueTileSizeStr() const;
78 quint32 savedTileCount() const { return _savedTileCount; }
79 QString savedTileCountStr() const;
80 quint64 savedTileSize() const { return _savedTileSize; }
81 QString savedTileSizeStr() const;
82
83 QString downloadStatus() const;
84 int minZoom() const { return _minZoom; }
85 int maxZoom() const { return _maxZoom; }
86 const QDateTime &creationDate() const { return _creationDate; }
87 quint64 id() const { return _id; }
88 const QString &type() const { return _type; }
89 bool complete() const { return (_defaultSet || (_totalTileCount <= _savedTileCount)); }
90 bool defaultSet() const { return _defaultSet; }
91 bool deleting() const { return _deleting; }
92 bool downloading() const { return _downloading; }
93 quint32 errorCount() const { return _errorCount; }
94 QString errorCountStr() const;
95 bool selected() const { return _selected; }
96
97 void setManager(QGCMapEngineManager *mgr) { _manager = mgr; }
98 void setSelected(bool sel);
99 void setName(const QString &name) { if (name != _name) { _name = name; emit nameChanged(); } }
100
101 void setMapTypeStr(const QString &typeStr) { _mapTypeStr = typeStr; }
102 void setTopleftLat(double lat) { _topleftLat = lat; }
103 void setTopleftLon(double lon) { _topleftLon = lon; }
104 void setBottomRightLat(double lat) { _bottomRightLat = lat; }
105 void setBottomRightLon(double lon) { _bottomRightLon = lon; }
106
107 void setUniqueTileCount(quint32 num) { if (num != _uniqueTileCount) { _uniqueTileCount = num; emit uniqueTileCountChanged(); } }
108 void setTotalTileCount(quint32 num) { if (num != _totalTileCount) { _totalTileCount = num; emit totalTileCountChanged(); } }
109 void setSavedTileCount(quint32 num) { if (num != _savedTileCount) { _savedTileCount = num; emit savedTileCountChanged(); } }
110 void setUniqueTileSize(quint64 size) { if (size != _uniqueTileSize) { _uniqueTileSize = size; emit uniqueTileSizeChanged(); } }
111 void setTotalTileSize(quint64 size) { if (size != _totalTileSize) { _totalTileSize = size; emit totalTilesSizeChanged(); } }
112 void setSavedTileSize(quint64 size) { if (size != _savedTileSize) { _savedTileSize = size; emit savedTileSizeChanged(); } }
113
114 void setMinZoom(int zoom) { _minZoom = zoom; }
115 void setMaxZoom(int zoom) { _maxZoom = zoom; }
116 void setCreationDate(const QDateTime &date) { _creationDate = date; }
117 void setId(quint64 id) { _id = id; }
118 void setType(const QString &type) { _type = type; }
119 void setDefaultSet(bool def) { _defaultSet = def; }
120 void setDeleting(bool del) { if (del != _deleting) { _deleting = del; emit deletingChanged(); } }
121 void setDownloading(bool down) { if (down != _downloading) { _downloading = down; emit downloadingChanged(); } }
122 void setErrorCount(quint32 count) { if (count != _errorCount) { _errorCount = count; emit errorCountChanged(); } }
123
124signals:
137
138private slots:
139 void _tileListFetched(const QQueue<QGCTile*> &tiles);
140 void _networkReplyFinished();
141 void _networkReplyError(QNetworkReply::NetworkError error);
142
143private:
144 void _prepareDownload();
145 void _doneWithDownload();
146
147 QString _name;
148 QString _mapTypeStr;
149 QString _type = QStringLiteral("Invalid");
150 quint64 _id = 0;
151 double _topleftLat = 0.;
152 double _topleftLon = 0.;
153 double _bottomRightLat = 0.;
154 double _bottomRightLon = 0.;
155 quint32 _totalTileCount = 0;
156 quint64 _totalTileSize = 0;
157 quint32 _uniqueTileCount = 0;
158 quint64 _uniqueTileSize = 0;
159 quint32 _savedTileCount = 0;
160 quint64 _savedTileSize = 0;
161 quint32 _errorCount = 0;
162 int _minZoom = 3;
163 int _maxZoom = 3;
164 bool _defaultSet = false;
165 bool _deleting = false;
166 bool _downloading = false;
167 bool _noMoreTiles = false;
168 bool _batchRequested = false;
169 bool _selected = false;
170 bool _cancelPending = false;
171 QDateTime _creationDate;
172
173 QHash<QString, QNetworkReply*> _replies;
174 QMutex _repliesMutex;
175 QQueue<QGCTile*> _tilesToDownload;
176 QGCMapEngineManager *_manager = nullptr;
177 QNetworkAccessManager *_networkManager = nullptr;
178
179 static constexpr uint32_t kTileBatchSize = 256;
180};
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
Error error
void errorCountChanged()
void deletingChanged()
void completeChanged()
void uniqueTileCountChanged()
void uniqueTileSizeChanged()
void totalTileCountChanged()
void downloadingChanged()
void savedTileSizeChanged()
void savedTileCountChanged()
void totalTilesSizeChanged()
void selectedChanged()