From 436d103654ec3382669625128fc6d074b10f03ff Mon Sep 17 00:00:00 2001 From: Paolo Angelelli Date: Tue, 23 Apr 2019 16:31:49 +0200 Subject: Accept and honor PluginParameters in PositionSource elements This patch implements the support for PluginParameters inside PositionSources. Task-number: QTBUG-66304 Change-Id: Ia28e1c620b6f6abc462a0e4c68a0ff517a40cfa9 Reviewed-by: Alex Blasche --- src/positioningquick/qdeclarativepositionsource_p.h | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src/positioningquick/qdeclarativepositionsource_p.h') diff --git a/src/positioningquick/qdeclarativepositionsource_p.h b/src/positioningquick/qdeclarativepositionsource_p.h index c6daaae5..7e389b85 100644 --- a/src/positioningquick/qdeclarativepositionsource_p.h +++ b/src/positioningquick/qdeclarativepositionsource_p.h @@ -56,7 +56,8 @@ #include #include #include -#include +#include +#include QT_BEGIN_NAMESPACE @@ -76,8 +77,10 @@ class Q_POSITIONINGQUICK_PRIVATE_EXPORT QDeclarativePositionSource : public QObj Q_PROPERTY(PositioningMethods preferredPositioningMethods READ preferredPositioningMethods WRITE setPreferredPositioningMethods NOTIFY preferredPositioningMethodsChanged) Q_PROPERTY(SourceError sourceError READ sourceError NOTIFY sourceErrorChanged) Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(QQmlListProperty parameters READ parameters REVISION 14) Q_ENUMS(PositioningMethod) + Q_CLASSINFO("DefaultProperty", "parameters") Q_INTERFACES(QQmlParserStatus) public: @@ -121,6 +124,8 @@ public: PositioningMethods preferredPositioningMethods() const; SourceError sourceError() const; QGeoPositionInfoSource *positionSource() const; + QQmlListProperty parameters(); + QVariantMap parameterMap() const; // Virtuals from QQmlParserStatus void classBegin() { } @@ -149,10 +154,18 @@ private Q_SLOTS: void socketConnected(); void socketError(QAbstractSocket::SocketError error); void updateTimeoutReceived(); + void onParameterInitialized(); private: void setPosition(const QGeoPositionInfo &pi); void setSource(QGeoPositionInfoSource *source); + bool parametersReady(); + void tryAttach(const QString &name, bool useFallback = true); + + static void parameter_append(QQmlListProperty *prop, QDeclarativePluginParameter *mapObject); + static int parameter_count(QQmlListProperty *prop); + static QDeclarativePluginParameter *parameter_at(QQmlListProperty *prop, int index); + static void parameter_clear(QQmlListProperty *prop); QGeoPositionInfoSource *m_positionSource; QDeclarativePosition m_position; @@ -161,10 +174,14 @@ private: QTcpSocket *m_nmeaSocket; QString m_nmeaFileName; QUrl m_nmeaSource; + QString m_providerName; bool m_active; bool m_singleUpdate; int m_updateInterval; SourceError m_sourceError; + QList m_parameters; + bool m_componentComplete = false; + bool m_parametersInitialized = false; }; QT_END_NAMESPACE -- cgit v1.2.1