aboutsummaryrefslogtreecommitdiffstats
path: root/core/settings/qPrefDisplay.cpp
diff options
context:
space:
mode:
authorGravatar jan Iversen <jani@apache.org>2018-06-15 10:53:42 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2018-07-07 09:44:06 -0700
commite5dace2233fd2007ce81d0d926d411641c519fb2 (patch)
tree580684fba1230386c9365397a4a1b85ef8b6961b /core/settings/qPrefDisplay.cpp
parent55c3afc07594ef7087b77746f5d549ce49587e4f (diff)
downloadsubsurface-e5dace2233fd2007ce81d0d926d411641c519fb2.tar.gz
core: copy Display from SettingsObjectWrapper to qPref as its own class
copy Display from SettingsObjectWrapper to qPref as its own class file. Update Display to use a common load/sync scheme. Update set/get functions to follow common name scheme: - get function have same name as in struct preferences - set function have set_<name in struct preferences> - signal function have <name in struct preferences>_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 are made to show the use of the low level LOADSYNC macros, which will be used for special cases. This class is NOT linked into the live system. Signed-off-by: Jan Iversen <jani@apache.org>
Diffstat (limited to 'core/settings/qPrefDisplay.cpp')
-rw-r--r--core/settings/qPrefDisplay.cpp119
1 files changed, 119 insertions, 0 deletions
diff --git a/core/settings/qPrefDisplay.cpp b/core/settings/qPrefDisplay.cpp
new file mode 100644
index 000000000..e651eb937
--- /dev/null
+++ b/core/settings/qPrefDisplay.cpp
@@ -0,0 +1,119 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "qPref.h"
+#include "qPref_private.h"
+#include "core/subsurface-string.h"
+
+#include <QApplication>
+#include <QFont>
+
+qPrefDisplay::qPrefDisplay(QObject *parent) : QObject(parent)
+{
+}
+qPrefDisplay *qPrefDisplay::instance()
+{
+ static qPrefDisplay *self = new qPrefDisplay;
+ return self;
+}
+
+void qPrefDisplay::loadSync(bool doSync)
+{
+ disk_divelist_font(doSync);
+ disk_font_size(doSync);
+ disk_display_invalid_dives(doSync);
+ disk_show_developer(doSync);
+ disk_theme(doSync);
+}
+
+const QString qPrefDisplay::divelist_font() const
+{
+ return prefs.divelist_font;
+}
+void qPrefDisplay::set_divelist_font(const QString& value)
+{
+ QString newValue = value;
+ if (value.contains(","))
+ newValue = value.left(value.indexOf(","));
+
+ if (newValue != prefs.divelist_font &&
+ !subsurface_ignore_font(qPrintable(newValue))) {
+ COPY_TXT(divelist_font, value);
+ qApp->setFont(QFont(newValue));
+ disk_divelist_font(true);
+ emit divelist_font_changed(value);
+ }
+}
+void qPrefDisplay::disk_divelist_font(bool doSync)
+{
+ LOADSYNC_TXT("/divelist_font", divelist_font);
+}
+
+double qPrefDisplay::font_size() const
+{
+ return prefs.font_size;
+}
+void qPrefDisplay::set_font_size(double value)
+{
+ if (value != prefs.font_size) {
+ prefs.font_size = value;
+ QFont defaultFont = qApp->font();
+ defaultFont.setPointSizeF(prefs.font_size);
+ qApp->setFont(defaultFont);
+ disk_font_size(true);
+ emit font_size_changed(value);
+ }
+}
+void qPrefDisplay::disk_font_size(bool doSync)
+{
+ LOADSYNC_DOUBLE("/font_size", font_size);
+}
+
+bool qPrefDisplay::display_invalid_dives() const
+{
+ return prefs.display_invalid_dives;
+}
+void qPrefDisplay::set_display_invalid_dives(bool value)
+{
+ if (value != prefs.display_invalid_dives) {
+ prefs.display_invalid_dives = value;
+ disk_display_invalid_dives(true);
+ emit display_invalid_dives_changed(value);
+ }
+}
+void qPrefDisplay::disk_display_invalid_dives(bool doSync)
+{
+ LOADSYNC_BOOL("/displayinvalid", display_invalid_dives);
+}
+
+bool qPrefDisplay::show_developer() const
+{
+ return prefs.show_developer;
+}
+void qPrefDisplay::set_show_developer(bool value)
+{
+ if (value != prefs.show_developer) {
+ prefs.show_developer = value;
+ disk_show_developer(true);
+ emit disk_show_developer(value);
+ }
+}
+void qPrefDisplay::disk_show_developer(bool doSync)
+{
+ LOADSYNC_BOOL("/showDeveloper", show_developer);
+}
+
+const QString qPrefDisplay::theme() const
+{
+ return prefs.theme;
+}
+void qPrefDisplay::set_theme(const QString& value)
+{
+ if (value != prefs.theme) {
+ COPY_TXT(theme, value);
+ disk_theme(true);
+ emit theme_changed(value);
+ }
+}
+void qPrefDisplay::disk_theme(bool doSync)
+{
+ LOADSYNC_TXT("/theme", theme);
+}