summaryrefslogtreecommitdiffstats
path: root/qt-mobile
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-11-14 09:10:06 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-11-14 09:10:06 -0800
commit76d07635270bb3068b7d9a559b481d3c094f0d7b (patch)
treecd507fe34e03b8c5cc2c10e9d991a50f44635d9e /qt-mobile
parent24404a401d5a21134b153000fffc74bd429a0631 (diff)
downloadsubsurface-76d07635270bb3068b7d9a559b481d3c094f0d7b.tar.gz
Location service: make distance and time threshold configurable
Right now the distance is always in meters, the mobile app doesn't deal with units at all, anyway. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-mobile')
-rw-r--r--qt-mobile/gpslocation.cpp8
-rw-r--r--qt-mobile/qml/Preferences.qml24
-rw-r--r--qt-mobile/qmlmanager.cpp30
-rw-r--r--qt-mobile/qmlmanager.h18
4 files changed, 72 insertions, 8 deletions
diff --git a/qt-mobile/gpslocation.cpp b/qt-mobile/gpslocation.cpp
index fc9767c65..02b211631 100644
--- a/qt-mobile/gpslocation.cpp
+++ b/qt-mobile/gpslocation.cpp
@@ -43,10 +43,6 @@ void GpsLocation::serviceEnable(bool toggle)
}
}
-// these two need to become configurable
-#define MINTIME 600
-#define MINDIST 200
-
void GpsLocation::newPosition(QGeoPositionInfo pos)
{
time_t lastTime;
@@ -61,7 +57,9 @@ void GpsLocation::newPosition(QGeoPositionInfo pos)
}
// if we have no record stored or if at least the configured minimum
// time has passed or we moved at least the configured minimum distance
- if (!nr || pos.timestamp().toTime_t() > lastTime + MINTIME || lastCoord.distanceTo(pos.coordinate()) > MINDIST) {
+ if (!nr ||
+ pos.timestamp().toTime_t() > lastTime + prefs.time_threshold ||
+ lastCoord.distanceTo(pos.coordinate()) > prefs.distance_threshold) {
geoSettings->setValue("count", nr + 1);
geoSettings->setValue(QString("gpsFix%1_time").arg(nr), pos.timestamp().toTime_t());
geoSettings->setValue(QString("gpsFix%1_lat").arg(nr), rint(pos.coordinate().latitude() * 1000000));
diff --git a/qt-mobile/qml/Preferences.qml b/qt-mobile/qml/Preferences.qml
index 49ea7b057..f67f99ff7 100644
--- a/qt-mobile/qml/Preferences.qml
+++ b/qt-mobile/qml/Preferences.qml
@@ -90,6 +90,28 @@ Item {
Layout.fillWidth: true
}
+ Label {
+ text: "Distance threshold (meters)"
+ Layout.alignment: Qt.AlignRight
+ }
+
+ TextField {
+ id: distanceThreshold
+ text: manager.distanceThreshold
+ Layout.fillWidth: true
+ }
+
+ Label {
+ text: "Time threshold (minutes)"
+ Layout.alignment: Qt.AlignRight
+ }
+
+ TextField {
+ id: timeThreshold
+ text: manager.timeThreshold
+ Layout.fillWidth: true
+ }
+
Item { width: units.gridUnit; height: width }
Item {
height: saveButton.height
@@ -103,6 +125,8 @@ Item {
manager.cloudPassword = password.text
manager.saveCloudPassword = savePassword.checked
manager.ssrfGpsWebUserid = userid.text
+ manager.distanceThreshold = distanceThreshold.text
+ manager.timeThreshold = timeThreshold.text
manager.savePreferences()
stackView.pop()
}
diff --git a/qt-mobile/qmlmanager.cpp b/qt-mobile/qmlmanager.cpp
index 8dcc24395..fe8c5ed0a 100644
--- a/qt-mobile/qmlmanager.cpp
+++ b/qt-mobile/qmlmanager.cpp
@@ -26,6 +26,8 @@ QMLManager::QMLManager() :
setCloudPassword(prefs.cloud_storage_password);
setSaveCloudPassword(prefs.save_password_local);
setSsrfGpsWebUserid(prefs.userid);
+ setDistanceThreshold(prefs.distance_threshold);
+ setTimeThreshold(prefs.time_threshold / 60);
if (!same_string(prefs.cloud_storage_email, "") && !same_string(prefs.cloud_storage_password, ""))
loadDives();
}
@@ -38,6 +40,12 @@ void QMLManager::savePreferences()
{
QSettings s;
s.setValue("subsurface_webservice_uid", ssrfGpsWebUserid());
+ s.beginGroup("LocationService");
+ s.setValue("time_threshold", timeThreshold() * 60);
+ prefs.time_threshold = timeThreshold() * 60;
+ s.setValue("distance_threshold", distanceThreshold());
+ prefs.distance_threshold = distanceThreshold();
+ s.endGroup();
s.beginGroup("CloudStorage");
s.setValue("email", cloudUserName());
s.setValue("save_password_local", saveCloudPassword());
@@ -240,3 +248,25 @@ void QMLManager::setSsrfGpsWebUserid(const QString &userid)
m_ssrfGpsWebUserid = userid;
emit ssrfGpsWebUseridChanged();
}
+
+int QMLManager::distanceThreshold() const
+{
+ return m_distanceThreshold;
+}
+
+void QMLManager::setDistanceThreshold(int distance)
+{
+ m_distanceThreshold = distance;
+ emit distanceThresholdChanged();
+}
+
+int QMLManager::timeThreshold() const
+{
+ return m_timeThreshold;
+}
+
+void QMLManager::setTimeThreshold(int time)
+{
+ m_timeThreshold = time;
+ emit timeThresholdChanged();
+}
diff --git a/qt-mobile/qmlmanager.h b/qt-mobile/qmlmanager.h
index b71dcfec5..1d5f8e412 100644
--- a/qt-mobile/qmlmanager.h
+++ b/qt-mobile/qmlmanager.h
@@ -17,6 +17,8 @@ class QMLManager : public QObject
Q_PROPERTY(QString logText READ logText WRITE setLogText NOTIFY logTextChanged)
Q_PROPERTY(bool locationServiceEnabled READ locationServiceEnabled WRITE setLocationServiceEnabled NOTIFY locationServiceEnabledChanged)
Q_PROPERTY(QString ssrfGpsWebUserid READ ssrfGpsWebUserid WRITE setSsrfGpsWebUserid NOTIFY ssrfGpsWebUseridChanged)
+ Q_PROPERTY(int distanceThreshold READ distanceThreshold WRITE setDistanceThreshold NOTIFY distanceThresholdChanged)
+ Q_PROPERTY(int timeThreshold READ timeThreshold WRITE setTimeThreshold NOTIFY timeThresholdChanged)
public:
QMLManager();
~QMLManager();
@@ -27,15 +29,21 @@ public:
QString cloudPassword() const;
void setCloudPassword(const QString &cloudPassword);
- QString ssrfGpsWebUserid() const;
- void setSsrfGpsWebUserid(const QString &userid);
-
bool saveCloudPassword() const;
void setSaveCloudPassword(bool saveCloudPassword);
+ QString ssrfGpsWebUserid() const;
+ void setSsrfGpsWebUserid(const QString &userid);
+
bool locationServiceEnabled() const;
void setLocationServiceEnabled(bool locationServiceEnable);
+ int distanceThreshold() const;
+ void setDistanceThreshold(int distance);
+
+ int timeThreshold() const;
+ void setTimeThreshold(int time);
+
QString logText() const;
void setLogText(const QString &logText);
void appendTextToLog(const QString &newText);
@@ -57,6 +65,8 @@ private:
bool m_saveCloudPassword;
QString m_logText;
bool m_locationServiceEnabled;
+ int m_distanceThreshold;
+ int m_timeThreshold;
GpsLocation *locationProvider;
signals:
@@ -66,6 +76,8 @@ signals:
void saveCloudPasswordChanged();
void locationServiceEnabledChanged();
void logTextChanged();
+ void timeThresholdChanged();
+ void distanceThresholdChanged();
};
#endif