Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qquickmaterialstyle_p.h
Go to the documentation of this file.
1// Copyright (C) 2017 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QQUICKMATERIALSTYLE_P_H
5#define QQUICKMATERIALSTYLE_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtGui/qcolor.h>
19#include <QtQml/qqml.h>
20#include <QtQuickControls2/qquickattachedpropertypropagator.h>
21#include <QtQuickControls2Material/qtquickcontrols2materialexports.h>
22
24
25class Q_QUICKCONTROLS2MATERIAL_EXPORT QQuickMaterialStyle : public QQuickAttachedPropertyPropagator
26{
28 Q_PROPERTY(Theme theme READ theme WRITE setTheme RESET resetTheme NOTIFY themeChanged FINAL)
29 Q_PROPERTY(QVariant primary READ primary WRITE setPrimary RESET resetPrimary NOTIFY primaryChanged FINAL)
30 Q_PROPERTY(QVariant accent READ accent WRITE setAccent RESET resetAccent NOTIFY accentChanged FINAL)
31 Q_PROPERTY(QVariant foreground READ foreground WRITE setForeground RESET resetForeground NOTIFY foregroundChanged FINAL)
32 Q_PROPERTY(QVariant background READ background WRITE setBackground RESET resetBackground NOTIFY backgroundChanged FINAL)
33 Q_PROPERTY(int elevation READ elevation WRITE setElevation RESET resetElevation NOTIFY elevationChanged FINAL)
34 Q_PROPERTY(RoundedScale roundedScale READ roundedScale WRITE setRoundedScale RESET resetRoundedScale
35 NOTIFY roundedScaleChanged FINAL)
36 Q_PROPERTY(ContainerStyle containerStyle READ containerStyle WRITE setContainerStyle RESET resetContainerStyle
37 NOTIFY containerStyleChanged FINAL)
38
39 Q_PROPERTY(QColor primaryColor READ primaryColor NOTIFY primaryChanged FINAL) // TODO: remove?
40 Q_PROPERTY(QColor accentColor READ accentColor NOTIFY accentChanged FINAL) // TODO: remove?
41 Q_PROPERTY(QColor backgroundColor READ backgroundColor NOTIFY backgroundChanged FINAL)
42 Q_PROPERTY(QColor primaryTextColor READ primaryTextColor NOTIFY themeChanged FINAL)
43 Q_PROPERTY(QColor primaryHighlightedTextColor READ primaryHighlightedTextColor NOTIFY primaryHighlightedTextColorChanged FINAL)
44 Q_PROPERTY(QColor secondaryTextColor READ secondaryTextColor NOTIFY themeChanged FINAL)
45 Q_PROPERTY(QColor hintTextColor READ hintTextColor NOTIFY themeChanged FINAL)
46 Q_PROPERTY(QColor textSelectionColor READ textSelectionColor NOTIFY themeOrAccentChanged FINAL)
47 Q_PROPERTY(QColor dropShadowColor READ dropShadowColor CONSTANT FINAL)
48 Q_PROPERTY(QColor dividerColor READ dividerColor NOTIFY themeChanged FINAL)
49 Q_PROPERTY(QColor iconColor READ iconColor NOTIFY themeChanged FINAL)
50 Q_PROPERTY(QColor iconDisabledColor READ iconDisabledColor NOTIFY themeChanged FINAL)
51 Q_PROPERTY(QColor frameColor READ frameColor NOTIFY themeChanged FINAL)
52 Q_PROPERTY(QColor rippleColor READ rippleColor NOTIFY themeChanged FINAL)
53 Q_PROPERTY(QColor highlightedRippleColor READ highlightedRippleColor NOTIFY themeOrAccentChanged FINAL)
54 Q_PROPERTY(QColor switchUncheckedTrackColor READ switchUncheckedTrackColor NOTIFY themeChanged FINAL)
55 Q_PROPERTY(QColor switchCheckedTrackColor READ switchCheckedTrackColor NOTIFY themeOrAccentChanged FINAL)
56 Q_PROPERTY(QColor switchUncheckedHandleColor READ switchUncheckedHandleColor NOTIFY themeChanged FINAL)
57 Q_PROPERTY(QColor switchUncheckedHoveredHandleColor READ switchUncheckedHoveredHandleColor NOTIFY themeChanged FINAL)
58 Q_PROPERTY(QColor switchDisabledUncheckedTrackColor READ switchDisabledUncheckedTrackColor NOTIFY themeChanged FINAL)
59 Q_PROPERTY(QColor switchDisabledCheckedTrackColor READ switchDisabledCheckedTrackColor NOTIFY themeChanged FINAL)
60 Q_PROPERTY(QColor switchDisabledUncheckedTrackBorderColor READ switchDisabledUncheckedTrackBorderColor NOTIFY themeChanged FINAL)
61 Q_PROPERTY(QColor switchCheckedHandleColor READ switchCheckedHandleColor NOTIFY themeOrAccentChanged FINAL)
62 Q_PROPERTY(QColor switchDisabledUncheckedHandleColor READ switchDisabledUncheckedHandleColor NOTIFY themeChanged FINAL)
63 Q_PROPERTY(QColor switchDisabledCheckedHandleColor READ switchDisabledCheckedHandleColor NOTIFY themeChanged FINAL)
64 Q_PROPERTY(QColor switchDisabledCheckedIconColor READ switchDisabledCheckedIconColor NOTIFY themeChanged FINAL)
65 Q_PROPERTY(QColor switchDisabledUncheckedIconColor READ switchDisabledUncheckedIconColor NOTIFY themeChanged FINAL)
66 Q_PROPERTY(QColor scrollBarColor READ scrollBarColor NOTIFY themeChanged FINAL)
67 Q_PROPERTY(QColor scrollBarHoveredColor READ scrollBarHoveredColor NOTIFY themeChanged FINAL)
68 Q_PROPERTY(QColor scrollBarPressedColor READ scrollBarPressedColor NOTIFY themeChanged FINAL)
69 Q_PROPERTY(QColor dialogColor READ dialogColor NOTIFY dialogColorChanged FINAL)
70 Q_PROPERTY(QColor backgroundDimColor READ backgroundDimColor NOTIFY themeChanged FINAL)
71 Q_PROPERTY(QColor listHighlightColor READ listHighlightColor NOTIFY themeChanged FINAL)
72 Q_PROPERTY(QColor tooltipColor READ tooltipColor NOTIFY tooltipColorChanged FINAL)
73 Q_PROPERTY(QColor toolBarColor READ toolBarColor NOTIFY toolBarColorChanged FINAL)
74 Q_PROPERTY(QColor toolTextColor READ toolTextColor NOTIFY toolTextColorChanged FINAL)
75 Q_PROPERTY(QColor spinBoxDisabledIconColor READ spinBoxDisabledIconColor NOTIFY themeChanged FINAL)
76 Q_PROPERTY(QColor sliderDisabledColor READ sliderDisabledColor NOTIFY themeChanged FINAL REVISION(2, 15))
77 Q_PROPERTY(QColor textFieldFilledContainerColor READ textFieldFilledContainerColor NOTIFY themeChanged FINAL)
78
79 Q_PROPERTY(int touchTarget READ touchTarget CONSTANT FINAL)
80 Q_PROPERTY(int buttonVerticalPadding READ buttonVerticalPadding CONSTANT FINAL)
81 Q_PROPERTY(int buttonHeight READ buttonHeight CONSTANT FINAL)
82 Q_PROPERTY(int delegateHeight READ delegateHeight CONSTANT FINAL)
83 Q_PROPERTY(int dialogButtonBoxHeight READ dialogButtonBoxHeight CONSTANT FINAL)
84 Q_PROPERTY(int dialogTitleFontPixelSize READ dialogTitleFontPixelSize CONSTANT FINAL)
85 Q_PROPERTY(RoundedScale dialogRoundedScale READ dialogRoundedScale CONSTANT FINAL)
86 Q_PROPERTY(int frameVerticalPadding READ frameVerticalPadding CONSTANT FINAL)
87 Q_PROPERTY(int menuItemHeight READ menuItemHeight CONSTANT FINAL)
88 Q_PROPERTY(int menuItemVerticalPadding READ menuItemVerticalPadding CONSTANT FINAL)
89 Q_PROPERTY(int switchIndicatorWidth READ switchIndicatorWidth CONSTANT FINAL)
90 Q_PROPERTY(int switchIndicatorHeight READ switchIndicatorHeight CONSTANT FINAL)
91 Q_PROPERTY(int switchNormalHandleHeight READ switchNormalHandleHeight CONSTANT FINAL)
92 Q_PROPERTY(int switchCheckedHandleHeight READ switchCheckedHandleHeight CONSTANT FINAL)
93 Q_PROPERTY(int switchLargestHandleHeight READ switchLargestHandleHeight CONSTANT FINAL)
94 Q_PROPERTY(int switchDelegateVerticalPadding READ switchDelegateVerticalPadding CONSTANT FINAL)
95 Q_PROPERTY(int textFieldHeight READ textFieldHeight CONSTANT FINAL)
96 Q_PROPERTY(int textFieldHorizontalPadding READ textFieldHorizontalPadding CONSTANT FINAL)
97 Q_PROPERTY(int textFieldVerticalPadding READ textFieldVerticalPadding CONSTANT FINAL)
98 Q_PROPERTY(int tooltipHeight READ tooltipHeight CONSTANT FINAL)
99
100 QML_NAMED_ELEMENT(Material)
104
105public:
106 enum Theme {
109 System
110 };
111
112 enum Variant {
114 Dense
115 };
116
138
155
156 enum class RoundedScale {
157 NotRounded,
158 ExtraSmallScale = 4,
159 SmallScale = 8,
160 MediumScale = 12,
161 LargeScale = 16,
162 ExtraLargeScale = 28,
163 FullScale = 0xFF // For full we use half the height of the item.
164 };
165
166 enum class ContainerStyle {
167 Filled,
168 Outlined
169 };
170
171 Q_ENUM(Theme)
173 Q_ENUM(Color)
174 Q_ENUM(Shade)
175 Q_ENUM(RoundedScale)
176 Q_ENUM(ContainerStyle)
177
178 explicit QQuickMaterialStyle(QObject *parent = nullptr);
179
180 static QQuickMaterialStyle *qmlAttachedProperties(QObject *object);
181
182 Theme theme() const;
183 void setTheme(Theme theme);
184 void inheritTheme(Theme theme);
185 void propagateTheme();
186 void resetTheme();
187 void themeChange();
188
189 QVariant primary() const;
190 void setPrimary(const QVariant &accent);
191 void inheritPrimary(uint primary, bool custom);
192 void propagatePrimary();
193 void resetPrimary();
194 void primaryChange();
195
196 QVariant accent() const;
197 void setAccent(const QVariant &accent);
198 void inheritAccent(uint accent, bool custom);
199 void propagateAccent();
200 void resetAccent();
201 void accentChange();
202
203 QVariant foreground() const;
204 void setForeground(const QVariant &foreground);
205 void inheritForeground(uint foreground, bool custom, bool has);
206 void propagateForeground();
207 void resetForeground();
208 void foregroundChange();
209
210 QVariant background() const;
211 void setBackground(const QVariant &background);
212 void inheritBackground(uint background, bool custom, bool has);
213 void propagateBackground();
214 void resetBackground();
215 void backgroundChange();
216
217 int elevation() const;
218 void setElevation(int elevation);
219 void resetElevation();
220 void elevationChange();
221
222 RoundedScale roundedScale() const;
223 void setRoundedScale(RoundedScale roundedScale);
224 void resetRoundedScale();
225
226 ContainerStyle containerStyle() const;
227 void setContainerStyle(ContainerStyle containerStyle);
228 void resetContainerStyle();
229
230 QColor primaryColor() const;
231 QColor accentColor() const;
232 QColor backgroundColor() const;
233 QColor primaryTextColor() const;
234 QColor primaryHighlightedTextColor() const;
235 QColor secondaryTextColor() const;
236 QColor hintTextColor() const;
237 QColor textSelectionColor() const;
238 QColor dropShadowColor() const;
239 QColor dividerColor() const;
240 QColor iconColor() const;
241 QColor iconDisabledColor() const;
242 Q_INVOKABLE QColor buttonColor(Theme theme, const QVariant &background, const QVariant &accent,
243 bool enabled, bool flat, bool highlighted, bool checked) const;
244 QColor frameColor() const;
245 QColor rippleColor() const;
246 QColor highlightedRippleColor() const;
247 QColor switchUncheckedTrackColor() const;
248 QColor switchCheckedTrackColor() const;
249 QColor switchDisabledUncheckedTrackColor() const;
250 QColor switchDisabledCheckedTrackColor() const;
251 QColor switchDisabledUncheckedTrackBorderColor() const;
252 QColor switchUncheckedHandleColor() const;
253 QColor switchUncheckedHoveredHandleColor() const;
254 QColor switchCheckedHandleColor() const;
255 QColor switchDisabledUncheckedHandleColor() const;
256 QColor switchDisabledCheckedHandleColor() const;
257 QColor switchDisabledCheckedIconColor() const;
258 QColor switchDisabledUncheckedIconColor() const;
259 QColor scrollBarColor() const;
260 QColor scrollBarHoveredColor() const;
261 QColor scrollBarPressedColor() const;
262 QColor dialogColor() const;
263 QColor backgroundDimColor() const;
264 QColor listHighlightColor() const;
265 QColor tooltipColor() const;
266 QColor toolBarColor() const;
267 QColor toolTextColor() const;
268 QColor spinBoxDisabledIconColor() const;
269 QColor sliderDisabledColor() const;
270 QColor textFieldFilledContainerColor() const;
271
272 Q_INVOKABLE QColor color(Color color, Shade shade = Shade500) const;
273 Q_INVOKABLE QColor shade(const QColor &color, Shade shade) const;
274
275 int touchTarget() const;
276 int buttonVerticalPadding() const;
277 Q_INVOKABLE int buttonLeftPadding(bool flat, bool hasIcon) const;
278 Q_INVOKABLE int buttonRightPadding(bool flat, bool hasIcon, bool hasText) const;
279 int buttonHeight() const;
280 int delegateHeight() const;
281 int dialogButtonBoxHeight() const;
282 int dialogTitleFontPixelSize() const;
283 RoundedScale dialogRoundedScale() const;
284 int frameVerticalPadding() const;
285 int menuItemHeight() const;
286 int menuItemVerticalPadding() const;
287 int switchIndicatorWidth() const;
288 int switchIndicatorHeight() const;
289 int switchNormalHandleHeight() const;
290 int switchCheckedHandleHeight() const;
291 int switchLargestHandleHeight() const;
292 int switchDelegateVerticalPadding() const;
293 int textFieldHeight() const;
294 int textFieldHorizontalPadding() const;
295 int textFieldVerticalPadding() const;
296 int tooltipHeight() const;
297
298 static void initGlobals();
299
300 static Variant variant();
301
309
311
319
320protected:
321 void attachedParentChange(QQuickAttachedPropertyPropagator *newParent, QQuickAttachedPropertyPropagator *oldParent) override;
322
323private:
324 void init();
325 bool variantToRgba(const QVariant &var, const char *name, QRgb *rgba, bool *custom) const;
326
327 QColor backgroundColor(Shade shade) const;
328 QColor accentColor(Shade shade) const;
329
330 Shade themeShade() const;
331
332 // These reflect whether a color value was explicitly set on the specific
333 // item that this attached style object represents.
334 bool m_explicitTheme = false;
335 bool m_explicitPrimary = false;
336 bool m_explicitAccent = false;
337 bool m_explicitForeground = false;
338 bool m_explicitBackground = false;
339 // These reflect whether the color value that was either inherited or
340 // explicitly set is in the form that QColor expects, rather than one of
341 // our pre-defined color enum values.
342 bool m_customPrimary = false;
343 bool m_customAccent = false;
344 bool m_customForeground = false;
345 bool m_customBackground = false;
346 // These will be true when this item has an explicit or inherited foreground/background
347 // color, or these colors were declared globally via settings (e.g. conf or env vars).
348 // Some color properties of the style will return different values depending on whether
349 // or not these are set.
350 bool m_hasForeground = false;
351 bool m_hasBackground = false;
352 // The actual values for this item, whether explicit, inherited or globally set.
353 Theme m_theme = Light;
354 uint m_primary = 0;
355 uint m_accent = 0;
356 uint m_foreground = 0;
357 uint m_background = 0;
358 int m_elevation = 0;
359 RoundedScale m_roundedScale = RoundedScale::NotRounded;
360 ContainerStyle m_containerStyle = ContainerStyle::Filled;
361};
362
364
365#endif // QQUICKMATERIALSTYLE_P_H
The QColor class provides colors based on RGB, HSV or CMYK values.
Definition qcolor.h:31
\inmodule QtCore
Definition qobject.h:103
The QQuickAttachedPropertyPropagator class provides a way to propagate attached properties.
void primaryHighlightedTextColorChanged()
void containerStyleChanged()
\inmodule QtCore
Definition qvariant.h:65
Combined button and popup list for selecting options.
GLenum GLenum GLsizei const GLuint GLboolean enabled
GLuint color
[2]
GLuint name
#define QML_UNCREATABLE(REASON)
#define QML_NAMED_ELEMENT(NAME)
#define QML_ADDED_IN_VERSION(MAJOR, MINOR)
#define QML_ATTACHED(ATTACHED_TYPE)
decorationRoleName toolTipRoleName whatsThisRoleName textAlignmentRoleName foregroundChanged
decorationRoleName toolTipRoleName whatsThisRoleName textAlignmentRoleName setForeground
QT_BEGIN_NAMESPACE typedef unsigned int QRgb
Definition qrgb.h:13
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
#define Q_ENUM(x)
#define Q_PROPERTY(...)
#define Q_OBJECT
#define Q_INVOKABLE
#define Q_SIGNALS
unsigned int uint
Definition qtypes.h:34
QVariant variant
[1]