summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/CMakeLists.txt1
-rw-r--r--core/settings/qPref.h1
-rw-r--r--core/settings/qPrefLocationService.cpp25
-rw-r--r--core/settings/qPrefLocationService.h41
-rw-r--r--core/settings/qPrefPrivate.h1
-rw-r--r--packaging/ios/Subsurface-mobile.pro2
6 files changed, 71 insertions, 0 deletions
diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt
index 61fb09705..9babe1931 100644
--- a/core/CMakeLists.txt
+++ b/core/CMakeLists.txt
@@ -109,6 +109,7 @@ set(SUBSURFACE_CORE_LIB_SRCS
settings/qPrefDiveComputer.cpp
settings/qPrefDivePlanner.cpp
settings/qPrefFacebook.cpp
+ settings/qPrefLocationService.cpp
settings/qPrefPrivate.cpp
settings/qPrefProxy.cpp
settings/qPrefTechnicalDetails.cpp
diff --git a/core/settings/qPref.h b/core/settings/qPref.h
index 81f9893a8..89e0b0951 100644
--- a/core/settings/qPref.h
+++ b/core/settings/qPref.h
@@ -11,6 +11,7 @@
#include "qPrefDiveComputer.h"
#include "qPrefDivePlanner.h"
#include "qPrefFacebook.h"
+#include "qPrefLocationService.h"
#include "qPrefProxy.h"
#include "qPrefTechnicalDetails.h"
#include "qPrefUnit.h"
diff --git a/core/settings/qPrefLocationService.cpp b/core/settings/qPrefLocationService.cpp
new file mode 100644
index 000000000..84ebcc321
--- /dev/null
+++ b/core/settings/qPrefLocationService.cpp
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "qPrefLocationService.h"
+#include "qPref.h"
+#include "qPrefPrivate.h"
+
+static const QString group = QStringLiteral("LocationService");
+
+qPrefLocationService::qPrefLocationService(QObject *parent) : QObject(parent)
+{
+}
+qPrefLocationService *qPrefLocationService::instance()
+{
+ static qPrefLocationService *self = new qPrefLocationService;
+ return self;
+}
+
+void qPrefLocationService::loadSync(bool doSync)
+{
+ disk_distance_threshold(doSync);
+ disk_time_threshold(doSync);
+}
+
+HANDLE_PREFERENCE_INT(LocationService, "/distance_threshold", distance_threshold);
+
+HANDLE_PREFERENCE_INT(LocationService, "/time_threshold", time_threshold);
diff --git a/core/settings/qPrefLocationService.h b/core/settings/qPrefLocationService.h
new file mode 100644
index 000000000..e3aa43c29
--- /dev/null
+++ b/core/settings/qPrefLocationService.h
@@ -0,0 +1,41 @@
+// SPDX-License-Identifier: GPL-2.0
+#ifndef QPREFLOCATIONSERVICE_H
+#define QPREFLOCATIONSERVICE_H
+#include "core/pref.h"
+
+#include <QObject>
+
+
+class qPrefLocationService : public QObject {
+ Q_OBJECT
+ Q_PROPERTY(int distance_threshold READ distance_threshold WRITE set_distance_threshold NOTIFY distance_threshold_changed);
+ Q_PROPERTY(int time_threshold READ time_threshold WRITE set_time_threshold NOTIFY time_threshold_changed);
+
+public:
+ qPrefLocationService(QObject *parent = NULL);
+ static qPrefLocationService *instance();
+
+ // Load/Sync local settings (disk) and struct preference
+ void loadSync(bool doSync);
+ void load() { loadSync(false); }
+ void sync() { loadSync(true); }
+
+public:
+ int distance_threshold() { return prefs.distance_threshold; }
+ int time_threshold() { return prefs.time_threshold; }
+
+public slots:
+ void set_distance_threshold(int value);
+ void set_time_threshold(int value);
+
+signals:
+ void distance_threshold_changed(int value);
+ void time_threshold_changed(int value);
+
+
+private:
+ void disk_distance_threshold(bool doSync);
+ void disk_time_threshold(bool doSync);
+};
+
+#endif
diff --git a/core/settings/qPrefPrivate.h b/core/settings/qPrefPrivate.h
index b023a5ad9..efaa5382c 100644
--- a/core/settings/qPrefPrivate.h
+++ b/core/settings/qPrefPrivate.h
@@ -20,6 +20,7 @@ public:
friend class qPrefDiveComputer;
friend class qPrefDivePlanner;
friend class qPrefFacebook;
+ friend class qPrefLocationService;
friend class qPrefProxy;
friend class qPrefTechnicalDetails;
friend class qPrefUnits;
diff --git a/packaging/ios/Subsurface-mobile.pro b/packaging/ios/Subsurface-mobile.pro
index f811a3cdf..4107def06 100644
--- a/packaging/ios/Subsurface-mobile.pro
+++ b/packaging/ios/Subsurface-mobile.pro
@@ -84,6 +84,7 @@ SOURCES += ../../subsurface-mobile-main.cpp \
../../core/settings/qPrefDiveComputer.cpp \
../../core/settings/qPrefDivePlanner.cpp \
../../core/settings/qPrefFacebook.cpp \
+ ../../core/settings/qPrefLocationService.cpp \
../../core/settings/qPrefPrivate.cpp \
../../core/settings/qPrefProxy.cpp \
../../core/settings/qPrefTechnicalDetails.cpp \
@@ -202,6 +203,7 @@ HEADERS += \
../../core/settings/qPrefDiveComputer.h \
../../core/settings/qPrefDivePlanner.h \
../../core/settings/qPrefFacebook.h \
+ ../../core/settings/qPrefLocationService.h \
../../core/settings/qPrefPrivate.h \
../../core/settings/qPrefProxy.h \
../../core/settings/qPrefTechnicalDetails.h \