summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Wolff <oliver.wolff@qt.io>2019-01-03 14:01:17 +0100
committerOliver Wolff <oliver.wolff@qt.io>2019-01-14 12:43:17 +0000
commite9489c97823e89feadb96df5e299b4e981ba667c (patch)
treef08170b1962bbe6c770245a85ad12397f5a7589e
parentd733cca4369f283dd0a070caf714f90a82bbced8 (diff)
downloadqtlocation-e9489c97823e89feadb96df5e299b4e981ba667c.tar.gz
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.cpp10
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;
}