summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/settings/qPref.h4
-rw-r--r--core/settings/qPrefDisplay.cpp36
-rw-r--r--core/settings/qPrefDisplay.h7
-rw-r--r--core/subsurface-qt/SettingsObjectWrapper.cpp24
4 files changed, 42 insertions, 29 deletions
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<QFont>();
- 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);