diff options
Diffstat (limited to 'src/quickcontrols/universal/qquickuniversalstyle_p.h')
-rw-r--r-- | src/quickcontrols/universal/qquickuniversalstyle_p.h | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/src/quickcontrols/universal/qquickuniversalstyle_p.h b/src/quickcontrols/universal/qquickuniversalstyle_p.h new file mode 100644 index 0000000000..c97483a5bc --- /dev/null +++ b/src/quickcontrols/universal/qquickuniversalstyle_p.h @@ -0,0 +1,213 @@ +// 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 QQUICKUNIVERSALSTYLE_P_H +#define QQUICKUNIVERSALSTYLE_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 <QtQuickControls2Universal/qtquickcontrols2universalexports.h> + +QT_BEGIN_NAMESPACE + +class QQuickUniversalStylePrivate; + +class Q_QUICKCONTROLS2UNIVERSAL_EXPORT QQuickUniversalStyle : public QQuickAttachedPropertyPropagator +{ + Q_OBJECT + Q_PROPERTY(Theme theme READ theme WRITE setTheme RESET resetTheme NOTIFY themeChanged 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(QColor altHighColor READ altHighColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor altLowColor READ altLowColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor altMediumColor READ altMediumColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor altMediumHighColor READ altMediumHighColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor altMediumLowColor READ altMediumLowColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor baseHighColor READ baseHighColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor baseLowColor READ baseLowColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor baseMediumColor READ baseMediumColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor baseMediumHighColor READ baseMediumHighColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor baseMediumLowColor READ baseMediumLowColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor chromeAltLowColor READ chromeAltLowColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor chromeBlackHighColor READ chromeBlackHighColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor chromeBlackLowColor READ chromeBlackLowColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor chromeBlackMediumLowColor READ chromeBlackMediumLowColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor chromeBlackMediumColor READ chromeBlackMediumColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor chromeDisabledHighColor READ chromeDisabledHighColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor chromeDisabledLowColor READ chromeDisabledLowColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor chromeHighColor READ chromeHighColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor chromeLowColor READ chromeLowColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor chromeMediumColor READ chromeMediumColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor chromeMediumLowColor READ chromeMediumLowColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor chromeWhiteColor READ chromeWhiteColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor listLowColor READ listLowColor NOTIFY paletteChanged FINAL) + Q_PROPERTY(QColor listMediumColor READ listMediumColor NOTIFY paletteChanged FINAL) + + QML_NAMED_ELEMENT(Universal) + QML_ATTACHED(QQuickUniversalStyle) + QML_UNCREATABLE("") + QML_ADDED_IN_VERSION(2, 0) + +public: + explicit QQuickUniversalStyle(QObject *parent = nullptr); + + static QQuickUniversalStyle *qmlAttachedProperties(QObject *object); + + enum Theme { Light, Dark, System }; + Q_ENUM(Theme) + + Theme theme() const; + void setTheme(Theme theme); + void inheritTheme(Theme theme); + void propagateTheme(); + void resetTheme(); + + enum Color { + Lime, + Green, + Emerald, + Teal, + Cyan, + Cobalt, + Indigo, + Violet, + Pink, + Magenta, + Crimson, + Red, + Orange, + Amber, + Yellow, + Brown, + Olive, + Steel, + Mauve, + Taupe + }; + Q_ENUM(Color) + + QVariant accent() const; + void setAccent(const QVariant &accent); + void inheritAccent(QRgb accent); + void propagateAccent(); + void resetAccent(); + + QVariant foreground() const; + void setForeground(const QVariant &foreground); + void inheritForeground(QRgb foreground, bool has); + void propagateForeground(); + void resetForeground(); + + QVariant background() const; + void setBackground(const QVariant &background); + void inheritBackground(QRgb background, bool has); + void propagateBackground(); + void resetBackground(); + + Q_INVOKABLE QColor color(Color color) const; + + QColor altHighColor() const; + QColor altLowColor() const; + QColor altMediumColor() const; + QColor altMediumHighColor() const; + QColor altMediumLowColor() const; + QColor baseHighColor() const; + QColor baseLowColor() const; + QColor baseMediumColor() const; + QColor baseMediumHighColor() const; + QColor baseMediumLowColor() const; + QColor chromeAltLowColor() const; + QColor chromeBlackHighColor() const; + QColor chromeBlackLowColor() const; + QColor chromeBlackMediumLowColor() const; + QColor chromeBlackMediumColor() const; + QColor chromeDisabledHighColor() const; + QColor chromeDisabledLowColor() const; + QColor chromeHighColor() const; + QColor chromeLowColor() const; + QColor chromeMediumColor() const; + QColor chromeMediumLowColor() const; + QColor chromeWhiteColor() const; + QColor listLowColor() const; + QColor listMediumColor() const; + + enum SystemColor { + AltHigh, + AltLow, + AltMedium, + AltMediumHigh, + AltMediumLow, + BaseHigh, + BaseLow, + BaseMedium, + BaseMediumHigh, + BaseMediumLow, + ChromeAltLow, + ChromeBlackHigh, + ChromeBlackLow, + ChromeBlackMediumLow, + ChromeBlackMedium, + ChromeDisabledHigh, + ChromeDisabledLow, + ChromeHigh, + ChromeLow, + ChromeMedium, + ChromeMediumLow, + ChromeWhite, + ListLow, + ListMedium + }; + + QColor systemColor(SystemColor role) const; + + static void initGlobals(); + +Q_SIGNALS: + void themeChanged(); + void accentChanged(); + void foregroundChanged(); + void backgroundChanged(); + void paletteChanged(); + +protected: + void attachedParentChange(QQuickAttachedPropertyPropagator *newParent, QQuickAttachedPropertyPropagator *oldParent) override; + +private: + bool variantToRgba(const QVariant &var, const char *name, QRgb *rgba) 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_explicitAccent = false; + bool m_explicitForeground = false; + bool m_explicitBackground = 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; + QRgb m_accent = Qt::blue; + QRgb m_foreground = Qt::black; + QRgb m_background = Qt::white; +}; + +QT_END_NAMESPACE + +#endif // QQUICKUNIVERSALSTYLE_P_H |