aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickcontrols/material/qquickmaterialstyle_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/quickcontrols/material/qquickmaterialstyle_p.h')
-rw-r--r--src/quickcontrols/material/qquickmaterialstyle_p.h365
1 files changed, 365 insertions, 0 deletions
diff --git a/src/quickcontrols/material/qquickmaterialstyle_p.h b/src/quickcontrols/material/qquickmaterialstyle_p.h
new file mode 100644
index 0000000000..f7c2b256ba
--- /dev/null
+++ b/src/quickcontrols/material/qquickmaterialstyle_p.h
@@ -0,0 +1,365 @@
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QQUICKMATERIALSTYLE_P_H
+#define QQUICKMATERIALSTYLE_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtGui/qcolor.h>
+#include <QtQml/qqml.h>
+#include <QtQuickControls2/qquickattachedpropertypropagator.h>
+#include <QtQuickControls2Material/qtquickcontrols2materialexports.h>
+
+QT_BEGIN_NAMESPACE
+
+class Q_QUICKCONTROLS2MATERIAL_EXPORT QQuickMaterialStyle : public QQuickAttachedPropertyPropagator
+{
+ Q_OBJECT
+ Q_PROPERTY(Theme theme READ theme WRITE setTheme RESET resetTheme NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QVariant primary READ primary WRITE setPrimary RESET resetPrimary NOTIFY primaryChanged FINAL)
+ Q_PROPERTY(QVariant accent READ accent WRITE setAccent RESET resetAccent NOTIFY accentChanged FINAL)
+ Q_PROPERTY(QVariant foreground READ foreground WRITE setForeground RESET resetForeground NOTIFY foregroundChanged FINAL)
+ Q_PROPERTY(QVariant background READ background WRITE setBackground RESET resetBackground NOTIFY backgroundChanged FINAL)
+ Q_PROPERTY(int elevation READ elevation WRITE setElevation RESET resetElevation NOTIFY elevationChanged FINAL)
+ Q_PROPERTY(RoundedScale roundedScale READ roundedScale WRITE setRoundedScale RESET resetRoundedScale
+ NOTIFY roundedScaleChanged FINAL)
+ Q_PROPERTY(ContainerStyle containerStyle READ containerStyle WRITE setContainerStyle RESET resetContainerStyle
+ NOTIFY containerStyleChanged FINAL)
+
+ Q_PROPERTY(QColor primaryColor READ primaryColor NOTIFY primaryChanged FINAL) // TODO: remove?
+ Q_PROPERTY(QColor accentColor READ accentColor NOTIFY accentChanged FINAL) // TODO: remove?
+ Q_PROPERTY(QColor backgroundColor READ backgroundColor NOTIFY backgroundChanged FINAL)
+ Q_PROPERTY(QColor primaryTextColor READ primaryTextColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor primaryHighlightedTextColor READ primaryHighlightedTextColor NOTIFY primaryHighlightedTextColorChanged FINAL)
+ Q_PROPERTY(QColor secondaryTextColor READ secondaryTextColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor hintTextColor READ hintTextColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor textSelectionColor READ textSelectionColor NOTIFY themeOrAccentChanged FINAL)
+ Q_PROPERTY(QColor dropShadowColor READ dropShadowColor CONSTANT FINAL)
+ Q_PROPERTY(QColor dividerColor READ dividerColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor iconColor READ iconColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor iconDisabledColor READ iconDisabledColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor frameColor READ frameColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor rippleColor READ rippleColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor highlightedRippleColor READ highlightedRippleColor NOTIFY themeOrAccentChanged FINAL)
+ Q_PROPERTY(QColor switchUncheckedTrackColor READ switchUncheckedTrackColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor switchCheckedTrackColor READ switchCheckedTrackColor NOTIFY themeOrAccentChanged FINAL)
+ Q_PROPERTY(QColor switchUncheckedHandleColor READ switchUncheckedHandleColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor switchUncheckedHoveredHandleColor READ switchUncheckedHoveredHandleColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor switchDisabledUncheckedTrackColor READ switchDisabledUncheckedTrackColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor switchDisabledCheckedTrackColor READ switchDisabledCheckedTrackColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor switchDisabledUncheckedTrackBorderColor READ switchDisabledUncheckedTrackBorderColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor switchCheckedHandleColor READ switchCheckedHandleColor NOTIFY themeOrAccentChanged FINAL)
+ Q_PROPERTY(QColor switchDisabledUncheckedHandleColor READ switchDisabledUncheckedHandleColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor switchDisabledCheckedHandleColor READ switchDisabledCheckedHandleColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor switchDisabledCheckedIconColor READ switchDisabledCheckedIconColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor switchDisabledUncheckedIconColor READ switchDisabledUncheckedIconColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor scrollBarColor READ scrollBarColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor scrollBarHoveredColor READ scrollBarHoveredColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor scrollBarPressedColor READ scrollBarPressedColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor dialogColor READ dialogColor NOTIFY dialogColorChanged FINAL)
+ Q_PROPERTY(QColor backgroundDimColor READ backgroundDimColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor listHighlightColor READ listHighlightColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor tooltipColor READ tooltipColor NOTIFY tooltipColorChanged FINAL)
+ Q_PROPERTY(QColor toolBarColor READ toolBarColor NOTIFY toolBarColorChanged FINAL)
+ Q_PROPERTY(QColor toolTextColor READ toolTextColor NOTIFY toolTextColorChanged FINAL)
+ Q_PROPERTY(QColor spinBoxDisabledIconColor READ spinBoxDisabledIconColor NOTIFY themeChanged FINAL)
+ Q_PROPERTY(QColor sliderDisabledColor READ sliderDisabledColor NOTIFY themeChanged FINAL REVISION(2, 15))
+ Q_PROPERTY(QColor textFieldFilledContainerColor READ textFieldFilledContainerColor NOTIFY themeChanged FINAL)
+
+ Q_PROPERTY(int touchTarget READ touchTarget CONSTANT FINAL)
+ Q_PROPERTY(int buttonVerticalPadding READ buttonVerticalPadding CONSTANT FINAL)
+ Q_PROPERTY(int buttonHeight READ buttonHeight CONSTANT FINAL)
+ Q_PROPERTY(int delegateHeight READ delegateHeight CONSTANT FINAL)
+ Q_PROPERTY(int dialogButtonBoxHeight READ dialogButtonBoxHeight CONSTANT FINAL)
+ Q_PROPERTY(int dialogTitleFontPixelSize READ dialogTitleFontPixelSize CONSTANT FINAL)
+ Q_PROPERTY(RoundedScale dialogRoundedScale READ dialogRoundedScale CONSTANT FINAL)
+ Q_PROPERTY(int frameVerticalPadding READ frameVerticalPadding CONSTANT FINAL)
+ Q_PROPERTY(int menuItemHeight READ menuItemHeight CONSTANT FINAL)
+ Q_PROPERTY(int menuItemVerticalPadding READ menuItemVerticalPadding CONSTANT FINAL)
+ Q_PROPERTY(int switchIndicatorWidth READ switchIndicatorWidth CONSTANT FINAL)
+ Q_PROPERTY(int switchIndicatorHeight READ switchIndicatorHeight CONSTANT FINAL)
+ Q_PROPERTY(int switchNormalHandleHeight READ switchNormalHandleHeight CONSTANT FINAL)
+ Q_PROPERTY(int switchCheckedHandleHeight READ switchCheckedHandleHeight CONSTANT FINAL)
+ Q_PROPERTY(int switchLargestHandleHeight READ switchLargestHandleHeight CONSTANT FINAL)
+ Q_PROPERTY(int switchDelegateVerticalPadding READ switchDelegateVerticalPadding CONSTANT FINAL)
+ Q_PROPERTY(int textFieldHeight READ textFieldHeight CONSTANT FINAL)
+ Q_PROPERTY(int textFieldHorizontalPadding READ textFieldHorizontalPadding CONSTANT FINAL)
+ Q_PROPERTY(int textFieldVerticalPadding READ textFieldVerticalPadding CONSTANT FINAL)
+ Q_PROPERTY(int tooltipHeight READ tooltipHeight CONSTANT FINAL)
+
+ QML_NAMED_ELEMENT(Material)
+ QML_ATTACHED(QQuickMaterialStyle)
+ QML_UNCREATABLE("")
+ QML_ADDED_IN_VERSION(2, 0)
+
+public:
+ enum Theme {
+ Light,
+ Dark,
+ System
+ };
+
+ enum Variant {
+ Normal,
+ Dense
+ };
+
+ enum Color {
+ Red,
+ Pink,
+ Purple,
+ DeepPurple,
+ Indigo,
+ Blue,
+ LightBlue,
+ Cyan,
+ Teal,
+ Green,
+ LightGreen,
+ Lime,
+ Yellow,
+ Amber,
+ Orange,
+ DeepOrange,
+ Brown,
+ Grey,
+ BlueGrey
+ };
+
+ enum Shade {
+ Shade50,
+ Shade100,
+ Shade200,
+ Shade300,
+ Shade400,
+ Shade500,
+ Shade600,
+ Shade700,
+ Shade800,
+ Shade900,
+ ShadeA100,
+ ShadeA200,
+ ShadeA400,
+ ShadeA700,
+ };
+
+ enum class RoundedScale {
+ NotRounded,
+ ExtraSmallScale = 4,
+ SmallScale = 8,
+ MediumScale = 12,
+ LargeScale = 16,
+ ExtraLargeScale = 28,
+ FullScale = 0xFF // For full we use half the height of the item.
+ };
+
+ enum class ContainerStyle {
+ Filled,
+ Outlined
+ };
+
+ Q_ENUM(Theme)
+ Q_ENUM(Variant)
+ Q_ENUM(Color)
+ Q_ENUM(Shade)
+ Q_ENUM(RoundedScale)
+ Q_ENUM(ContainerStyle)
+
+ explicit QQuickMaterialStyle(QObject *parent = nullptr);
+
+ static QQuickMaterialStyle *qmlAttachedProperties(QObject *object);
+
+ Theme theme() const;
+ void setTheme(Theme theme);
+ void inheritTheme(Theme theme);
+ void propagateTheme();
+ void resetTheme();
+ void themeChange();
+
+ QVariant primary() const;
+ void setPrimary(const QVariant &accent);
+ void inheritPrimary(uint primary, bool custom);
+ void propagatePrimary();
+ void resetPrimary();
+ void primaryChange();
+
+ QVariant accent() const;
+ void setAccent(const QVariant &accent);
+ void inheritAccent(uint accent, bool custom);
+ void propagateAccent();
+ void resetAccent();
+ void accentChange();
+
+ QVariant foreground() const;
+ void setForeground(const QVariant &foreground);
+ void inheritForeground(uint foreground, bool custom, bool has);
+ void propagateForeground();
+ void resetForeground();
+ void foregroundChange();
+
+ QVariant background() const;
+ void setBackground(const QVariant &background);
+ void inheritBackground(uint background, bool custom, bool has);
+ void propagateBackground();
+ void resetBackground();
+ void backgroundChange();
+
+ int elevation() const;
+ void setElevation(int elevation);
+ void resetElevation();
+ void elevationChange();
+
+ RoundedScale roundedScale() const;
+ void setRoundedScale(RoundedScale roundedScale);
+ void resetRoundedScale();
+
+ ContainerStyle containerStyle() const;
+ void setContainerStyle(ContainerStyle containerStyle);
+ void resetContainerStyle();
+
+ QColor primaryColor() const;
+ QColor accentColor() const;
+ QColor backgroundColor() const;
+ QColor primaryTextColor() const;
+ QColor primaryHighlightedTextColor() const;
+ QColor secondaryTextColor() const;
+ QColor hintTextColor() const;
+ QColor textSelectionColor() const;
+ QColor dropShadowColor() const;
+ QColor dividerColor() const;
+ QColor iconColor() const;
+ QColor iconDisabledColor() const;
+ Q_INVOKABLE QColor buttonColor(Theme theme, const QVariant &background, const QVariant &accent,
+ bool enabled, bool flat, bool highlighted, bool checked) const;
+ QColor frameColor() const;
+ QColor rippleColor() const;
+ QColor highlightedRippleColor() const;
+ QColor switchUncheckedTrackColor() const;
+ QColor switchCheckedTrackColor() const;
+ QColor switchDisabledUncheckedTrackColor() const;
+ QColor switchDisabledCheckedTrackColor() const;
+ QColor switchDisabledUncheckedTrackBorderColor() const;
+ QColor switchUncheckedHandleColor() const;
+ QColor switchUncheckedHoveredHandleColor() const;
+ QColor switchCheckedHandleColor() const;
+ QColor switchDisabledUncheckedHandleColor() const;
+ QColor switchDisabledCheckedHandleColor() const;
+ QColor switchDisabledCheckedIconColor() const;
+ QColor switchDisabledUncheckedIconColor() const;
+ QColor scrollBarColor() const;
+ QColor scrollBarHoveredColor() const;
+ QColor scrollBarPressedColor() const;
+ QColor dialogColor() const;
+ QColor backgroundDimColor() const;
+ QColor listHighlightColor() const;
+ QColor tooltipColor() const;
+ QColor toolBarColor() const;
+ QColor toolTextColor() const;
+ QColor spinBoxDisabledIconColor() const;
+ QColor sliderDisabledColor() const;
+ QColor textFieldFilledContainerColor() const;
+
+ Q_INVOKABLE QColor color(Color color, Shade shade = Shade500) const;
+ Q_INVOKABLE QColor shade(const QColor &color, Shade shade) const;
+
+ int touchTarget() const;
+ int buttonVerticalPadding() const;
+ Q_INVOKABLE int buttonLeftPadding(bool flat, bool hasIcon) const;
+ Q_INVOKABLE int buttonRightPadding(bool flat, bool hasIcon, bool hasText) const;
+ int buttonHeight() const;
+ int delegateHeight() const;
+ int dialogButtonBoxHeight() const;
+ int dialogTitleFontPixelSize() const;
+ RoundedScale dialogRoundedScale() const;
+ int frameVerticalPadding() const;
+ int menuItemHeight() const;
+ int menuItemVerticalPadding() const;
+ int switchIndicatorWidth() const;
+ int switchIndicatorHeight() const;
+ int switchNormalHandleHeight() const;
+ int switchCheckedHandleHeight() const;
+ int switchLargestHandleHeight() const;
+ int switchDelegateVerticalPadding() const;
+ int textFieldHeight() const;
+ int textFieldHorizontalPadding() const;
+ int textFieldVerticalPadding() const;
+ int tooltipHeight() const;
+
+ static void initGlobals();
+
+ static Variant variant();
+
+Q_SIGNALS:
+ void themeChanged();
+ void primaryChanged();
+ void accentChanged();
+ void foregroundChanged();
+ void backgroundChanged();
+ void elevationChanged();
+
+ void themeOrAccentChanged();
+
+ void primaryHighlightedTextColorChanged();
+ void dialogColorChanged();
+ void tooltipColorChanged();
+ void toolBarColorChanged();
+ void toolTextColorChanged();
+ void roundedScaleChanged();
+ void containerStyleChanged();
+
+protected:
+ void attachedParentChange(QQuickAttachedPropertyPropagator *newParent, QQuickAttachedPropertyPropagator *oldParent) override;
+
+private:
+ void init();
+ bool variantToRgba(const QVariant &var, const char *name, QRgb *rgba, bool *custom) const;
+
+ QColor backgroundColor(Shade shade) const;
+ QColor accentColor(Shade shade) const;
+
+ Shade themeShade() const;
+
+ // These reflect whether a color value was explicitly set on the specific
+ // item that this attached style object represents.
+ bool m_explicitTheme = false;
+ bool m_explicitPrimary = false;
+ bool m_explicitAccent = false;
+ bool m_explicitForeground = false;
+ bool m_explicitBackground = false;
+ // These reflect whether the color value that was either inherited or
+ // explicitly set is in the form that QColor expects, rather than one of
+ // our pre-defined color enum values.
+ bool m_customPrimary = false;
+ bool m_customAccent = false;
+ bool m_customForeground = false;
+ bool m_customBackground = false;
+ // These will be true when this item has an explicit or inherited foreground/background
+ // color, or these colors were declared globally via settings (e.g. conf or env vars).
+ // Some color properties of the style will return different values depending on whether
+ // or not these are set.
+ bool m_hasForeground = false;
+ bool m_hasBackground = false;
+ // The actual values for this item, whether explicit, inherited or globally set.
+ Theme m_theme = Light;
+ uint m_primary = 0;
+ uint m_accent = 0;
+ uint m_foreground = 0;
+ uint m_background = 0;
+ int m_elevation = 0;
+ RoundedScale m_roundedScale = RoundedScale::NotRounded;
+ ContainerStyle m_containerStyle = ContainerStyle::Filled;
+};
+
+QT_END_NAMESPACE
+
+#endif // QQUICKMATERIALSTYLE_P_H