summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-11-11 12:34:56 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-11-11 15:28:10 -0800
commitcd7d6ae6e51a8422a141fc389b2eca232b7e93c5 (patch)
tree055252befcf672c1a1355329bc5e981f6b7ad988
parenta29e74e2e949696c4ffdefeedad22ae1795f024c (diff)
downloadsubsurface-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.cpp15
-rw-r--r--qt-mobile/gpslocation.h1
-rw-r--r--qt-mobile/qml/main.qml9
-rw-r--r--qt-mobile/qmlmanager.cpp11
-rw-r--r--qt-mobile/qmlmanager.h10
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();
};