diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-08-05 11:44:43 +0300 |
---|---|---|
committer | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-08-17 14:43:22 +0300 |
commit | 45da1abbe1fa6237c793efb7e59332770d936053 (patch) | |
tree | daed860e4ef5edf0e7ed1890601b71c066b39171 /platform | |
parent | ee62a807a3fe2a1276583fc93cee3d1ffc55f4bc (diff) | |
download | qtlocation-mapboxgl-45da1abbe1fa6237c793efb7e59332770d936053.tar.gz |
[Qt] Use MapChangeWillStartLoadingMap to get notified about style changes
Diffstat (limited to 'platform')
-rw-r--r-- | platform/qt/include/qquickmapboxglstyleproperty.hpp | 4 | ||||
-rw-r--r-- | platform/qt/qmlapp/main.qml | 14 | ||||
-rw-r--r-- | platform/qt/src/qquickmapboxgl.cpp | 6 | ||||
-rw-r--r-- | platform/qt/src/qquickmapboxglrenderer.cpp | 19 | ||||
-rw-r--r-- | platform/qt/src/qquickmapboxglrenderer.hpp | 1 |
5 files changed, 40 insertions, 4 deletions
diff --git a/platform/qt/include/qquickmapboxglstyleproperty.hpp b/platform/qt/include/qquickmapboxglstyleproperty.hpp index 26eecce75d..f49e879871 100644 --- a/platform/qt/include/qquickmapboxglstyleproperty.hpp +++ b/platform/qt/include/qquickmapboxglstyleproperty.hpp @@ -28,6 +28,9 @@ public: void setValue(const QVariant &); QVariant value() const; +public slots: + void checkUpdated(); + signals: void layerChanged(const QString &); void propertyChanged(const QString &); @@ -36,7 +39,6 @@ signals: protected: QQuickMapboxGLStyleProperty(QQuickItem *parent, Type); - void checkUpdated(); QVariantMap m_map; }; diff --git a/platform/qt/qmlapp/main.qml b/platform/qt/qmlapp/main.qml index 6edfd7490e..bee98bc8b2 100644 --- a/platform/qt/qmlapp/main.qml +++ b/platform/qt/qmlapp/main.qml @@ -277,6 +277,20 @@ ApplicationWindow { onClicked: waterColorDialog.open() } + Button { + anchors.left: parent.left + anchors.right: parent.right + text: "Light style" + onClicked: { mapStreets.style = "mapbox://styles/mapbox/light-v9" } + } + + Button { + anchors.left: parent.left + anchors.right: parent.right + text: "Dark style" + onClicked: { mapStreets.style = "mapbox://styles/mapbox/dark-v9" } + } + CheckBox { id: roadLabel anchors.left: parent.left 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); |