summaryrefslogtreecommitdiff
path: root/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Remove QtPositioning module from qtlocation.git6.2.46.2.36.2.26.2Ivan Solovev2021-11-021-458/+0
| | | | | | | | | | | | | | | Turns out that our CI does not support repos without any tests. This is treated like an error and leads to integration failure. This patch fixes it by disabling tests in coin/module_config.yaml. This config should be fixed when QtLocation tests are enabled Task-number: QTBUG-97084 Change-Id: Ib06e865fe2836806bbbee34345f06b471dd48660 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alex Blasche <alexander.blasche@qt.io> (cherry picked from commit 23f32792ad53e23bbafbff6d7667f0bb0f69fc53)
* GeoClue v2: do not use env variables and update docsIvan Solovev2021-07-301-10/+19
| | | | | | | | | | | | | | There is no need in using the environment variable to set the desktop id parameter. This patch introduces parsing of the desktop id parameter from the provided plugin parameters. It also introduces a separate page with the plugin documentation. Task-number: QTBUG-74995 Change-Id: Ie59e2410709dc9517b305f0b490d35c6718ce9ba Reviewed-by: Alex Blasche <alexander.blasche@qt.io> (cherry picked from commit 9a6f7a2d31829b541b688b68cff85ffaa1ee2d1c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* QtPositioning: reset errors properlyIvan Solovev2021-01-291-5/+11
| | | | | | | | | | | | | Calling startUpdates(), startMonitoring() or requestUpdate() on QGeoPositionInfoSource/QGeoSatelliteInfoSource/QGeoAreaMonitorSource subclasses effectively means starting a new work session, which means that we should not care about the previous errors. This patch resets the errors to Error::NoError in all subclasses when calling these methods. Task-number: QTBUG-90491 Change-Id: Ia9cf0345e8c672d47814d8d0a865cd23541af61a Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* QtPositioning: remove QGeoPositionInfoSource::updateTimeout signalIvan Solovev2021-01-261-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | A new Error::UpdateTimeoutError enum value is introduced instead. An errorOccurred() signal with this value is used to notify about update timeouts. As a result, an updateTimeout() signal is also removed from QML PositionSource object (QDeclarativePositionSource C++ class). It's also replaced by the sourceErrorChanged() signal with PositionSource.UpdateTimeoutError error value. Apart from that - several more warnings in the unit tests are fixed. [ChangeLog][QtPositioning][Important Behavior Changes] Removed QGeoPositionInfoSource::updateTimeout() signal. Use QGeoPositionInfoSource::errorOccurred() with a new Error::UpdateTimeoutError value instead. Removed PositionSource::updateTimeout() signal from QML. Use PositionSource::sourceErrorChanged() with a new PositionSource.UpdateTimeoutError value instead. Task-number: QTBUG-90491 Change-Id: I7458382a5cb7fdea192b3924baf9e86ee28d1028 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* QtPositioning: rename signal error() to errorOccurred()Ivan Solovev2021-01-251-1/+1
| | | | | | | | | | | | | Signal name was previouly clashing with the error() method. The new signal name is aligned with QtNetwork and QProcess [ChangeLog][QtPositioning][Important Behavior Changes] Rename signal error() to errorOccurred() in QGeoAreaMonitorSource, QGeoPositionInfoSource and QGeoSatelliteInfoSource Task-number: QTBUG-90491 Change-Id: I241322c6654e1c92e1a3c63a8958bcf96bf5f4f7 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Fix compilation with gcc 4.8Ville Voutilainen2018-12-031-1/+1
| | | | | | | GCC 4.8 doesn't like using QPointer in signal connections. Change-Id: I9504efb259712a65427ef1366ca562882085404e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Improvements to geoclue2 pluginAki Koskinen2018-09-171-76/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Relies on automatic service activation: https://dbus.freedesktop.org/doc/dbus-specification.html#message-bus-starting-services This means that the service isn't explicitly started but gets started automatically when a request to the service is made. It's also possible that the geoclue2 service gets shutdown during runtime (for example when no client is requesting updates for some time). Automatic service activation ensures, that the service gets (re)started whenever needed. Create the manager interface right in the constructor as there's no benefit in creating it lazily. Also, since automatic service activation is used, m_manager->isValid() can't be used, because it always returns false until the service has been (automatically) started. Always return correct values from supportedPositioningMethods(). The use of the m_manager->availableAccuracyLevel() shorthand helper doesn't tell the difference between an invalid property (for example if geoclue2 isn't available at all) and GCLUE_ACCURACY_LEVEL_NONE since both return 0. Getting the QVariant of the property is needed to distinguish those cases. An invalid QVariant means that we couldn't communicate to geoclue2. A QVariant that can be turned into 0 means GCLUE_ACCURACY_LEVEL_NONE. In this commit GCLUE_ACCURACY_LEVEL_NONE is also correctly turned into NoPositioningMethods. If client doesn't exist when startClient() is called, create a client first. It's also possible that a client is crerated more than once during runtime. For example, when the above mentioned automatic geoclue2 service shutdown takes place, the old client is no longer usable. Now in this case the old client gets discarded and a new client is created. Call startClient() in startUpdates() – because otherwise startUpdates() wouldn't really work. Remove the warning message from the beginning of configureClient(). It's quite OK that configureClient() gets called before m_client exists (it just doesn't do anything then). This was probably in place with the assumption that setUpdateInterval(), setPreferredPositioningMethods() and startUpdates() would get called in some specific order. But no such assumptions can be made. Delete client interface object once it's not usable anymore (either gives an error or is explicitly stopped). This way, a new client gets created once a client is needed again. Other minor changes: - In startClient(), check whether starting the client is needed before doing it. This removes the need to do any checks before calling this function. - In stopClient(), check whether stopping the client is OK before doing it. This removes the need to do any checks before calling this function. - Use QPointer for the D-Bus interface objects -> no need to set the pointers to nullptr after deletion. - Add explicit casts to few places that gave implicit signedness change warnings. Change-Id: If9db25775710fe64f272db222030e481533d9732 Reviewed-by: Volker Krause <volker.krause@kdab.com> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* Long live for the geoclue2 position pluginDenis Shienkov2018-08-161-0/+476
Geoclue2 requires the appropriate application's desktop id, to allow an access to the location service. This desktop id should be added to the /etc/geoclue/geoclue.conf file, e.g.: [my-app] allowed=true system=true users= Also, this desktop id should be imported to the Geoclue2 application via the QT_GEOCLUE_APP_DESKTOP_ID environment variable, e.g.: export QT_GEOCLUE_APP_DESKTOP_ID=my-app Note: Tested on stationar PC with the ArchLinux. Task-number: QTBUG-43435 Done-with: Volker Krause <vkrause@kde.org> Change-Id: I5cc204cca966cb23a59ccffbc83fd8dc7a7c4eb6 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>