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 FishUI 1.0 as FishUI
Dialog {
FishUI.Window {
id: control
width: 500
height: 430
width: 300
height: 300
modality: Qt.WindowModal
visible: false
property var iconSource
property string name
property string description
ColumnLayout {
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 {
text: "hello"
text: control.description
Layout.alignment: Qt.AlignHCenter
}
Item {
Layout.fillHeight: true
}
}
}

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

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

@ -12,7 +12,8 @@ typeinfo plugins.qmltypes
singleton Theme 1.0 Theme.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
DesktopMenu 1.0 DesktopMenu.qml
Dialog 1.0 Dialog.qml

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

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

@ -6,6 +6,7 @@
<file>CheckIndicator.qml</file>
<file>ComboBox.qml</file>
<file>Control.qml</file>
<file>Label.qml</file>
<file>Menu.qml</file>
<file>MenuItem.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("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("BusyIndicator.qml")), uri, 1, 0, "BusyIndicator");
qmlRegisterType(componentUrl(QStringLiteral("Icon.qml")), uri, 1, 0, "Icon");

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

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

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

Loading…
Cancel
Save