summaryrefslogtreecommitdiff
path: root/src/plugins/geoservices
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2018-11-28 14:15:31 +0100
committerPaolo Angelelli <paolo.angelelli@qt.io>2018-12-04 13:30:49 +0000
commit9ec2fa87650607337f1692b7bc52e16cc3f74860 (patch)
tree5e7023c528e3030915e80c53c3d4b3e8522e8025 /src/plugins/geoservices
parent181f1d8eac0af6e508ed483cbffb28cd2066b961 (diff)
downloadqtlocation-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')
-rw-r--r--src/plugins/geoservices/osm/qgeocodereplyosm.cpp19
-rw-r--r--src/plugins/geoservices/osm/qgeocodereplyosm.h12
-rw-r--r--src/plugins/geoservices/osm/qgeocodingmanagerengineosm.cpp16
-rw-r--r--src/plugins/geoservices/osm/qgeocodingmanagerengineosm.h1
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 &parame
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