summaryrefslogtreecommitdiff
path: root/src/location/declarativemaps/qdeclarativegeomap.cpp
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2017-04-12 15:21:03 +0200
committerJani Heikkinen <jani.heikkinen@qt.io>2017-05-07 07:02:12 +0000
commit1c29e3f36976134d1db3133d49ee3dc21eb1c07a (patch)
treedccc569a84a69fc6540b0a2fb27b19a0b4f75372 /src/location/declarativemaps/qdeclarativegeomap.cpp
parentacb1f42d21b94c4c783433c2e7d67646c905afb7 (diff)
downloadqtlocation-1c29e3f36976134d1db3133d49ee3dc21eb1c07a.tar.gz
Add pluginName to QGeoMapType and check against it in setActiveMapType
This patch adds a QByteArray member to QGeoMapType with the name of the plugin providing that map type. This value is then used to validate what is passed to QDeclarativeGeoMap::setActiveMapType to see if it's a map type for the currently set plugin. Change-Id: If15b67c32150f0c3c2815d28e26fc37138d4cf71 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/location/declarativemaps/qdeclarativegeomap.cpp')
-rw-r--r--src/location/declarativemaps/qdeclarativegeomap.cpp34
1 files changed, 24 insertions, 10 deletions
diff --git a/src/location/declarativemaps/qdeclarativegeomap.cpp b/src/location/declarativemaps/qdeclarativegeomap.cpp
index 9e679afb..2c699aa6 100644
--- a/src/location/declarativemaps/qdeclarativegeomap.cpp
+++ b/src/location/declarativemaps/qdeclarativegeomap.cpp
@@ -190,7 +190,7 @@ QDeclarativeGeoMap::QDeclarativeGeoMap(QQuickItem *parent)
m_activeMapType = new QDeclarativeGeoMapType(QGeoMapType(QGeoMapType::NoMap,
tr("No Map"),
- tr("No Map"), false, false, 0), this);
+ tr("No Map"), false, false, 0, QByteArrayLiteral("")), this);
m_cameraData.setCenter(QGeoCoordinate(51.5073,-0.1277)); //London city center
m_cameraData.setZoomLevel(8.0);
@@ -738,12 +738,20 @@ void QDeclarativeGeoMap::mappingManagerInitialized()
m_supportedMapTypes.append(type);
}
- if (!m_supportedMapTypes.isEmpty()) {
- QDeclarativeGeoMapType *type = m_supportedMapTypes.at(0);
- m_activeMapType = type;
- m_map->setActiveMapType(type->mapType());
- } else {
+ if (m_activeMapType && m_plugin->name().toLatin1() == m_activeMapType->mapType().pluginName()) {
m_map->setActiveMapType(m_activeMapType->mapType());
+ } else {
+ if (m_activeMapType)
+ m_activeMapType->deleteLater();
+
+ if (!m_supportedMapTypes.isEmpty()) {
+ m_activeMapType = m_supportedMapTypes.at(0);
+ m_map->setActiveMapType(m_activeMapType->mapType());
+ } else {
+ m_activeMapType = new QDeclarativeGeoMapType(QGeoMapType(QGeoMapType::NoMap,
+ tr("No Map"),
+ tr("No Map"), false, false, 0, QByteArrayLiteral("")), this);
+ }
}
// Update camera capabilities
@@ -1890,10 +1898,16 @@ void QDeclarativeGeoMap::removeMapItemGroup(QDeclarativeGeoMapItemGroup *itemGro
void QDeclarativeGeoMap::setActiveMapType(QDeclarativeGeoMapType *mapType)
{
if (m_activeMapType->mapType() != mapType->mapType()) {
- m_activeMapType = mapType;
- if (m_map)
- m_map->setActiveMapType(mapType->mapType());
- emit activeMapTypeChanged();
+ if (m_map) {
+ if (mapType->mapType().pluginName() == m_plugin->name().toLatin1()) {
+ m_map->setActiveMapType(mapType->mapType());
+ m_activeMapType = mapType;
+ emit activeMapTypeChanged();
+ }
+ } else {
+ m_activeMapType = mapType;
+ emit activeMapTypeChanged();
+ }
}
}