diff --git a/platform/qt/include/qmapboxgl.hpp b/platform/qt/include/qmapboxgl.hpp index 7a7389bfe..e7f363c05 100644 --- a/platform/qt/include/qmapboxgl.hpp +++ b/platform/qt/include/qmapboxgl.hpp @@ -75,6 +75,7 @@ class Q_DECL_EXPORT QMapboxGL : public QObject Q_PROPERTY(double zoom READ zoom WRITE setZoom) Q_PROPERTY(double bearing READ bearing WRITE setBearing) Q_PROPERTY(double pitch READ pitch WRITE setPitch) + Q_ENUMS(MapChange) public: // Determines the orientation of the map. @@ -85,6 +86,24 @@ public: NorthLeftwards, }; + // Reflects mbgl::MapChange. + enum MapChange { + MapChangeRegionWillChange = 0, + MapChangeRegionWillChangeAnimated = 1, + MapChangeRegionIsChanging = 2, + MapChangeRegionDidChange = 3, + MapChangeRegionDidChangeAnimated = 4, + MapChangeWillStartLoadingMap = 5, + MapChangeDidFinishLoadingMap = 6, + MapChangeDidFailLoadingMap = 7, + MapChangeWillStartRenderingFrame = 8, + MapChangeDidFinishRenderingFrame = 9, + MapChangeDidFinishRenderingFrameFullyRendered = 10, + MapChangeWillStartRenderingMap = 11, + MapChangeDidFinishRenderingMap = 12, + MapChangeDidFinishRenderingMapFullyRendered = 13 + }; + QMapboxGL(QObject *parent = 0, const QMapboxGLSettings& = QMapboxGLSettings()); virtual ~QMapboxGL(); @@ -182,7 +201,7 @@ public slots: signals: void needsRendering(); - void mapRegionDidChange(); + void mapChanged(QMapboxGL::MapChange); private: Q_DISABLE_COPY(QMapboxGL) @@ -190,4 +209,6 @@ private: QMapboxGLPrivate *d_ptr; }; +Q_DECLARE_METATYPE(QMapboxGL::MapChange); + #endif // QMAPBOXGL_H diff --git a/platform/qt/src/qmapboxgl.cpp b/platform/qt/src/qmapboxgl.cpp index 01f0ad75a..5f580c6f3 100644 --- a/platform/qt/src/qmapboxgl.cpp +++ b/platform/qt/src/qmapboxgl.cpp @@ -584,9 +584,11 @@ QMapboxGLPrivate::QMapboxGLPrivate(QMapboxGL *q, const QMapboxGLSettings &settin static_cast(settings.contextMode()), static_cast(settings.constrainMode()))) { + qRegisterMetaType("QMapboxGL::MapChange"); + fileSourceObj->setAccessToken(settings.accessToken().toStdString()); connect(this, SIGNAL(needsRendering()), q_ptr, SIGNAL(needsRendering()), Qt::QueuedConnection); - connect(this, SIGNAL(mapRegionDidChange()), q_ptr, SIGNAL(mapRegionDidChange())); + connect(this, SIGNAL(mapChanged(QMapboxGL::MapChange)), q_ptr, SIGNAL(mapChanged(QMapboxGL::MapChange)), Qt::QueuedConnection); } QMapboxGLPrivate::~QMapboxGLPrivate() @@ -619,16 +621,7 @@ void QMapboxGLPrivate::invalidate() void QMapboxGLPrivate::notifyMapChange(mbgl::MapChange change) { - // Map thread. - switch (change) { - case mbgl::MapChangeRegionDidChange: - case mbgl::MapChangeRegionDidChangeAnimated: - case mbgl::MapChangeRegionIsChanging: - emit mapRegionDidChange(); - break; - default: - break; - } + emit mapChanged(static_cast(change)); } void QMapboxGLPrivate::connectionEstablished() diff --git a/platform/qt/src/qmapboxgl_p.hpp b/platform/qt/src/qmapboxgl_p.hpp index c52007321..1e52f4336 100644 --- a/platform/qt/src/qmapboxgl_p.hpp +++ b/platform/qt/src/qmapboxgl_p.hpp @@ -11,11 +11,6 @@ #include #include -#include - -class QMapboxGL; -class QMapboxGLSettings; - class QMapboxGLPrivate : public QObject, public mbgl::View { Q_OBJECT @@ -50,8 +45,8 @@ public slots: void connectionEstablished(); signals: - void mapRegionDidChange(); void needsRendering(); + void mapChanged(QMapboxGL::MapChange); }; #endif // QMAPBOXGL_P_H