summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorGravatar jan Iversen <jani@apache.org>2018-08-05 15:59:28 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2018-08-12 11:30:19 -0700
commit2b11fd4cc8fca46152bc8c3c0b53658694cfd5bf (patch)
treefc6d6cbf8a21c71a3aca593b8f958881e5e75084 /core
parentc42a6e402786c17d2c650cd8d10d24a88e2a1a28 (diff)
downloadsubsurface-2b11fd4cc8fca46152bc8c3c0b53658694cfd5bf.tar.gz
core: create qPrefLocationService from SettingsObjectWrapper
Update set/get functions to follow common name scheme: - get function have same name as in struct prefs - set function have set_<name> - signal function have <name>_changed one class one .h/.cpp is the C++ idiom. Having load/sync of each variable in 1 functions (in contrast to the distributed way SettingsObjectWrapper handles it) secures the same storage name is used. Having the set/get/load/sync functions grouped together makes it easier to get an overview. REMARK: this commit only defines the class, it is not active in production Signed-off-by: Jan Iversen <jani@apache.org>
Diffstat (limited to 'core')
-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
5 files changed, 69 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;