diff options
Diffstat (limited to 'core/settings/qPrefDisplay.cpp')
-rw-r--r-- | core/settings/qPrefDisplay.cpp | 119 |
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); +} |