Follow system font size

pull/19/head
reionwong 5 years ago
parent 290982b256
commit d2f1fef810

@ -4,17 +4,48 @@ import QtQuick.Layouts 1.12
import QtGraphicalEffects 1.0 import QtGraphicalEffects 1.0
import FishUI 1.0 as FishUI import FishUI 1.0 as FishUI
Dialog { FishUI.Window {
id: control id: control
width: 500 width: 300
height: 430 height: 300
modality: Qt.WindowModal
visible: false
property var iconSource
property string name
property string description
ColumnLayout { ColumnLayout {
anchors.fill: parent anchors.fill: parent
anchors.topMargin: FishUI.Units.largeSpacing * 2
Image {
width: 64
height: 64
source: control.iconSource
sourceSize: Qt.size(64, 64)
Layout.alignment: Qt.AlignHCenter
}
Item {
height: FishUI.Units.largeSpacing * 2
}
Label {
text: control.name
Layout.alignment: Qt.AlignHCenter
}
Label { Label {
text: "hello" text: control.description
Layout.alignment: Qt.AlignHCenter
}
Item {
Layout.fillHeight: true
} }
} }
} }

@ -55,6 +55,8 @@ QtObject {
property color visitedLinkColor: "#2196F3" property color visitedLinkColor: "#2196F3"
property color visitedLinkBackgroundColor: "#2196F3" property color visitedLinkBackgroundColor: "#2196F3"
property real fontSize: FishUICore.ThemeManager.fontSize
property real smallRadius: 8.0 property real smallRadius: 8.0
property real mediumRadius: 10.0 property real mediumRadius: 10.0
property real bigRadius: 12.0 property real bigRadius: 12.0

@ -48,7 +48,7 @@ Window {
// Other // Other
property bool isMaximized: control.visibility === Window.Maximized property bool isMaximized: control.visibility === Window.Maximized
property bool isFullScreen: control.visibility === Window.FullScreen property bool isFullScreen: control.visibility === Window.FullScreen
property var edgeSize: windowRadius / 2 property var edgeSize: windowRadius <= 0 ? 8 : windowRadius / 2
onHeaderItemChanged: { onHeaderItemChanged: {
if (headerItem) { if (headerItem) {

@ -12,7 +12,8 @@ typeinfo plugins.qmltypes
singleton Theme 1.0 Theme.qml singleton Theme 1.0 Theme.qml
singleton Units 1.0 Units.qml singleton Units 1.0 Units.qml
ActionTextField 1.0 ActionTextField AboutDialog 1.0 AboutDialog.qml
ActionTextField 1.0 ActionTextField.qml
BusyIndicator 1.0 BusyIndicator.qml BusyIndicator 1.0 BusyIndicator.qml
DesktopMenu 1.0 DesktopMenu.qml DesktopMenu 1.0 DesktopMenu.qml
Dialog 1.0 Dialog.qml Dialog 1.0 Dialog.qml

@ -3,8 +3,7 @@ import QtQuick.Templates 2.4 as T
import FishUI 1.0 as FishUI import FishUI 1.0 as FishUI
import QtQuick.Controls.impl 2.4 import QtQuick.Controls.impl 2.4
T.Button T.Button {
{
id: control id: control
implicitWidth: Math.max(background.implicitWidth, contentItem.implicitWidth + FishUI.Units.largeSpacing) implicitWidth: Math.max(background.implicitWidth, contentItem.implicitWidth + FishUI.Units.largeSpacing)
implicitHeight: background.implicitHeight implicitHeight: background.implicitHeight

@ -16,7 +16,7 @@ T.Label {
font.family: FishUI.Theme.defaultFont.family font.family: FishUI.Theme.defaultFont.family
font.italic: FishUI.Theme.defaultFont.italic font.italic: FishUI.Theme.defaultFont.italic
font.letterSpacing: FishUI.Theme.defaultFont.letterSpacing font.letterSpacing: FishUI.Theme.defaultFont.letterSpacing
font.pointSize: FishUI.Theme.defaultFont.pointSize font.pointSize: FishUI.Theme.fontSize
font.strikeout: FishUI.Theme.defaultFont.strikeout font.strikeout: FishUI.Theme.defaultFont.strikeout
font.underline: FishUI.Theme.defaultFont.underline font.underline: FishUI.Theme.defaultFont.underline
font.weight: FishUI.Theme.defaultFont.weight font.weight: FishUI.Theme.defaultFont.weight

@ -6,6 +6,7 @@
<file>CheckIndicator.qml</file> <file>CheckIndicator.qml</file>
<file>ComboBox.qml</file> <file>ComboBox.qml</file>
<file>Control.qml</file> <file>Control.qml</file>
<file>Label.qml</file>
<file>Menu.qml</file> <file>Menu.qml</file>
<file>MenuItem.qml</file> <file>MenuItem.qml</file>
<file>Page.qml</file> <file>Page.qml</file>

@ -63,6 +63,7 @@ void FishUI::registerTypes(const char *uri)
qmlRegisterSingletonType(componentUrl(QStringLiteral("Theme.qml")), uri, 1, 0, "Theme"); qmlRegisterSingletonType(componentUrl(QStringLiteral("Theme.qml")), uri, 1, 0, "Theme");
qmlRegisterSingletonType(componentUrl(QStringLiteral("Units.qml")), uri, 1, 0, "Units"); qmlRegisterSingletonType(componentUrl(QStringLiteral("Units.qml")), uri, 1, 0, "Units");
qmlRegisterType(componentUrl(QStringLiteral("AboutDialog.qml")), uri, 1, 0, "AboutDialog");
qmlRegisterType(componentUrl(QStringLiteral("ActionTextField.qml")), uri, 1, 0, "ActionTextField"); qmlRegisterType(componentUrl(QStringLiteral("ActionTextField.qml")), uri, 1, 0, "ActionTextField");
qmlRegisterType(componentUrl(QStringLiteral("BusyIndicator.qml")), uri, 1, 0, "BusyIndicator"); qmlRegisterType(componentUrl(QStringLiteral("BusyIndicator.qml")), uri, 1, 0, "BusyIndicator");
qmlRegisterType(componentUrl(QStringLiteral("Icon.qml")), uri, 1, 0, "Icon"); qmlRegisterType(componentUrl(QStringLiteral("Icon.qml")), uri, 1, 0, "Icon");

@ -1,5 +1,6 @@
<RCC> <RCC>
<qresource prefix="/fishui/kit"> <qresource prefix="/fishui/kit">
<file alias="AboutDialog.qml">controls/AboutDialog.qml</file>
<file alias="BusyIndicator.qml">controls/BusyIndicator.qml</file> <file alias="BusyIndicator.qml">controls/BusyIndicator.qml</file>
<file alias="Icon.qml">controls/Icon.qml</file> <file alias="Icon.qml">controls/Icon.qml</file>
<file alias="PopupTips.qml">controls/PopupTips.qml</file> <file alias="PopupTips.qml">controls/PopupTips.qml</file>

@ -35,6 +35,7 @@ ThemeManager::ThemeManager(QObject *parent)
, m_darkMode(false) , m_darkMode(false)
, m_accentColorIndex(-1) , m_accentColorIndex(-1)
, m_accentColor(m_blueColor) // The default is blue , m_accentColor(m_blueColor) // The default is blue
, m_fontSize(9.0)
{ {
QDBusServiceWatcher *serviceWatcher = new QDBusServiceWatcher(Service, QDBusConnection::sessionBus(), QDBusServiceWatcher *serviceWatcher = new QDBusServiceWatcher(Service, QDBusConnection::sessionBus(),
QDBusServiceWatcher::WatchForRegistration); QDBusServiceWatcher::WatchForRegistration);
@ -61,6 +62,9 @@ void ThemeManager::initData()
int accentColorID = iface.property("accentColor").toInt(); int accentColorID = iface.property("accentColor").toInt();
setAccentColor(accentColorID); setAccentColor(accentColorID);
m_fontSize = iface.property("systemFontPointSize").toReal();
emit fontSizeChanged();
emit darkModeChanged(); emit darkModeChanged();
} }
} }
@ -74,6 +78,8 @@ void ThemeManager::initDBusSignals()
this, SLOT(onDBusDarkModeChanged(bool))); this, SLOT(onDBusDarkModeChanged(bool)));
QDBusConnection::sessionBus().connect(Service, ObjectPath, Interface, "accentColorChanged", QDBusConnection::sessionBus().connect(Service, ObjectPath, Interface, "accentColorChanged",
this, SLOT(onDBusAccentColorChanged(int))); this, SLOT(onDBusAccentColorChanged(int)));
QDBusConnection::sessionBus().connect(Service, ObjectPath, Interface, "systemFontPointSizeChanged",
this, SLOT(onDBusFontSizeChanged()));
} }
} }
@ -90,6 +96,17 @@ void ThemeManager::onDBusAccentColorChanged(int accentColorID)
setAccentColor(accentColorID); setAccentColor(accentColorID);
} }
void ThemeManager::onDBusFontSizeChanged()
{
QDBusInterface iface(Service, ObjectPath, Interface, QDBusConnection::sessionBus(), this);
qreal size = iface.property("systemFontPointSize").toReal();
if (size != m_fontSize) {
m_fontSize = size;
emit fontSizeChanged();
}
}
void ThemeManager::setAccentColor(int accentColorID) void ThemeManager::setAccentColor(int accentColorID)
{ {
if (m_accentColorIndex == accentColorID) if (m_accentColorIndex == accentColorID)

@ -45,6 +45,7 @@ class ThemeManager : public QObject
Q_PROPERTY(QColor orangeColor READ orangeColor CONSTANT) Q_PROPERTY(QColor orangeColor READ orangeColor CONSTANT)
Q_PROPERTY(QColor greyColor READ greyColor CONSTANT) Q_PROPERTY(QColor greyColor READ greyColor CONSTANT)
Q_PROPERTY(qreal devicePixelRatio READ devicePixelRatio CONSTANT) Q_PROPERTY(qreal devicePixelRatio READ devicePixelRatio CONSTANT)
Q_PROPERTY(qreal fontSize READ fontSize NOTIFY fontSizeChanged)
public: public:
explicit ThemeManager(QObject *parent = nullptr); explicit ThemeManager(QObject *parent = nullptr);
@ -54,6 +55,8 @@ public:
bool darkMode() { return m_darkMode; } bool darkMode() { return m_darkMode; }
QColor accentColor() { return m_accentColor; } QColor accentColor() { return m_accentColor; }
qreal fontSize() { return m_fontSize; }
QColor blueColor() { return m_blueColor; } QColor blueColor() { return m_blueColor; }
QColor redColor() { return m_redColor; } QColor redColor() { return m_redColor; }
QColor greenColor() { return m_greenColor; } QColor greenColor() { return m_greenColor; }
@ -65,12 +68,14 @@ public:
signals: signals:
void darkModeChanged(); void darkModeChanged();
void accentColorChanged(); void accentColorChanged();
void fontSizeChanged();
private slots: private slots:
void initData(); void initData();
void initDBusSignals(); void initDBusSignals();
void onDBusDarkModeChanged(bool darkMode); void onDBusDarkModeChanged(bool darkMode);
void onDBusAccentColorChanged(int accentColorID); void onDBusAccentColorChanged(int accentColorID);
void onDBusFontSizeChanged();
private: private:
void setAccentColor(int accentColorID); void setAccentColor(int accentColorID);
@ -88,6 +93,7 @@ private:
QColor m_greyColor = QColor(79, 89, 107); // #4F596B QColor m_greyColor = QColor(79, 89, 107); // #4F596B
QColor m_accentColor; QColor m_accentColor;
qreal m_fontSize;
}; };
#endif // THEMEMANAGER_H #endif // THEMEMANAGER_H

Loading…
Cancel
Save