From e9489c97823e89feadb96df5e299b4e981ba667c Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Thu, 3 Jan 2019 14:01:17 +0100 Subject: winrt: Implement supportedPositioningMethodsChanged Task-number: QTBUG-66427 Change-Id: I6cccb1d62c116e762e073e996e5932c7351787d9 Reviewed-by: Miguel Costa --- src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src') 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; } -- cgit v1.2.1