summaryrefslogtreecommitdiff
path: root/src/positioning
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2019-05-02 18:53:35 +0200
committerpaolo <paolo.angelelli@qt.io>2019-07-24 16:25:44 +0200
commitf8694e1f3430b7851fc90e26c6d778a86219379a (patch)
treefbe92684c4458431bf29d8b68d8cddea7b8e496a /src/positioning
parent17e3f08377c34d301401fbd3c40b525790fcd9a5 (diff)
downloadqtlocation-f8694e1f3430b7851fc90e26c6d778a86219379a.tar.gz
Allow setting backend properties of positioning plugins
This change adds a pair of setter/getter to specify positioning backend properties at runtime, both in QGeoPositionInfoSource and QDeclarativePositionSource. Task-number: QTBUG-66304 Change-Id: Iea9421fb708879bee5c62c4afaf45cbda57f50bb Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/positioning')
-rw-r--r--src/positioning/qgeopositioninfosource.cpp54
-rw-r--r--src/positioning/qgeopositioninfosource.h6
-rw-r--r--src/positioning/qgeopositioninfosource_p.h6
3 files changed, 65 insertions, 1 deletions
diff --git a/src/positioning/qgeopositioninfosource.cpp b/src/positioning/qgeopositioninfosource.cpp
index 29a0d019..69fcdef0 100644
--- a/src/positioning/qgeopositioninfosource.cpp
+++ b/src/positioning/qgeopositioninfosource.cpp
@@ -108,6 +108,11 @@ QGeoPositionInfoSourcePrivate *QGeoPositionInfoSourcePrivate::get(const QGeoPosi
return source.d;
}
+QGeoPositionInfoSourcePrivate::~QGeoPositionInfoSourcePrivate()
+{
+
+}
+
void QGeoPositionInfoSourcePrivate::loadMeta()
{
metaData = plugins().value(providerName);
@@ -128,6 +133,16 @@ void QGeoPositionInfoSourcePrivate::loadPlugin()
factory = factoryV2;
}
+bool QGeoPositionInfoSourcePrivate::setBackendProperty(const QString &/*name*/, QVariant /*value*/)
+{
+ return false;
+}
+
+QVariant QGeoPositionInfoSourcePrivate::backendProperty(const QString &/*name*/) const
+{
+ return QVariant();
+}
+
QHash<QString, QJsonObject> QGeoPositionInfoSourcePrivate::plugins(bool reload)
{
static QHash<QString, QJsonObject> plugins;
@@ -216,6 +231,36 @@ QString QGeoPositionInfoSource::sourceName() const
}
/*!
+ Sets the backend-specific property named \a name to \a value.
+ Returns \c true on success, \c false otherwise.
+ Backend-specific properties can be used to configure the positioning subsystem behavior
+ at runtime.
+ Supported backend-specific properties are listed and described in
+ \l {Qt Positioning plugins#Default plugins}.
+
+ \sa backendProperty
+ \since Qt 5.14
+*/
+bool QGeoPositionInfoSource::setBackendProperty(const QString &name, QVariant value)
+{
+ return d->setBackendProperty(name, value);
+}
+
+/*!
+ Returns the value of the backend-specific property named \a name, if present.
+ Otherwise, the returned value will be invalid.
+ Supported backend-specific properties are listed and described in
+ \l {Qt Positioning plugins#Default plugins}.
+
+ \sa setBackendProperty
+ \since Qt 5.14
+*/
+QVariant QGeoPositionInfoSource::backendProperty(const QString &name) const
+{
+ return d->backendProperty(name);
+}
+
+/*!
\property QGeoPositionInfoSource::updateInterval
\brief This property holds the requested interval in milliseconds between each update.
@@ -382,6 +427,15 @@ QStringList QGeoPositionInfoSource::availableSources()
return plugins;
}
+QGeoPositionInfoSource::QGeoPositionInfoSource(QGeoPositionInfoSourcePrivate &dd, QObject *parent)
+: QObject(parent),
+ d(&dd)
+{
+ qRegisterMetaType<QGeoPositionInfo>();
+ d->interval = 0;
+ d->methods = NoPositioningMethods;
+}
+
/*!
\fn QGeoPositionInfo QGeoPositionInfoSource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const = 0;
diff --git a/src/positioning/qgeopositioninfosource.h b/src/positioning/qgeopositioninfosource.h
index 23b3ac46..eaf5e106 100644
--- a/src/positioning/qgeopositioninfosource.h
+++ b/src/positioning/qgeopositioninfosource.h
@@ -87,6 +87,9 @@ public:
QString sourceName() const;
+ bool setBackendProperty(const QString &name, QVariant value);
+ QVariant backendProperty(const QString &name) const;
+
static QGeoPositionInfoSource *createDefaultSource(QObject *parent);
static QGeoPositionInfoSource *createDefaultSource(const QVariantMap &parameters, QObject *parent);
static QGeoPositionInfoSource *createSource(const QString &sourceName, QObject *parent);
@@ -106,6 +109,9 @@ Q_SIGNALS:
void error(QGeoPositionInfoSource::Error);
void supportedPositioningMethodsChanged();
+protected:
+ QGeoPositionInfoSource(QGeoPositionInfoSourcePrivate &dd, QObject *parent);
+
private:
Q_DISABLE_COPY(QGeoPositionInfoSource)
QGeoPositionInfoSourcePrivate *d;
diff --git a/src/positioning/qgeopositioninfosource_p.h b/src/positioning/qgeopositioninfosource_p.h
index f5f85ec9..ccd92a4e 100644
--- a/src/positioning/qgeopositioninfosource_p.h
+++ b/src/positioning/qgeopositioninfosource_p.h
@@ -51,6 +51,7 @@
// We mean it.
//
+#include <QtPositioning/private/qpositioningglobal_p.h>
#include "qgeopositioninfosource.h"
#include "qgeopositioninfosourcefactory.h"
#include <QJsonObject>
@@ -60,10 +61,11 @@
QT_BEGIN_NAMESPACE
-class QGeoPositionInfoSourcePrivate
+class Q_POSITIONING_PRIVATE_EXPORT QGeoPositionInfoSourcePrivate
{
public:
static QGeoPositionInfoSourcePrivate *get(const QGeoPositionInfoSource &source);
+ virtual ~QGeoPositionInfoSourcePrivate();
int interval;
QGeoPositionInfoSource::PositioningMethods methods;
@@ -74,6 +76,8 @@ public:
void loadMeta();
void loadPlugin();
+ virtual bool setBackendProperty(const QString &name, QVariant value);
+ virtual QVariant backendProperty(const QString &name) const;
static QHash<QString, QJsonObject> plugins(bool reload = false);
static void loadPluginMetadata(QHash<QString, QJsonObject> &list);