summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@theqtcompany.com>2016-03-01 18:20:02 +0100
committerMichal Klocek <michal.klocek@theqtcompany.com>2016-03-17 06:56:26 +0000
commit3cf9f339f2a319d99e81feebb6f5f1e428eec51c (patch)
treef41d694475a0295af2ceec334c9d17bf0c886008
parentde165175549642c7fefa901d41ee96ef0702879c (diff)
Replace m_mappingManagerInitialized check from qdeclaratviegeomap
Replace initialization checks with more accurate checks. In some cases mapping manager is not able to create qgeomap and mappingManager is initialized anyway. Change-Id: I2265dcd82ebcd3a07ebdcfb74a6077bdd7be16c7 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
-rw-r--r--src/imports/location/qdeclarativegeomap.cpp58
-rw-r--r--src/imports/location/qdeclarativegeomap_p.h2
-rw-r--r--src/location/maps/qgeomappingmanager.cpp3
3 files changed, 36 insertions, 27 deletions
diff --git a/src/imports/location/qdeclarativegeomap.cpp b/src/imports/location/qdeclarativegeomap.cpp
index 2878d3b6..2da6c3b9 100644
--- a/src/imports/location/qdeclarativegeomap.cpp
+++ b/src/imports/location/qdeclarativegeomap.cpp
@@ -178,10 +178,10 @@ QDeclarativeGeoMap::QDeclarativeGeoMap(QQuickItem *parent)
m_error(QGeoServiceProvider::NoError),
m_color(QColor::fromRgbF(0.9, 0.9, 0.9)),
m_componentCompleted(false),
- m_mappingManagerInitialized(false),
m_pendingFitViewport(false),
m_copyrightsVisible(true),
- m_maximumViewportLatitude(0.0)
+ m_maximumViewportLatitude(0.0),
+ m_initialized(false)
{
setAcceptHoverEvents(false);
setAcceptedMouseButtons(Qt::LeftButton);
@@ -217,7 +217,7 @@ QDeclarativeGeoMap::~QDeclarativeGeoMap()
*/
void QDeclarativeGeoMap::onMapChildrenChanged()
{
- if (!m_componentCompleted || !m_mappingManagerInitialized)
+ if (!m_componentCompleted || !m_map)
return;
int maxChildZ = 0;
@@ -294,6 +294,8 @@ void QDeclarativeGeoMap::initialize()
m_map->setCameraData(m_cameraData);
+ m_initialized = true;
+
if (centerHasChanged)
emit centerChanged(m_cameraData.center());
}
@@ -493,9 +495,11 @@ void QDeclarativeGeoMap::setPlugin(QDeclarativeGeoServiceProvider *plugin)
*/
void QDeclarativeGeoMap::mappingManagerInitialized()
{
- m_mappingManagerInitialized = true;
-
m_map = m_mappingManager->createMap(this);
+
+ if (!m_map)
+ return;
+
m_gestureArea->setMap(m_map);
QList<QGeoMapType> types = m_mappingManager->supportedMapTypes();
@@ -526,7 +530,7 @@ void QDeclarativeGeoMap::mappingManagerInitialized()
// Map tiles are built in this call. m_map->minimumZoom() becomes operational
// after this has been called at least once, after creation.
- if (width() > 0 && height() > 0) {
+ if (!m_initialized && width() > 0 && height() > 0) {
m_map->resize(width(), height());
initialize();
}
@@ -584,11 +588,13 @@ void QDeclarativeGeoMap::setMinimumZoomLevel(qreal minimumZoomLevel)
if (minimumZoomLevel >= 0) {
qreal oldMinimumZoomLevel = this->minimumZoomLevel();
- if (m_mappingManagerInitialized)
- minimumZoomLevel = qBound(m_mappingManager->cameraCapabilities().minimumZoomLevel(), minimumZoomLevel, maximumZoomLevel());
- double minimumViewportZoomLevel = m_map->minimumZoomForMapSize(width(),height());
- if (minimumZoomLevel < minimumViewportZoomLevel)
- minimumZoomLevel = minimumViewportZoomLevel;
+
+ if (m_map) {
+ minimumZoomLevel = qBound(m_map->cameraCapabilities().minimumZoomLevel(), minimumZoomLevel, maximumZoomLevel());
+ double minimumViewportZoomLevel = m_map->minimumZoomForMapSize(width(),height());
+ if (minimumZoomLevel < minimumViewportZoomLevel)
+ minimumZoomLevel = minimumViewportZoomLevel;
+ }
m_gestureArea->setMinimumZoomLevel(minimumZoomLevel);
@@ -618,8 +624,8 @@ qreal QDeclarativeGeoMap::minimumZoomLevel() const
{
if (m_gestureArea->minimumZoomLevel() != -1)
return m_gestureArea->minimumZoomLevel();
- else if (m_mappingManager && m_mappingManagerInitialized)
- return m_mappingManager->cameraCapabilities().minimumZoomLevel();
+ else if (m_map)
+ return m_map->cameraCapabilities().minimumZoomLevel();
else
return -1.0;
}
@@ -633,8 +639,9 @@ void QDeclarativeGeoMap::setMaximumZoomLevel(qreal maximumZoomLevel)
{
if (maximumZoomLevel >= 0) {
qreal oldMaximumZoomLevel = this->maximumZoomLevel();
- if (m_mappingManagerInitialized)
- maximumZoomLevel = qBound(minimumZoomLevel(), double(maximumZoomLevel), m_mappingManager->cameraCapabilities().maximumZoomLevel());
+
+ if (m_map)
+ maximumZoomLevel = qBound(minimumZoomLevel(), double(maximumZoomLevel), m_map->cameraCapabilities().maximumZoomLevel());
m_gestureArea->setMaximumZoomLevel(maximumZoomLevel);
@@ -659,8 +666,8 @@ qreal QDeclarativeGeoMap::maximumZoomLevel() const
{
if (m_gestureArea->maximumZoomLevel() != -1)
return m_gestureArea->maximumZoomLevel();
- else if (m_mappingManager && m_mappingManagerInitialized)
- return m_mappingManager->cameraCapabilities().maximumZoomLevel();
+ else if (m_map)
+ return m_map->cameraCapabilities().maximumZoomLevel();
else
return -1.0;
}
@@ -681,7 +688,7 @@ void QDeclarativeGeoMap::setZoomLevel(qreal zoomLevel)
//small optiomatization to avoid double setCameraData
bool centerHasChanged = false;
- if (m_mappingManagerInitialized) {
+ if (m_map) {
m_cameraData.setZoomLevel(qBound(minimumZoomLevel(), zoomLevel, maximumZoomLevel()));
m_maximumViewportLatitude = m_map->maximumLatitudeForZoom(m_cameraData.zoomLevel());
QGeoCoordinate coord = m_cameraData.center();
@@ -721,7 +728,7 @@ void QDeclarativeGeoMap::setCenter(const QGeoCoordinate &center)
if (!center.isValid())
return;
- if (m_mappingManagerInitialized) {
+ if (m_map) {
QGeoCoordinate coord(center);
coord.setLatitude(qBound(-m_maximumViewportLatitude, center.latitude(), m_maximumViewportLatitude));
m_cameraData.setCenter(coord);
@@ -953,7 +960,7 @@ QPointF QDeclarativeGeoMap::fromCoordinate(const QGeoCoordinate &coordinate, boo
*/
void QDeclarativeGeoMap::pan(int dx, int dy)
{
- if (!m_mappingManagerInitialized)
+ if (!m_map)
return;
if (dx == 0 && dy == 0)
return;
@@ -971,7 +978,7 @@ void QDeclarativeGeoMap::pan(int dx, int dy)
*/
void QDeclarativeGeoMap::prefetchData()
{
- if (!m_mappingManagerInitialized)
+ if (!m_map)
return;
m_map->prefetchData();
}
@@ -1237,13 +1244,13 @@ void QDeclarativeGeoMap::geometryChanged(const QRectF &newGeometry, const QRectF
m_gestureArea->setSize(newGeometry.size());
QQuickItem::geometryChanged(newGeometry, oldGeometry);
- if (!m_mappingManagerInitialized || !newGeometry.size().isValid())
+ if (!m_map || !newGeometry.size().isValid())
return;
m_map->resize(newGeometry.width(), newGeometry.height());
- if (!oldGeometry.size().isValid()) // TBD: see following commit
+ if (!m_initialized)
initialize();
else
setMinimumZoomLevel(m_map->minimumZoomForMapSize(newGeometry.width(), newGeometry.height()));
@@ -1274,8 +1281,6 @@ void QDeclarativeGeoMap::geometryChanged(const QRectF &newGeometry, const QRectF
*/
void QDeclarativeGeoMap::fitViewportToMapItems()
{
- if (!m_mappingManagerInitialized)
- return;
fitViewportToMapItemsRefine(true);
}
@@ -1284,6 +1289,9 @@ void QDeclarativeGeoMap::fitViewportToMapItems()
*/
void QDeclarativeGeoMap::fitViewportToMapItemsRefine(bool refine)
{
+ if (!m_map)
+ return;
+
if (m_mapItems.size() == 0)
return;
diff --git a/src/imports/location/qdeclarativegeomap_p.h b/src/imports/location/qdeclarativegeomap_p.h
index 3db1aed2..807ed59c 100644
--- a/src/imports/location/qdeclarativegeomap_p.h
+++ b/src/imports/location/qdeclarativegeomap_p.h
@@ -199,10 +199,10 @@ private:
QColor m_color;
QGeoCameraData m_cameraData;
bool m_componentCompleted;
- bool m_mappingManagerInitialized;
bool m_pendingFitViewport;
bool m_copyrightsVisible;
double m_maximumViewportLatitude;
+ bool m_initialized;
friend class QDeclarativeGeoMapItem;
friend class QDeclarativeGeoMapItemView;
diff --git a/src/location/maps/qgeomappingmanager.cpp b/src/location/maps/qgeomappingmanager.cpp
index 681e68a7..5e9531ca 100644
--- a/src/location/maps/qgeomappingmanager.cpp
+++ b/src/location/maps/qgeomappingmanager.cpp
@@ -133,7 +133,8 @@ QGeoCameraCapabilities QGeoMappingManager::cameraCapabilities() const
QGeoMap *QGeoMappingManager::createMap(QObject *parent)
{
QGeoMap * map = d_ptr->engine->createMap();
- connect(parent,&QObject::destroyed,map,&QGeoMap::deleteLater);
+ if (map)
+ connect(parent, &QObject::destroyed,map, &QGeoMap::deleteLater);
return map;
}