aboutsummaryrefslogtreecommitdiffstats
path: root/src/labs/stylekit/qqstylekitcontrols_p.h
blob: e3abafa052bd43f87be245b2b5e5605cc9265163 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
// Copyright (C) 2025 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
// Qt-Security score:significant reason:default

#ifndef QQSTYLEKITCONTROLS_P_H
#define QQSTYLEKITCONTROLS_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 <QtQml/QtQml>

#include "qqstylekitreader_p.h"

QT_BEGIN_NAMESPACE

class QQStyleKitStyle;
class QQStyleKitControl;
class QQStyleKitCustomControl;

class QQStyleKitControls : public QObject, public QQmlParserStatus
{
    Q_OBJECT
    Q_INTERFACES(QQmlParserStatus)

    Q_PROPERTY(QQStyleKitControl *abstractButton READ abstractButton WRITE set_abstractButton NOTIFY abstractButtonChanged FINAL)
    Q_PROPERTY(QQStyleKitControl *control READ control WRITE set_control NOTIFY controlChanged FINAL)
    Q_PROPERTY(QQStyleKitControl *button READ button WRITE set_button NOTIFY buttonChanged FINAL)
    Q_PROPERTY(QQStyleKitControl *checkBox READ checkBox WRITE set_checkBox NOTIFY checkBoxChanged FINAL)
    Q_PROPERTY(QQStyleKitControl *comboBox READ comboBox WRITE set_comboBox NOTIFY comboBoxChanged FINAL)
    Q_PROPERTY(QQStyleKitControl *flatButton READ flatButton WRITE set_flatButton NOTIFY flatButtonChanged FINAL)
    Q_PROPERTY(QQStyleKitControl *slider READ slider WRITE set_slider NOTIFY sliderChanged FINAL)
    Q_PROPERTY(QQStyleKitControl *spinBox READ spinBox WRITE set_spinBox NOTIFY spinBoxChanged FINAL)
    Q_PROPERTY(QQStyleKitControl *textField READ textField WRITE set_textField NOTIFY textFieldChanged FINAL)
    Q_PROPERTY(QQStyleKitControl *textInput READ textInput WRITE set_textInput NOTIFY textInputChanged FINAL)
    Q_PROPERTY(QQStyleKitControl *switchControl READ switchControl WRITE set_switchControl NOTIFY switchControlChanged FINAL)
    Q_PROPERTY(QQStyleKitControl *radioButton READ radioButton WRITE set_radioButton NOTIFY radioButtonChanged FINAL)
    Q_PROPERTY(QQStyleKitControl *itemDelegate READ itemDelegate WRITE set_itemDelegate NOTIFY itemDelegateChanged FINAL)
    Q_PROPERTY(QQStyleKitControl *popup READ popup WRITE set_popup NOTIFY popupChanged FINAL)
    Q_PROPERTY(QQStyleKitControl *pane READ pane WRITE set_pane NOTIFY paneChanged FINAL)
    Q_PROPERTY(QQStyleKitControl *page READ page WRITE set_page NOTIFY pageChanged FINAL)
    Q_PROPERTY(QQStyleKitControl *frame READ frame WRITE set_frame NOTIFY frameChanged FINAL)
    QML_UNCREATABLE("This component is abstract, and cannot be instantiated")
    QML_NAMED_ELEMENT(StyleKitControls)

    Q_PROPERTY(QQmlListProperty<QObject> data READ data NOTIFY dataChanged FINAL)
    Q_CLASSINFO("DefaultProperty", "data")

public:
    QQStyleKitControls(QObject *parent = nullptr);

#define IMPLEMENT_ACCESSORS(NAME) \
    QQStyleKitControl *NAME() const; \
    void set_ ## NAME(QQStyleKitControl *control);

    IMPLEMENT_ACCESSORS(abstractButton)
    IMPLEMENT_ACCESSORS(control)
    IMPLEMENT_ACCESSORS(button)
    IMPLEMENT_ACCESSORS(checkBox)
    IMPLEMENT_ACCESSORS(comboBox)
    IMPLEMENT_ACCESSORS(flatButton)
    IMPLEMENT_ACCESSORS(slider)
    IMPLEMENT_ACCESSORS(spinBox)
    IMPLEMENT_ACCESSORS(textField)
    IMPLEMENT_ACCESSORS(textInput)
    IMPLEMENT_ACCESSORS(switchControl)
    IMPLEMENT_ACCESSORS(radioButton)
    IMPLEMENT_ACCESSORS(itemDelegate)
    IMPLEMENT_ACCESSORS(popup)
    IMPLEMENT_ACCESSORS(pane)
    IMPLEMENT_ACCESSORS(page)
    IMPLEMENT_ACCESSORS(frame)

#undef IMPLEMENT_ACCESSORS

    Q_INVOKABLE QQStyleKitControl *getControl(int controlType) const;

    QList<QQStyleKitVariation *> variations() const;

    QQmlListProperty<QObject> data();
    const QList<QObject *> children() const;

signals:
    void dataChanged();
    void abstractButtonChanged();
    void controlChanged();
    void buttonChanged();
    void checkBoxChanged();
    void comboBoxChanged();
    void flatButtonChanged();
    void sliderChanged();
    void spinBoxChanged();
    void textFieldChanged();
    void textInputChanged();
    void switchControlChanged();
    void radioButtonChanged();
    void itemDelegateChanged();
    void popupChanged();
    void paneChanged();
    void pageChanged();
    void frameChanged();

protected:
    void classBegin() override {}
    void componentComplete() override;

private:
    Q_DISABLE_COPY(QQStyleKitControls)

    QList<QObject *> m_data;
    QMap<int, QQStyleKitControl *> m_controls;
};

QT_END_NAMESPACE

#endif // QQSTYLEKITCONTROLS_P_H