diff options
author | Oliver Wolff <oliver.wolff@qt.io> | 2019-01-03 14:01:17 +0100 |
---|---|---|
committer | Oliver Wolff <oliver.wolff@qt.io> | 2019-01-14 12:43:17 +0000 |
commit | e9489c97823e89feadb96df5e299b4e981ba667c (patch) | |
tree | f08170b1962bbe6c770245a85ad12397f5a7589e | |
parent | d733cca4369f283dd0a070caf714f90a82bbced8 (diff) |
winrt: Implement supportedPositioningMethodsChanged
Task-number: QTBUG-66427
Change-Id: I6cccb1d62c116e762e073e996e5932c7351787d9
Reviewed-by: Miguel Costa <miguel.costa@qt.io>
-rw-r--r-- | src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp b/src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp index a3e8cf5d..a720f104 100644 --- a/src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp +++ b/src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp @@ -574,10 +574,17 @@ HRESULT QGeoPositionInfoSourceWinRT::onPositionChanged(IGeolocator *locator, IPo return S_OK; } +static inline bool isDisabledStatus(PositionStatus status) +{ + return status == PositionStatus_NoData || status == PositionStatus_Disabled + || status == PositionStatus_NotAvailable; +} + HRESULT QGeoPositionInfoSourceWinRT::onStatusChanged(IGeolocator *, IStatusChangedEventArgs *args) { Q_D(QGeoPositionInfoSourceWinRT); + const PositionStatus oldStatus = d->positionStatus; HRESULT hr = args->get_Status(&d->positionStatus); RETURN_HR_IF_FAILED("Could not obtain position status"); qCDebug(lcPositioningWinRT) << __FUNCTION__ << d->positionStatus; @@ -599,6 +606,9 @@ HRESULT QGeoPositionInfoSourceWinRT::onStatusChanged(IGeolocator *, IStatusChang QGeoPositionInfoSource::UnknownSourceError)); } + if (isDisabledStatus(oldStatus) != isDisabledStatus(d->positionStatus)) + emit supportedPositioningMethodsChanged(); + return S_OK; } |