blob: d6a0e74cd1187b547e00afe3edec78e3918ec458 (
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
// 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
#ifndef QQUICKUNIFIEDLAYOUT_H
#define QQUICKUNIFIEDLAYOUT_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 <QtCore/qtimer.h>
#include <QtQuickTemplates2/private/qquickcontrol_p.h>
QT_BEGIN_NAMESPACE
class QQStyleKitLayoutItem : public QObject
{
Q_OBJECT
Q_PROPERTY(QQuickItem *item READ item WRITE setItem NOTIFY itemChanged FINAL)
Q_PROPERTY(qreal x READ x NOTIFY xChanged FINAL)
Q_PROPERTY(qreal y READ y NOTIFY yChanged FINAL)
Q_PROPERTY(qreal width READ width NOTIFY widthChanged FINAL)
Q_PROPERTY(qreal height READ height NOTIFY heightChanged FINAL)
Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment NOTIFY alignmentChanged FINAL)
Q_PROPERTY(QMarginsF margins READ margins WRITE setMargins NOTIFY marginsChanged FINAL)
Q_PROPERTY(bool fillWidth READ fillWidth WRITE setFillWidth NOTIFY fillWidthChanged FINAL)
Q_PROPERTY(bool fillHeight READ fillHeight WRITE setFillHeight NOTIFY fillHeightChanged FINAL)
QML_NAMED_ELEMENT(StyleKitLayoutItem)
public:
QQStyleKitLayoutItem(QObject *parent = nullptr);
QQuickItem *item() const;
void setItem(QQuickItem *item);
qreal x() const;
void setX(qreal x);
qreal y() const;
void setY(qreal y);
qreal width() const;
void setWidth(qreal width);
qreal height() const;
void setHeight(qreal height);
Qt::Alignment alignment() const;
void setAlignment(Qt::Alignment alignment);
QMarginsF margins() const;
void setMargins(const QMarginsF &margins);
bool fillWidth() const;
void setFillWidth(bool fill);
bool fillHeight() const;
void setFillHeight(bool fill);
signals:
void itemChanged();
void xChanged();
void yChanged();
void widthChanged();
void heightChanged();
void alignmentChanged();
void marginsChanged();
void fillWidthChanged();
void fillHeightChanged();
private:
QPointer<QQuickItem> m_item;
Qt::Alignment m_alignment = Qt::AlignLeft | Qt::AlignVCenter;
QMarginsF m_margins;
bool m_fillWidth = false;
bool m_fillHeight = false;
qreal m_x = 0;
qreal m_y = 0;
qreal m_width = 0;
qreal m_height = 0;
};
class QQStyleKitLayout : public QObject
{
Q_OBJECT
Q_PROPERTY(QQuickItem *container READ container WRITE setContainer NOTIFY containerChanged FINAL)
Q_PROPERTY(QQmlListProperty<QQStyleKitLayoutItem> layoutItems READ layoutItems NOTIFY layoutItemsChanged FINAL)
Q_PROPERTY(QMarginsF padding READ padding NOTIFY paddingChanged FINAL)
Q_PROPERTY(QMarginsF contentMargins READ contentMargins WRITE setContentMargins NOTIFY contentMarginsChanged FINAL)
Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing NOTIFY spacingChanged FINAL)
Q_PROPERTY(bool mirrored READ isMirrored WRITE setMirrored NOTIFY mirroredChanged FINAL)
Q_PROPERTY(qreal implicitWidth READ implicitWidth NOTIFY implicitWidthChanged FINAL)
Q_PROPERTY(qreal implicitHeight READ implicitHeight NOTIFY implicitHeightChanged FINAL)
Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged FINAL)
Q_CLASSINFO("DefaultProperty", "layoutItems")
QML_NAMED_ELEMENT(StyleKitLayout)
public:
QQStyleKitLayout(QObject *parent = nullptr);
QQuickItem *container() const;
void setContainer(QQuickItem *item);
QQmlListProperty<QQStyleKitLayoutItem> layoutItems();
QMarginsF padding() const;
QMarginsF contentMargins() const;
void setContentMargins(const QMarginsF &margins);
qreal spacing() const;
void setSpacing(qreal spacing);
bool isMirrored() const;
void setMirrored(bool mirrored);
qreal implicitWidth() const;
qreal implicitHeight() const;
void setImplicitWidth(qreal width);
void setImplicitHeight(qreal height);
bool isEnabled() const;
void setEnabled(bool enabled);
signals:
void containerChanged();
void layoutItemsChanged();
void layoutChanged();
void paddingChanged();
void contentMarginsChanged();
void spacingChanged();
void mirroredChanged();
void implicitWidthChanged();
void implicitHeightChanged();
void enabledChanged();
private:
void updateLayout();
void scheduleUpdate();
static void layoutItem_append(QQmlListProperty<QQStyleKitLayoutItem> *list, QQStyleKitLayoutItem *item);
static qsizetype layoutItem_count(QQmlListProperty<QQStyleKitLayoutItem> *list);
static QQStyleKitLayoutItem *layoutItem_at(QQmlListProperty<QQStyleKitLayoutItem> *list, qsizetype index);
static void layoutItem_clear(QQmlListProperty<QQStyleKitLayoutItem> *list);
QPointer<QQuickItem> m_container;
QList<QQStyleKitLayoutItem *> m_layoutItems;
QMarginsF m_contentMargins;
QMarginsF m_padding;
qreal m_spacing = 0;
qreal m_implicitWidth = 0;;
qreal m_implicitHeight = 0;
bool m_mirrored: 1;
bool m_enabled: 1;
bool m_updatingLayout: 1;
QTimer m_updateTimer;
};
QT_END_NAMESPACE
#endif // QQUICKUNIFIEDLAYOUT_H
|