summaryrefslogtreecommitdiffstats
path: root/core/settings/qPrefDisplay.cpp
diff options
context:
space:
mode:
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);
+}