diff options
author | bhashish <basel.hashisho@nokia.com> | 2012-03-19 03:34:38 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-22 07:56:32 +0100 |
commit | d8d7001d09e0db8a974b569c3169516b980e67df (patch) | |
tree | 61ed21a9ce6740bfab12c1b27193fa4f4d6d66e9 /src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp | |
parent | 5283e480e95f25f197e35ea01e0bb7fa7ce239e3 (diff) | |
download | qtlocation-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.cpp | 50 |
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 ¶m) 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 |