22
33#include " StatusQ/themepalette.h"
44
5- #include < QObject >
5+ #include < QJSValue >
66#include < QQmlEngine>
77#include < QQuickAttachedPropertyPropagator>
88
99class Theme : public QQuickAttachedPropertyPropagator
1010{
1111 Q_OBJECT
1212
13- Q_PROPERTY (qreal padding READ padding WRITE setPadding RESET resetPadding NOTIFY paddingChanged)
13+ Q_PROPERTY (qreal padding READ padding WRITE setPadding
14+ RESET resetPadding NOTIFY paddingChanged)
1415 Q_PROPERTY (qreal xlPadding READ xlPadding NOTIFY paddingChanged)
1516 Q_PROPERTY (qreal bigPadding READ bigPadding NOTIFY paddingChanged)
1617 Q_PROPERTY (qreal halfPadding READ halfPadding NOTIFY paddingChanged)
1718 Q_PROPERTY (qreal smallPadding READ smallPadding NOTIFY paddingChanged)
1819
19- Q_PROPERTY (bool explicitPadding READ explicitPadding NOTIFY explicitPaddingChanged)
20+ Q_PROPERTY (bool explicitPadding READ explicitPadding
21+ NOTIFY explicitPaddingChanged)
2022
21- Q_PROPERTY (Style style READ style WRITE setStyle RESET resetStyle NOTIFY styleChanged)
22- Q_PROPERTY (const ThemePalette* palette READ palette NOTIFY styleChanged)
23+ Q_PROPERTY (Style style READ style WRITE setStyle RESET resetStyle
24+ NOTIFY styleChanged)
25+ Q_PROPERTY (const ThemePalette* palette READ palette
26+ NOTIFY styleChanged)
2327
24- Q_PROPERTY (bool explicitStyle READ explicitStyle NOTIFY explicitStyleChanged)
28+ Q_PROPERTY (bool explicitStyle READ explicitStyle
29+ NOTIFY explicitStyleChanged)
30+
31+ Q_PROPERTY (int fontSizeOffset READ fontSizeOffset WRITE setFontSizeOffset
32+ RESET resetFontSizeOffset NOTIFY fontSizeOffsetChanged)
33+
34+ Q_PROPERTY (int secondaryAdditionalTextSize
35+ READ secondaryAdditionalTextSize
36+ NOTIFY fontSizeOffsetChanged)
37+ Q_PROPERTY (int primaryTextFontSize READ primaryTextFontSize
38+ NOTIFY fontSizeOffsetChanged)
39+ Q_PROPERTY (int secondaryTextFontSize READ secondaryTextFontSize
40+ NOTIFY fontSizeOffsetChanged)
41+ Q_PROPERTY (int additionalTextSize READ additionalTextSize
42+ NOTIFY fontSizeOffsetChanged)
43+ Q_PROPERTY (int tertiaryTextFontSize READ tertiaryTextFontSize
44+ NOTIFY fontSizeOffsetChanged)
45+ Q_PROPERTY (int asideTextFontSize READ asideTextFontSize
46+ NOTIFY fontSizeOffsetChanged)
47+
48+ Q_PROPERTY (bool explicitFontSizeOffset READ explicitFontSizeOffset
49+ NOTIFY explicitFontSizeOffsetChanged)
50+
51+ Q_PROPERTY (QJSValue fontSize READ fontSize NOTIFY fontSizeOffsetChanged)
2552
2653 enum class Style {
2754 Light,
@@ -33,6 +60,7 @@ class Theme : public QQuickAttachedPropertyPropagator
3360public:
3461 explicit Theme (QObject *parent = nullptr );
3562
63+ // paddings
3664 qreal padding () const ;
3765 qreal xlPadding () const ;
3866 qreal bigPadding () const ;
@@ -41,35 +69,57 @@ class Theme : public QQuickAttachedPropertyPropagator
4169
4270 void setPadding (qreal padding);
4371 void resetPadding ();
44-
45- void inheritPadding (qreal padding);
46- void propagatePadding ();
47-
4872 bool explicitPadding () const ;
4973
74+ // light/dark style
5075 Style style () const ;
76+ const ThemePalette* palette () const ;
77+
5178 void setStyle (Style style);
5279 void resetStyle ();
80+ bool explicitStyle () const ;
5381
54- void inheritStyle (Style style);
55- void propagateStyle ();
82+ // font size
83+ int fontSizeOffset () const ;
84+ int secondaryAdditionalTextSize () const ;
85+ int primaryTextFontSize () const ;
86+ int secondaryTextFontSize () const ;
87+ int additionalTextSize () const ;
88+ int tertiaryTextFontSize () const ;
89+ int asideTextFontSize () const ;
5690
57- bool explicitStyle () const ;
91+ QJSValue fontSize () const ;
5892
59- const ThemePalette* palette () const ;
93+ void setFontSizeOffset (int fontSizeOffset);
94+ void resetFontSizeOffset ();
95+ bool explicitFontSizeOffset () const ;
6096
97+ // top level object access
6198 Q_INVOKABLE Theme* rootTheme ();
6299
100+ // attached object instantiation
63101 static Theme *qmlAttachedProperties (QObject *object);
64102
65103signals:
66104 void paddingChanged ();
67105 void explicitPaddingChanged ();
68106
69- void explicitStyleChanged ();
70107 void styleChanged ();
108+ void explicitStyleChanged ();
109+
110+ void fontSizeOffsetChanged ();
111+ void explicitFontSizeOffsetChanged ();
71112
72113protected:
114+ void inheritPadding (qreal padding);
115+ void propagatePadding ();
116+
117+ void inheritStyle (Style style);
118+ void propagateStyle ();
119+
120+ void inheritFontSizeOffset (int fontSizeOffset);
121+ void propagateFontSizeOffset ();
122+
73123 void attachedParentChange (
74124 QQuickAttachedPropertyPropagator *newParent,
75125 QQuickAttachedPropertyPropagator *oldParent) override ;
@@ -80,6 +130,10 @@ class Theme : public QQuickAttachedPropertyPropagator
80130
81131 bool m_explicitStyle = false ;
82132 Style m_style = Style::Light;
133+
134+ bool m_explicitFontSizeOffset = false ;
135+ int m_fontSizeOffset = 0 ;
136+ mutable QJSValue m_fontSizeFn;
83137};
84138
85139QML_DECLARE_TYPEINFO (Theme, QML_HAS_ATTACHED_PROPERTIES)
0 commit comments