Fluid 1.3.0
Material Design for QtQuick and Qml
Loading...
Searching...
No Matches
style.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2025 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
2// SPDX-License-Identifier: MPL-2.0
3
4#pragma once
5
6#include <QColor>
7#include <QtQml/QQmlEngine>
8#include <QtQuickControls2/QQuickAttachedPropertyPropagator>
9
10class FluidStyle : public QQuickAttachedPropertyPropagator
11{
12 Q_OBJECT
13 Q_DISABLE_COPY(FluidStyle)
14
15 Q_PROPERTY(Theme theme READ theme WRITE setTheme RESET resetTheme NOTIFY themeChanged FINAL)
16 Q_PROPERTY(int elevation READ elevation WRITE setElevation RESET resetElevation NOTIFY
17 elevationChanged FINAL)
18
19 // Fonts
20 Q_PROPERTY(QString brandFontFamily READ brandFontFamily CONSTANT FINAL)
21 Q_PROPERTY(QString plainFontFamily READ plainFontFamily CONSTANT FINAL)
22
23 // Color properties - Primary
24 Q_PROPERTY(QColor primaryColor READ primaryColor NOTIFY themeChanged FINAL)
25 Q_PROPERTY(QColor onPrimaryColor READ onPrimaryColor NOTIFY themeChanged FINAL)
26 Q_PROPERTY(QColor primaryContainerColor READ primaryContainerColor NOTIFY themeChanged FINAL)
27 Q_PROPERTY(
29 Q_PROPERTY(QColor primaryFixedColor READ primaryFixedColor NOTIFY themeChanged FINAL)
30 Q_PROPERTY(QColor primaryFixedDimColor READ primaryFixedDimColor NOTIFY themeChanged FINAL)
31 Q_PROPERTY(QColor onPrimaryFixedColor READ onPrimaryFixedColor NOTIFY themeChanged FINAL)
33 FINAL)
34
35 // Color properties - Secondary
36 Q_PROPERTY(QColor secondaryColor READ secondaryColor NOTIFY themeChanged FINAL)
37 Q_PROPERTY(QColor onSecondaryColor READ onSecondaryColor NOTIFY themeChanged FINAL)
38 Q_PROPERTY(
41 FINAL)
42 Q_PROPERTY(QColor secondaryFixedColor READ secondaryFixedColor NOTIFY themeChanged FINAL)
43 Q_PROPERTY(QColor secondaryFixedDimColor READ secondaryFixedDimColor NOTIFY themeChanged FINAL)
44 Q_PROPERTY(QColor onSecondaryFixedColor READ onSecondaryFixedColor NOTIFY themeChanged FINAL)
46 themeChanged FINAL)
47
48 // Color properties - Tertiary
49 Q_PROPERTY(QColor tertiaryColor READ tertiaryColor NOTIFY themeChanged FINAL)
50 Q_PROPERTY(QColor onTertiaryColor READ onTertiaryColor NOTIFY themeChanged FINAL)
51 Q_PROPERTY(QColor tertiaryContainerColor READ tertiaryContainerColor NOTIFY themeChanged FINAL)
52 Q_PROPERTY(
54 Q_PROPERTY(QColor tertiaryFixedColor READ tertiaryFixedColor NOTIFY themeChanged FINAL)
55 Q_PROPERTY(QColor tertiaryFixedDimColor READ tertiaryFixedDimColor NOTIFY themeChanged FINAL)
56 Q_PROPERTY(QColor onTertiaryFixedColor READ onTertiaryFixedColor NOTIFY themeChanged FINAL)
58 themeChanged FINAL)
59
60 // Color properties - Error
61 Q_PROPERTY(QColor errorColor READ errorColor NOTIFY themeChanged FINAL)
62 Q_PROPERTY(QColor onErrorColor READ onErrorColor NOTIFY themeChanged FINAL)
63 Q_PROPERTY(QColor errorContainerColor READ errorContainerColor NOTIFY themeChanged FINAL)
64 Q_PROPERTY(QColor onErrorContainerColor READ onErrorContainerColor NOTIFY themeChanged FINAL)
65
66 // Color properties - Background
67 Q_PROPERTY(QColor backgroundColor READ backgroundColor NOTIFY themeChanged FINAL)
68 Q_PROPERTY(QColor onBackgroundColor READ onBackgroundColor NOTIFY themeChanged FINAL)
69
70 // Color properties - Surface
71 Q_PROPERTY(QColor surfaceColor READ surfaceColor NOTIFY themeChanged FINAL)
72 Q_PROPERTY(QColor onSurfaceColor READ onSurfaceColor NOTIFY themeChanged FINAL)
73 Q_PROPERTY(QColor surfaceBrightColor READ surfaceBrightColor NOTIFY themeChanged FINAL)
74 Q_PROPERTY(QColor surfaceDimColor READ surfaceDimColor NOTIFY themeChanged FINAL)
75 Q_PROPERTY(QColor surfaceVariantColor READ surfaceVariantColor NOTIFY themeChanged FINAL)
76 Q_PROPERTY(QColor onSurfaceVariantColor READ onSurfaceVariantColor NOTIFY themeChanged FINAL)
77 Q_PROPERTY(QColor surfaceTintColor READ surfaceTintColor NOTIFY themeChanged FINAL)
79 themeChanged FINAL)
80 Q_PROPERTY(
82 Q_PROPERTY(QColor surfaceContainerColor READ surfaceContainerColor NOTIFY themeChanged FINAL)
84 FINAL)
86 themeChanged FINAL)
87
88 // Color properties - Outline
89 Q_PROPERTY(QColor outlineColor READ outlineColor NOTIFY themeChanged FINAL)
90 Q_PROPERTY(QColor outlineVariantColor READ outlineVariantColor NOTIFY themeChanged FINAL)
91
92 // Color properties - Inverse
93 Q_PROPERTY(QColor inverseSurfaceColor READ inverseSurfaceColor NOTIFY themeChanged FINAL)
94 Q_PROPERTY(QColor inverseOnSurfaceColor READ inverseOnSurfaceColor NOTIFY themeChanged FINAL)
95 Q_PROPERTY(QColor inversePrimaryColor READ inversePrimaryColor NOTIFY themeChanged FINAL)
96
97 // Color properties - Scrim
98 Q_PROPERTY(QColor scrimColor READ scrimColor NOTIFY themeChanged FINAL)
99
100 // Color properties - Shadow
101 Q_PROPERTY(QColor shadowColor READ shadowColor NOTIFY themeChanged FINAL)
102
103 QML_NAMED_ELEMENT(Style)
104 QML_ATTACHED(FluidStyle)
105 QML_UNCREATABLE("")
106 QML_ADDED_IN_VERSION(2, 0)
107public:
113 Q_ENUM(Theme)
114
115 enum class TypeFace {
116 Brand,
117 Plain
118 };
119 Q_ENUM(TypeFace)
120
121 explicit FluidStyle(QObject *parent = nullptr);
122
123 Theme theme() const;
124 void setTheme(Theme theme);
125 void resetTheme();
126
127 int elevation() const;
128 void setElevation(int elevation);
129 void resetElevation();
130
131 // Font getters
132 QString brandFontFamily() const;
133 QString plainFontFamily() const;
134
135 // Color getters - Primary
136 QColor primaryColor() const;
137 QColor onPrimaryColor() const;
138 QColor primaryContainerColor() const;
140 QColor primaryFixedColor() const;
141 QColor primaryFixedDimColor() const;
142 QColor onPrimaryFixedColor() const;
144
145 // Color getters - Secondary
146 QColor secondaryColor() const;
147 QColor onSecondaryColor() const;
150 QColor secondaryFixedColor() const;
152 QColor onSecondaryFixedColor() const;
154
155 // Color getters - Tertiary
156 QColor tertiaryColor() const;
157 QColor onTertiaryColor() const;
160 QColor tertiaryFixedColor() const;
161 QColor tertiaryFixedDimColor() const;
162 QColor onTertiaryFixedColor() const;
164
165 // Color getters - Error
166 QColor errorColor() const;
167 QColor onErrorColor() const;
168 QColor errorContainerColor() const;
169 QColor onErrorContainerColor() const;
170
171 // Color getters - Background
172 QColor backgroundColor() const;
173 QColor onBackgroundColor() const;
174
175 // Color getters - Surface
176 QColor surfaceColor() const;
177 QColor onSurfaceColor() const;
178 QColor surfaceBrightColor() const;
179 QColor surfaceDimColor() const;
180 QColor surfaceVariantColor() const;
181 QColor onSurfaceVariantColor() const;
182 QColor surfaceTintColor() const;
185 QColor surfaceContainerColor() const;
188
189 // Color getters - Outline
190 QColor outlineColor() const;
191 QColor outlineVariantColor() const;
192
193 // Color getters - Inverse
194 QColor inverseSurfaceColor() const;
195 QColor inverseOnSurfaceColor() const;
196 QColor inversePrimaryColor() const;
197
198 // Color getters - Scrim
199 QColor scrimColor() const;
200
201 // Color getters - Shadow
202 QColor shadowColor() const;
203
204 static FluidStyle *qmlAttachedProperties(QObject *object);
205
206 static bool isDarkSystemTheme();
208
209Q_SIGNALS:
212
213protected:
214 void attachedParentChange(QQuickAttachedPropertyPropagator *newParent,
215 QQuickAttachedPropertyPropagator *oldParent) override;
216
217private:
218 // Whether a particular setting was explicitly set on this instance
219 bool m_explicitTheme = false;
220
221 // Actual property values
222 bool m_systemTheme = false;
224 int m_elevation = 0;
225
226 void inheritTheme(FluidStyle::Theme theme);
227 void propagateTheme();
228};
Theme theme
Definition style.h:15
QColor secondaryContainerColor() const
QColor surfaceContainerLowestColor() const
QColor tertiaryFixedColor
Definition style.h:54
QColor surfaceContainerHighColor() const
QColor secondaryFixedColor() const
QColor onPrimaryFixedColor
Definition style.h:31
QColor onPrimaryContainerColor() const
QString brandFontFamily
Definition style.h:20
QColor surfaceBrightColor() const
QColor onTertiaryFixedColor() const
QColor surfaceContainerHighestColor() const
QColor surfaceContainerColor
Definition style.h:82
QColor surfaceContainerLowColor() const
QColor backgroundColor() const
int elevation
Definition style.h:17
QColor onTertiaryContainerColor() const
QColor onSecondaryColor
Definition style.h:37
QColor onTertiaryFixedVariantColor
Definition style.h:58
QColor surfaceColor() const
QColor scrimColor() const
QColor onSecondaryFixedColor
Definition style.h:44
QColor onErrorContainerColor() const
QColor outlineColor() const
QColor secondaryFixedColor
Definition style.h:42
QColor onSecondaryContainerColor
Definition style.h:41
QColor inversePrimaryColor
Definition style.h:95
QColor primaryContainerColor() const
static bool isDarkSystemTheme()
Definition style.cpp:176
QColor backgroundColor
Definition style.h:67
QColor onPrimaryColor
Definition style.h:25
QColor shadowColor
Definition style.h:101
void resetElevation()
Definition style.cpp:80
QColor onPrimaryFixedVariantColor
Definition style.h:33
QColor onPrimaryFixedColor() const
QColor onTertiaryFixedColor
Definition style.h:56
QColor errorColor() const
QColor secondaryFixedDimColor() const
QColor outlineVariantColor() const
QColor primaryFixedColor
Definition style.h:29
void resetTheme()
Definition style.cpp:56
QColor onErrorColor
Definition style.h:62
QColor inverseOnSurfaceColor() const
QColor surfaceColor
Definition style.h:71
QColor onSecondaryFixedColor() const
QColor surfaceContainerHighestColor
Definition style.h:86
QColor tertiaryFixedDimColor
Definition style.h:55
QColor onErrorContainerColor
Definition style.h:64
QColor inverseSurfaceColor
Definition style.h:93
void setTheme(Theme theme)
Definition style.cpp:38
QColor surfaceContainerLowestColor
Definition style.h:79
QColor surfaceBrightColor
Definition style.h:73
QColor primaryFixedDimColor
Definition style.h:30
QColor onSurfaceVariantColor
Definition style.h:76
QColor surfaceTintColor() const
QColor surfaceVariantColor() const
QColor surfaceDimColor() const
QColor onSecondaryColor() const
QColor primaryColor() const
QColor tertiaryContainerColor
Definition style.h:51
QColor secondaryFixedDimColor
Definition style.h:43
QColor errorColor
Definition style.h:61
QColor surfaceContainerColor() const
QColor tertiaryFixedDimColor() const
QColor secondaryContainerColor
Definition style.h:39
QColor onTertiaryColor
Definition style.h:50
QColor onSurfaceColor
Definition style.h:72
QColor tertiaryContainerColor() const
QColor secondaryColor() const
static Theme effectiveTheme(Theme theme)
Definition style.cpp:187
QColor onTertiaryContainerColor
Definition style.h:53
QColor inverseOnSurfaceColor
Definition style.h:94
QColor onSurfaceVariantColor() const
void attachedParentChange(QQuickAttachedPropertyPropagator *newParent, QQuickAttachedPropertyPropagator *oldParent) override
Definition style.cpp:165
QColor onTertiaryColor() const
QColor tertiaryColor() const
QColor secondaryColor
Definition style.h:36
QColor onErrorColor() const
QColor onSurfaceColor() const
QColor surfaceVariantColor
Definition style.h:75
QColor surfaceDimColor
Definition style.h:74
void themeChanged()
QColor onBackgroundColor() const
QColor scrimColor
Definition style.h:98
QString plainFontFamily
Definition style.h:21
static FluidStyle * qmlAttachedProperties(QObject *object)
Definition style.cpp:160
QColor tertiaryFixedColor() const
QColor tertiaryColor
Definition style.h:49
QColor surfaceContainerLowColor
Definition style.h:81
QColor primaryContainerColor
Definition style.h:26
void elevationChanged()
QColor onSecondaryFixedVariantColor
Definition style.h:46
QColor errorContainerColor
Definition style.h:63
QColor onPrimaryContainerColor
Definition style.h:28
QColor surfaceTintColor
Definition style.h:77
QColor inversePrimaryColor() const
QColor primaryFixedDimColor() const
QColor onBackgroundColor
Definition style.h:68
QColor outlineColor
Definition style.h:89
QColor onPrimaryFixedVariantColor() const
QColor outlineVariantColor
Definition style.h:90
QColor errorContainerColor() const
void setElevation(int elevation)
Definition style.cpp:72
QColor onPrimaryColor() const
QColor primaryColor
Definition style.h:24
QColor onSecondaryFixedVariantColor() const
QColor onTertiaryFixedVariantColor() const
QColor onSecondaryContainerColor() const
QColor inverseSurfaceColor() const
QColor primaryFixedColor() const
QColor surfaceContainerHighColor
Definition style.h:84
Definition theme.h:9