summaryrefslogtreecommitdiff
path: root/src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp
diff options
context:
space:
mode:
authorbhashish <basel.hashisho@nokia.com>2012-03-19 03:34:38 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-22 07:56:32 +0100
commitd8d7001d09e0db8a974b569c3169516b980e67df (patch)
tree61ed21a9ce6740bfab12c1b27193fa4f4d6d66e9 /src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp
parent5283e480e95f25f197e35ea01e0bb7fa7ce239e3 (diff)
downloadqtlocation-d8d7001d09e0db8a974b569c3169516b980e67df.tar.gz
Implementation of copyrights notice handling for Nokia online plugin.
Introducing classes QGeoCopyrightsCacheNokia, QGeoMapCopyrightsContext. - QGeoCopyrightsCacheNokia: Provides shared copyrights fetching and lookup services and is common for all maps generated by QGeoTiledMappingManagerEngineNokia, hence its instance is owned by the engine. - QGeoMapCopyrightsContext: Encapsulates copyrights info for last rendered frame per QGeoTiledMapDataNokia class, and is passed to QGeoCopyrightsCacheNokia::evaluateContext(...) to evaluate the validity of last copyrights notice upon signaling by base QGeoTiledMapData. Change-Id: I23cb378d51670c4fa124ac607c71f199e9520cb0 Reviewed-by: Alex Wilson <alex.wilson@nokia.com>
Diffstat (limited to 'src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp')
-rw-r--r--src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp50
1 files changed, 47 insertions, 3 deletions
diff --git a/src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp b/src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp
index 4d5c67af..cf081252 100644
--- a/src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp
+++ b/src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp
@@ -49,6 +49,7 @@
#include "qgeotilefetcher_nokia.h"
#include "qgeomapreply_nokia.h"
#include "qgeotiledmapdata_nokia.h"
+#include "qgeotiledmappingmanagerengine_nokia.h"
#include <qgeotilespec.h>
@@ -72,9 +73,8 @@ QGeoTileFetcherNokia::QGeoTileFetcherNokia(QGeoTiledMappingManagerEngine *engine
: QGeoTileFetcher(engine),
m_networkManager(0),
m_firstSubdomain(QChar::Null),
- m_maxSubdomains(0)
-{
-}
+ m_maxSubdomains(0),
+ m_engineNokia(static_cast<QGeoTiledMappingManagerEngineNokia*>(engine)) {}
QGeoTileFetcherNokia::~QGeoTileFetcherNokia() {}
@@ -316,4 +316,48 @@ bool QGeoTileFetcherNokia::isValidParameter(const QString &param)
return true;
}
+void QGeoTileFetcherNokia::copyrightsFetched()
+{
+ QMetaObject::invokeMethod(m_engineNokia,
+ "loadCopyrightsDescriptorsFromJson",
+ Qt::QueuedConnection,
+ Q_ARG(QByteArray, m_copyrightsReply->readAll()));
+}
+
+void QGeoTileFetcherNokia::fetchCopyrightsData()
+{
+ QString copyrightUrl = "http://";
+ if (!firstSubdomain().isNull()) {
+ copyrightUrl += firstSubdomain();
+ copyrightUrl += ".";
+ }
+
+ copyrightUrl += host();
+ copyrightUrl += "/maptiler/v2/copyright/newest?output=json";
+
+ if (!token().isEmpty()) {
+ copyrightUrl += "&token=";
+ copyrightUrl += token();
+ }
+
+ if (!applicationId().isEmpty()) {
+ copyrightUrl += "&app_id=";
+ copyrightUrl += applicationId();
+ }
+
+ QNetworkRequest netRequest((QUrl(copyrightUrl)));
+ m_copyrightsReply = m_networkManager->get(netRequest);
+ if (m_copyrightsReply->error() != QNetworkReply::NoError) {
+ qWarning() << __FUNCTION__ << m_copyrightsReply->errorString();
+ m_copyrightsReply->deleteLater();
+ return;
+ }
+
+ if (m_copyrightsReply->isFinished()) {
+ copyrightsFetched();
+ } else {
+ connect(m_copyrightsReply, SIGNAL(finished()), this, SLOT(copyrightsFetched()));
+ }
+}
+
QT_END_NAMESPACE