summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnders Gunnarsson <anders.gunnarsson@appello.com>2014-02-07 09:06:30 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-07 13:26:26 +0100
commite1798015044700cf4286ce2e8b559cced13da826 (patch)
tree35852388b2ad07b3f4b39a85deeedbd41522e2a6
parent3d36599672ab13f8276c9018ddbe4190872796fa (diff)
downloadqtlocation-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>
-rw-r--r--src/plugins/geoservices/nokia/qgeotiledmapdata_nokia.cpp2
-rw-r--r--src/plugins/geoservices/nokia/qgeotiledmappingmanagerengine_nokia.cpp52
-rw-r--r--src/plugins/geoservices/nokia/qgeotiledmappingmanagerengine_nokia.h8
-rw-r--r--src/plugins/geoservices/nokia/qgeotilefetcher_nokia.cpp46
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;