aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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
-rw-r--r--subsurface-core/pref.h2
-rw-r--r--subsurface-core/qthelper.cpp7
-rw-r--r--subsurface-core/subsurfacestartup.c4
7 files changed, 84 insertions, 9 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
diff --git a/subsurface-core/pref.h b/subsurface-core/pref.h
index 9f5f587e2..348dcfbf2 100644
--- a/subsurface-core/pref.h
+++ b/subsurface-core/pref.h
@@ -123,6 +123,8 @@ struct preferences {
geocoding_prefs_t geocoding;
enum deco_mode deco_mode;
short conservatism_level;
+ int time_threshold;
+ int distance_threshold;
};
enum unit_system_values {
METRIC,
diff --git a/subsurface-core/qthelper.cpp b/subsurface-core/qthelper.cpp
index 63248f6c4..c1205ce6f 100644
--- a/subsurface-core/qthelper.cpp
+++ b/subsurface-core/qthelper.cpp
@@ -1601,6 +1601,13 @@ void loadPreferences()
// Subsurface webservice id is stored outside of the groups
GET_TXT("subsurface_webservice_uid", userid);
+ // but the related time / distance threshold (only used in the mobile app)
+ // are in their own group
+ s.beginGroup("locationService");
+ GET_INT("distance_threshold", distance_threshold);
+ GET_INT("time_threshold", time_threshold);
+ s.endGroup();
+
// GeoManagement
s.beginGroup("geocoding");
#ifdef DISABLED
diff --git a/subsurface-core/subsurfacestartup.c b/subsurface-core/subsurfacestartup.c
index 13cbbfa3f..5b3dfa8c1 100644
--- a/subsurface-core/subsurfacestartup.c
+++ b/subsurface-core/subsurfacestartup.c
@@ -79,7 +79,9 @@ struct preferences default_prefs = {
.category = { 0 }
},
.deco_mode = BUEHLMANN,
- .conservatism_level = 3
+ .conservatism_level = 3,
+ .distance_threshold = 1000,
+ .time_threshold = 600
};
int run_survey;