From 2e22bd2efc38bfa2d4c7749a15c03b83635cfe13 Mon Sep 17 00:00:00 2001 From: kateleet Date: Thu, 23 Dec 2021 12:06:15 +0800 Subject: [PATCH] feat(settings-daemon): init fonts name on first login --- settings-daemon/application.cpp | 2 +- settings-daemon/language/language.cpp | 6 ++++++ settings-daemon/language/language.h | 1 + settings-daemon/theme/thememanager.cpp | 27 ++++++++++++++++++++++++++ 4 files changed, 35 insertions(+), 1 deletion(-) diff --git a/settings-daemon/application.cpp b/settings-daemon/application.cpp index b0bd951..049cb56 100644 --- a/settings-daemon/application.cpp +++ b/settings-daemon/application.cpp @@ -41,7 +41,7 @@ Application::Application(int &argc, char **argv) , m_themeManager(ThemeManager::self()) , m_brightnessManager(new BrightnessManager(this)) , m_upowerManager(new UPowerManager(this)) - , m_language(new Language(this)) + , m_language(Language::self()) , m_mouse(new Mouse) , m_touchpad(new TouchpadManager) // , m_kwinTimer(new QTimer(this)) diff --git a/settings-daemon/language/language.cpp b/settings-daemon/language/language.cpp index a42df9b..1f466ae 100644 --- a/settings-daemon/language/language.cpp +++ b/settings-daemon/language/language.cpp @@ -24,6 +24,12 @@ #include #include +Language *Language::self() +{ + static Language s; + return &s; +} + Language::Language(QObject *parent) : QObject(parent) , m_settings(new QSettings(QStringLiteral("cutefishos"), QStringLiteral("language"))) diff --git a/settings-daemon/language/language.h b/settings-daemon/language/language.h index 7c77e1f..5ba3425 100644 --- a/settings-daemon/language/language.h +++ b/settings-daemon/language/language.h @@ -29,6 +29,7 @@ class Language : public QObject Q_PROPERTY(QString languageCode READ languageCode WRITE setLanguage NOTIFY languageChanged) public: + static Language *self(); Language(QObject *parent = nullptr); QString languageCode() const; diff --git a/settings-daemon/theme/thememanager.cpp b/settings-daemon/theme/thememanager.cpp index 0df82b9..f49e86e 100644 --- a/settings-daemon/theme/thememanager.cpp +++ b/settings-daemon/theme/thememanager.cpp @@ -79,6 +79,33 @@ ThemeManager::ThemeManager(QObject *parent) // Start the DE and need to update the settings again. initGtkConfig(); + // Init fonts. + if (!m_settings->contains(s_systemFixedFontName)) { + m_settings->setValue(s_systemFixedFontName, "Monospace"); + } + + if (!m_settings->contains(s_systemFontName)) { + QSettings lanSettings(QStringLiteral("cutefishos"), QStringLiteral("language")); + QString languageCode = lanSettings.value("language").toString(); + QString fontName; + + if (languageCode == "zh_CN") { + fontName = "Noto Sans CJK SC"; + } else if (languageCode.contains("en_")) { + fontName = "Noto Sans"; + } else if (languageCode == "zh_TW") { + fontName = "Noto Sans CJK TC"; + } else if (languageCode == "zh_HK") { + fontName = "Noto Serif CJK HK"; + } else if (languageCode == "ja_JP") { + fontName = "Noto Serif CJK JP"; + } else { + fontName = "Noto Sans"; + } + + m_settings->setValue(s_systemFontName, fontName); + } + // 登陆后更新 fontconfig updateFontConfig(); }