diff options
author | Paolo Angelelli <paolo.angelelli@qt.io> | 2018-11-28 14:15:31 +0100 |
---|---|---|
committer | Paolo Angelelli <paolo.angelelli@qt.io> | 2018-12-04 13:30:49 +0000 |
commit | 9ec2fa87650607337f1692b7bc52e16cc3f74860 (patch) | |
tree | 5e7023c528e3030915e80c53c3d4b3e8522e8025 /src/plugins/geoservices/osm | |
parent | 181f1d8eac0af6e508ed483cbffb28cd2066b961 (diff) | |
download | qtlocation-9ec2fa87650607337f1692b7bc52e16cc3f74860.tar.gz |
Allow QGeoCodeReplyPrivate to be subclassed and carry extra data
Stored in form of a variant map.
Currently used for debugging purposes.
Change-Id: I49fa4b51da0d5947e3b292b6cde96cb496cef9e6
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/plugins/geoservices/osm')
4 files changed, 46 insertions, 2 deletions
diff --git a/src/plugins/geoservices/osm/qgeocodereplyosm.cpp b/src/plugins/geoservices/osm/qgeocodereplyosm.cpp index a30601d0..11bdaa6c 100644 --- a/src/plugins/geoservices/osm/qgeocodereplyosm.cpp +++ b/src/plugins/geoservices/osm/qgeocodereplyosm.cpp @@ -50,7 +50,7 @@ QT_BEGIN_NAMESPACE QGeoCodeReplyOsm::QGeoCodeReplyOsm(QNetworkReply *reply, QObject *parent) -: QGeoCodeReply(parent) +: QGeoCodeReply(*new QGeoCodeReplyOsmPrivate, parent) { if (!reply) { setError(UnknownError, QStringLiteral("Null reply")); @@ -171,4 +171,21 @@ void QGeoCodeReplyOsm::networkReplyError(QNetworkReply::NetworkError error) setError(QGeoCodeReply::CommunicationError, reply->errorString()); } +QGeoCodeReplyOsmPrivate::QGeoCodeReplyOsmPrivate() +{ + +} + +QGeoCodeReplyOsmPrivate::~QGeoCodeReplyOsmPrivate() +{ + +} + +QVariantMap QGeoCodeReplyOsmPrivate::extraData() const +{ + return m_extraData; +} + QT_END_NAMESPACE + + diff --git a/src/plugins/geoservices/osm/qgeocodereplyosm.h b/src/plugins/geoservices/osm/qgeocodereplyosm.h index 0847f58c..b81b8b84 100644 --- a/src/plugins/geoservices/osm/qgeocodereplyosm.h +++ b/src/plugins/geoservices/osm/qgeocodereplyosm.h @@ -42,6 +42,7 @@ #include <QtNetwork/QNetworkReply> #include <QtLocation/QGeoCodeReply> +#include <QtLocation/private/qgeocodereply_p.h> QT_BEGIN_NAMESPACE @@ -58,6 +59,17 @@ private Q_SLOTS: void networkReplyError(QNetworkReply::NetworkError error); }; +class QGeoCodeReplyOsmPrivate : public QGeoCodeReplyPrivate +{ +public: + QGeoCodeReplyOsmPrivate(); + ~QGeoCodeReplyOsmPrivate(); + QVariantMap extraData() const override; + + bool m_includeGeometry = false; + QVariantMap m_extraData; +}; + QT_END_NAMESPACE #endif // QGEOCODEREPLYOSM_H diff --git a/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.cpp b/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.cpp index d7751287..9403cfa8 100644 --- a/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.cpp +++ b/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.cpp @@ -38,7 +38,6 @@ ****************************************************************************/ #include "qgeocodingmanagerengineosm.h" -#include "qgeocodereplyosm.h" #include <QtCore/QVariantMap> #include <QtCore/QUrl> @@ -50,6 +49,8 @@ #include <QtPositioning/QGeoAddress> #include <QtPositioning/QGeoShape> #include <QtPositioning/QGeoRectangle> +#include "qgeocodereplyosm.h" + QT_BEGIN_NAMESPACE @@ -85,6 +86,9 @@ QGeoCodingManagerEngineOsm::QGeoCodingManagerEngineOsm(const QVariantMap ¶me else m_urlPrefix = QStringLiteral("https://nominatim.openstreetmap.org"); + if (parameters.contains(QStringLiteral("osm.geocoding.debug_query"))) + m_debugQuery = parameters.value(QStringLiteral("osm.geocoding.debug_query")).toBool(); + *error = QGeoServiceProvider::NoError; errorString->clear(); } @@ -126,6 +130,11 @@ QGeoCodeReply *QGeoCodingManagerEngineOsm::geocode(const QString &address, int l QNetworkReply *reply = m_networkManager->get(request); QGeoCodeReplyOsm *geocodeReply = new QGeoCodeReplyOsm(reply, this); + if (m_debugQuery) { + QGeoCodeReplyOsmPrivate *replyPrivate + = static_cast<QGeoCodeReplyOsmPrivate *>(QGeoCodeReplyPrivate::get(*geocodeReply)); + replyPrivate->m_extraData["request_url"] = url; + } connect(geocodeReply, SIGNAL(finished()), this, SLOT(replyFinished())); connect(geocodeReply, SIGNAL(error(QGeoCodeReply::Error,QString)), @@ -157,6 +166,11 @@ QGeoCodeReply *QGeoCodingManagerEngineOsm::reverseGeocode(const QGeoCoordinate & QNetworkReply *reply = m_networkManager->get(request); QGeoCodeReplyOsm *geocodeReply = new QGeoCodeReplyOsm(reply, this); + if (m_debugQuery) { + QGeoCodeReplyOsmPrivate *replyPrivate + = static_cast<QGeoCodeReplyOsmPrivate *>(QGeoCodeReplyPrivate::get(*geocodeReply)); + replyPrivate->m_extraData["request_url"] = url; + } connect(geocodeReply, SIGNAL(finished()), this, SLOT(replyFinished())); connect(geocodeReply, SIGNAL(error(QGeoCodeReply::Error,QString)), diff --git a/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.h b/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.h index 0fec49de..2bc15715 100644 --- a/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.h +++ b/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.h @@ -71,6 +71,7 @@ private: QNetworkAccessManager *m_networkManager; QByteArray m_userAgent; QString m_urlPrefix; + bool m_debugQuery = false; }; QT_END_NAMESPACE |