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>
This commit is contained in:
Dirk Hohndel 2015-11-11 12:34:56 -08:00
parent a29e74e2e9
commit cd7d6ae6e5
5 changed files with 46 additions and 0 deletions

View file

@ -22,6 +22,21 @@ GpsLocation::GpsLocation(QObject *parent)
status("don't have GPS source"); 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) void GpsLocation::newPosition(QGeoPositionInfo pos)
{ {
QString msg("received new position %1"); QString msg("received new position %1");

View file

@ -20,6 +20,7 @@ private:
signals: signals:
public slots: public slots:
void serviceEnable(bool toggle);
void newPosition(QGeoPositionInfo pos); void newPosition(QGeoPositionInfo pos);
void updateTimeout(); void updateTimeout();
}; };

View file

@ -69,6 +69,15 @@ ApplicationWindow {
} }
} }
MenuItem {
text: "Run location service"
checkable: true
checked: manager.locationServiceEnabled
onToggled: {
manager.setLocationServiceEnabled(checked);
}
}
MenuItem { MenuItem {
text: "View Log" text: "View Log"
onTriggered: { onTriggered: {

View file

@ -19,6 +19,7 @@ QMLManager::QMLManager()
{ {
// create location manager service // create location manager service
locationProvider = new GpsLocation(this); locationProvider = new GpsLocation(this);
setLocationServiceEnabled(false);
// Initialize cloud credentials. // Initialize cloud credentials.
setCloudUserName(prefs.cloud_storage_email); setCloudUserName(prefs.cloud_storage_email);
@ -174,6 +175,16 @@ void QMLManager::setSaveCloudPassword(bool saveCloudPassword)
m_saveCloudPassword = 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 QString QMLManager::cloudPassword() const
{ {

View file

@ -4,6 +4,8 @@
#include <QObject> #include <QObject>
#include <QString> #include <QString>
#include "qt-mobile/gpslocation.h"
void qmlUiShowMessage(const char *errorString); void qmlUiShowMessage(const char *errorString);
class QMLManager : public QObject class QMLManager : public QObject
@ -13,6 +15,7 @@ class QMLManager : public QObject
Q_PROPERTY(QString cloudPassword READ cloudPassword WRITE setCloudPassword NOTIFY cloudPasswordChanged) Q_PROPERTY(QString cloudPassword READ cloudPassword WRITE setCloudPassword NOTIFY cloudPasswordChanged)
Q_PROPERTY(bool saveCloudPassword READ saveCloudPassword WRITE setSaveCloudPassword NOTIFY saveCloudPasswordChanged) Q_PROPERTY(bool saveCloudPassword READ saveCloudPassword WRITE setSaveCloudPassword NOTIFY saveCloudPasswordChanged)
Q_PROPERTY(QString logText READ logText WRITE setLogText NOTIFY logTextChanged) Q_PROPERTY(QString logText READ logText WRITE setLogText NOTIFY logTextChanged)
Q_PROPERTY(bool locationServiceEnabled READ locationServiceEnabled WRITE setLocationServiceEnabled NOTIFY locationServiceEnabledChanged)
public: public:
QMLManager(); QMLManager();
~QMLManager(); ~QMLManager();
@ -26,6 +29,9 @@ public:
bool saveCloudPassword() const; bool saveCloudPassword() const;
void setSaveCloudPassword(bool saveCloudPassword); void setSaveCloudPassword(bool saveCloudPassword);
bool locationServiceEnabled() const;
void setLocationServiceEnabled(bool locationServiceEnable);
QString logText() const; QString logText() const;
void setLogText(const QString &logText); void setLogText(const QString &logText);
void appendTextToLog(const QString &newText); void appendTextToLog(const QString &newText);
@ -36,16 +42,20 @@ public slots:
void commitChanges(QString diveId, QString suit, QString buddy, QString diveMaster, QString notes); void commitChanges(QString diveId, QString suit, QString buddy, QString diveMaster, QString notes);
void saveChanges(); void saveChanges();
void addDive(); void addDive();
private: private:
QString m_cloudUserName; QString m_cloudUserName;
QString m_cloudPassword; QString m_cloudPassword;
bool m_saveCloudPassword; bool m_saveCloudPassword;
QString m_logText; QString m_logText;
bool m_locationServiceEnabled;
GpsLocation *locationProvider;
signals: signals:
void cloudUserNameChanged(); void cloudUserNameChanged();
void cloudPasswordChanged(); void cloudPasswordChanged();
void saveCloudPasswordChanged(); void saveCloudPasswordChanged();
void locationServiceEnabledChanged();
void logTextChanged(); void logTextChanged();
}; };