diff options
Diffstat (limited to 'src/plugins')
7 files changed, 49 insertions, 26 deletions
diff --git a/src/plugins/position/android/src/qgeosatelliteinfosource_android.cpp b/src/plugins/position/android/src/qgeosatelliteinfosource_android.cpp index 92ad0df4..65821bd8 100644 --- a/src/plugins/position/android/src/qgeosatelliteinfosource_android.cpp +++ b/src/plugins/position/android/src/qgeosatelliteinfosource_android.cpp @@ -109,8 +109,7 @@ void QGeoSatelliteInfoSourceAndroid::startUpdates() androidClassKeyForUpdate, false, updateInterval()); if (error != QGeoSatelliteInfoSource::NoError) { updatesRunning = false; - m_error = error; - emit QGeoSatelliteInfoSource::errorOccurred(m_error); + setError(error); } } @@ -129,7 +128,7 @@ void QGeoSatelliteInfoSourceAndroid::requestUpdate(int timeout) return; if (timeout != 0 && timeout < minimumUpdateInterval()) { - emit requestTimeout(); + setError(QGeoSatelliteInfoSource::UpdateTimeoutError); return; } @@ -148,8 +147,7 @@ void QGeoSatelliteInfoSourceAndroid::requestUpdate(int timeout) androidClassKeyForSingleRequest, true, timeout); if (error != QGeoSatelliteInfoSource::NoError) { requestTimer.stop(); - m_error = error; - emit QGeoSatelliteInfoSource::errorOccurred(m_error); + setError(error); } } @@ -185,7 +183,7 @@ void QGeoSatelliteInfoSourceAndroid::requestTimeout() const int count = m_satsInView.count(); if (!count) { - emit requestTimeout(); + setError(QGeoSatelliteInfoSource::UpdateTimeoutError); return; } @@ -209,8 +207,14 @@ void QGeoSatelliteInfoSourceAndroid::reconfigureRunningSystem() startUpdates(); } +void QGeoSatelliteInfoSourceAndroid::setError(QGeoSatelliteInfoSource::Error error) +{ + m_error = error; + if (m_error != QGeoSatelliteInfoSource::NoError) + emit QGeoSatelliteInfoSource::errorOccurred(m_error); +} + void QGeoSatelliteInfoSourceAndroid::locationProviderDisabled() { - m_error = QGeoSatelliteInfoSource::ClosedError; - emit QGeoSatelliteInfoSource::errorOccurred(m_error); + setError(QGeoSatelliteInfoSource::ClosedError); } diff --git a/src/plugins/position/android/src/qgeosatelliteinfosource_android_p.h b/src/plugins/position/android/src/qgeosatelliteinfosource_android_p.h index 150009a2..19b7b577 100644 --- a/src/plugins/position/android/src/qgeosatelliteinfosource_android_p.h +++ b/src/plugins/position/android/src/qgeosatelliteinfosource_android_p.h @@ -82,6 +82,7 @@ private Q_SLOTS: private: void reconfigureRunningSystem(); + void setError(QGeoSatelliteInfoSource::Error error); Error m_error; int androidClassKeyForUpdate; diff --git a/src/plugins/position/geoclue/qgeosatelliteinfosource_geocluemaster.cpp b/src/plugins/position/geoclue/qgeosatelliteinfosource_geocluemaster.cpp index a54a51a5..9986dd3b 100644 --- a/src/plugins/position/geoclue/qgeosatelliteinfosource_geocluemaster.cpp +++ b/src/plugins/position/geoclue/qgeosatelliteinfosource_geocluemaster.cpp @@ -121,7 +121,7 @@ void QGeoSatelliteInfoSourceGeoclueMaster::stopUpdates() void QGeoSatelliteInfoSourceGeoclueMaster::requestUpdate(int timeout) { if (timeout < minimumUpdateInterval() && timeout != 0) { - emit requestTimeout(); + setError(QGeoSatelliteInfoSource::UpdateTimeoutError); return; } @@ -176,6 +176,13 @@ void QGeoSatelliteInfoSourceGeoclueMaster::updateSatelliteInfo(int timestamp, in m_requestTimer.start(qMax(updateInterval(), minimumUpdateInterval())); } +void QGeoSatelliteInfoSourceGeoclueMaster::setError(QGeoSatelliteInfoSource::Error error) +{ + m_error = error; + if (m_error != QGeoSatelliteInfoSource::NoError) + emit QGeoSatelliteInfoSource::errorOccurred(m_error); +} + void QGeoSatelliteInfoSourceGeoclueMaster::requestUpdateTimeout() { // If we end up here, there has not been a valid satellite info update. @@ -185,7 +192,7 @@ void QGeoSatelliteInfoSourceGeoclueMaster::requestUpdateTimeout() emit satellitesInViewUpdated(m_inView); emit satellitesInUseUpdated(m_inUse); } else { - emit requestTimeout(); + setError(QGeoSatelliteInfoSource::UpdateTimeoutError); // Only stop satellite info if regular updates not active. cleanupSatelliteSource(); @@ -250,8 +257,7 @@ void QGeoSatelliteInfoSourceGeoclueMaster::positionProviderChanged(const QString } if (providerService.isEmpty() || providerPath.isEmpty()) { - m_error = AccessError; - emit QGeoSatelliteInfoSource::errorOccurred(m_error); + setError(QGeoSatelliteInfoSource::AccessError); return; } @@ -291,10 +297,8 @@ void QGeoSatelliteInfoSourceGeoclueMaster::satelliteChanged(const QDBusMessage & void QGeoSatelliteInfoSourceGeoclueMaster::configureSatelliteSource() { - if (!m_master->createMasterClient(Accuracy::Detailed, QGeoclueMaster::ResourceGps)) { - m_error = UnknownSourceError; - emit QGeoSatelliteInfoSource::errorOccurred(m_error); - } + if (!m_master->createMasterClient(Accuracy::Detailed, QGeoclueMaster::ResourceGps)) + setError(QGeoSatelliteInfoSource::UnknownSourceError); } void QGeoSatelliteInfoSourceGeoclueMaster::cleanupSatelliteSource() diff --git a/src/plugins/position/geoclue/qgeosatelliteinfosource_geocluemaster.h b/src/plugins/position/geoclue/qgeosatelliteinfosource_geocluemaster.h index 254a17ac..98da091d 100644 --- a/src/plugins/position/geoclue/qgeosatelliteinfosource_geocluemaster.h +++ b/src/plugins/position/geoclue/qgeosatelliteinfosource_geocluemaster.h @@ -87,6 +87,8 @@ private: void updateSatelliteInfo(int timestamp, int satellitesUsed, int satellitesVisible, const QList<int> &usedPrn, const QList<QGeoSatelliteInfo> &satInfos); + void setError(QGeoSatelliteInfoSource::Error error); + QGeoclueMaster *m_master; OrgFreedesktopGeoclueInterface *m_provider; diff --git a/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy.cpp b/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy.cpp index 2a3f31dc..6b1b430a 100644 --- a/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy.cpp +++ b/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy.cpp @@ -140,8 +140,9 @@ gchar *SatelliteGypsyEngine::eng_gconf_client_get_string(GConfClient *client, co return ::gconf_client_get_string(client, key, err); } -QGeoSatelliteInfoSourceGypsy::QGeoSatelliteInfoSourceGypsy(QObject *parent) : QGeoSatelliteInfoSource(parent), - m_engine(0), m_satellite(0), m_device(0), m_requestTimer(this), m_updatesOngoing(false), m_requestOngoing(false) +QGeoSatelliteInfoSourceGypsy::QGeoSatelliteInfoSourceGypsy(QObject *parent) + : QGeoSatelliteInfoSource(parent), m_engine(0), m_satellite(0), m_device(0), + m_requestTimer(this), m_updatesOngoing(false), m_requestOngoing(false) { m_requestTimer.setSingleShot(true); QObject::connect(&m_requestTimer, SIGNAL(timeout()), this, SLOT(requestUpdateTimeout())); @@ -290,7 +291,7 @@ int QGeoSatelliteInfoSourceGypsy::minimumUpdateInterval() const QGeoSatelliteInfoSource::Error QGeoSatelliteInfoSourceGypsy::error() const { - return NoError; + return m_error; } void QGeoSatelliteInfoSourceGypsy::startUpdates() @@ -322,7 +323,7 @@ void QGeoSatelliteInfoSourceGypsy::requestUpdate(int timeout) if (m_requestOngoing) return; if (timeout < 0) { - emit requestTimeout(); + setError(QGeoSatelliteInfoSource::UpdateTimeoutError); return; } m_requestOngoing = true; @@ -369,7 +370,14 @@ void QGeoSatelliteInfoSourceGypsy::requestUpdateTimeout() m_engine->eng_g_signal_handlers_disconnect_by_func(G_OBJECT(m_satellite), (void *)satellites_changed, this); } m_requestOngoing = false; - emit requestTimeout(); + setError(QGeoSatelliteInfoSource::UpdateTimeoutError); +} + +void QGeoSatelliteInfoSourceGypsy::setError(QGeoSatelliteInfoSource::Error error) +{ + m_error = error; + if (m_error != QGeoSatelliteInfoSource::NoError) + emit QGeoSatelliteInfoSource::errorOccurred(m_error); } QT_END_NAMESPACE diff --git a/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy_p.h b/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy_p.h index c28ca3a1..b393ce3f 100644 --- a/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy_p.h +++ b/src/plugins/position/gypsy/qgeosatelliteinfosource_gypsy_p.h @@ -121,6 +121,9 @@ signals: private slots: void requestUpdateTimeout(); +private: + void setError(QGeoSatelliteInfoSource::Error error); + protected: // Creates an engine which encapsulates all used symbols // that we want to be also able to mock. @@ -134,6 +137,7 @@ private: QTimer m_requestTimer; bool m_updatesOngoing; bool m_requestOngoing; + QGeoSatelliteInfoSource::Error m_error = QGeoSatelliteInfoSource::NoError; }; QT_END_NAMESPACE diff --git a/src/plugins/position/serialnmea/qnmeasatelliteinfosource.cpp b/src/plugins/position/serialnmea/qnmeasatelliteinfosource.cpp index d0a4d3b5..cb127218 100644 --- a/src/plugins/position/serialnmea/qnmeasatelliteinfosource.cpp +++ b/src/plugins/position/serialnmea/qnmeasatelliteinfosource.cpp @@ -108,7 +108,7 @@ public slots: public: - QGeoSatelliteInfoSource *m_source = nullptr; + QNmeaSatelliteInfoSource *m_source = nullptr; QGeoSatelliteInfoSource::Error m_satelliteError = QGeoSatelliteInfoSource::NoError; QPointer<QIODevice> m_device; struct Update { @@ -321,7 +321,7 @@ void QNmeaSatelliteInfoSourcePrivate::requestUpdate(int msec) return; if (msec <= 0 || msec < m_source->minimumUpdateInterval()) { - emit m_source->requestTimeout(); + m_source->setError(QGeoSatelliteInfoSource::UpdateTimeoutError); return; } @@ -332,7 +332,7 @@ void QNmeaSatelliteInfoSourcePrivate::requestUpdate(int msec) bool initialized = initialize(); if (!initialized) { - emit m_source->requestTimeout(); + m_source->setError(QGeoSatelliteInfoSource::UpdateTimeoutError); return; } @@ -356,7 +356,7 @@ void QNmeaSatelliteInfoSourcePrivate::emitPendingUpdate() } else { // invalid or not fresh update if (m_noUpdateLastInterval && !m_updateTimeoutSent) { m_updateTimeoutSent = true; - emit m_source->requestTimeout(); + m_source->setError(QGeoSatelliteInfoSource::UpdateTimeoutError); } m_noUpdateLastInterval = true; } @@ -371,7 +371,7 @@ void QNmeaSatelliteInfoSourcePrivate::sourceDataClosed() void QNmeaSatelliteInfoSourcePrivate::updateRequestTimeout() { m_requestTimer->stop(); - emit m_source->requestTimeout(); + m_source->setError(QGeoSatelliteInfoSource::UpdateTimeoutError); } void QNmeaSatelliteInfoSourcePrivate::readAvailableData() |