diff --git a/src/AutoPilotPlugins/PX4/AirframeFactMetaData.xml b/src/AutoPilotPlugins/PX4/AirframeFactMetaData.xml index 8e5af0e1177077de55e4649e5d8b99f359e77f03..6a91e439475eaefb493ce80ad3aa53656f543242 100644 --- a/src/AutoPilotPlugins/PX4/AirframeFactMetaData.xml +++ b/src/AutoPilotPlugins/PX4/AirframeFactMetaData.xml @@ -430,9 +430,9 @@ Henry Zhang <zhanghui629@gmail.com> Quadrotor x - + Copter - Jacob Dahl <jacob.dahl@tealdrones.com> + Matt McFadden <matt.mcfadden@tealdrones.com> Quadrotor x motor 1 motor 2 diff --git a/src/Camera/QGCCameraManager.cc b/src/Camera/QGCCameraManager.cc index 33410b36158de7cfd4a4c6c67d84ff303845145a..90293e7eaa6ec14bed305c062ce9944464c5d7c2 100644 --- a/src/Camera/QGCCameraManager.cc +++ b/src/Camera/QGCCameraManager.cc @@ -110,8 +110,10 @@ QGCCameraManager::_handleHeartbeat(const mavlink_message_t &message) { mavlink_heartbeat_t heartbeat; mavlink_msg_heartbeat_decode(&message, &heartbeat); - //-- Only pay attention to "camera" component IDs - if(_vehicleReadyState && _vehicle->id() == message.sysid && message.compid >= MAV_COMP_ID_CAMERA && message.compid <= MAV_COMP_ID_CAMERA6) { + //-- Only pay attention to camera components, as identified by their MAV_TYPE, and as fallback by their compId + if(_vehicleReadyState && _vehicle->id() == message.sysid && + ((heartbeat.autopilot == MAV_AUTOPILOT_INVALID && heartbeat.type == MAV_TYPE_CAMERA) || + (message.compid >= MAV_COMP_ID_CAMERA && message.compid <= MAV_COMP_ID_CAMERA6))) { //-- First time hearing from this one? QString sCompID = QString::number(message.compid); if(!_cameraInfoRequest.contains(sCompID)) { diff --git a/src/FlightMap/Widgets/CameraPageWidget.qml b/src/FlightMap/Widgets/CameraPageWidget.qml index 874825f9728f6c8d01100e2adbf4e2698bc4e961..d811bc6b6b033f0aeeb7f4d7ca3db93b38e1f494 100644 --- a/src/FlightMap/Widgets/CameraPageWidget.qml +++ b/src/FlightMap/Widgets/CameraPageWidget.qml @@ -32,23 +32,23 @@ Column { property var _dynamicCameras: activeVehicle ? activeVehicle.dynamicCameras : null property bool _isCamera: _dynamicCameras ? _dynamicCameras.cameras.count > 0 : false + property int _curCameraIndex: _dynamicCameras ? _dynamicCameras.currentCamera : 0 property var _camera: _isCamera ? (_dynamicCameras.cameras.get(_curCameraIndex) && _dynamicCameras.cameras.get(_curCameraIndex).paramComplete ? _dynamicCameras.cameras.get(_curCameraIndex) : null) : null - property bool _cameraModeUndefined: _camera ? _dynamicCameras.cameras.get(_curCameraIndex).cameraMode === QGCCameraControl.CAMERA_MODE_UNDEFINED : true - property bool _cameraVideoMode: _camera ? _dynamicCameras.cameras.get(_curCameraIndex).cameraMode === 1 : false - property bool _cameraPhotoMode: _camera ? _dynamicCameras.cameras.get(_curCameraIndex).cameraMode === 0 : false - property bool _cameraPhotoIdle: _camera && _camera.photoStatus === QGCCameraControl.PHOTO_CAPTURE_IDLE + property bool _cameraModeUndefined: _camera ? _camera.cameraMode === QGCCameraControl.CAM_MODE_UNDEFINED : true + property bool _cameraVideoMode: _camera ? _camera.cameraMode === QGCCameraControl.CAM_MODE_VIDEO : false + property bool _cameraPhotoMode: _camera ? _camera.cameraMode === QGCCameraControl.CAM_MODE_PHOTO : false property bool _cameraElapsedMode: _camera && _camera.cameraMode === QGCCameraControl.CAM_MODE_PHOTO && _camera.photoMode === QGCCameraControl.PHOTO_CAPTURE_TIMELAPSE property real _spacers: ScreenTools.defaultFontPixelHeight * 0.5 property real _labelFieldWidth: ScreenTools.defaultFontPixelWidth * 30 property real _editFieldWidth: ScreenTools.defaultFontPixelWidth * 30 property bool _communicationLost: activeVehicle ? activeVehicle.connectionLost : false - property bool _hasModes: _camera && _camera && _camera.hasModes + property bool _hasModes: _camera && _camera.hasModes property bool _videoRecording: _camera && _camera.videoStatus === QGCCameraControl.VIDEO_CAPTURE_STATUS_RUNNING + property bool _photoIdle: _camera && _camera.photoStatus === QGCCameraControl.PHOTO_CAPTURE_IDLE property bool _storageReady: _camera && _camera.storageStatus === QGCCameraControl.STORAGE_READY property bool _batteryReady: _camera && _camera.batteryRemaining >= 0 property bool _storageIgnored: _camera && _camera.storageStatus === QGCCameraControl.STORAGE_NOT_SUPPORTED - property bool _canShoot: !_videoRecording && _cameraPhotoIdle && ((_storageReady && _camera.storageFree > 0) || _storageIgnored) - property int _curCameraIndex: _dynamicCameras ? _dynamicCameras.currentCamera : 0 + property bool _canShoot: !_cameraModeUndefined && !_videoRecording && _photoIdle && ((_storageReady && _camera.storageFree > 0) || _storageIgnored) function showSettings() { mainWindow.showComponentDialog(cameraSettings, _cameraVideoMode ? qsTr("Video Settings") : qsTr("Camera Settings"), 70, StandardButton.Ok) @@ -161,20 +161,20 @@ Column { border.width: 3 anchors.horizontalCenter: parent.horizontalCenter Rectangle { - width: parent.width * (_videoRecording || (_cameraPhotoMode && !_cameraPhotoIdle && _cameraElapsedMode) ? 0.5 : 0.75) + width: parent.width * (_videoRecording || (_cameraPhotoMode && !_photoIdle && _cameraElapsedMode) ? 0.5 : 0.75) height: width - radius: _videoRecording || (_cameraPhotoMode && !_cameraPhotoIdle && _cameraElapsedMode) ? 0 : width * 0.5 - color: (_cameraModeUndefined || !_canShoot) ? qgcPal.colorGrey : qgcPal.colorRed + radius: _videoRecording || (_cameraPhotoMode && !_photoIdle && _cameraElapsedMode) ? 0 : width * 0.5 + color: _canShoot ? qgcPal.colorRed : qgcPal.colorGrey anchors.centerIn: parent } MouseArea { anchors.fill: parent - enabled: !_cameraModeUndefined && _canShoot + enabled: _canShoot onClicked: { if(_cameraVideoMode) { _camera.toggleVideo() } else { - if(_cameraPhotoMode && !_cameraPhotoIdle && _cameraElapsedMode) { + if(_cameraPhotoMode && !_photoIdle && _cameraElapsedMode) { _camera.stopTakePhoto() } else { _camera.takePhoto() diff --git a/src/QtLocationPlugin/BingMapProvider.cpp b/src/QtLocationPlugin/BingMapProvider.cpp index 7980e6d28fc3e4cc9e8338de21c2c710aa974587..b3f063a52169a72e920c90f5f0c99632c1a9f7af 100644 --- a/src/QtLocationPlugin/BingMapProvider.cpp +++ b/src/QtLocationPlugin/BingMapProvider.cpp @@ -1,51 +1,39 @@ +/**************************************************************************** + * + * (c) 2009-2019 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + #include "BingMapProvider.h" -#if defined(DEBUG_GOOGLE_MAPS) -#include -#include -#endif -#include "QGCMapEngine.h" - -BingMapProvider::BingMapProvider(QString imageFormat, quint32 averageSize, - QGeoMapType::MapStyle mapType, QObject* parent) - : MapProvider(QString("https://www.bing.com/maps/"), imageFormat, - averageSize, mapType, parent) {} - -BingMapProvider::~BingMapProvider() {} - -QString BingRoadMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { - Q_UNUSED(networkManager); - QString key = _tileXYToQuadKey(x, y, zoom); - return QString("http://ecn.t%1.tiles.virtualearth.net/tiles/" - "r%2.png?g=%3&mkt=%4") - .arg(_getServerNum(x, y, 4)) - .arg(key) - .arg(_versionBingMaps) - .arg(_language); + +BingMapProvider::BingMapProvider(const QString &imageFormat, const quint32 averageSize, + const QGeoMapType::MapStyle mapType, QObject* parent) + : MapProvider(QStringLiteral("https://www.bing.com/maps/"), imageFormat, averageSize, mapType, parent) {} + +static const QString RoadMapUrl = QStringLiteral("http://ecn.t%1.tiles.virtualearth.net/tiles/r%2.png?g=%3&mkt=%4"); + +QString BingRoadMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + const QString key = _tileXYToQuadKey(x, y, zoom); + return RoadMapUrl.arg(QString::number(_getServerNum(x, y, 4)), key, _versionBingMaps, _language); } -QString -BingSatelliteMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { - Q_UNUSED(networkManager); - QString key = _tileXYToQuadKey(x, y, zoom); - return QString("http://ecn.t%1.tiles.virtualearth.net/tiles/" - "a%2.jpeg?g=%3&mkt=%4") - .arg(_getServerNum(x, y, 4)) - .arg(key) - .arg(_versionBingMaps) - .arg(_language); +static const QString SatteliteMapUrl = QStringLiteral("http://ecn.t%1.tiles.virtualearth.net/tiles/a%2.jpeg?g=%3&mkt=%4"); + +QString BingSatelliteMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + const QString key = _tileXYToQuadKey(x, y, zoom); + return SatteliteMapUrl.arg(QString::number(_getServerNum(x, y, 4)) ,key ,_versionBingMaps ,_language); } -QString BingHybridMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { - Q_UNUSED(networkManager); - QString key = _tileXYToQuadKey(x, y, zoom); - return QString("http://ecn.t%1.tiles.virtualearth.net/tiles/" - "h%2.jpeg?g=%3&mkt=%4") - .arg(_getServerNum(x, y, 4)) - .arg(key) - .arg(_versionBingMaps) - .arg(_language); +static const QString HybridMapUrl = QStringLiteral("http://ecn.t%1.tiles.virtualearth.net/tiles/h%2.jpeg?g=%3&mkt=%4"); + +QString BingHybridMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + const QString key = _tileXYToQuadKey(x, y, zoom); + return HybridMapUrl.arg(QString::number(_getServerNum(x, y, 4)), key, _versionBingMaps, _language); } diff --git a/src/QtLocationPlugin/BingMapProvider.h b/src/QtLocationPlugin/BingMapProvider.h index 8b8fa6841badb741a6a03adacc11dff01d243806..092be8b2256cf498c910945c3167f4cf2dd3c0d7 100644 --- a/src/QtLocationPlugin/BingMapProvider.h +++ b/src/QtLocationPlugin/BingMapProvider.h @@ -1,46 +1,43 @@ +/**************************************************************************** + * + * (c) 2009-2019 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + #pragma once #include "MapProvider.h" -#include -#include -#include -#include -#include -#include - class BingMapProvider : public MapProvider { Q_OBJECT - public: - BingMapProvider(QString imageFormat, quint32 averageSize, - QGeoMapType::MapStyle mapType, QObject* parent); - ~BingMapProvider(); +public: + BingMapProvider(const QString &imageFormat, const quint32 averageSize, + const QGeoMapType::MapStyle mapType, QObject* parent = nullptr); - protected: - // Define the url to Request - virtual QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) = 0; + ~BingMapProvider() = default; - const QString _versionBingMaps = "563"; +protected: + const QString _versionBingMaps = QStringLiteral("563"); }; -const quint32 AVERAGE_BING_STREET_MAP = 1297; -const quint32 AVERAGE_BING_SAT_MAP = 19597; +static const quint32 AVERAGE_BING_STREET_MAP = 1297; +static const quint32 AVERAGE_BING_SAT_MAP = 19597; // ----------------------------------------------------------- // Bing Road Map class BingRoadMapProvider : public BingMapProvider { Q_OBJECT - public: - BingRoadMapProvider(QObject* parent) - : BingMapProvider(QString("png"), AVERAGE_BING_STREET_MAP, QGeoMapType::StreetMap, - parent) {} - - protected: - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); + +public: + BingRoadMapProvider(QObject* parent = nullptr) + : BingMapProvider(QStringLiteral("png"), AVERAGE_BING_STREET_MAP, QGeoMapType::StreetMap, parent) {} + + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; // ----------------------------------------------------------- @@ -48,14 +45,12 @@ class BingRoadMapProvider : public BingMapProvider { class BingSatelliteMapProvider : public BingMapProvider { Q_OBJECT - public: - BingSatelliteMapProvider(QObject* parent) - : BingMapProvider(QString("jpg"), AVERAGE_BING_SAT_MAP, QGeoMapType::SatelliteMapDay, - parent) {} - - protected: - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); + +public: + BingSatelliteMapProvider(QObject* parent = nullptr) + : BingMapProvider(QStringLiteral("jpg"), AVERAGE_BING_SAT_MAP, QGeoMapType::SatelliteMapDay, parent) {} + + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; // ----------------------------------------------------------- @@ -63,12 +58,9 @@ class BingSatelliteMapProvider : public BingMapProvider { class BingHybridMapProvider : public BingMapProvider { Q_OBJECT - public: - BingHybridMapProvider(QObject* parent) - : BingMapProvider(QString("jpg"),AVERAGE_BING_SAT_MAP, QGeoMapType::HybridMap, - parent) {} - - protected: - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); +public: + BingHybridMapProvider(QObject* parent = nullptr) + : BingMapProvider(QStringLiteral("jpg"),AVERAGE_BING_SAT_MAP, QGeoMapType::HybridMap, parent) {} + + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; diff --git a/src/QtLocationPlugin/ElevationMapProvider.cpp b/src/QtLocationPlugin/ElevationMapProvider.cpp index 03af2faece64aa7a900f89ea0970f838958e3446..717d7eb7abe852b0e31ef72351684f431b933bbf 100644 --- a/src/QtLocationPlugin/ElevationMapProvider.cpp +++ b/src/QtLocationPlugin/ElevationMapProvider.cpp @@ -5,42 +5,34 @@ #endif #include "QGCMapEngine.h" -ElevationProvider::ElevationProvider(QString imageFormat, quint32 averageSize, - QGeoMapType::MapStyle mapType, - QObject* parent) - : MapProvider(QString("https://api.airmap.com/"), imageFormat, averageSize, - mapType, parent) {} -ElevationProvider::~ElevationProvider() {} +ElevationProvider::ElevationProvider(const QString& imageFormat, quint32 averageSize, QGeoMapType::MapStyle mapType, QObject* parent) + : MapProvider(QStringLiteral("https://api.airmap.com/"), imageFormat, averageSize, mapType, parent) {} //----------------------------------------------------------------------------- -int AirmapElevationProvider::long2tileX(double lon, int z) { - Q_UNUSED(z); +int AirmapElevationProvider::long2tileX(const double lon, const int z) const { + Q_UNUSED(z) return static_cast(floor((lon + 180.0) / srtm1TileSize)); } //----------------------------------------------------------------------------- -int AirmapElevationProvider::lat2tileY(double lat, int z) { - Q_UNUSED(z); +int AirmapElevationProvider::lat2tileY(const double lat, const int z) const { + Q_UNUSED(z) return static_cast(floor((lat + 90.0) / srtm1TileSize)); } -QString -AirmapElevationProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { - Q_UNUSED(networkManager); - Q_UNUSED(zoom); - return QString("https://api.airmap.com/elevation/v1/ele/" - "carpet?points=%1,%2,%3,%4") +QString AirmapElevationProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + Q_UNUSED(zoom) + return QString("https://api.airmap.com/elevation/v1/ele/carpet?points=%1,%2,%3,%4") .arg(static_cast(y) * srtm1TileSize - 90.0) .arg(static_cast(x) * srtm1TileSize - 180.0) .arg(static_cast(y + 1) * srtm1TileSize - 90.0) .arg(static_cast(x + 1) * srtm1TileSize - 180.0); } -QGCTileSet AirmapElevationProvider::getTileCount(int zoom, double topleftLon, - double topleftLat, - double bottomRightLon, - double bottomRightLat) { +QGCTileSet AirmapElevationProvider::getTileCount(const int zoom, const double topleftLon, + const double topleftLat, const double bottomRightLon, + const double bottomRightLat) const { QGCTileSet set; set.tileX0 = long2tileX(topleftLon, zoom); set.tileY0 = lat2tileY(bottomRightLat, zoom); diff --git a/src/QtLocationPlugin/ElevationMapProvider.h b/src/QtLocationPlugin/ElevationMapProvider.h index 3694deb098ed2f898d75aecc8fc6169410b5c88d..5f7fadfdb59c373bd46f66c78f9e3bf8fe0e16e0 100644 --- a/src/QtLocationPlugin/ElevationMapProvider.h +++ b/src/QtLocationPlugin/ElevationMapProvider.h @@ -10,24 +10,17 @@ #include #include -const quint32 AVERAGE_AIRMAP_ELEV_SIZE = 2786; +static const quint32 AVERAGE_AIRMAP_ELEV_SIZE = 2786; //----------------------------------------------------------------------------- -const double srtm1TileSize = 0.01; +static const double srtm1TileSize = 0.01; class ElevationProvider : public MapProvider { Q_OBJECT public: - ElevationProvider(QString imageFormat, quint32 averageSize, - QGeoMapType::MapStyle mapType, QObject* parent); + ElevationProvider(const QString& imageFormat, quint32 averageSize, + QGeoMapType::MapStyle mapType, QObject* parent = nullptr); - ~ElevationProvider(); - - bool _isElevationProvider(){return true;} - - protected: - // Define the url to Request - virtual QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) = 0; + virtual bool _isElevationProvider() const override { return true; } }; // ----------------------------------------------------------- @@ -36,19 +29,19 @@ class ElevationProvider : public MapProvider { class AirmapElevationProvider : public ElevationProvider { Q_OBJECT public: - AirmapElevationProvider(QObject* parent) - : ElevationProvider(QString("bin"), AVERAGE_AIRMAP_ELEV_SIZE, + AirmapElevationProvider(QObject* parent = nullptr) + : ElevationProvider(QStringLiteral("bin"), AVERAGE_AIRMAP_ELEV_SIZE, QGeoMapType::StreetMap, parent) {} - int long2tileX(double lon, int z); - int lat2tileY(double lat, int z); - QGCTileSet getTileCount(int zoom, double topleftLon, - double topleftLat, double bottomRightLon, - double bottomRightLat); + int long2tileX(const double lon, const int z) const override; + + int lat2tileY(const double lat, const int z) const override; + QGCTileSet getTileCount(const int zoom, const double topleftLon, + const double topleftLat, const double bottomRightLon, + const double bottomRightLat) const override; protected: - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; diff --git a/src/QtLocationPlugin/EsriMapProvider.cpp b/src/QtLocationPlugin/EsriMapProvider.cpp index 86a29c8f1b5bbb3a717b3de62ac82b927cae2c03..2ed0ea1ef129f108328c05b3c6af7d9922057748 100644 --- a/src/QtLocationPlugin/EsriMapProvider.cpp +++ b/src/QtLocationPlugin/EsriMapProvider.cpp @@ -1,61 +1,51 @@ +/**************************************************************************** + * + * (c) 2009-2019 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + #include "EsriMapProvider.h" #include "QGCApplication.h" -#include "QGCMapEngine.h" #include "SettingsManager.h" -QNetworkRequest -EsriMapProvider::getTileURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { +EsriMapProvider::EsriMapProvider(const quint32 averageSize, const QGeoMapType::MapStyle mapType, QObject *parent) + : MapProvider(QString(), QString(), averageSize, mapType, parent) {} + +QNetworkRequest EsriMapProvider::getTileURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { //-- Build URL QNetworkRequest request; - QString url = _getURL(x, y, zoom, networkManager); + const QString url = _getURL(x, y, zoom, networkManager); if (url.isEmpty()) { return request; } request.setUrl(QUrl(url)); - request.setRawHeader("Accept", "*/*"); - QByteArray token = qgcApp() - ->toolbox() - ->settingsManager() - ->appSettings() - ->esriToken() - ->rawValue() - .toString() - .toLatin1(); - request.setRawHeader("User-Agent", - QByteArrayLiteral("Qt Location based application")); - request.setRawHeader("User-Token", token); + request.setRawHeader(QByteArrayLiteral("Accept"), QByteArrayLiteral("*/*")); + const QByteArray token = qgcApp()->toolbox()->settingsManager()->appSettings()->esriToken()->rawValue().toString().toLatin1(); + request.setRawHeader(QByteArrayLiteral("User-Agent"), QByteArrayLiteral("Qt Location based application")); + request.setRawHeader(QByteArrayLiteral("User-Token"), token); return request; } -QString -EsriWorldStreetMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { - Q_UNUSED(networkManager); - return QString("http://services.arcgisonline.com/ArcGIS/rest/services/" - "World_Street_Map/MapServer/tile/%1/%2/%3") - .arg(zoom) - .arg(y) - .arg(x); +static const QString WorldStreetMapUrl = QStringLiteral("http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/%1/%2/%3"); + +QString EsriWorldStreetMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + return WorldStreetMapUrl.arg(zoom).arg(y).arg(x); } -QString -EsriWorldSatelliteMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { - Q_UNUSED(networkManager); - return QString("http://server.arcgisonline.com/ArcGIS/rest/" - "services/World_Imagery/MapServer/tile/%1/%2/%3") - .arg(zoom) - .arg(y) - .arg(x); +static const QString WorldSatelliteMapUrl = QStringLiteral("http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/%1/%2/%3"); + +QString EsriWorldSatelliteMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + return WorldSatelliteMapUrl.arg(zoom).arg(y).arg(x); } -QString EsriTerrainMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { - Q_UNUSED(networkManager); - return QString("http://server.arcgisonline.com/ArcGIS/rest/services/" - "World_Terrain_Base/MapServer/tile/%1/%2/%3") - .arg(zoom) - .arg(y) - .arg(x); +static const QString TerrainMapUrl = QStringLiteral("http://server.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer/tile/%1/%2/%3"); + +QString EsriTerrainMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + return TerrainMapUrl.arg(zoom).arg(y).arg(x); } diff --git a/src/QtLocationPlugin/EsriMapProvider.h b/src/QtLocationPlugin/EsriMapProvider.h index bc703cc19638f7643a51d3675510dd2b7e60e9cb..ae1da84d78e1cff692fef71175557d914487c835 100644 --- a/src/QtLocationPlugin/EsriMapProvider.h +++ b/src/QtLocationPlugin/EsriMapProvider.h @@ -1,49 +1,51 @@ +/**************************************************************************** + * + * (c) 2009-2019 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + #pragma once #include "MapProvider.h" -#include -#include -#include -#include -#include -#include - class EsriMapProvider : public MapProvider { Q_OBJECT + public: - using MapProvider::MapProvider; + EsriMapProvider(const quint32 averageSize, const QGeoMapType::MapStyle mapType, QObject* parent = nullptr); - QNetworkRequest getTileURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); + QNetworkRequest getTileURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; class EsriWorldStreetMapProvider : public EsriMapProvider { Q_OBJECT + public: - EsriWorldStreetMapProvider(QObject* parent) - : EsriMapProvider(QString(""), QString(""), AVERAGE_TILE_SIZE, - QGeoMapType::StreetMap, parent) {} - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); + EsriWorldStreetMapProvider(QObject* parent = nullptr) + : EsriMapProvider(AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {} + + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; class EsriWorldSatelliteMapProvider : public EsriMapProvider { Q_OBJECT + public: - EsriWorldSatelliteMapProvider(QObject* parent) - : EsriMapProvider(QString(""), QString(""), AVERAGE_TILE_SIZE, - QGeoMapType::SatelliteMapDay, parent) {} - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); + EsriWorldSatelliteMapProvider(QObject* parent = nullptr) + : EsriMapProvider(AVERAGE_TILE_SIZE, QGeoMapType::SatelliteMapDay, parent) {} + + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; class EsriTerrainMapProvider : public EsriMapProvider { Q_OBJECT + public: - EsriTerrainMapProvider(QObject* parent) - : EsriMapProvider(QString(""), QString(""), AVERAGE_TILE_SIZE, - QGeoMapType::TerrainMap, parent) {} - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); + EsriTerrainMapProvider(QObject* parent = nullptr) + : EsriMapProvider(AVERAGE_TILE_SIZE, QGeoMapType::TerrainMap, parent) {} + + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; diff --git a/src/QtLocationPlugin/GenericMapProvider.cpp b/src/QtLocationPlugin/GenericMapProvider.cpp index dfacb5f791b75ed18a849e391c875959f22056f1..d6a616258e67c5a9fb6aaf4dd5e331718b8c0eb6 100644 --- a/src/QtLocationPlugin/GenericMapProvider.cpp +++ b/src/QtLocationPlugin/GenericMapProvider.cpp @@ -1,103 +1,75 @@ +/**************************************************************************** + * + * (c) 2009-2019 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ #include "GenericMapProvider.h" -#include "QGCMapEngine.h" -QString StatkartMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { - Q_UNUSED(networkManager); - return QString("http://opencache.statkart.no/gatekeeper/gk/" - "gk.open_gmaps?layers=topo4&zoom=%1&x=%2&y=%3") - .arg(zoom) - .arg(x) - .arg(y); +static const QString StatkartMapUrl = QStringLiteral("http://opencache.statkart.no/gatekeeper/gk/gk.open_gmaps?layers=topo4&zoom=%1&x=%2&y=%3"); + +QString StatkartMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + return StatkartMapUrl.arg(zoom).arg(x).arg(y); } -QString EniroMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { - Q_UNUSED(networkManager); - return QString("http://map.eniro.com/geowebcache/service/tms1.0.0/map/%1/" - "%2/%3.png") - .arg(zoom) - .arg(x) - .arg((1 << zoom) - 1 - y); +static const QString EniroMapUrl = QStringLiteral("http://map.eniro.com/geowebcache/service/tms1.0.0/map/%1/%2/%3.png"); + +QString EniroMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + return EniroMapUrl.arg(zoom).arg(x).arg((1 << zoom) - 1 - y); } -QString MapQuestMapMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { - Q_UNUSED(networkManager); - char letter = "1234"[_getServerNum(x, y, 4)]; - return QString("http://otile%1.mqcdn.com/tiles/1.0.0/map/%2/%3/%4.jpg") - .arg(letter) - .arg(zoom) - .arg(x) - .arg(y); +static const QString MapQuestMapUrl = QStringLiteral("http://otile%1.mqcdn.com/tiles/1.0.0/map/%2/%3/%4.jpg"); + +QString MapQuestMapMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + return MapQuestMapUrl.arg(_getServerNum(x, y, 4)).arg(zoom).arg(x).arg(y); } -QString MapQuestSatMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { - Q_UNUSED(networkManager); - char letter = "1234"[_getServerNum(x, y, 4)]; - return QString("http://otile%1.mqcdn.com/tiles/1.0.0/sat/%2/%3/%4.jpg") - .arg(letter) - .arg(zoom) - .arg(x) - .arg(y); +static const QString MapQuestSatUrl = QStringLiteral("http://otile%1.mqcdn.com/tiles/1.0.0/sat/%2/%3/%4.jpg"); + +QString MapQuestSatMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + return MapQuestSatUrl.arg(_getServerNum(x, y, 4)).arg(zoom).arg(x).arg(y); } -QString -VWorldStreetMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { - Q_UNUSED(networkManager); - int gap = zoom - 6; - int x_min = 53 * pow(2, gap); - int x_max = 55 * pow(2, gap) + (2 * gap - 1); - int y_min = 22 * pow(2, gap); - int y_max = 26 * pow(2, gap) + (2 * gap - 1); +QString VWorldStreetMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + const int gap = zoom - 6; + const int x_min = int(53 * pow(2, gap)); + const int x_max = int(55 * pow(2, gap) + (2 * gap - 1)); + const int y_min = int(22 * pow(2, gap)); + const int y_max = int(26 * pow(2, gap) + (2 * gap - 1)); if (zoom > 19) { - return {}; - } else if (zoom > 5 && x >= x_min && x <= x_max && y >= y_min && - y <= y_max) { - return QString( - "http://xdworld.vworld.kr:8080/2d/Base/service/%1/%2/%3.png") - .arg(zoom) - .arg(x) - .arg(y); + return QString(); + } else if (zoom > 5 && x >= x_min && x <= x_max && y >= y_min && y <= y_max) { + return QString(QStringLiteral("http://xdworld.vworld.kr:8080/2d/Base/service/%1/%2/%3.png")).arg(zoom, x, y); } else { - QString key = _tileXYToQuadKey(x, y, zoom); - return QString("http://ecn.t%1.tiles.virtualearth.net/tiles/" - "r%2.png?g=%3&mkt=%4") - .arg(_getServerNum(x, y, 4)) - .arg(key) - .arg(_versionBingMaps) - .arg(_language); + const QString key = _tileXYToQuadKey(x, y, zoom); + return QString(QStringLiteral("http://ecn.t%1.tiles.virtualearth.net/tiles/r%2.png?g=%3&mkt=%4")) + .arg(_getServerNum(x, y, 4)).arg(key, _versionBingMaps, _language); } } -QString VWorldSatMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { - Q_UNUSED(networkManager); - int gap = zoom - 6; - int x_min = 53 * pow(2, gap); - int x_max = 55 * pow(2, gap) + (2 * gap - 1); - int y_min = 22 * pow(2, gap); - int y_max = 26 * pow(2, gap) + (2 * gap - 1); +QString VWorldSatMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + const int gap = zoom - 6; + const int x_min = int(53 * pow(2, gap)); + const int x_max = int(55 * pow(2, gap) + (2 * gap - 1)); + const int y_min = int(22 * pow(2, gap)); + const int y_max = int(26 * pow(2, gap) + (2 * gap - 1)); if (zoom > 19) { - return {}; - } else if (zoom > 5 && x >= x_min && x <= x_max && y >= y_min && - y <= y_max) { - return QString("http://xdworld.vworld.kr:8080/2d/Satellite/service/%1/" - "%2/%3.jpeg") - .arg(zoom) - .arg(x) - .arg(y); + return QString(); + } else if (zoom > 5 && x >= x_min && x <= x_max && y >= y_min && y <= y_max) { + return QString("http://xdworld.vworld.kr:8080/2d/Satellite/service/%1/%2/%3.jpeg").arg(zoom, x, y); } else { - QString key = _tileXYToQuadKey(x, y, zoom); - return QString("http://ecn.t%1.tiles.virtualearth.net/tiles/" - "a%2.jpeg?g=%3&mkt=%4") - .arg(_getServerNum(x, y, 4)) - .arg(key) - .arg(_versionBingMaps) - .arg(_language); + const QString key = _tileXYToQuadKey(x, y, zoom); + return QString("http://ecn.t%1.tiles.virtualearth.net/tiles/a%2.jpeg?g=%3&mkt=%4") + .arg(_getServerNum(x, y, 4)).arg(key, _versionBingMaps, _language); } } diff --git a/src/QtLocationPlugin/GenericMapProvider.h b/src/QtLocationPlugin/GenericMapProvider.h index 066af8e3790cb3a527c28293779f7c464e544395..9dafb9d0544328a0fdc4f08ea6d6ec4b3465c576 100644 --- a/src/QtLocationPlugin/GenericMapProvider.h +++ b/src/QtLocationPlugin/GenericMapProvider.h @@ -1,85 +1,77 @@ +/**************************************************************************** + * + * (c) 2009-2019 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ #pragma once #include "MapProvider.h" -#include - -#include -#include -#include -#include -#include -#include class StatkartMapProvider : public MapProvider { Q_OBJECT public: - StatkartMapProvider(QObject* parent) - : MapProvider(QString("https://www.norgeskart.no/"), QString("png"), + StatkartMapProvider(QObject* parent = nullptr) + : MapProvider(QStringLiteral("https://www.norgeskart.no/"), QStringLiteral("png"), AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {} - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; class EniroMapProvider : public MapProvider { Q_OBJECT public: - EniroMapProvider(QObject* parent) - : MapProvider(QString("https://www.eniro.se/"), QString("png"), + EniroMapProvider(QObject* parent = nullptr) + : MapProvider(QStringLiteral("https://www.eniro.se/"), QStringLiteral("png"), AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {} - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; class MapQuestMapMapProvider : public MapProvider { Q_OBJECT public: - MapQuestMapMapProvider(QObject* parent) - : MapProvider(QString("https://mapquest.com"), QString("jpg"), + MapQuestMapMapProvider(QObject* parent = nullptr) + : MapProvider(QStringLiteral("https://mapquest.com"), QStringLiteral("jpg"), AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {} - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; class MapQuestSatMapProvider : public MapProvider { Q_OBJECT public: - MapQuestSatMapProvider(QObject* parent) - : MapProvider(QString("https://mapquest.com"), QString("jpg"), - AVERAGE_TILE_SIZE, QGeoMapType::SatelliteMapDay, parent) { - } + MapQuestSatMapProvider(QObject* parent = nullptr) + : MapProvider(QStringLiteral("https://mapquest.com"), QStringLiteral("jpg"), + AVERAGE_TILE_SIZE, QGeoMapType::SatelliteMapDay, parent) {} - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; class VWorldStreetMapProvider : public MapProvider { Q_OBJECT public: - VWorldStreetMapProvider(QObject* parent) - : MapProvider(QString("www.vworld.kr"), QString("png"), + VWorldStreetMapProvider(QObject* parent = nullptr) + : MapProvider(QStringLiteral("www.vworld.kr"), QStringLiteral("png"), AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {} - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; private: - const QString _versionBingMaps = "563"; + const QString _versionBingMaps = QStringLiteral("563"); }; class VWorldSatMapProvider : public MapProvider { Q_OBJECT public: - VWorldSatMapProvider(QObject* parent) - : MapProvider(QString("www.vworld.kr"), QString("jpg"), - AVERAGE_TILE_SIZE, QGeoMapType::SatelliteMapDay, parent) { - } + VWorldSatMapProvider(QObject* parent = nullptr) + : MapProvider(QStringLiteral("www.vworld.kr"), QStringLiteral("jpg"), + AVERAGE_TILE_SIZE, QGeoMapType::SatelliteMapDay, parent) {} - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; private: - const QString _versionBingMaps = "563"; + const QString _versionBingMaps = QStringLiteral("563"); }; diff --git a/src/QtLocationPlugin/GoogleMapProvider.cpp b/src/QtLocationPlugin/GoogleMapProvider.cpp index c2505dd09c963732bde158dafae58ea5325f6fc2..021b3c49b66a8d4c6667f274486c0b8086c79157 100644 --- a/src/QtLocationPlugin/GoogleMapProvider.cpp +++ b/src/QtLocationPlugin/GoogleMapProvider.cpp @@ -1,24 +1,33 @@ +/**************************************************************************** + * + * (c) 2009-2019 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + #include "GoogleMapProvider.h" #if defined(DEBUG_GOOGLE_MAPS) #include #include #endif -#include "QGCMapEngine.h" +#include -GoogleMapProvider::GoogleMapProvider(QString imageFormat, quint32 averageSize, - QGeoMapType::MapStyle mapType, - QObject* parent) - : MapProvider(QString("https://www.google.com/maps/preview"), imageFormat, - averageSize, mapType, parent), - _googleVersionRetrieved(false), _googleReply(nullptr) { +#include "QGCMapEngine.h" +GoogleMapProvider::GoogleMapProvider(const QString &imageFormat, const quint32 averageSize, const QGeoMapType::MapStyle mapType, QObject* parent) + : MapProvider(QStringLiteral("https://www.google.com/maps/preview"), imageFormat, averageSize, mapType, parent) + , _googleVersionRetrieved(false) + , _googleReply(nullptr) +{ // Google version strings - _versionGoogleMap = "m@354000000"; - _versionGoogleSatellite = "692"; - _versionGoogleLabels = "h@336"; - _versionGoogleTerrain = "t@354,r@354000000"; - _versionGoogleHybrid = "y"; - _secGoogleWord = "Galileo"; + _versionGoogleMap = QStringLiteral("m@354000000"); + _versionGoogleSatellite = QStringLiteral("692"); + _versionGoogleLabels = QStringLiteral("h@336"); + _versionGoogleTerrain = QStringLiteral("t@354,r@354000000"); + _versionGoogleHybrid = QStringLiteral("y"); + _secGoogleWord = QStringLiteral("Galileo"); } GoogleMapProvider::~GoogleMapProvider() { @@ -27,14 +36,13 @@ GoogleMapProvider::~GoogleMapProvider() { } //----------------------------------------------------------------------------- -void GoogleMapProvider::_getSecGoogleWords(int x, int y, QString& sec1, - QString& sec2) { - sec1 = ""; // after &x=... - sec2 = ""; // after &zoom=... +void GoogleMapProvider::_getSecGoogleWords(const int x, const int y, QString& sec1, QString& sec2) const { + sec1 = QStringLiteral(""); // after &x=... + sec2 = QStringLiteral(""); // after &zoom=... int seclen = ((x * 3) + y) % 8; sec2 = _secGoogleWord.left(seclen); if (y >= 10000 && y < 100000) { - sec1 = "&s="; + sec1 = QStringLiteral("&s="); } } @@ -47,19 +55,20 @@ void GoogleMapProvider::_networkReplyError(QNetworkReply::NetworkError error) { } } //----------------------------------------------------------------------------- -void GoogleMapProvider::_replyDestroyed() { _googleReply = nullptr; } +void GoogleMapProvider::_replyDestroyed() { + _googleReply = nullptr; +} void GoogleMapProvider::_googleVersionCompleted() { if (!_googleReply || (_googleReply->error() != QNetworkReply::NoError)) { qDebug() << "Error collecting Google maps version info"; return; } - QString html = QString(_googleReply->readAll()); + const QString html = QString(_googleReply->readAll()); #if defined(DEBUG_GOOGLE_MAPS) - QString filename = - QStandardPaths::writableLocation(QStandardPaths::HomeLocation); - filename += "/google.output"; + QString filename = QStandardPaths::writableLocation(QStandardPaths::HomeLocation); + filename += QStringLiteral("/google.output"); QFile file(filename); if (file.open(QIODevice::ReadWrite)) { QTextStream stream(&file); @@ -67,30 +76,24 @@ void GoogleMapProvider::_googleVersionCompleted() { } #endif - QRegExp reg("\"*https?://mt\\D?\\d..*/vt\\?lyrs=m@(\\d*)", - Qt::CaseInsensitive); + QRegExp reg(QStringLiteral("\"*https?://mt\\D?\\d..*/vt\\?lyrs=m@(\\d*)"), Qt::CaseInsensitive); if (reg.indexIn(html) != -1) { - QStringList gc = reg.capturedTexts(); - _versionGoogleMap = QString("m@%1").arg(gc[1]); + _versionGoogleMap = QString(QStringLiteral("m@%1")).arg(reg.capturedTexts().value(1, QString())); } - reg = QRegExp("\"*https?://khm\\D?\\d.googleapis.com/kh\\?v=(\\d*)", - Qt::CaseInsensitive); + reg = QRegExp(QStringLiteral("\"*https?://khm\\D?\\d.googleapis.com/kh\\?v=(\\d*)"), Qt::CaseInsensitive); if (reg.indexIn(html) != -1) { - QStringList gc = reg.capturedTexts(); - _versionGoogleSatellite = gc[1]; + _versionGoogleSatellite = reg.capturedTexts().value(1); } - reg = QRegExp("\"*https?://mt\\D?\\d..*/vt\\?lyrs=t@(\\d*),r@(\\d*)", - Qt::CaseInsensitive); + reg = QRegExp(QStringLiteral("\"*https?://mt\\D?\\d..*/vt\\?lyrs=t@(\\d*),r@(\\d*)"), Qt::CaseInsensitive); if (reg.indexIn(html) != -1) { - QStringList gc = reg.capturedTexts(); - _versionGoogleTerrain = QString("t@%1,r@%2").arg(gc[1]).arg(gc[2]); + const QStringList gc = reg.capturedTexts(); + _versionGoogleTerrain = QString(QStringLiteral("t@%1,r@%2")).arg(gc.value(1), gc.value(2)); } _googleReply->deleteLater(); _googleReply = nullptr; } -void GoogleMapProvider::_tryCorrectGoogleVersions( - QNetworkAccessManager* networkManager) { +void GoogleMapProvider::_tryCorrectGoogleVersions(QNetworkAccessManager* networkManager) { QMutexLocker locker(&_googleVersionMutex); if (_googleVersionRetrieved) { return; @@ -105,37 +108,28 @@ void GoogleMapProvider::_tryCorrectGoogleVersions( QSslConfiguration conf = qheader.sslConfiguration(); conf.setPeerVerifyMode(QSslSocket::VerifyNone); qheader.setSslConfiguration(conf); - QString url = "http://maps.google.com/maps/api/js?v=3.2&sensor=false"; + const QString url = QStringLiteral("http://maps.google.com/maps/api/js?v=3.2&sensor=false"); qheader.setUrl(QUrl(url)); QByteArray ua; ua.append(getQGCMapEngine()->userAgent()); qheader.setRawHeader("User-Agent", ua); _googleReply = networkManager->get(qheader); - connect(_googleReply, &QNetworkReply::finished, this, - &GoogleMapProvider::_googleVersionCompleted); - connect(_googleReply, &QNetworkReply::destroyed, this, - &GoogleMapProvider::_replyDestroyed); - connect( - _googleReply, - static_cast( - &QNetworkReply::error), - this, &GoogleMapProvider::_networkReplyError); + connect(_googleReply, &QNetworkReply::finished, this, &GoogleMapProvider::_googleVersionCompleted); + connect(_googleReply, &QNetworkReply::destroyed, this, &GoogleMapProvider::_replyDestroyed); + connect(_googleReply, QOverload::of(&QNetworkReply::error), this, &GoogleMapProvider::_networkReplyError); networkManager->setProxy(proxy); } } -QString -GoogleStreetMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { +QString GoogleStreetMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { // http://mt1.google.com/vt/lyrs=m - QString server = "mt"; - QString request = "vt"; - QString sec1 = ""; // after &x=... - QString sec2 = ""; // after &zoom=... + QString server = QStringLiteral("mt"); + QString request = QStringLiteral("vt"); + QString sec1; // after &x=... + QString sec2; // after &zoom=... _getSecGoogleWords(x, y, sec1, sec2); _tryCorrectGoogleVersions(networkManager); - return QString( - "http://%1%2.google.com/%3/lyrs=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10") + return QString(QStringLiteral("http://%1%2.google.com/%3/lyrs=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10")) .arg(server) .arg(_getServerNum(x, y, 4)) .arg(request) @@ -148,18 +142,15 @@ GoogleStreetMapProvider::_getURL(int x, int y, int zoom, .arg(sec2); } -QString -GoogleSatelliteMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { +QString GoogleSatelliteMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { // http://mt1.google.com/vt/lyrs=s - QString server = "khm"; - QString request = "kh"; - QString sec1 = ""; // after &x=... - QString sec2 = ""; // after &zoom=... + QString server = QStringLiteral("khm"); + QString request = QStringLiteral("kh"); + QString sec1; // after &x=... + QString sec2; // after &zoom=... _getSecGoogleWords(x, y, sec1, sec2); _tryCorrectGoogleVersions(networkManager); - return QString( - "http://%1%2.google.com/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10") + return QString(QStringLiteral("http://%1%2.google.com/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10")) .arg(server) .arg(_getServerNum(x, y, 4)) .arg(request) @@ -172,17 +163,14 @@ GoogleSatelliteMapProvider::_getURL(int x, int y, int zoom, .arg(sec2); } -QString -GoogleLabelsMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { +QString GoogleLabelsMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { QString server = "mts"; QString request = "vt"; - QString sec1 = ""; // after &x=... - QString sec2 = ""; // after &zoom=... + QString sec1; // after &x=... + QString sec2; // after &zoom=... _getSecGoogleWords(x, y, sec1, sec2); _tryCorrectGoogleVersions(networkManager); - return QString( - "http://%1%2.google.com/%3/lyrs=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10") + return QString(QStringLiteral("http://%1%2.google.com/%3/lyrs=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10")) .arg(server) .arg(_getServerNum(x, y, 4)) .arg(request) @@ -195,17 +183,14 @@ GoogleLabelsMapProvider::_getURL(int x, int y, int zoom, .arg(sec2); } -QString -GoogleTerrainMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { - QString server = "mt"; - QString request = "vt"; - QString sec1 = ""; // after &x=... - QString sec2 = ""; // after &zoom=... +QString GoogleTerrainMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + QString server = QStringLiteral("mt"); + QString request = QStringLiteral("vt"); + QString sec1; // after &x=... + QString sec2; // after &zoom=... _getSecGoogleWords(x, y, sec1, sec2); _tryCorrectGoogleVersions(networkManager); - return QString( - "http://%1%2.google.com/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10") + return QString(QStringLiteral("http://%1%2.google.com/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10")) .arg(server) .arg(_getServerNum(x, y, 4)) .arg(request) @@ -218,17 +203,14 @@ GoogleTerrainMapProvider::_getURL(int x, int y, int zoom, .arg(sec2); } -QString -GoogleHybridMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { - QString server = "mt"; - QString request = "vt"; - QString sec1 = ""; // after &x=... - QString sec2 = ""; // after &zoom=... +QString GoogleHybridMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + QString server = QStringLiteral("mt"); + QString request = QStringLiteral("vt"); + QString sec1; // after &x=... + QString sec2; // after &zoom=... _getSecGoogleWords(x, y, sec1, sec2); _tryCorrectGoogleVersions(networkManager); - return QString( - "http://%1%2.google.com/%3/lyrs=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10") + return QString(QStringLiteral("http://%1%2.google.com/%3/lyrs=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10")) .arg(server) .arg(_getServerNum(x, y, 4)) .arg(request) diff --git a/src/QtLocationPlugin/GoogleMapProvider.h b/src/QtLocationPlugin/GoogleMapProvider.h index 40921ea4b21d57e0396ac0c4fb58da0a0d45608c..51bcebce07142c6867d1795e27552d291f37cd80 100644 --- a/src/QtLocationPlugin/GoogleMapProvider.h +++ b/src/QtLocationPlugin/GoogleMapProvider.h @@ -1,35 +1,37 @@ +/**************************************************************************** + * + * (c) 2009-2019 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + #pragma once #include "MapProvider.h" -#include -#include -#include #include -#include -#include +#include class GoogleMapProvider : public MapProvider { Q_OBJECT - public: - GoogleMapProvider(QString imageFormat, quint32 averageSize, - QGeoMapType::MapStyle mapType, QObject* parent); + +public: + GoogleMapProvider(const QString& imageFormat, const quint32 averageSize, + const QGeoMapType::MapStyle _mapType, QObject* parent = nullptr); ~GoogleMapProvider(); // Google Specific private slots - private slots: +private slots: void _networkReplyError(QNetworkReply::NetworkError error); void _googleVersionCompleted(); void _replyDestroyed(); - protected: - // Define the url to Request - virtual QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) = 0; - +protected: // Google Specific private methods - void _getSecGoogleWords(int x, int y, QString& sec1, QString& sec2); + void _getSecGoogleWords(const int x, const int y, QString& sec1, QString& sec2) const; void _tryCorrectGoogleVersions(QNetworkAccessManager* networkManager); // Google Specific attributes @@ -57,23 +59,22 @@ class GoogleMapProvider : public MapProvider { // CycleMap, // CustomMap = 100 -const quint32 AVERAGE_GOOGLE_STREET_MAP = 4913; -const quint32 AVERAGE_GOOGLE_SAT_MAP = 56887; -const quint32 AVERAGE_GOOGLE_TERRAIN_MAP = 19391; +static const quint32 AVERAGE_GOOGLE_STREET_MAP = 4913; +static const quint32 AVERAGE_GOOGLE_SAT_MAP = 56887; +static const quint32 AVERAGE_GOOGLE_TERRAIN_MAP = 19391; // ----------------------------------------------------------- // Google Street Map class GoogleStreetMapProvider : public GoogleMapProvider { Q_OBJECT - public: - GoogleStreetMapProvider(QObject* parent) - : GoogleMapProvider(QString("png"), AVERAGE_GOOGLE_STREET_MAP, - QGeoMapType::StreetMap, parent) {} - - protected: - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); + +public: + GoogleStreetMapProvider(QObject* parent = nullptr) + : GoogleMapProvider(QStringLiteral("png"), AVERAGE_GOOGLE_STREET_MAP, QGeoMapType::StreetMap, parent) {} + +protected: + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; // ----------------------------------------------------------- @@ -81,14 +82,14 @@ class GoogleStreetMapProvider : public GoogleMapProvider { class GoogleSatelliteMapProvider : public GoogleMapProvider { Q_OBJECT - public: - GoogleSatelliteMapProvider(QObject* parent) - : GoogleMapProvider(QString("jpg"), AVERAGE_GOOGLE_SAT_MAP, + +public: + GoogleSatelliteMapProvider(QObject* parent = nullptr) + : GoogleMapProvider(QStringLiteral("jpg"), AVERAGE_GOOGLE_SAT_MAP, QGeoMapType::SatelliteMapDay, parent) {} - protected: - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); +protected: + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; // ----------------------------------------------------------- @@ -96,14 +97,13 @@ class GoogleSatelliteMapProvider : public GoogleMapProvider { class GoogleLabelsMapProvider : public GoogleMapProvider { Q_OBJECT - public: - GoogleLabelsMapProvider(QObject* parent) - : GoogleMapProvider(QString("png"), AVERAGE_TILE_SIZE, - QGeoMapType::CustomMap, parent) {} - - protected: - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); + +public: + GoogleLabelsMapProvider(QObject* parent = nullptr) + : GoogleMapProvider(QStringLiteral("png"), AVERAGE_TILE_SIZE, QGeoMapType::CustomMap, parent) {} + +protected: + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; // ----------------------------------------------------------- @@ -111,14 +111,13 @@ class GoogleLabelsMapProvider : public GoogleMapProvider { class GoogleTerrainMapProvider : public GoogleMapProvider { Q_OBJECT - public: - GoogleTerrainMapProvider(QObject* parent) - : GoogleMapProvider(QString("png"), AVERAGE_GOOGLE_TERRAIN_MAP, - QGeoMapType::TerrainMap, parent) {} - - protected: - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); + +public: + GoogleTerrainMapProvider(QObject* parent = nullptr) + : GoogleMapProvider(QStringLiteral("png"), AVERAGE_GOOGLE_TERRAIN_MAP, QGeoMapType::TerrainMap, parent) {} + +protected: + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; // ----------------------------------------------------------- @@ -126,12 +125,11 @@ class GoogleTerrainMapProvider : public GoogleMapProvider { class GoogleHybridMapProvider : public GoogleMapProvider { Q_OBJECT - public: - GoogleHybridMapProvider(QObject* parent) - : GoogleMapProvider(QString("png"), AVERAGE_GOOGLE_SAT_MAP, - QGeoMapType::HybridMap, parent) {} - - protected: - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); + +public: + GoogleHybridMapProvider(QObject* parent = nullptr) + : GoogleMapProvider(QStringLiteral("png"), AVERAGE_GOOGLE_SAT_MAP, QGeoMapType::HybridMap, parent) {} + +protected: + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; }; diff --git a/src/QtLocationPlugin/MapProvider.cpp b/src/QtLocationPlugin/MapProvider.cpp index 2d1a8fee3df6039f1a28c8455a31f3ce27905960..e96f50ea305892ffb4cfc758e75b17bc63246dd2 100644 --- a/src/QtLocationPlugin/MapProvider.cpp +++ b/src/QtLocationPlugin/MapProvider.cpp @@ -1,39 +1,54 @@ +/**************************************************************************** + * + * (c) 2009-2019 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include +#include + #include "MapProvider.h" -MapProvider::MapProvider(QString referrer, QString imageFormat, - quint32 averageSize, QGeoMapType::MapStyle mapType,QObject* parent) - : QObject(parent), _referrer(referrer), _imageFormat(imageFormat), - _averageSize(averageSize), _mapType(mapType) { - QStringList langs = QLocale::system().uiLanguages(); +MapProvider::MapProvider(const QString &referrer, const QString &imageFormat, + const quint32 averageSize, const QGeoMapType::MapStyle mapType, QObject* parent) + : QObject(parent) + , _referrer(referrer) + , _imageFormat(imageFormat) + , _averageSize(averageSize) + , _mapType(mapType) +{ + const QStringList langs = QLocale::system().uiLanguages(); if (langs.length() > 0) { _language = langs[0]; } } -QNetworkRequest MapProvider::getTileURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { +QNetworkRequest MapProvider::getTileURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { //-- Build URL QNetworkRequest request; - QString url = _getURL(x, y, zoom, networkManager); + const QString url = _getURL(x, y, zoom, networkManager); if (url.isEmpty()) { return request; } request.setUrl(QUrl(url)); - request.setRawHeader("Accept", "*/*"); - request.setRawHeader("Referrer", _referrer.toUtf8()); - request.setRawHeader("User-Agent", _userAgent); + request.setRawHeader(QByteArrayLiteral("Accept"), QByteArrayLiteral("*/*")); + request.setRawHeader(QByteArrayLiteral("Referrer"), _referrer.toUtf8()); + request.setRawHeader(QByteArrayLiteral("User-Agent"), _userAgent); return request; } -QString MapProvider::getImageFormat(const QByteArray& image) { +QString MapProvider::getImageFormat(const QByteArray& image) const { QString format; if (image.size() > 2) { if (image.startsWith(reinterpret_cast(pngSignature))) - format = "png"; + format = QStringLiteral("png"); else if (image.startsWith(reinterpret_cast(jpegSignature))) - format = "jpg"; + format = QStringLiteral("jpg"); else if (image.startsWith(reinterpret_cast(gifSignature))) - format = "gif"; + format = QStringLiteral("gif"); else { return _imageFormat; } @@ -41,11 +56,11 @@ QString MapProvider::getImageFormat(const QByteArray& image) { return format; } -QString MapProvider::_tileXYToQuadKey(int tileX, int tileY, int levelOfDetail) { +QString MapProvider::_tileXYToQuadKey(const int tileX, const int tileY, const int levelOfDetail) const { QString quadKey; for (int i = levelOfDetail; i > 0; i--) { char digit = '0'; - int mask = 1 << (i - 1); + const int mask = 1 << (i - 1); if ((tileX & mask) != 0) { digit++; } @@ -58,27 +73,29 @@ QString MapProvider::_tileXYToQuadKey(int tileX, int tileY, int levelOfDetail) { return quadKey; } -int MapProvider::_getServerNum(int x, int y, int max) { +int MapProvider::_getServerNum(const int x, const int y, const int max) const { return (x + 2 * y) % max; } -int MapProvider::long2tileX(double lon, int z) { +int MapProvider::long2tileX(const double lon, const int z) const { return static_cast(floor((lon + 180.0) / 360.0 * pow(2.0, z))); } //----------------------------------------------------------------------------- -int MapProvider::lat2tileY(double lat, int z) { +int MapProvider::lat2tileY(const double lat, const int z) const { return static_cast(floor( (1.0 - log(tan(lat * M_PI / 180.0) + 1.0 / cos(lat * M_PI / 180.0)) / M_PI) / 2.0 * pow(2.0, z))); } -bool MapProvider::_isElevationProvider() { return false; } +bool MapProvider::_isElevationProvider() const { + return false; +} -QGCTileSet MapProvider::getTileCount(int zoom, double topleftLon, - double topleftLat, double bottomRightLon, - double bottomRightLat) { +QGCTileSet MapProvider::getTileCount(const int zoom, const double topleftLon, + const double topleftLat, const double bottomRightLon, + const double bottomRightLat) const { QGCTileSet set; set.tileX0 = long2tileX(topleftLon, zoom); set.tileY0 = lat2tileY(topleftLat, zoom); diff --git a/src/QtLocationPlugin/MapProvider.h b/src/QtLocationPlugin/MapProvider.h index b053a05c673d31d899b6176da04c07ff500f4844..74fdcdead2cdc91205e5c4c650d5604c2c06a57a 100644 --- a/src/QtLocationPlugin/MapProvider.h +++ b/src/QtLocationPlugin/MapProvider.h @@ -1,50 +1,61 @@ -#pragma once +/**************************************************************************** + * + * (c) 2009-2019 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ -#include -#include "QGCTileSet.h" +#pragma once #include -#include -#include #include + +#include + +#include "QGCTileSet.h" #include -static const unsigned char pngSignature[] = {0x89, 0x50, 0x4E, 0x47, 0x0D, - 0x0A, 0x1A, 0x0A, 0x00}; +static const unsigned char pngSignature[] = {0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00}; static const unsigned char jpegSignature[] = {0xFF, 0xD8, 0xFF, 0x00}; static const unsigned char gifSignature[] = {0x47, 0x49, 0x46, 0x38, 0x00}; -const quint32 AVERAGE_TILE_SIZE = 13652; +static const quint32 AVERAGE_TILE_SIZE = 13652; + +class QNetworkRequest; +class QNetworkAccessManager; class MapProvider : public QObject { Q_OBJECT - public: - MapProvider( - QString referrer, QString imageFormat, quint32 averageSize, - QGeoMapType::MapStyle _mapType = QGeoMapType::CustomMap, QObject* parent = nullptr); - QNetworkRequest getTileURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); +public: + MapProvider(const QString& referrer, const QString& imageFormat, const quint32 averageSize, + const QGeoMapType::MapStyle mapType = QGeoMapType::CustomMap, QObject* parent = nullptr); - QString getImageFormat(const QByteArray& image); + virtual QNetworkRequest getTileURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager); - quint32 getAverageSize(){return _averageSize;} + QString getImageFormat(const QByteArray& image) const; - QGeoMapType::MapStyle getMapStyle(){return _mapType;} + quint32 getAverageSize() const { return _averageSize; } - virtual int long2tileX(double lon, int z); + QGeoMapType::MapStyle getMapStyle() { return _mapType; } - virtual int lat2tileY(double lat, int z); + virtual int long2tileX(const double lon, const int z) const; - virtual bool _isElevationProvider(); + virtual int lat2tileY(const double lat, const int z) const; - virtual QGCTileSet getTileCount(int zoom, double topleftLon, - double topleftLat, double bottomRightLon, - double bottomRightLat); + virtual bool _isElevationProvider() const; - protected: - QString _tileXYToQuadKey(int tileX, int tileY, int levelOfDetail); - int _getServerNum(int x, int y, int max); + virtual QGCTileSet getTileCount(const int zoom, const double topleftLon, + const double topleftLat, const double bottomRightLon, + const double bottomRightLat) const; + +protected: + QString _tileXYToQuadKey(const int tileX, const int tileY, const int levelOfDetail) const; + int _getServerNum(const int x, const int y, const int max) const; + // Define the url to Request + virtual QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) = 0; // Define Referrer for Request RawHeader QString _referrer; @@ -54,7 +65,4 @@ class MapProvider : public QObject { QString _language; QGeoMapType::MapStyle _mapType; - // Define the url to Request - virtual QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) = 0; }; diff --git a/src/QtLocationPlugin/MapboxMapProvider.cpp b/src/QtLocationPlugin/MapboxMapProvider.cpp index 555a52fa0461e0730beba7ff660090dfa3a74781..214bd8beca9f8338c5619e1f60a8bcae05d55152 100644 --- a/src/QtLocationPlugin/MapboxMapProvider.cpp +++ b/src/QtLocationPlugin/MapboxMapProvider.cpp @@ -3,33 +3,19 @@ #include "QGCMapEngine.h" #include "SettingsManager.h" -MapboxMapProvider::MapboxMapProvider(QString mapName, quint32 averageSize, - QGeoMapType::MapStyle mapType, - QObject* parent) - : MapProvider(QString("https://www.mapbox.com/"), QString("jpg"), - averageSize, mapType, parent), mapboxName(mapName) { +static const QString MapBoxUrl = QStringLiteral("https://api.mapbox.com/v4/%1/%2/%3/%4.jpg80?access_token=%5"); + +MapboxMapProvider::MapboxMapProvider(const QString &mapName, const quint32 averageSize, const QGeoMapType::MapStyle mapType, QObject* parent) + : MapProvider(QStringLiteral("https://www.mapbox.com/"), QStringLiteral("jpg"), averageSize, mapType, parent) + , _mapboxName(mapName) +{ } -QString -MapboxMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { - Q_UNUSED(networkManager); - QString mapBoxToken = qgcApp() - ->toolbox() - ->settingsManager() - ->appSettings() - ->mapboxToken() - ->rawValue() - .toString(); +QString MapboxMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + const QString mapBoxToken = qgcApp()->toolbox()->settingsManager()->appSettings()->mapboxToken()->rawValue().toString(); if (!mapBoxToken.isEmpty()) { - QString server = "https://api.mapbox.com/v4/"; - server += mapboxName; - server += QString("/%1/%2/%3.jpg80?access_token=%4") - .arg(zoom) - .arg(x) - .arg(y) - .arg(mapBoxToken); - return server; + return MapBoxUrl.arg(_mapboxName).arg(zoom).arg(x).arg(y).arg(mapBoxToken); } - return QString(""); + return QString(); } diff --git a/src/QtLocationPlugin/MapboxMapProvider.h b/src/QtLocationPlugin/MapboxMapProvider.h index 9b31e308dbfc2f5f78e3e223711a184fccc7771b..a6eb90a3cb26fec023cf52e7ca224f27983406db 100644 --- a/src/QtLocationPlugin/MapboxMapProvider.h +++ b/src/QtLocationPlugin/MapboxMapProvider.h @@ -1,136 +1,153 @@ +/**************************************************************************** + * + * (c) 2009-2019 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + #pragma once #include "MapProvider.h" -#include -#include -#include -#include -#include -#include - -const quint32 AVERAGE_MAPBOX_SAT_MAP = 15739; -const quint32 AVERAGE_MAPBOX_STREET_MAP = 5648; +static const quint32 AVERAGE_MAPBOX_SAT_MAP = 15739; +static const quint32 AVERAGE_MAPBOX_STREET_MAP = 5648; class MapboxMapProvider : public MapProvider { Q_OBJECT - public: - MapboxMapProvider(QString mapName, quint32 averageSize, - QGeoMapType::MapStyle mapType, QObject* parent); - QString _getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager); - protected: - QString mapboxName; + +public: + MapboxMapProvider(const QString& mapName, const quint32 averageSize, const QGeoMapType::MapStyle mapType, QObject* parent = nullptr); + +protected: + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; + + QString _mapboxName; }; class MapboxStreetMapProvider : public MapboxMapProvider { Q_OBJECT - public: - MapboxStreetMapProvider(QObject* parent) - : MapboxMapProvider("mapbox.streets", AVERAGE_MAPBOX_STREET_MAP, + +public: + MapboxStreetMapProvider(QObject* parent = nullptr) + : MapboxMapProvider(QStringLiteral("mapbox.streets"), AVERAGE_MAPBOX_STREET_MAP, QGeoMapType::StreetMap, parent) {} }; class MapboxLightMapProvider : public MapboxMapProvider { Q_OBJECT - public: - MapboxLightMapProvider(QObject* parent) - : MapboxMapProvider("mapbox.light", AVERAGE_TILE_SIZE, + +public: + MapboxLightMapProvider(QObject* parent = nullptr) + : MapboxMapProvider(QStringLiteral("mapbox.light"), AVERAGE_TILE_SIZE, QGeoMapType::CustomMap, parent) {} }; class MapboxDarkMapProvider : public MapboxMapProvider { Q_OBJECT - public: - MapboxDarkMapProvider(QObject* parent) - : MapboxMapProvider("mapbox.dark", AVERAGE_TILE_SIZE, + +public: + MapboxDarkMapProvider(QObject* parent = nullptr) + : MapboxMapProvider(QStringLiteral("mapbox.dark"), AVERAGE_TILE_SIZE, QGeoMapType::CustomMap, parent) {} }; class MapboxSatelliteMapProvider : public MapboxMapProvider { Q_OBJECT - public: - MapboxSatelliteMapProvider(QObject* parent) - : MapboxMapProvider("mapbox.satellite", AVERAGE_MAPBOX_SAT_MAP, + +public: + MapboxSatelliteMapProvider(QObject* parent = nullptr) + : MapboxMapProvider(QStringLiteral("mapbox.satellite"), AVERAGE_MAPBOX_SAT_MAP, QGeoMapType::SatelliteMapDay, parent) {} }; class MapboxHybridMapProvider : public MapboxMapProvider { Q_OBJECT - public: - MapboxHybridMapProvider(QObject* parent) - : MapboxMapProvider("mapbox.hybrid", AVERAGE_MAPBOX_SAT_MAP, + +public: + MapboxHybridMapProvider(QObject* parent = nullptr) + : MapboxMapProvider(QStringLiteral("mapbox.hybrid"), AVERAGE_MAPBOX_SAT_MAP, QGeoMapType::HybridMap, parent) {} }; class MapboxWheatPasteMapProvider : public MapboxMapProvider { Q_OBJECT - public: - MapboxWheatPasteMapProvider(QObject* parent) - : MapboxMapProvider("mapbox.wheatpaste", AVERAGE_TILE_SIZE, + +public: + MapboxWheatPasteMapProvider(QObject* parent = nullptr) + : MapboxMapProvider(QStringLiteral("mapbox.wheatpaste"), AVERAGE_TILE_SIZE, QGeoMapType::CustomMap, parent) {} }; class MapboxStreetsBasicMapProvider : public MapboxMapProvider { Q_OBJECT - public: - MapboxStreetsBasicMapProvider(QObject* parent) - : MapboxMapProvider("mapbox.streets-basic", AVERAGE_TILE_SIZE, + +public: + MapboxStreetsBasicMapProvider(QObject* parent = nullptr) + : MapboxMapProvider(QStringLiteral("mapbox.streets-basic"), AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {} }; class MapboxComicMapProvider : public MapboxMapProvider { Q_OBJECT - public: - MapboxComicMapProvider(QObject* parent) - : MapboxMapProvider("mapbox.comic", AVERAGE_TILE_SIZE, + +public: + MapboxComicMapProvider(QObject* parent = nullptr) + : MapboxMapProvider(QStringLiteral("mapbox.comic"), AVERAGE_TILE_SIZE, QGeoMapType::CustomMap, parent) {} }; class MapboxOutdoorsMapProvider : public MapboxMapProvider { Q_OBJECT - public: - MapboxOutdoorsMapProvider(QObject* parent) - : MapboxMapProvider("mapbox.outdoors", AVERAGE_TILE_SIZE, + +public: + MapboxOutdoorsMapProvider(QObject* parent = nullptr) + : MapboxMapProvider(QStringLiteral("mapbox.outdoors"), AVERAGE_TILE_SIZE, QGeoMapType::CustomMap, parent) {} }; class MapboxRunBikeHikeMapProvider : public MapboxMapProvider { Q_OBJECT - public: - MapboxRunBikeHikeMapProvider(QObject* parent) - : MapboxMapProvider("mapbox.run-bike-hike", AVERAGE_MAPBOX_STREET_MAP, + +public: + MapboxRunBikeHikeMapProvider(QObject* parent = nullptr) + : MapboxMapProvider(QStringLiteral("mapbox.run-bike-hike"), AVERAGE_MAPBOX_STREET_MAP, QGeoMapType::CycleMap, parent) {} }; class MapboxPencilMapProvider : public MapboxMapProvider { Q_OBJECT - public: - MapboxPencilMapProvider(QObject* parent) - : MapboxMapProvider("mapbox.pencil", AVERAGE_TILE_SIZE, + +public: + MapboxPencilMapProvider(QObject* parent = nullptr) + : MapboxMapProvider(QStringLiteral("mapbox.pencil"), AVERAGE_TILE_SIZE, QGeoMapType::CustomMap, parent) {} }; class MapboxPiratesMapProvider : public MapboxMapProvider { Q_OBJECT - public: - MapboxPiratesMapProvider(QObject* parent) - : MapboxMapProvider("mapbox.pirates", AVERAGE_TILE_SIZE, + +public: + MapboxPiratesMapProvider(QObject* parent = nullptr) + : MapboxMapProvider(QStringLiteral("mapbox.pirates"), AVERAGE_TILE_SIZE, QGeoMapType::CustomMap, parent) {} }; class MapboxEmeraldMapProvider : public MapboxMapProvider { Q_OBJECT - public: - MapboxEmeraldMapProvider(QObject* parent) - : MapboxMapProvider("mapbox.emerald", AVERAGE_TILE_SIZE, + +public: + MapboxEmeraldMapProvider(QObject* parent = nullptr) + : MapboxMapProvider(QStringLiteral("mapbox.emerald"), AVERAGE_TILE_SIZE, QGeoMapType::CustomMap, parent) {} }; class MapboxHighContrastMapProvider : public MapboxMapProvider { Q_OBJECT - public: - MapboxHighContrastMapProvider(QObject* parent) - : MapboxMapProvider("mapbox.high-contrast", AVERAGE_TILE_SIZE, + +public: + MapboxHighContrastMapProvider(QObject* parent = nullptr) + : MapboxMapProvider(QStringLiteral("mapbox.high-contrast"), AVERAGE_TILE_SIZE, QGeoMapType::CustomMap, parent) {} }; diff --git a/src/Terrain/patch b/src/Terrain/patch deleted file mode 100644 index 56b10ed499b2045da72b665ea87a4713f0e0e12a..0000000000000000000000000000000000000000 --- a/src/Terrain/patch +++ /dev/null @@ -1,54 +0,0 @@ -diff --git a/libs/mavlink/include/mavlink/v2.0 b/libs/mavlink/include/mavlink/v2.0 ---- a/libs/mavlink/include/mavlink/v2.0 -+++ b/libs/mavlink/include/mavlink/v2.0 -@@ -1 +1 @@ --Subproject commit 68869da6575d4ca61b92e9081b7c81587f157ed6 -+Subproject commit 68869da6575d4ca61b92e9081b7c81587f157ed6-dirty -diff --git a/src/Terrain/TerrainQueryManager.cc b/src/Terrain/TerrainQueryManager.cc -index 59ec2d4..c38a870 100644 ---- a/src/Terrain/TerrainQueryManager.cc -+++ b/src/Terrain/TerrainQueryManager.cc -@@ -3,17 +3,20 @@ - TerrainQueryManager::TerrainQueryManager(QObject* parent) - : TerrainQueryInterface(parent) - { -- _providerAirMap = new TerrainOfflineAirMapQuery(parent); -+ connect(&_providerAirMap, &TerrainQueryInterface::coordinateHeightsReceived, this, &TerrainQueryInterface::coordinateHeightsReceived); -+ connect(&_providerAirMap, &TerrainQueryInterface::pathHeightsReceived, this, &TerrainQueryInterface::pathHeightsReceived); -+ connect(&_providerAirMap, &TerrainQueryInterface::carpetHeightsReceived, this, &TerrainQueryInterface::carpetHeightsReceived); - } - - void TerrainQueryManager::requestCoordinateHeights(const QList& coordinates){ -- _providerAirMap->requestCoordinateHeights(coordinates); -+ _providerAirMap.requestCoordinateHeights(coordinates); - } - - void TerrainQueryManager::requestPathHeights(const QGeoCoordinate& fromCoord, const QGeoCoordinate& toCoord){ -- _providerAirMap->requestPathHeights(fromCoord,toCoord); -+ _providerAirMap.requestPathHeights(fromCoord,toCoord); - } - - void TerrainQueryManager::requestCarpetHeights(const QGeoCoordinate& swCoord, const QGeoCoordinate& neCoord, bool statsOnly){ -- _providerAirMap->requestCarpetHeights(swCoord,neCoord,statsOnly); -+ _providerAirMap.requestCarpetHeights(swCoord,neCoord,statsOnly); - } -+ -diff --git a/src/Terrain/TerrainQueryManager.h b/src/Terrain/TerrainQueryManager.h -index 2921679..9b4494c 100644 ---- a/src/Terrain/TerrainQueryManager.h -+++ b/src/Terrain/TerrainQueryManager.h -@@ -27,12 +27,12 @@ public: - /// @param neCoord North-East bound of rectangular area to query - /// @param statsOnly true: Return only stats, no carpet data - void requestCarpetHeights(const QGeoCoordinate& swCoord, const QGeoCoordinate& neCoord, bool statsOnly); -- -+ - signals: - void coordinateHeightsReceived(bool success, QList heights); - void pathHeightsReceived(bool success, double latStep, double lonStep, const QList& heights); - void carpetHeightsReceived(bool success, double minHeight, double maxHeight, const QList>& carpet); - - private: -- TerrainOfflineAirMapQuery * _providerAirMap; -+ TerrainOfflineAirMapQuery _providerAirMap; - };