diff options
author | Mitch Curtis <mitch.curtis@qt.io> | 2022-11-18 15:15:16 +0800 |
---|---|---|
committer | Mitch Curtis <mitch.curtis@qt.io> | 2022-12-01 10:26:20 +0800 |
commit | 4bd87b903b355b53e3105ba1ae7c154c4e55cdaf (patch) | |
tree | cc2edb597f0d5871302eb86e9dda78217384a5aa /examples/quickcontrols/attachedstyleproperties/MyStyle/mystyle.h | |
parent | 786e1748d4469c135a922a221024f3f9c421c0de (diff) |
Remove "2" from Qt Quick Controls directories
Qt Quick Controls 2 was named that way because it was a follow-up to
Qt Quick Controls 1.x. Now that Qt Quick Controls 1 is no longer
supported, we don't need to have "2" in the name. Work on this was
already started for the documentation in
1abdfe5d5a052f2298b7bf657513dfa7e0c66a56.
By doing this renaming a few weeks before feature freeze, it won't
affect the release but still results in as little time possible spent
manually fixing conflicts in cherry-picks from non-LTS releases as a
result of the renaming.
This patch does the following:
- Renames directories.
- Adapts CMakeLists.txt and other files to account for the new paths.
A follow-up patch will handle documentation.
It does not touch library names or other user-facing stuff, as that
will have to be done in Qt 7.
Task-number: QTBUG-95413
Change-Id: I170d8db19033ee71e495ff0c5c1a517a41ed7634
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'examples/quickcontrols/attachedstyleproperties/MyStyle/mystyle.h')
-rw-r--r-- | examples/quickcontrols/attachedstyleproperties/MyStyle/mystyle.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/examples/quickcontrols/attachedstyleproperties/MyStyle/mystyle.h b/examples/quickcontrols/attachedstyleproperties/MyStyle/mystyle.h new file mode 100644 index 0000000000..da87ab4718 --- /dev/null +++ b/examples/quickcontrols/attachedstyleproperties/MyStyle/mystyle.h @@ -0,0 +1,76 @@ +// Copyright (C) 2022 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +#ifndef MYSTYLE_H +#define MYSTYLE_H + +#include <QColor> +#include <QQmlEngine> +#include <QQuickAttachedPropertyPropagator> + +#include "mystyle_export.h" + +class MYSTYLE_EXPORT MyStyle : public QQuickAttachedPropertyPropagator +{ + Q_OBJECT + // Provide a RESET function in order to allow an item to set MyStyle.theme to undefined + // in order to use its parent's (or global) theme after one was explicitly set on it. + Q_PROPERTY(Theme theme READ theme WRITE setTheme RESET resetTheme NOTIFY themeChanged FINAL) + // As the values of these properties only depend on the theme, they can all use the theme + // property's change signal. + Q_PROPERTY(QColor windowColor READ windowColor NOTIFY themeChanged FINAL) + Q_PROPERTY(QColor windowTextColor READ windowTextColor NOTIFY themeChanged FINAL) + Q_PROPERTY(QColor buttonColor READ buttonColor NOTIFY themeChanged FINAL) + Q_PROPERTY(QColor buttonTextColor READ buttonTextColor NOTIFY themeChanged FINAL) + Q_PROPERTY(QColor toolBarColor READ toolBarColor NOTIFY themeChanged FINAL) + Q_PROPERTY(QColor popupColor READ popupColor NOTIFY themeChanged FINAL) + Q_PROPERTY(QColor popupBorderColor READ popupBorderColor NOTIFY themeChanged FINAL) + Q_PROPERTY(QColor backgroundDimColor READ backgroundDimColor NOTIFY themeChanged FINAL) + + QML_ELEMENT + QML_ATTACHED(MyStyle) + QML_UNCREATABLE("") + QML_ADDED_IN_VERSION(1, 0) + +public: + enum Theme { + Light, + Dark + }; + + Q_ENUM(Theme) + + explicit MyStyle(QObject *parent = nullptr); + + static MyStyle *qmlAttachedProperties(QObject *object); + + Theme theme() const; + void setTheme(Theme theme); + void inheritTheme(Theme theme); + void propagateTheme(); + void resetTheme(); + void themeChange(); + + QColor windowColor() const; + QColor windowTextColor() const; + QColor buttonColor() const; + QColor buttonTextColor() const; + QColor toolBarColor() const; + QColor popupColor() const; + QColor popupBorderColor() const; + QColor backgroundDimColor() const; + +Q_SIGNALS: + void themeChanged(); + +protected: + void attachedParentChange(QQuickAttachedPropertyPropagator *newParent, QQuickAttachedPropertyPropagator *oldParent) override; + +private: + // Whether a color value was explicitly set on the specific object that this attached style object represents. + bool m_explicitTheme = false; + // The actual values for this item, whether explicit, inherited or globally set. + Theme m_theme = Light; +}; + +#endif // MYSTYLE_H |