Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qquickstate_p_p.h
Go to the documentation of this file.
1
// Copyright (C) 2016 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
// Qt-Security score:significant reason:default
4
5
#
ifndef
QQUICKSTATE_P_H
6
#
define
QQUICKSTATE_P_H
7
8
//
9
// W A R N I N G
10
// -------------
11
//
12
// This file is not part of the Qt API. It exists purely as an
13
// implementation detail. This header file may change from version to
14
// version without notice, or even be removed.
15
//
16
// We mean it.
17
//
18
19
#
include
"qquickstate_p.h"
20
21
#
include
"qquicktransitionmanager_p_p.h"
22
23
#
include
<
private
/
qqmlproperty_p
.
h
>
24
#
include
<
private
/
qqmlguard_p
.
h
>
25
26
#
include
<
private
/
qqmlbinding_p
.
h
>
27
28
#
include
<
private
/
qobject_p
.
h
>
29
30
QT_BEGIN_NAMESPACE
31
32
class
QQuickSimpleAction
33
{
34
public
:
35
enum
State
{
StartState
,
EndState
};
36
QQuickSimpleAction
(
const
QQuickStateAction &a,
State
state =
StartState
)
37
{
38
m_property = a.property;
39
m_specifiedObject = a.specifiedObject;
40
m_specifiedProperty = a.specifiedProperty;
41
m_event = a.event;
42
if
(state ==
StartState
) {
43
m_value = a.fromValue;
44
m_binding = QQmlAnyBinding::ofProperty(m_property);
45
m_reverseEvent =
true
;
46
}
else
{
47
m_value = a.toValue;
48
m_binding = a.toBinding;
49
m_reverseEvent =
false
;
50
}
51
}
52
53
~
QQuickSimpleAction
()
54
{
55
}
56
57
QQuickSimpleAction
(
const
QQuickSimpleAction
&other)
58
:
m_property
(
other
.
m_property
),
59
m_value
(
other
.
m_value
),
60
m_binding
(
other
.
binding
()),
61
m_specifiedObject(other.m_specifiedObject),
62
m_specifiedProperty
(
other
.
m_specifiedProperty
),
63
m_event
(
other
.
m_event
),
64
m_reverseEvent(other.m_reverseEvent)
65
{
66
}
67
68
QQuickSimpleAction
&
operator
=(
const
QQuickSimpleAction
&other)
69
{
70
m_property = other.m_property;
71
m_value = other.m_value;
72
m_binding = other.binding();
73
m_specifiedObject = other.m_specifiedObject;
74
m_specifiedProperty = other.m_specifiedProperty;
75
m_event = other.m_event;
76
m_reverseEvent = other.m_reverseEvent;
77
78
return
*
this
;
79
}
80
81
void
setProperty
(
const
QQmlProperty &property)
82
{
83
m_property = property;
84
}
85
86
const
QQmlProperty &
property
()
const
87
{
88
return
m_property;
89
}
90
91
void
setValue
(
const
QVariant &value)
92
{
93
m_value = value;
94
}
95
96
const
QVariant &
value
()
const
97
{
98
return
m_value;
99
}
100
101
void
setBinding
(QQmlAnyBinding binding)
102
{
103
m_binding = binding;
104
}
105
106
QQmlAnyBinding
binding
()
const
107
{
108
return
m_binding;
109
}
110
111
QObject *
specifiedObject
()
const
112
{
113
return
m_specifiedObject;
114
}
115
116
const
QString
&
specifiedProperty
()
const
117
{
118
return
m_specifiedProperty;
119
}
120
121
QQuickStateActionEvent
*
event
()
const
122
{
123
return
m_event;
124
}
125
126
bool
reverseEvent
()
const
127
{
128
return
m_reverseEvent;
129
}
130
131
private
:
132
QQmlProperty m_property;
133
QVariant m_value;
134
QQmlAnyBinding m_binding;
135
QObject *m_specifiedObject;
136
QString m_specifiedProperty;
137
QQuickStateActionEvent *m_event;
138
bool
m_reverseEvent;
139
};
140
141
class
QQuickRevertAction
142
{
143
public
:
144
QQuickRevertAction
() :
event
(
nullptr
) {}
145
QQuickRevertAction
(
const
QQmlProperty &prop) :
property
(
prop
),
event
(
nullptr
) {}
146
QQuickRevertAction
(QQuickStateActionEvent *e) :
event
(
e
) {}
147
QQmlProperty
property
;
148
QQuickStateActionEvent
*
event
;
149
};
150
151
class
QQuickStateOperationPrivate
:
public
QObjectPrivate
152
{
153
Q_DECLARE_PUBLIC(QQuickStateOperation)
154
155
public
:
156
157
QQuickStateOperationPrivate
()
158
:
m_state
(
nullptr
) {}
159
160
QQuickState
*
m_state
;
161
};
162
163
class
QQuickStatePrivate
:
public
QObjectPrivate
164
{
165
Q_DECLARE_PUBLIC(QQuickState)
166
167
public
:
168
QQuickStatePrivate
()
169
:
when
(
false
),
whenKnown
(
false
),
named
(
false
),
inState
(
false
),
group
(
nullptr
) {}
170
171
typedef
QList
<
QQuickSimpleAction
>
SimpleActionList
;
172
173
QString
name
;
174
bool
when
;
175
bool
whenKnown
;
176
bool
named
;
177
178
struct
OperationGuard
:
public
QQmlGuard
<
QQuickStateOperation
>
179
{
180
OperationGuard
(QObject *obj, QList<OperationGuard> *l) :
QQmlGuard
<
QQuickStateOperation
>(
181
OperationGuard
::
objectDestroyedImpl
,
nullptr
)
182
,
list
(
l
)
183
{
184
setObject(
static_cast
<QQuickStateOperation *>(obj));
185
}
186
QList
<
OperationGuard
> *
list
;
187
188
private
:
189
static
void
objectDestroyedImpl(QQmlGuardImpl *guard) {
190
auto
This =
static_cast
<
OperationGuard
*>(guard);
191
// we assume priv will always be destroyed after objectDestroyed calls
192
This->list->removeOne(*This);
193
}
194
};
195
QList
<
OperationGuard
>
operations
;
196
197
static
void
operations_append
(QQmlListProperty<QQuickStateOperation> *prop, QQuickStateOperation *op) {
198
QList<OperationGuard> *list =
static_cast
<QList<OperationGuard> *>(prop->data);
199
op->setState(qobject_cast<QQuickState*>(prop->object));
200
list->append(
OperationGuard
(op, list));
201
}
202
static
void
operations_clear
(QQmlListProperty<QQuickStateOperation> *prop) {
203
QList<OperationGuard> *list =
static_cast
<QList<OperationGuard> *>(prop->data);
204
for
(
auto
&e : *list)
205
e->setState(
nullptr
);
206
list->clear();
207
}
208
static
qsizetype
operations_count
(QQmlListProperty<QQuickStateOperation> *prop) {
209
QList<OperationGuard> *list =
static_cast
<QList<OperationGuard> *>(prop->data);
210
return
list->size();
211
}
212
static
QQuickStateOperation
*
operations_at
(QQmlListProperty<QQuickStateOperation> *prop, qsizetype index) {
213
QList<OperationGuard> *list =
static_cast
<QList<OperationGuard> *>(prop->data);
214
return
list->at(index);
215
}
216
static
void
operations_replace
(QQmlListProperty<QQuickStateOperation> *prop, qsizetype index,
217
QQuickStateOperation *op) {
218
QList<OperationGuard> *list =
static_cast
<QList<OperationGuard> *>(prop->data);
219
auto
&guard = list->at(index);
220
if
(guard.object() == op) {
221
op->setState(qobject_cast<QQuickState*>(prop->object));
222
}
else
{
223
list->at(index)->setState(
nullptr
);
224
op->setState(qobject_cast<QQuickState*>(prop->object));
225
list->replace(index,
OperationGuard
(op, list));
226
}
227
}
228
static
void
operations_removeLast
(QQmlListProperty<QQuickStateOperation> *prop) {
229
QList<OperationGuard> *list =
static_cast
<QList<OperationGuard> *>(prop->data);
230
list->last()->setState(
nullptr
);
231
list->removeLast();
232
}
233
234
QQuickTransitionManager
transitionManager
;
235
236
SimpleActionList
revertList
;
237
QList
<
QQuickRevertAction
>
reverting
;
238
QString
extends
;
239
mutable
bool
inState
;
240
QQuickStateGroup *
group
;
241
242
QQuickStateOperation
::
ActionList
generateActionList
()
const
;
243
void
complete
();
244
};
245
246
QT_END_NAMESPACE
247
248
#
endif
// QQUICKSTATE_P_H
QQuickRevertAction
Definition
qquickstate_p_p.h:142
QQuickRevertAction::QQuickRevertAction
QQuickRevertAction()
Definition
qquickstate_p_p.h:144
QQuickRevertAction::QQuickRevertAction
QQuickRevertAction(QQuickStateActionEvent *e)
Definition
qquickstate_p_p.h:146
QQuickRevertAction::QQuickRevertAction
QQuickRevertAction(const QQmlProperty &prop)
Definition
qquickstate_p_p.h:145
QQuickRevertAction::property
QQmlProperty property
Definition
qquickstate_p_p.h:147
QQuickRevertAction::event
QQuickStateActionEvent * event
Definition
qquickstate_p_p.h:148
QQuickSimpleAction
Definition
qquickstate_p_p.h:33
QQuickSimpleAction::State
State
Definition
qquickstate_p_p.h:35
QQuickSimpleAction::EndState
@ EndState
Definition
qquickstate_p_p.h:35
QQuickSimpleAction::StartState
@ StartState
Definition
qquickstate_p_p.h:35
QQuickSimpleAction::value
const QVariant & value() const
Definition
qquickstate_p_p.h:96
QQuickSimpleAction::event
QQuickStateActionEvent * event() const
Definition
qquickstate_p_p.h:121
QQuickSimpleAction::operator=
QQuickSimpleAction & operator=(const QQuickSimpleAction &other)
Definition
qquickstate_p_p.h:68
QQuickSimpleAction::~QQuickSimpleAction
~QQuickSimpleAction()
Definition
qquickstate_p_p.h:53
QQuickSimpleAction::setProperty
void setProperty(const QQmlProperty &property)
Definition
qquickstate_p_p.h:81
QQuickSimpleAction::reverseEvent
bool reverseEvent() const
Definition
qquickstate_p_p.h:126
QQuickSimpleAction::specifiedObject
QObject * specifiedObject() const
Definition
qquickstate_p_p.h:111
QQuickSimpleAction::property
const QQmlProperty & property() const
Definition
qquickstate_p_p.h:86
QQuickSimpleAction::setValue
void setValue(const QVariant &value)
Definition
qquickstate_p_p.h:91
QQuickSimpleAction::specifiedProperty
const QString & specifiedProperty() const
Definition
qquickstate_p_p.h:116
QQuickSimpleAction::binding
QQmlAnyBinding binding() const
Definition
qquickstate_p_p.h:106
QQuickSimpleAction::setBinding
void setBinding(QQmlAnyBinding binding)
Definition
qquickstate_p_p.h:101
QQuickSimpleAction::QQuickSimpleAction
QQuickSimpleAction(const QQuickSimpleAction &other)
Definition
qquickstate_p_p.h:57
QQuickSimpleAction::QQuickSimpleAction
QQuickSimpleAction(const QQuickStateAction &a, State state=StartState)
Definition
qquickstate_p_p.h:36
QQuickStateOperationPrivate
Definition
qquickstate_p_p.h:152
QQuickStatePrivate
Definition
qquickstate_p_p.h:164
QQuickStatePrivate::revertList
SimpleActionList revertList
Definition
qquickstate_p_p.h:236
QQuickStatePrivate::complete
void complete()
Definition
qquickstate.cpp:263
QQuickStatePrivate::operations_append
static void operations_append(QQmlListProperty< QQuickStateOperation > *prop, QQuickStateOperation *op)
Definition
qquickstate_p_p.h:197
QQuickStatePrivate::name
QString name
Definition
qquickstate_p_p.h:173
QQuickStatePrivate::operations_count
static qsizetype operations_count(QQmlListProperty< QQuickStateOperation > *prop)
Definition
qquickstate_p_p.h:208
QQuickStatePrivate::operations_clear
static void operations_clear(QQmlListProperty< QQuickStateOperation > *prop)
Definition
qquickstate_p_p.h:202
QQuickStatePrivate::operations_at
static QQuickStateOperation * operations_at(QQmlListProperty< QQuickStateOperation > *prop, qsizetype index)
Definition
qquickstate_p_p.h:212
QQuickStatePrivate::transitionManager
QQuickTransitionManager transitionManager
Definition
qquickstate_p_p.h:234
QQuickStatePrivate::named
bool named
Definition
qquickstate_p_p.h:176
QQuickStatePrivate::reverting
QList< QQuickRevertAction > reverting
Definition
qquickstate_p_p.h:237
QQuickStatePrivate::operations_removeLast
static void operations_removeLast(QQmlListProperty< QQuickStateOperation > *prop)
Definition
qquickstate_p_p.h:228
QQuickStatePrivate::operations
QList< OperationGuard > operations
Definition
qquickstate_p_p.h:195
QQuickStatePrivate::whenKnown
bool whenKnown
Definition
qquickstate_p_p.h:175
QQuickStatePrivate::extends
QString extends
Definition
qquickstate_p_p.h:238
QQuickStatePrivate::inState
bool inState
Definition
qquickstate_p_p.h:239
QQuickStatePrivate::operations_replace
static void operations_replace(QQmlListProperty< QQuickStateOperation > *prop, qsizetype index, QQuickStateOperation *op)
Definition
qquickstate_p_p.h:216
QQuickStatePrivate::group
QQuickStateGroup * group
Definition
qquickstate_p_p.h:240
QQuickStatePrivate::when
bool when
Definition
qquickstate_p_p.h:174
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
QQuickStatePrivate::OperationGuard
Definition
qquickstate_p_p.h:179
QQuickStatePrivate::OperationGuard::list
QList< OperationGuard > * list
Definition
qquickstate_p_p.h:186
QQuickStatePrivate::OperationGuard::OperationGuard
OperationGuard(QObject *obj, QList< OperationGuard > *l)
Definition
qquickstate_p_p.h:180
qtdeclarative
src
quick
util
qquickstate_p_p.h
Generated on
for Qt by
1.18.0