summaryrefslogtreecommitdiff
path: root/src/plugins/position
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/position')
-rw-r--r--src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp29
-rw-r--r--src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2_p.h5
-rw-r--r--src/plugins/position/geoclue2/qgeopositioninfosourcefactory_geoclue2.cpp2
3 files changed, 24 insertions, 12 deletions
diff --git a/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp b/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp
index 34a1a035..3c78a075 100644
--- a/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp
+++ b/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp
@@ -68,6 +68,7 @@ enum GClueAccuracyLevel {
const char GEOCLUE2_SERVICE_NAME[] = "org.freedesktop.GeoClue2";
const int MINIMUM_UPDATE_INTERVAL = 1000;
const int UPDATE_TIMEOUT_COLD_START = 120000;
+static const auto desktopIdParameter = "desktopId";
static QString lastPositionFilePath()
{
@@ -77,7 +78,8 @@ static QString lastPositionFilePath()
} // namespace
-QGeoPositionInfoSourceGeoclue2::QGeoPositionInfoSourceGeoclue2(QObject *parent)
+QGeoPositionInfoSourceGeoclue2::QGeoPositionInfoSourceGeoclue2(const QVariantMap &parameters,
+ QObject *parent)
: QGeoPositionInfoSource(parent)
, m_requestTimer(new QTimer(this))
, m_manager(QLatin1String(GEOCLUE2_SERVICE_NAME),
@@ -85,6 +87,8 @@ QGeoPositionInfoSourceGeoclue2::QGeoPositionInfoSourceGeoclue2(QObject *parent)
QDBusConnection::systemBus(),
this)
{
+ parseParameters(parameters);
+
qDBusRegisterMetaType<Timestamp>();
restoreLastPosition();
@@ -347,19 +351,15 @@ bool QGeoPositionInfoSourceGeoclue2::configureClient()
if (!m_client)
return false;
- auto desktopId = QString::fromUtf8(qgetenv("QT_GEOCLUE_APP_DESKTOP_ID"));
- if (desktopId.isEmpty())
- desktopId = QCoreApplication::applicationName();
- if (desktopId.isEmpty()) {
- qCCritical(lcPositioningGeoclue2) << "Unable to configure the client "
- "due to the application desktop id "
- "is not set via QT_GEOCLUE_APP_DESKTOP_ID "
- "envirorment variable or QCoreApplication::applicationName";
+ if (m_desktopId.isEmpty()) {
+ qCCritical(lcPositioningGeoclue2)
+ << "Unable to configure the client due to the desktop id is not set via"
+ << desktopIdParameter << "plugin parameter or QCoreApplication::applicationName";
setError(AccessError);
return false;
}
- m_client->setDesktopId(desktopId);
+ m_client->setDesktopId(m_desktopId);
const auto msecs = updateInterval();
const uint secs = qMax(uint(msecs), 0u) / 1000u;
@@ -446,4 +446,13 @@ void QGeoPositionInfoSourceGeoclue2::handleNewLocation(const QDBusObjectPath &ol
stopClient();
}
+void QGeoPositionInfoSourceGeoclue2::parseParameters(const QVariantMap &parameters)
+{
+ if (parameters.contains(desktopIdParameter))
+ m_desktopId = parameters.value(desktopIdParameter).toString();
+
+ if (m_desktopId.isEmpty())
+ m_desktopId = QCoreApplication::applicationName();
+}
+
QT_END_NAMESPACE
diff --git a/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2_p.h b/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2_p.h
index 16f5b9a1..f5ec2b06 100644
--- a/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2_p.h
+++ b/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2_p.h
@@ -55,7 +55,8 @@ class QGeoPositionInfoSourceGeoclue2 : public QGeoPositionInfoSource
Q_OBJECT
public:
- explicit QGeoPositionInfoSourceGeoclue2(QObject *parent = nullptr);
+ explicit QGeoPositionInfoSourceGeoclue2(const QVariantMap &parameters,
+ QObject *parent = nullptr);
~QGeoPositionInfoSourceGeoclue2();
// From QGeoPositionInfoSource
@@ -82,6 +83,7 @@ private:
void requestUpdateTimeout();
void handleNewLocation(const QDBusObjectPath &oldLocation,
const QDBusObjectPath &newLocation);
+ void parseParameters(const QVariantMap &parameters);
QTimer *m_requestTimer = nullptr;
OrgFreedesktopGeoClue2ManagerInterface m_manager;
@@ -90,6 +92,7 @@ private:
bool m_lastPositionFromSatellite = false;
QGeoPositionInfoSource::Error m_error = NoError;
QGeoPositionInfo m_lastPosition;
+ QString m_desktopId;
};
QT_END_NAMESPACE
diff --git a/src/plugins/position/geoclue2/qgeopositioninfosourcefactory_geoclue2.cpp b/src/plugins/position/geoclue2/qgeopositioninfosourcefactory_geoclue2.cpp
index 68caba3a..68161f41 100644
--- a/src/plugins/position/geoclue2/qgeopositioninfosourcefactory_geoclue2.cpp
+++ b/src/plugins/position/geoclue2/qgeopositioninfosourcefactory_geoclue2.cpp
@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryGeoclue2::positionInfoSource(QObject *parent, const QVariantMap &parameters)
{
Q_UNUSED(parameters)
- return new QGeoPositionInfoSourceGeoclue2(parent);
+ return new QGeoPositionInfoSourceGeoclue2(parameters, parent);
}
QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryGeoclue2::satelliteInfoSource(QObject *parent, const QVariantMap &parameters)