summaryrefslogtreecommitdiff
path: root/platform/qt/src
diff options
context:
space:
mode:
authorThiago Marcos P. Santos <thiago@mapbox.com>2016-04-28 19:43:24 +0300
committerThiago Marcos P. Santos <thiago@mapbox.com>2016-05-02 19:33:54 +0300
commitda653ec537efc37d619f3984ddeead0bee018e89 (patch)
tree19be89a8681f6d681aee82b1160004f96460bbb9 /platform/qt/src
parentc8d6540bc1dcf75a51ecfcfaae638419ae778c60 (diff)
downloadqtlocation-mapboxgl-da653ec537efc37d619f3984ddeead0bee018e89.tar.gz
[Qt] Allow setting the style via QML
Diffstat (limited to 'platform/qt/src')
-rw-r--r--platform/qt/src/qquickmapboxgl.cpp20
-rw-r--r--platform/qt/src/qquickmapboxglrenderer.cpp5
2 files changed, 24 insertions, 1 deletions
diff --git a/platform/qt/src/qquickmapboxgl.cpp b/platform/qt/src/qquickmapboxgl.cpp
index b31055b587..2e6542ac15 100644
--- a/platform/qt/src/qquickmapboxgl.cpp
+++ b/platform/qt/src/qquickmapboxgl.cpp
@@ -3,6 +3,7 @@
#include <QQuickMapboxGL>
#include <QQuickItem>
+#include <QString>
#include <QtGlobal>
QQuickMapboxGL::QQuickMapboxGL(QQuickItem *parent_)
@@ -156,6 +157,25 @@ QColor QQuickMapboxGL::color() const
return QColor();
}
+void QQuickMapboxGL::setStyle(const QString &styleUrl)
+{
+ if (m_style == styleUrl) {
+ return;
+ }
+
+ m_style = styleUrl;
+
+ m_syncState |= StyleNeedsSync;
+ update();
+
+ emit styleChanged();
+}
+
+QString QQuickMapboxGL::style() const
+{
+ return m_style;
+}
+
int QQuickMapboxGL::swapSyncState()
{
int oldState = m_syncState;
diff --git a/platform/qt/src/qquickmapboxglrenderer.cpp b/platform/qt/src/qquickmapboxglrenderer.cpp
index fc98cf35e1..20b5bf6d46 100644
--- a/platform/qt/src/qquickmapboxglrenderer.cpp
+++ b/platform/qt/src/qquickmapboxglrenderer.cpp
@@ -42,7 +42,6 @@ void QQuickMapboxGLRenderer::render()
void QQuickMapboxGLRenderer::synchronize(QQuickFramebufferObject *item)
{
if (!m_initialized) {
- m_map->setStyleURL(QMapbox::defaultStyles()[0].first);
QObject::connect(m_map.data(), SIGNAL(needsRendering()), item, SLOT(update()));
m_initialized = true;
}
@@ -58,4 +57,8 @@ void QQuickMapboxGLRenderer::synchronize(QQuickFramebufferObject *item)
const auto& center = quickMap->center();
m_map->setCoordinate(QMapbox::Coordinate(center.latitude(), center.longitude()));
}
+
+ if (syncStatus & QQuickMapboxGL::StyleNeedsSync) {
+ m_map->setStyleURL(quickMap->style());
+ }
}