summaryrefslogtreecommitdiffstats
path: root/core/settings/qPrefGeneral.cpp
diff options
context:
space:
mode:
authorGravatar jan Iversen <jani@apache.org>2018-08-12 17:57:45 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2018-08-14 09:09:06 -0700
commit4a7864444ba5c90e4113e704a593d0fc4e6207b8 (patch)
treed6d2caae40434e5cca59cbf2d448cbf0ada265fa /core/settings/qPrefGeneral.cpp
parentd5b087f01f89508f2e49c67a8d662662a93cf620 (diff)
downloadsubsurface-4a7864444ba5c90e4113e704a593d0fc4e6207b8.tar.gz
core: create qPrefGeneral from SettingsObjectWrapper
Update set/get functions to follow common name scheme: - get function have same name as in struct diveComputer - 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/settings/qPrefGeneral.cpp')
-rw-r--r--core/settings/qPrefGeneral.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/core/settings/qPrefGeneral.cpp b/core/settings/qPrefGeneral.cpp
new file mode 100644
index 000000000..4364ce731
--- /dev/null
+++ b/core/settings/qPrefGeneral.cpp
@@ -0,0 +1,82 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "qPref.h"
+#include "qPrefPrivate.h"
+
+
+static const QString group = QStringLiteral("GeneralSettings");
+
+qPrefGeneral::qPrefGeneral(QObject *parent) : QObject(parent)
+{
+}
+qPrefGeneral *qPrefGeneral::instance()
+{
+ static qPrefGeneral *self = new qPrefGeneral;
+ return self;
+}
+
+
+void qPrefGeneral::loadSync(bool doSync)
+{
+ disk_auto_recalculate_thumbnails(doSync);
+ disk_auto_recalculate_thumbnails(doSync);
+ disk_default_cylinder(doSync);
+ disk_default_filename(doSync);
+ disk_default_file_behavior(doSync);
+ disk_defaultsetpoint(doSync);
+ disk_extract_video_thumbnails(doSync);
+ disk_extract_video_thumbnails_position(doSync);
+ disk_ffmpeg_executable(doSync);
+ disk_o2consumption(doSync);
+ disk_pscr_ratio(doSync);
+ disk_use_default_file(doSync);
+}
+
+HANDLE_PREFERENCE_BOOL(General, "/auto_recalculate_thumbnails", auto_recalculate_thumbnails);
+
+HANDLE_PREFERENCE_TXT(General, "/default_cylinder", default_cylinder);
+
+HANDLE_PREFERENCE_TXT(General, "default_filename", default_filename);
+
+
+void qPrefGeneral::set_default_file_behavior(enum def_file_behavior value)
+{
+ if (value != prefs.default_file_behavior ||
+ prefs.default_file_behavior != UNDEFINED_DEFAULT_FILE) {
+
+ if (value == UNDEFINED_DEFAULT_FILE) {
+ // undefined, so check if there's a filename set and
+ // use that, otherwise go with no default file
+ prefs.default_file_behavior = QString(prefs.default_filename).isEmpty() ? NO_DEFAULT_FILE : LOCAL_DEFAULT_FILE;
+ } else {
+ prefs.default_file_behavior = value;
+ }
+ disk_default_file_behavior(true);
+ emit default_file_behavior_changed(value);
+ }
+}
+void qPrefGeneral::disk_default_file_behavior(bool doSync)
+{
+ if (doSync) {
+ qPrefPrivate::instance()->setting.setValue(group + "/default_file_behavior", prefs.default_file_behavior);
+ } else {
+ prefs.default_file_behavior = (enum def_file_behavior)qPrefPrivate::instance()->setting.value(group + "/default_file_behavior", default_prefs.default_file_behavior).toInt();
+ if (prefs.default_file_behavior == UNDEFINED_DEFAULT_FILE)
+ // undefined, so check if there's a filename set and
+ // use that, otherwise go with no default file
+ prefs.default_file_behavior = QString(prefs.default_filename).isEmpty() ? NO_DEFAULT_FILE : LOCAL_DEFAULT_FILE;
+ }
+}
+
+HANDLE_PREFERENCE_INT(General, "/defaultsetpoint", defaultsetpoint);
+
+HANDLE_PREFERENCE_BOOL(General, "/extract_video_thumbnails", extract_video_thumbnails);
+
+HANDLE_PREFERENCE_INT(General, "/extract_video_thumbnails_position", extract_video_thumbnails_position);
+
+HANDLE_PREFERENCE_TXT(General, "/ffmpeg_executable", ffmpeg_executable);
+
+HANDLE_PREFERENCE_INT(General, "/o2consumption", o2consumption);
+
+HANDLE_PREFERENCE_INT(General, "/pscr_ratio", pscr_ratio);
+
+HANDLE_PREFERENCE_BOOL(General, "/use_default_file", use_default_file);