From da61c1714f24d42f5295bcd60d704e65f503b174 Mon Sep 17 00:00:00 2001 From: jan Iversen Date: Wed, 4 Jul 2018 21:45:48 +0200 Subject: core: activate qPrefDisplay in SettingsObjectWrapper add the prepared class qPrefDisplay to SettingsObjectWrapper and thereby making it active. As a consequence of the uniform naming standard desktop-widgets/preferences_defaults.cpp and tests/testpreferences.cpp have been updated. Signed-off-by: Jan Iversen --- core/settings/qPref.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'core/settings/qPref.h') diff --git a/core/settings/qPref.h b/core/settings/qPref.h index e0e21ad6e..425484726 100644 --- a/core/settings/qPref.h +++ b/core/settings/qPref.h @@ -20,6 +20,8 @@ public: // Load/Sync local settings (disk) and struct preference void loadSync(bool doSync); + void load() { loadSync(false); }; + void sync() { loadSync(true); }; public: enum cloud_status { -- cgit v1.2.3-70-g09d2 From 928fc1ee79a4391384f448cb75369ddb5e03ef28 Mon Sep 17 00:00:00 2001 From: jan Iversen Date: Wed, 4 Jul 2018 22:46:59 +0200 Subject: core: move load of display variables to qPrefDisplay from SettingsObjectWrapper ensure SettingsObjectWrapper load() loads all display variables. Copy font setting code from SettingsObjectWrapper to qPrefDisplay Signed-off-by: Jan Iversen --- core/settings/qPref.h | 4 ++-- core/settings/qPrefDisplay.cpp | 36 ++++++++++++++++++++++++++-- core/settings/qPrefDisplay.h | 7 ++++-- core/subsurface-qt/SettingsObjectWrapper.cpp | 24 +------------------ 4 files changed, 42 insertions(+), 29 deletions(-) (limited to 'core/settings/qPref.h') diff --git a/core/settings/qPref.h b/core/settings/qPref.h index 425484726..70eef3cb3 100644 --- a/core/settings/qPref.h +++ b/core/settings/qPref.h @@ -20,8 +20,8 @@ public: // Load/Sync local settings (disk) and struct preference void loadSync(bool doSync); - void load() { loadSync(false); }; - void sync() { loadSync(true); }; + void load() { loadSync(false); } + void sync() { loadSync(true); } public: enum cloud_status { diff --git a/core/settings/qPrefDisplay.cpp b/core/settings/qPrefDisplay.cpp index cf0a4e54d..fee960f97 100644 --- a/core/settings/qPrefDisplay.cpp +++ b/core/settings/qPrefDisplay.cpp @@ -39,7 +39,12 @@ void qPrefDisplay::set_divelist_font(const QString& value) emit divelist_font_changed(value); } } -DISK_LOADSYNC_TXT(Display, "/divelist_font", divelist_font); +void qPrefDisplay::disk_divelist_font(bool doSync) +{ + LOADSYNC_TXT("/divelist_font", divelist_font); + if (!doSync) + setCorrectFont(); +} GET_PREFERENCE_DOUBLE(Display, font_size); void qPrefDisplay::set_font_size(double value) @@ -53,10 +58,37 @@ void qPrefDisplay::set_font_size(double value) emit font_size_changed(value); } } -DISK_LOADSYNC_DOUBLE(Display, "/font_size", font_size); +void qPrefDisplay::disk_font_size(bool doSync) +{ + LOADSYNC_DOUBLE("/font_size", font_size); + if (!doSync) + setCorrectFont(); +} HANDLE_PREFERENCE_BOOL(Display, "/displayinvalid", display_invalid_dives); HANDLE_PREFERENCE_BOOL(Display, "/show_developer", show_developer); HANDLE_PREFERENCE_TXT(Display, "/theme", theme); + + +void qPrefDisplay::setCorrectFont() +{ + // get the font from the settings or our defaults + // respect the system default font size if none is explicitly set + QFont defaultFont(prefs.divelist_font); + if (IS_FP_SAME(system_divelist_default_font_size, -1.0)) { + prefs.font_size = qApp->font().pointSizeF(); + system_divelist_default_font_size = prefs.font_size; // this way we don't save it on exit + } + // painful effort to ignore previous default fonts on Windows - ridiculous + QString fontName = defaultFont.toString(); + if (fontName.contains(",")) + fontName = fontName.left(fontName.indexOf(",")); + if (subsurface_ignore_font(qPrintable(fontName))) + defaultFont = QFont(prefs.divelist_font); + else + COPY_TXT(divelist_font, fontName); + defaultFont.setPointSizeF(prefs.font_size); + qApp->setFont(defaultFont); +} diff --git a/core/settings/qPrefDisplay.h b/core/settings/qPrefDisplay.h index 67930ae63..4a1c0ada5 100644 --- a/core/settings/qPrefDisplay.h +++ b/core/settings/qPrefDisplay.h @@ -19,8 +19,8 @@ public: // Load/Sync local settings (disk) and struct preference void loadSync(bool doSync); - void load() { loadSync(false); }; - void sync() { loadSync(true); }; + void load() { loadSync(false); } + void sync() { loadSync(true); } public: const QString divelist_font() const; @@ -53,5 +53,8 @@ private: void disk_display_invalid_dives(bool doSync); void disk_show_developer(bool doSync); void disk_theme(bool doSync); + + // font helper function + void setCorrectFont(); }; #endif diff --git a/core/subsurface-qt/SettingsObjectWrapper.cpp b/core/subsurface-qt/SettingsObjectWrapper.cpp index 57c3de8c7..c5a335a8e 100644 --- a/core/subsurface-qt/SettingsObjectWrapper.cpp +++ b/core/subsurface-qt/SettingsObjectWrapper.cpp @@ -2218,29 +2218,7 @@ void SettingsObjectWrapper::load() GET_BOOL("auto_recalculate_thumbnails", auto_recalculate_thumbnails); s.endGroup(); - s.beginGroup("Display"); - // get the font from the settings or our defaults - // respect the system default font size if none is explicitly set - QFont defaultFont = s.value("divelist_font", prefs.divelist_font).value(); - if (IS_FP_SAME(system_divelist_default_font_size, -1.0)) { - prefs.font_size = qApp->font().pointSizeF(); - system_divelist_default_font_size = prefs.font_size; // this way we don't save it on exit - } - prefs.font_size = s.value("font_size", prefs.font_size).toFloat(); - // painful effort to ignore previous default fonts on Windows - ridiculous - QString fontName = defaultFont.toString(); - if (fontName.contains(",")) - fontName = fontName.left(fontName.indexOf(",")); - if (subsurface_ignore_font(qPrintable(fontName))) { - defaultFont = QFont(prefs.divelist_font); - } else { - free((void *)prefs.divelist_font); - prefs.divelist_font = copy_qstring(fontName); - } - defaultFont.setPointSizeF(prefs.font_size); - qApp->setFont(defaultFont); - GET_BOOL("displayinvalid", display_invalid_dives); - s.endGroup(); + qPrefDisplay::instance()->load(); s.beginGroup("Animations"); GET_INT("animation_speed", animation_speed); -- cgit v1.2.3-70-g09d2