1// Copyright (C) 2020 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#ifndef QQUICKPALETTE_H
4#define QQUICKPALETTE_H
5
6//
7// W A R N I N G
8// -------------
9//
10// This file is not part of the Qt API. It exists for the convenience
11// of QQuickPalette. This header file may change from version to
12// version without notice, or even be removed.
13//
14// We mean it.
15//
16
17#include <QtQuick/private/qquickcolorgroup_p.h>
18
19#include <QtCore/qpointer.h>
20
21#include <array>
22
23QT_BEGIN_NAMESPACE
24
25class QQuickAbstractPaletteProvider;
26
27class Q_QUICK_EXPORT QQuickPalette : public QQuickColorGroup
28{
29 Q_OBJECT
30
31 Q_PROPERTY(QQuickColorGroup *active READ active WRITE setActive RESET resetActive NOTIFY activeChanged FINAL)
32 Q_PROPERTY(QQuickColorGroup *inactive READ inactive WRITE setInactive RESET resetInactive NOTIFY inactiveChanged FINAL)
33 Q_PROPERTY(QQuickColorGroup *disabled READ disabled WRITE setDisabled RESET resetDisabled NOTIFY disabledChanged FINAL)
34 QML_NAMED_ELEMENT(Palette)
35 QML_ADDED_IN_VERSION(6, 0)
36
37public: // Types
38 using PalettePtr = QPointer<QQuickPalette>;
39
40public:
41 Q_DISABLE_COPY_MOVE(QQuickPalette)
42 explicit QQuickPalette(QObject *parent = nullptr);
43
44 QQuickColorGroup *active() const;
45 QQuickColorGroup *inactive() const;
46 QQuickColorGroup *disabled() const;
47 void resetActive();
48 void resetInactive();
49 void resetDisabled();
50
51 QPalette::ColorGroup currentColorGroup() const override;
52 void setCurrentGroup(QPalette::ColorGroup currentGroup);
53
54 void fromQPalette(QPalette palette);
55 QPalette toQPalette() const;
56
57 const QQuickAbstractPaletteProvider *paletteProvider() const;
58 void setPaletteProvider(const QQuickAbstractPaletteProvider *paletteProvider);
59
60 void reset();
61
62 void inheritPalette(const QPalette &palette);
63
64public Q_SLOTS:
65 void setActive(QQuickColorGroup *active);
66 void setInactive(QQuickColorGroup *inactive);
67 void setDisabled(QQuickColorGroup *disabled);
68
69Q_SIGNALS:
70 void activeChanged();
71 void inactiveChanged();
72 void disabledChanged();
73
74private:
75 void setColorGroup(QPalette::ColorGroup groupTag,
76 const QQuickColorGroup::GroupPtr &group,
77 void (QQuickPalette::*notifier)());
78
79 QQuickColorGroup::GroupPtr colorGroup(QPalette::ColorGroup groupTag) const;
80 QQuickColorGroup::GroupPtr findColorGroup(QPalette::ColorGroup groupTag) const;
81
82 void registerColorGroup(QQuickColorGroup *group, QPalette::ColorGroup groupTag);
83
84 bool isValidColorGroup(QPalette::ColorGroup groupTag,
85 const QQuickColorGroup::GroupPtr &colorGroup) const;
86
87 static constexpr QPalette::ColorGroup defaultCurrentGroup() { return QPalette::Active; }
88
89private:
90 std::array<QQuickColorGroup::GroupPtr, QPalette::NColorGroups> m_colorGroups = {};
91 QPalette::ColorGroup m_currentGroup;
92};
93
94QT_END_NAMESPACE
95
96#endif // QQUICKPALETTE_H
97

Provided by KDAB

Privacy Policy
Learn Advanced QML with KDAB
Find out more

source code of qtdeclarative/src/quick/items/qquickpalette_p.h