From 26b2f917861e63091cf97a5acba04d7b813c2fed Mon Sep 17 00:00:00 2001 From: Vyacheslav Koscheev Date: Tue, 19 Jul 2016 18:01:42 +0600 Subject: Fix error status for QGeoPositionInfoSourceAndroid Task-number: QTBUG-54844 Change-Id: I8abdbb47c883099e7749c57e5010be1aa999e373 Reviewed-by: Alex Blasche --- .../android/src/qgeopositioninfosource_android.cpp | 33 ++++++++++++---------- .../android/src/qgeopositioninfosource_android_p.h | 1 + 2 files changed, 19 insertions(+), 15 deletions(-) (limited to 'src/plugins/position') diff --git a/src/plugins/position/android/src/qgeopositioninfosource_android.cpp b/src/plugins/position/android/src/qgeopositioninfosource_android.cpp index e3ef94cd..1035a7db 100644 --- a/src/plugins/position/android/src/qgeopositioninfosource_android.cpp +++ b/src/plugins/position/android/src/qgeopositioninfosource_android.cpp @@ -113,26 +113,32 @@ QGeoPositionInfoSource::Error QGeoPositionInfoSourceAndroid::error() const return m_error; } +void QGeoPositionInfoSourceAndroid::setError(Error error) +{ + // qDebug() << "setError: " << error; + if (error != QGeoPositionInfoSource::NoError) + { + m_error = error; + emit QGeoPositionInfoSource::error(m_error); + } +} + void QGeoPositionInfoSourceAndroid::startUpdates() { if (updatesRunning) return; if (preferredPositioningMethods() == 0) { - m_error = UnknownSourceError; - emit QGeoPositionInfoSource::error(m_error); - + setError(UnknownSourceError); return; } updatesRunning = true; QGeoPositionInfoSource::Error error = AndroidPositioning::startUpdates(androidClassKeyForUpdate); - //if (error != QGeoPositionInfoSource::NoError) { //TODO - if (error != 3) { + if (error != QGeoPositionInfoSource::NoError) updatesRunning = false; - m_error = error; - emit QGeoPositionInfoSource::error(m_error); - } + + setError(error); } void QGeoPositionInfoSourceAndroid::stopUpdates() @@ -166,12 +172,10 @@ void QGeoPositionInfoSourceAndroid::requestUpdate(int timeout) return; QGeoPositionInfoSource::Error error = AndroidPositioning::requestUpdate(androidClassKeyForSingleRequest); - //if (error != QGeoPositionInfoSource::NoError) { //TODO - if (error != 3) { + if (error != QGeoPositionInfoSource::NoError) m_requestTimer.stop(); - m_error = error; - emit QGeoPositionInfoSource::error(m_error); - } + + setError(error); } void QGeoPositionInfoSourceAndroid::processPositionUpdate(const QGeoPositionInfo &pInfo) @@ -195,8 +199,7 @@ void QGeoPositionInfoSourceAndroid::processSinglePositionUpdate(const QGeoPositi void QGeoPositionInfoSourceAndroid::locationProviderDisabled() { - m_error = QGeoPositionInfoSource::ClosedError; - emit QGeoPositionInfoSource::error(m_error); + setError(QGeoPositionInfoSource::ClosedError); } void QGeoPositionInfoSourceAndroid::requestTimeout() diff --git a/src/plugins/position/android/src/qgeopositioninfosource_android_p.h b/src/plugins/position/android/src/qgeopositioninfosource_android_p.h index cdff1e13..f56c7054 100644 --- a/src/plugins/position/android/src/qgeopositioninfosource_android_p.h +++ b/src/plugins/position/android/src/qgeopositioninfosource_android_p.h @@ -78,6 +78,7 @@ private Q_SLOTS: private: void reconfigureRunningSystem(); + void setError(Error error); bool updatesRunning; int androidClassKeyForUpdate; -- cgit v1.2.1