summaryrefslogtreecommitdiff
path: root/platform
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
parentee62a807a3fe2a1276583fc93cee3d1ffc55f4bc (diff)
downloadqtlocation-mapboxgl-45da1abbe1fa6237c793efb7e59332770d936053.tar.gz
[Qt] Use MapChangeWillStartLoadingMap to get notified about style changes
Diffstat (limited to 'platform')
-rw-r--r--platform/qt/include/qquickmapboxglstyleproperty.hpp4
-rw-r--r--platform/qt/qmlapp/main.qml14
-rw-r--r--platform/qt/src/qquickmapboxgl.cpp6
-rw-r--r--platform/qt/src/qquickmapboxglrenderer.cpp19
-rw-r--r--platform/qt/src/qquickmapboxglrenderer.hpp1
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);