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