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");
}
}
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");

View file

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

View file

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

View file

@ -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
{

View file

@ -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();
};