diff options
author | Anders Gunnarsson <anders.gunnarsson@appello.com> | 2014-02-07 09:06:30 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-07 13:26:26 +0100 |
commit | e1798015044700cf4286ce2e8b559cced13da826 (patch) | |
tree | 35852388b2ad07b3f4b39a85deeedbd41522e2a6 | |
parent | 3d36599672ab13f8276c9018ddbe4190872796fa (diff) | |
download | qtlocation-e1798015044700cf4286ce2e8b559cced13da826.tar.gz |
Remove dependency between MapStyle and Nokia map schemes
Makes it possible to add Nokia base schemes without adding new
MapStyles.
Removes the redundant collection of base schemes.
Change-Id: Ia2189a3f10ba47cc40087b7d4fee9a2c5d84caad
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
Reviewed-by: Aaron McCarthy <mccarthy.aaron@gmail.com>
4 files changed, 48 insertions, 60 deletions
diff --git a/src/plugins/geoservices/nokia/qgeotiledmapdata_nokia.cpp b/src/plugins/geoservices/nokia/qgeotiledmapdata_nokia.cpp index 823764ba..506b3f70 100644 --- a/src/plugins/geoservices/nokia/qgeotiledmapdata_nokia.cpp +++ b/src/plugins/geoservices/nokia/qgeotiledmapdata_nokia.cpp @@ -81,7 +81,7 @@ void QGeoTiledMapDataNokia::evaluateCopyrights(const QSet<QGeoTileSpec> &visible const int fontSize = 10; QGeoTiledMappingManagerEngineNokia *engineNokia = static_cast<QGeoTiledMappingManagerEngineNokia *>(engine()); - QString copyrightsString = engineNokia->evaluateCopyrightsText(activeMapType().style(), mapController()->zoom(), visibleTiles); + const QString copyrightsString = engineNokia->evaluateCopyrightsText(activeMapType(), mapController()->zoom(), visibleTiles); if (width() > 0 && height() > 0 && (lastCopyrightsString.isNull() || copyrightsString != lastCopyrightsString)) { copyrightsSlab = copyrightsSlab.copy(0, 0, width(), height()); diff --git a/src/plugins/geoservices/nokia/qgeotiledmappingmanagerengine_nokia.cpp b/src/plugins/geoservices/nokia/qgeotiledmappingmanagerengine_nokia.cpp index 99a2940b..1db5c9f5 100644 --- a/src/plugins/geoservices/nokia/qgeotiledmappingmanagerengine_nokia.cpp +++ b/src/plugins/geoservices/nokia/qgeotiledmappingmanagerengine_nokia.cpp @@ -137,31 +137,53 @@ QGeoTiledMappingManagerEngineNokia::QGeoTiledMappingManagerEngineNokia( tileCache->setExtraTextureUsage(cacheSize); } - populateMapTypesDb(); + populateMapSchemes(); QMetaObject::invokeMethod(fetcher, "fetchCopyrightsData", Qt::QueuedConnection); } QGeoTiledMappingManagerEngineNokia::~QGeoTiledMappingManagerEngineNokia() {} -void QGeoTiledMappingManagerEngineNokia::populateMapTypesDb() +void QGeoTiledMappingManagerEngineNokia::populateMapSchemes() { - m_mapTypeStrings[QGeoMapType::NoMap] = QLatin1String("normal"); - m_mapTypeStrings[QGeoMapType::TerrainMap] = QLatin1String("terrain"); - m_mapTypeStrings[QGeoMapType::StreetMap] = QLatin1String("normal"); - m_mapTypeStrings[QGeoMapType::SatelliteMapDay] = QLatin1String("satellite"); - m_mapTypeStrings[QGeoMapType::SatelliteMapNight] = QLatin1String("satellite"); - m_mapTypeStrings[QGeoMapType::HybridMap] = QLatin1String("hybrid"); - m_mapTypeStrings[QGeoMapType::TransitMap] = QLatin1String("normal"); - m_mapTypeStrings[QGeoMapType::GrayStreetMap] = QLatin1String("normal"); - m_mapTypeStrings[QGeoMapType::PedestrianMap] = QLatin1String("pedestrian"); - m_mapTypeStrings[QGeoMapType::CarNavigationMap] = QLatin1String("carnav"); + m_mapSchemes[0] = QLatin1String("normal.day"); + m_mapSchemes[1] = QLatin1String("normal.day"); + m_mapSchemes[2] = QLatin1String("satellite.day"); + m_mapSchemes[3] = QLatin1String("terrain.day"); + m_mapSchemes[4] = QLatin1String("hybrid.day"); + m_mapSchemes[5] = QLatin1String("normal.day.transit"); + m_mapSchemes[6] = QLatin1String("normal.day.grey"); + m_mapSchemes[7] = QLatin1String("normal.day.mobile"); + m_mapSchemes[8] = QLatin1String("terrain.day.mobile"); + m_mapSchemes[9] = QLatin1String("hybrid.day.mobile"); + m_mapSchemes[10] = QLatin1String("normal.day.transit.mobile"); + m_mapSchemes[11] = QLatin1String("normal.day.grey.mobile"); + m_mapSchemes[12] = QLatin1String("normal.day.custom"); + m_mapSchemes[13] = QLatin1String("normal.night"); + m_mapSchemes[14] = QLatin1String("normal.night.mobile"); + m_mapSchemes[15] = QLatin1String("normal.night.grey"); + m_mapSchemes[16] = QLatin1String("normal.night.grey.mobile"); + m_mapSchemes[17] = QLatin1String("pedestrian.day"); + m_mapSchemes[18] = QLatin1String("pedestrian.night"); + m_mapSchemes[19] = QLatin1String("carnav.day.grey"); +} + +QString QGeoTiledMappingManagerEngineNokia::getScheme(int mapId) +{ + return m_mapSchemes[mapId]; +} + +QString QGeoTiledMappingManagerEngineNokia::getBaseScheme(int mapId) +{ + QString fullScheme(m_mapSchemes[mapId]); + + return fullScheme.section(QLatin1Char('.'), 0, 0); } void QGeoTiledMappingManagerEngineNokia::loadCopyrightsDescriptorsFromJson(const QByteArray &jsonData) { QJsonDocument doc = QJsonDocument::fromJson(QByteArray(jsonData)); if (doc.isNull()) { - qDebug() << "QGeoCopyrightsCacheNokia::copyrightsFetche() Invalid JSon document"; + qDebug() << "QGeoTiledMappingManagerEngineNokia::loadCopyrightsDescriptorsFromJson() Invalid JSon document"; return; } @@ -201,7 +223,7 @@ void QGeoTiledMappingManagerEngineNokia::loadCopyrightsDescriptorsFromJson(const } } -QString QGeoTiledMappingManagerEngineNokia::evaluateCopyrightsText(const QGeoMapType::MapStyle mapStyle, +QString QGeoTiledMappingManagerEngineNokia::evaluateCopyrightsText(const QGeoMapType mapType, const qreal zoomLevel, const QSet<QGeoTileSpec> &tiles) { @@ -247,7 +269,7 @@ QString QGeoTiledMappingManagerEngineNokia::evaluateCopyrightsText(const QGeoMap } // TODO: the following invalidation detection algorithm may be improved later. - QList<CopyrightDesc> descriptorList = m_copyrights[ m_mapTypeStrings[mapStyle] ]; + QList<CopyrightDesc> descriptorList = m_copyrights[ getBaseScheme(mapType.mapId()) ]; CopyrightDesc *descriptor; int descIndex, boxIndex; QString copyrightsText; diff --git a/src/plugins/geoservices/nokia/qgeotiledmappingmanagerengine_nokia.h b/src/plugins/geoservices/nokia/qgeotiledmappingmanagerengine_nokia.h index 4b710f89..a30dcf69 100644 --- a/src/plugins/geoservices/nokia/qgeotiledmappingmanagerengine_nokia.h +++ b/src/plugins/geoservices/nokia/qgeotiledmappingmanagerengine_nokia.h @@ -77,9 +77,11 @@ public: ~QGeoTiledMappingManagerEngineNokia(); virtual QGeoMapData *createMapData(); - QString evaluateCopyrightsText(const QGeoMapType::MapStyle mapStyle, + QString evaluateCopyrightsText(const QGeoMapType mapType, const qreal zoomLevel, const QSet<QGeoTileSpec> &tiles); + QString getScheme(int mapId); + QString getBaseScheme(int mapId); public Q_SLOTS: void loadCopyrightsDescriptorsFromJson(const QByteArray &jsonData); @@ -100,10 +102,10 @@ private: }; void initialize(); - void populateMapTypesDb(); + void populateMapSchemes(); QHash<QString, QList<CopyrightDesc> > m_copyrights; - QHash<QGeoMapType::MapStyle, QString> m_mapTypeStrings; + QHash<int, QString> m_mapSchemes; }; QT_END_NAMESPACE diff --git a/src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp b/src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp index c1cf93a0..997eef64 100644 --- a/src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp +++ b/src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp @@ -81,45 +81,9 @@ namespace return s128; } - QString mapIdToStr(int mapId) + bool isAerialType(const QString mapScheme) { - typedef std::map<int, QString> MapTypeRegistry; - static MapTypeRegistry registeredTypes; - if (registeredTypes.empty()) { - registeredTypes[0] = "normal.day"; - registeredTypes[1] = "normal.day"; - registeredTypes[2] = "satellite.day"; - registeredTypes[3] = "terrain.day"; - registeredTypes[4] = "hybrid.day"; - registeredTypes[5] = "normal.day.transit"; - registeredTypes[6] = "normal.day.grey"; - registeredTypes[7] = "normal.day.mobile"; - registeredTypes[8] = "terrain.day.mobile"; - registeredTypes[9] = "hybrid.day.mobile"; - registeredTypes[10] = "normal.day.transit.mobile"; - registeredTypes[11] = "normal.day.grey.mobile"; - registeredTypes[12] = "normal.day.custom"; - registeredTypes[13] = "normal.night"; - registeredTypes[14] = "normal.night.mobile"; - registeredTypes[15] = "normal.night.grey"; - registeredTypes[16] = "normal.night.grey.mobile"; - registeredTypes[17] = "pedestrian.day"; - registeredTypes[18] = "pedestrian.night"; - registeredTypes[19] = "carnav.day.grey"; - } - - MapTypeRegistry::const_iterator it = registeredTypes.find(mapId); - if (it != registeredTypes.end()) { - return it->second; - } - - qWarning() << "Unknown mapId: " << mapId; - return "normal.day"; - } - - bool isAerialType(const QString mapType) - { - return mapType.startsWith("satellite") || mapType.startsWith("hybrid") || mapType.startsWith("terrain"); + return mapScheme.startsWith("satellite") || mapScheme.startsWith("hybrid") || mapScheme.startsWith("terrain"); } } QGeoTileFetcherNokia::QGeoTileFetcherNokia( @@ -179,14 +143,14 @@ QString QGeoTileFetcherNokia::getRequestString(const QGeoTileSpec &spec) QString requestString = http; - QString mapType = mapIdToStr(spec.mapId()); - if (isAerialType(mapType)) + const QString mapScheme = m_engineNokia->getScheme(spec.mapId()); + if (isAerialType(mapScheme)) requestString += m_aerialUriProvider->getCurrentHost(); else requestString += m_baseUriProvider->getCurrentHost(); requestString += path; - requestString += mapType; + requestString += mapScheme; requestString += slash; requestString += QString::number(spec.zoom()); requestString += slash; |