summaryrefslogtreecommitdiff
path: root/platform/qt/src
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2016-08-05 11:44:43 +0300
committerBruno de Oliveira Abinader <bruno@mapbox.com>2016-08-17 14:43:22 +0300
commit45da1abbe1fa6237c793efb7e59332770d936053 (patch)
treedaed860e4ef5edf0e7ed1890601b71c066b39171 /platform/qt/src
parentee62a807a3fe2a1276583fc93cee3d1ffc55f4bc (diff)
downloadqtlocation-mapboxgl-45da1abbe1fa6237c793efb7e59332770d936053.tar.gz
[Qt] Use MapChangeWillStartLoadingMap to get notified about style changes
Diffstat (limited to 'platform/qt/src')
-rw-r--r--platform/qt/src/qquickmapboxgl.cpp6
-rw-r--r--platform/qt/src/qquickmapboxglrenderer.cpp19
-rw-r--r--platform/qt/src/qquickmapboxglrenderer.hpp1
3 files changed, 23 insertions, 3 deletions
diff --git a/platform/qt/src/qquickmapboxgl.cpp b/platform/qt/src/qquickmapboxgl.cpp
index 6d90a4aeae..b80b343d35 100644
--- a/platform/qt/src/qquickmapboxgl.cpp
+++ b/platform/qt/src/qquickmapboxgl.cpp
@@ -23,7 +23,9 @@ QQuickMapboxGL::~QQuickMapboxGL()
QQuickFramebufferObject::Renderer *QQuickMapboxGL::createRenderer() const
{
- return new QQuickMapboxGLRenderer();
+ QQuickMapboxGLRenderer *renderer = new QQuickMapboxGLRenderer();
+ connect(renderer, SIGNAL(styleChanged()), this, SIGNAL(styleChanged()));
+ return renderer;
}
void QQuickMapboxGL::setPlugin(QDeclarativeGeoServiceProvider *)
@@ -267,11 +269,13 @@ void QQuickMapboxGL::itemChange(QQuickItem::ItemChange change, const QQuickItem:
case QQuickItem::ItemChildAddedChange:
if (QQuickMapboxGLStyleProperty *property = qobject_cast<QQuickMapboxGLStyleProperty *>(value.item)) {
connect(property, SIGNAL(updated(QVariantMap)), this, SLOT(onStylePropertyUpdated(QVariantMap)));
+ connect(this, SIGNAL(styleChanged()), property, SLOT(checkUpdated()));
}
break;
case QQuickItem::ItemChildRemovedChange:
if (QQuickMapboxGLStyleProperty *property = qobject_cast<QQuickMapboxGLStyleProperty *>(value.item)) {
disconnect(property, SIGNAL(updated(QVariantMap)), this, SLOT(onStylePropertyUpdated(QVariantMap)));
+ disconnect(this, SIGNAL(styleChanged()), property, SLOT(checkUpdated()));
}
default:
break;
diff --git a/platform/qt/src/qquickmapboxglrenderer.cpp b/platform/qt/src/qquickmapboxglrenderer.cpp
index 35a32be2ad..1b9a983d54 100644
--- a/platform/qt/src/qquickmapboxglrenderer.cpp
+++ b/platform/qt/src/qquickmapboxglrenderer.cpp
@@ -28,9 +28,24 @@ QQuickMapboxGLRenderer::~QQuickMapboxGLRenderer()
void QQuickMapboxGLRenderer::onMapChanged(QMapboxGL::MapChange change)
{
- if (change == QMapboxGL::MapChangeDidFinishLoadingMap) {
+ auto onMapChangeWillStartLoadingMap = [&]() {
+ m_styleLoaded = false;
+ };
+
+ auto onMapChangeDidFinishLoadingMap = [&]() {
m_styleLoaded = true;
- update();
+ emit styleChanged();
+ };
+
+ switch (change) {
+ case QMapboxGL::MapChangeWillStartLoadingMap:
+ onMapChangeWillStartLoadingMap();
+ break;
+ case QMapboxGL::MapChangeDidFinishLoadingMap:
+ onMapChangeDidFinishLoadingMap();
+ break;
+ default:
+ break;
}
}
diff --git a/platform/qt/src/qquickmapboxglrenderer.hpp b/platform/qt/src/qquickmapboxglrenderer.hpp
index d7ca7430ab..a5e56e3675 100644
--- a/platform/qt/src/qquickmapboxglrenderer.hpp
+++ b/platform/qt/src/qquickmapboxglrenderer.hpp
@@ -25,6 +25,7 @@ public:
signals:
void centerChanged(const QGeoCoordinate &);
+ void styleChanged();
public slots:
void onMapChanged(QMapboxGL::MapChange);