diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2015-11-11 12:34:56 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-11-11 15:28:10 -0800 |
commit | cd7d6ae6e51a8422a141fc389b2eca232b7e93c5 (patch) | |
tree | 055252befcf672c1a1355329bc5e981f6b7ad988 | |
parent | a29e74e2e949696c4ffdefeedad22ae1795f024c (diff) | |
download | subsurface-cd7d6ae6e51a8422a141fc389b2eca232b7e93c5.tar.gz |
Location service: toggle the service from the main menu
That way we don't track the user's location until explicitly asked to do
so.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | qt-mobile/gpslocation.cpp | 15 | ||||
-rw-r--r-- | qt-mobile/gpslocation.h | 1 | ||||
-rw-r--r-- | qt-mobile/qml/main.qml | 9 | ||||
-rw-r--r-- | qt-mobile/qmlmanager.cpp | 11 | ||||
-rw-r--r-- | qt-mobile/qmlmanager.h | 10 |
5 files changed, 46 insertions, 0 deletions
diff --git a/qt-mobile/gpslocation.cpp b/qt-mobile/gpslocation.cpp index fea313950..d1c5c4588 100644 --- a/qt-mobile/gpslocation.cpp +++ b/qt-mobile/gpslocation.cpp @@ -22,6 +22,21 @@ GpsLocation::GpsLocation(QObject *parent) status("don't have GPS source"); } } + +void GpsLocation::serviceEnable(bool toggle) +{ + if (!gpsSource) + return; + + if (toggle) { + gpsSource->startUpdates(); + status("Starting Subsurface GPS service"); + } else { + gpsSource->stopUpdates(); + status("Stopping Subsurface GPS service"); + } +} + void GpsLocation::newPosition(QGeoPositionInfo pos) { QString msg("received new position %1"); diff --git a/qt-mobile/gpslocation.h b/qt-mobile/gpslocation.h index a21372080..b140f705e 100644 --- a/qt-mobile/gpslocation.h +++ b/qt-mobile/gpslocation.h @@ -20,6 +20,7 @@ private: signals: public slots: + void serviceEnable(bool toggle); void newPosition(QGeoPositionInfo pos); void updateTimeout(); }; diff --git a/qt-mobile/qml/main.qml b/qt-mobile/qml/main.qml index b52fda057..2a4b8f432 100644 --- a/qt-mobile/qml/main.qml +++ b/qt-mobile/qml/main.qml @@ -70,6 +70,15 @@ ApplicationWindow { } MenuItem { + text: "Run location service" + checkable: true + checked: manager.locationServiceEnabled + onToggled: { + manager.setLocationServiceEnabled(checked); + } + } + + MenuItem { text: "View Log" onTriggered: { stackView.push(logWindow) diff --git a/qt-mobile/qmlmanager.cpp b/qt-mobile/qmlmanager.cpp index 3459175f2..1f2dd4c98 100644 --- a/qt-mobile/qmlmanager.cpp +++ b/qt-mobile/qmlmanager.cpp @@ -19,6 +19,7 @@ QMLManager::QMLManager() { // create location manager service locationProvider = new GpsLocation(this); + setLocationServiceEnabled(false); // Initialize cloud credentials. setCloudUserName(prefs.cloud_storage_email); @@ -174,6 +175,16 @@ void QMLManager::setSaveCloudPassword(bool saveCloudPassword) m_saveCloudPassword = saveCloudPassword; } +bool QMLManager::locationServiceEnabled() const +{ + return m_locationServiceEnabled; +} + +void QMLManager::setLocationServiceEnabled(bool locationServiceEnabled) +{ + m_locationServiceEnabled = locationServiceEnabled; + locationProvider->serviceEnable(m_locationServiceEnabled); +} QString QMLManager::cloudPassword() const { diff --git a/qt-mobile/qmlmanager.h b/qt-mobile/qmlmanager.h index 705e57cf3..99e83c277 100644 --- a/qt-mobile/qmlmanager.h +++ b/qt-mobile/qmlmanager.h @@ -4,6 +4,8 @@ #include <QObject> #include <QString> +#include "qt-mobile/gpslocation.h" + void qmlUiShowMessage(const char *errorString); class QMLManager : public QObject @@ -13,6 +15,7 @@ class QMLManager : public QObject Q_PROPERTY(QString cloudPassword READ cloudPassword WRITE setCloudPassword NOTIFY cloudPasswordChanged) Q_PROPERTY(bool saveCloudPassword READ saveCloudPassword WRITE setSaveCloudPassword NOTIFY saveCloudPasswordChanged) Q_PROPERTY(QString logText READ logText WRITE setLogText NOTIFY logTextChanged) + Q_PROPERTY(bool locationServiceEnabled READ locationServiceEnabled WRITE setLocationServiceEnabled NOTIFY locationServiceEnabledChanged) public: QMLManager(); ~QMLManager(); @@ -26,6 +29,9 @@ public: bool saveCloudPassword() const; void setSaveCloudPassword(bool saveCloudPassword); + bool locationServiceEnabled() const; + void setLocationServiceEnabled(bool locationServiceEnable); + QString logText() const; void setLogText(const QString &logText); void appendTextToLog(const QString &newText); @@ -36,16 +42,20 @@ public slots: void commitChanges(QString diveId, QString suit, QString buddy, QString diveMaster, QString notes); void saveChanges(); void addDive(); + private: QString m_cloudUserName; QString m_cloudPassword; bool m_saveCloudPassword; QString m_logText; + bool m_locationServiceEnabled; + GpsLocation *locationProvider; signals: void cloudUserNameChanged(); void cloudPasswordChanged(); void saveCloudPasswordChanged(); + void locationServiceEnabledChanged(); void logTextChanged(); }; |