Support dynamic change of font family

pull/19/head
reionwong 4 years ago
parent d2f1fef810
commit 9c4eb9c35a

@ -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

@ -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

@ -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)

@ -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

Loading…
Cancel
Save