From 677f7f76d4a0023d278b4d031d620fe63c3be27a Mon Sep 17 00:00:00 2001
From: "Thiago Marcos P. Santos" <tmpsantos@gmail.com>
Date: Tue, 8 Aug 2017 17:31:11 +0300
Subject: [PATCH] Bump Mapbox GL to v1.1.0

mapbox-gl-native @ edd7948893fcd40a24d96b790e21d3dd028cecbe

New features include:

- 3D extrusions
- Data driven styles
- Style transitions
- Bug fixes

[ChangeLog][QtLocation][MapboxGL] Updated Mapbox GL Native to v1.1.0

Change-Id: Ib4f88f382dc726e4b229dfe41530034009d7c12b
Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
---
 src/3rdparty/mapbox-gl-native                 |  2 +-
 src/plugins/geoservices/geoservices.pro       |  2 +-
 .../mapboxgl/qmapboxglstylechange.cpp         | 34 +++++++++++++------
 .../mapboxgl/qmapboxglstylechange_p.h         |  1 -
 4 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/src/3rdparty/mapbox-gl-native b/src/3rdparty/mapbox-gl-native
index 9ecbe3642..c53896cae 160000
--- a/src/3rdparty/mapbox-gl-native
+++ b/src/3rdparty/mapbox-gl-native
@@ -1 +1 @@
-Subproject commit 9ecbe3642fb4a53b558598239b59bf1d0224c25b
+Subproject commit c53896caefc96a8c18ab746026330ddc4fc0338e
diff --git a/src/plugins/geoservices/geoservices.pro b/src/plugins/geoservices/geoservices.pro
index 459897a8b..07c34798c 100644
--- a/src/plugins/geoservices/geoservices.pro
+++ b/src/plugins/geoservices/geoservices.pro
@@ -7,7 +7,7 @@ qtConfig(concurrent) {
 }
 
 qtConfig(opengl):qtConfig(c++14):!win32|mingw:!qnx {
-    !exists(../../3rdparty/mapbox-gl-native/CMakeLists.txt) {
+    !exists(../../3rdparty/mapbox-gl-native/mapbox-gl-native.pro) {
         warning("Submodule mapbox-gl-native does not exist. Run 'git submodule update --init' on qtlocation.")
     } else {
         SUBDIRS += mapboxgl ../../3rdparty/mapbox-gl-native
diff --git a/src/plugins/geoservices/mapboxgl/qmapboxglstylechange.cpp b/src/plugins/geoservices/mapboxgl/qmapboxglstylechange.cpp
index c6972b074..f79f0a388 100644
--- a/src/plugins/geoservices/mapboxgl/qmapboxglstylechange.cpp
+++ b/src/plugins/geoservices/mapboxgl/qmapboxglstylechange.cpp
@@ -54,7 +54,7 @@ QString formatPropertyName(QString *name)
 
 bool isImmutableProperty(const QString &name)
 {
-    return name == QStringLiteral("type") || name == QStringLiteral("layer") || name == QStringLiteral("class");
+    return name == QStringLiteral("type") || name == QStringLiteral("layer");
 }
 
 QString getId(QDeclarativeGeoMapItemBase *mapItem)
@@ -288,7 +288,7 @@ QMapboxGLStyleSetPaintProperty::QMapboxGLStyleSetPaintProperty(const QString& la
 
 void QMapboxGLStyleSetPaintProperty::apply(QMapboxGL *map)
 {
-    map->setPaintProperty(m_layer, m_property, m_value, m_class);
+    map->setPaintProperty(m_layer, m_property, m_value);
 }
 
 QList<QSharedPointer<QMapboxGLStyleChange>> QMapboxGLStyleSetPaintProperty::fromMapParameter(QGeoMapParameter *param)
@@ -313,7 +313,6 @@ QList<QSharedPointer<QMapboxGLStyleChange>> QMapboxGLStyleSetPaintProperty::from
 
         paint->m_layer = param->property("layer").toString();
         paint->m_property = formatPropertyName(&name);
-        paint->m_class = param->property("class").toString();
 
         changes << QSharedPointer<QMapboxGLStyleChange>(paint);
     }
@@ -399,15 +398,30 @@ QSharedPointer<QMapboxGLStyleChange> QMapboxGLStyleAddLayer::fromMapParameter(QG
     Q_ASSERT(param->type() == "layer");
 
     auto layer = new QMapboxGLStyleAddLayer();
-    layer->m_params[QStringLiteral("id")] = param->property("name");
-    layer->m_params[QStringLiteral("source")] = param->property("source");
-    layer->m_params[QStringLiteral("type")] = param->property("layerType");
 
-    if (param->property("sourceLayer").isValid()) {
-        layer->m_params[QStringLiteral("source-layer")] = param->property("sourceLayer");
-    }
+    static const QStringList layerProperties = QStringList()
+        << QStringLiteral("name") << QStringLiteral("layerType") << QStringLiteral("before");
 
-    layer->m_before = param->property("before").toString();
+    // Offset objectName and type properties.
+    for (int i = 2; i < param->metaObject()->propertyCount(); ++i) {
+        QString name = param->metaObject()->property(i).name();
+        QVariant value = param->property(name.toLatin1());
+
+        switch (layerProperties.indexOf(name)) {
+        case -1:
+            layer->m_params[formatPropertyName(&name)] = value;
+            break;
+        case 0: // name
+            layer->m_params[QStringLiteral("id")] = value;
+            break;
+        case 1: // layerType
+            layer->m_params[QStringLiteral("type")] = value;
+            break;
+        case 2: // before
+            layer->m_before = value.toString();
+            break;
+        }
+    }
 
     return QSharedPointer<QMapboxGLStyleChange>(layer);
 }
diff --git a/src/plugins/geoservices/mapboxgl/qmapboxglstylechange_p.h b/src/plugins/geoservices/mapboxgl/qmapboxglstylechange_p.h
index 9164591ae..aa81d89f0 100644
--- a/src/plugins/geoservices/mapboxgl/qmapboxglstylechange_p.h
+++ b/src/plugins/geoservices/mapboxgl/qmapboxglstylechange_p.h
@@ -102,7 +102,6 @@ private:
     QString m_layer;
     QString m_property;
     QVariant m_value;
-    QString m_class;
 };
 
 class QMapboxGLStyleAddLayer : public QMapboxGLStyleChange
-- 
GitLab