diff --git a/src/controls/Theme.qml b/src/controls/Theme.qml index 75b5458..afca1b2 100644 --- a/src/controls/Theme.qml +++ b/src/controls/Theme.qml @@ -56,6 +56,7 @@ QtObject { property color visitedLinkBackgroundColor: "#2196F3" property real fontSize: FishUICore.ThemeManager.fontSize + property string fontFamily: FishUICore.ThemeManager.fontFamily property real smallRadius: 8.0 property real mediumRadius: 10.0 diff --git a/src/fish-style/Label.qml b/src/fish-style/Label.qml index b9ebb2d..8c6998f 100644 --- a/src/fish-style/Label.qml +++ b/src/fish-style/Label.qml @@ -13,7 +13,7 @@ T.Label { renderType: Window.devicePixelRatio % 1 !== 0 ? Text.QtRendering : Text.NativeRendering font.capitalization: FishUI.Theme.defaultFont.capitalization - font.family: FishUI.Theme.defaultFont.family + font.family: FishUI.Theme.fontFamily font.italic: FishUI.Theme.defaultFont.italic font.letterSpacing: FishUI.Theme.defaultFont.letterSpacing font.pointSize: FishUI.Theme.fontSize diff --git a/src/thememanager.cpp b/src/thememanager.cpp index 514aa4b..846e8b8 100644 --- a/src/thememanager.cpp +++ b/src/thememanager.cpp @@ -36,6 +36,7 @@ ThemeManager::ThemeManager(QObject *parent) , m_accentColorIndex(-1) , m_accentColor(m_blueColor) // The default is blue , m_fontSize(9.0) + , m_fontFamily("Noto Sans") { QDBusServiceWatcher *serviceWatcher = new QDBusServiceWatcher(Service, QDBusConnection::sessionBus(), QDBusServiceWatcher::WatchForRegistration); @@ -65,6 +66,9 @@ void ThemeManager::initData() m_fontSize = iface.property("systemFontPointSize").toReal(); emit fontSizeChanged(); + m_fontFamily = iface.property("systemFont").toString(); + emit fontFamilyChanged(); + emit darkModeChanged(); } } @@ -80,6 +84,8 @@ void ThemeManager::initDBusSignals() this, SLOT(onDBusAccentColorChanged(int))); QDBusConnection::sessionBus().connect(Service, ObjectPath, Interface, "systemFontPointSizeChanged", this, SLOT(onDBusFontSizeChanged())); + QDBusConnection::sessionBus().connect(Service, ObjectPath, Interface, "systemFontChanged", + this, SLOT(onDBusFontFamilyChanged())); } } @@ -107,6 +113,17 @@ void ThemeManager::onDBusFontSizeChanged() } } +void ThemeManager::onDBusFontFamilyChanged() +{ + QDBusInterface iface(Service, ObjectPath, Interface, QDBusConnection::sessionBus(), this); + + QString family = iface.property("systemFont").toString(); + if (family != m_fontFamily) { + m_fontFamily = family; + emit fontFamilyChanged(); + } +} + void ThemeManager::setAccentColor(int accentColorID) { if (m_accentColorIndex == accentColorID) diff --git a/src/thememanager.h b/src/thememanager.h index 46c019d..c67a6bd 100644 --- a/src/thememanager.h +++ b/src/thememanager.h @@ -46,6 +46,7 @@ class ThemeManager : public QObject Q_PROPERTY(QColor greyColor READ greyColor CONSTANT) Q_PROPERTY(qreal devicePixelRatio READ devicePixelRatio CONSTANT) Q_PROPERTY(qreal fontSize READ fontSize NOTIFY fontSizeChanged) + Q_PROPERTY(QString fontFamily READ fontFamily NOTIFY fontFamilyChanged) public: explicit ThemeManager(QObject *parent = nullptr); @@ -56,6 +57,7 @@ public: QColor accentColor() { return m_accentColor; } qreal fontSize() { return m_fontSize; } + QString fontFamily() { return m_fontFamily; } QColor blueColor() { return m_blueColor; } QColor redColor() { return m_redColor; } @@ -69,6 +71,7 @@ signals: void darkModeChanged(); void accentColorChanged(); void fontSizeChanged(); + void fontFamilyChanged(); private slots: void initData(); @@ -76,6 +79,7 @@ private slots: void onDBusDarkModeChanged(bool darkMode); void onDBusAccentColorChanged(int accentColorID); void onDBusFontSizeChanged(); + void onDBusFontFamilyChanged(); private: void setAccentColor(int accentColorID); @@ -94,6 +98,7 @@ private: QColor m_accentColor; qreal m_fontSize; + QString m_fontFamily; }; #endif // THEMEMANAGER_H