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
qquickpositioners_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
QQUICKPOSITIONERS_P_P_H
6
#
define
QQUICKPOSITIONERS_P_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
<
QtQuick
/
private
/
qtquickglobal_p
.
h
>
20
21
QT_REQUIRE_CONFIG
(
quick_positioners
);
22
23
#
include
"qquickpositioners_p.h"
24
#
include
"qquickimplicitsizeitem_p_p.h"
25
26
#
include
<
private
/
qlazilyallocated_p
.
h
>
27
28
#
include
<
QtCore
/
qobject
.
h
>
29
#
include
<
QtCore
/
qstring
.
h
>
30
#
include
<
QtCore
/
qtimer
.
h
>
31
32
#
include
<
algorithm
>
33
34
QT_BEGIN_NAMESPACE
35
36
class
QQuickItemViewTransitioner;
37
38
class
QQuickBasePositionerPrivate
:
public
QQuickImplicitSizeItemPrivate
,
39
public
QSafeQuickItemChangeListener
<
QQuickBasePositionerPrivate
>
40
{
41
Q_DECLARE_PUBLIC(QQuickBasePositioner)
42
43
public
:
44
struct
ExtraData
{
45
ExtraData
();
46
47
qreal
padding
;
48
qreal
topPadding
;
49
qreal
leftPadding
;
50
qreal
rightPadding
;
51
qreal
bottomPadding
;
52
bool
explicitTopPadding
: 1;
53
bool
explicitLeftPadding
: 1;
54
bool
explicitRightPadding
: 1;
55
bool
explicitBottomPadding
: 1;
56
};
57
QLazilyAllocated
<
ExtraData
>
extra
;
58
59
QQuickBasePositionerPrivate
()
60
:
spacing
(0),
type
(
QQuickBasePositioner
::
None
)
61
#
if
QT_CONFIG
(
quick_viewtransitions
)
62
,
transitioner
(0)
63
#
endif
64
,
positioningDirty
(
false
)
65
,
doingPositioning
(
false
),
anchorConflict
(
false
),
layoutDirection
(
Qt
::
LeftToRight
)
66
67
{
68
}
69
70
void
init
(QQuickBasePositioner::PositionerType at)
71
{
72
type = at;
73
}
74
75
qreal
spacing
;
76
77
QQuickBasePositioner
::
PositionerType
type
;
78
#
if
QT_CONFIG
(
quick_viewtransitions
)
79
QQuickItemViewTransitioner
*
transitioner
;
80
#
endif
81
82
void
watchChanges
(QQuickItem *other);
83
void
unwatchChanges
(QQuickItem* other);
84
void
setPositioningDirty
() {
85
Q_Q(QQuickBasePositioner);
86
if
(!
positioningDirty
) {
87
positioningDirty
=
true
;
88
q->polish();
89
}
90
}
91
92
bool
positioningDirty
: 1;
93
bool
doingPositioning
: 1;
94
bool
anchorConflict
: 1;
95
96
Qt
::
LayoutDirection
layoutDirection
;
97
98
void
mirrorChange
()
override
{
99
effectiveLayoutDirectionChange
(
)
;
100
}
101
bool
isLeftToRight
()
const
{
102
if
(type == QQuickBasePositioner::Vertical)
103
return
true
;
104
else
105
return
effectiveLayoutMirror ? layoutDirection == Qt::RightToLeft : layoutDirection == Qt::LeftToRight;
106
}
107
108
void
itemSiblingOrderChanged
(QQuickItem* other)
override
109
{
110
Q_UNUSED(other);
111
setPositioningDirty
(
)
;
112
}
113
114
void
itemGeometryChanged
(QQuickItem *, QQuickGeometryChange change,
const
QRectF &)
override
115
{
116
if
(change.sizeChange())
117
setPositioningDirty
(
)
;
118
}
119
120
void
itemVisibilityChanged
(QQuickItem *)
override
121
{
122
setPositioningDirty
(
)
;
123
}
124
125
void
itemDestroyed
(QQuickItem *item)
override
126
{
127
Q_Q(QQuickBasePositioner);
128
auto
it =
std
::find(q->positionedItems.begin(), q->positionedItems.end(), item);
129
if
(it != q->positionedItems.end())
130
q->positionedItems.erase(it);
131
}
132
133
static
Qt
::
LayoutDirection
getLayoutDirection
(
const
QQuickBasePositioner *positioner)
134
{
135
return
positioner->d_func()->layoutDirection;
136
}
137
138
static
Qt
::
LayoutDirection
getEffectiveLayoutDirection
(
const
QQuickBasePositioner *positioner)
139
{
140
if
(positioner->d_func()->effectiveLayoutMirror)
141
return
positioner->d_func()->layoutDirection == Qt::RightToLeft ? Qt::LeftToRight : Qt::RightToLeft;
142
else
143
return
positioner->d_func()->layoutDirection;
144
}
145
146
virtual
void
effectiveLayoutDirectionChange
()
147
{
148
}
149
150
inline
qreal
padding
()
const
{
return
extra.isAllocated() ? extra->padding : 0.0; }
151
void
setTopPadding
(qreal value,
bool
reset =
false
);
152
void
setLeftPadding
(qreal value,
bool
reset =
false
);
153
void
setRightPadding
(qreal value,
bool
reset =
false
);
154
void
setBottomPadding
(qreal value,
bool
reset =
false
);
155
};
156
157
QT_END_NAMESPACE
158
159
#
endif
// QQUICKPOSITIONERS_P_P_H
QQuickBasePositionerPrivate
Definition
qquickpositioners_p_p.h:40
QQuickBasePositionerPrivate::effectiveLayoutDirectionChange
virtual void effectiveLayoutDirectionChange()
Definition
qquickpositioners_p_p.h:146
QQuickBasePositionerPrivate::positioningDirty
bool positioningDirty
Definition
qquickpositioners_p_p.h:92
QQuickBasePositionerPrivate::doingPositioning
bool doingPositioning
Definition
qquickpositioners_p_p.h:93
QQuickBasePositionerPrivate::watchChanges
void watchChanges(QQuickItem *other)
Definition
qquickpositioners.cpp:24
QQuickBasePositionerPrivate::setLeftPadding
void setLeftPadding(qreal value, bool reset=false)
Definition
qquickpositioners.cpp:660
QQuickBasePositionerPrivate::spacing
qreal spacing
Definition
qquickpositioners_p_p.h:75
QQuickBasePositionerPrivate::itemVisibilityChanged
void itemVisibilityChanged(QQuickItem *) override
Definition
qquickpositioners_p_p.h:120
QQuickBasePositionerPrivate::getEffectiveLayoutDirection
static Qt::LayoutDirection getEffectiveLayoutDirection(const QQuickBasePositioner *positioner)
Definition
qquickpositioners_p_p.h:138
QQuickBasePositionerPrivate::mirrorChange
void mirrorChange() override
Definition
qquickpositioners_p_p.h:98
QQuickBasePositionerPrivate::setPositioningDirty
void setPositioningDirty()
Definition
qquickpositioners_p_p.h:84
QQuickBasePositionerPrivate::setBottomPadding
void setBottomPadding(qreal value, bool reset=false)
Definition
qquickpositioners.cpp:688
QQuickBasePositionerPrivate::itemSiblingOrderChanged
void itemSiblingOrderChanged(QQuickItem *other) override
Definition
qquickpositioners_p_p.h:108
QQuickBasePositionerPrivate::anchorConflict
bool anchorConflict
Definition
qquickpositioners_p_p.h:94
QQuickBasePositionerPrivate::setRightPadding
void setRightPadding(qreal value, bool reset=false)
Definition
qquickpositioners.cpp:674
QQuickBasePositionerPrivate::setTopPadding
void setTopPadding(qreal value, bool reset=false)
Definition
qquickpositioners.cpp:646
QQuickBasePositionerPrivate::unwatchChanges
void unwatchChanges(QQuickItem *other)
Definition
qquickpositioners.cpp:30
QQuickBasePositionerPrivate::layoutDirection
Qt::LayoutDirection layoutDirection
Definition
qquickpositioners_p_p.h:96
QQuickBasePositionerPrivate::isLeftToRight
bool isLeftToRight() const
Definition
qquickpositioners_p_p.h:101
QQuickBasePositionerPrivate::init
void init(QQuickBasePositioner::PositionerType at)
Definition
qquickpositioners_p_p.h:70
QQuickBasePositionerPrivate::padding
qreal padding() const
Definition
qquickpositioners_p_p.h:150
QQuickBasePositionerPrivate::itemDestroyed
void itemDestroyed(QQuickItem *item) override
Definition
qquickpositioners_p_p.h:125
QQuickBasePositionerPrivate::QQuickBasePositionerPrivate
QQuickBasePositionerPrivate()
Definition
qquickpositioners_p_p.h:59
QQuickBasePositionerPrivate::itemGeometryChanged
void itemGeometryChanged(QQuickItem *, QQuickGeometryChange change, const QRectF &) override
Definition
qquickpositioners_p_p.h:114
QQuickBasePositionerPrivate::extra
QLazilyAllocated< ExtraData > extra
Definition
qquickpositioners_p_p.h:57
QQuickBasePositionerPrivate::getLayoutDirection
static Qt::LayoutDirection getLayoutDirection(const QQuickBasePositioner *positioner)
Definition
qquickpositioners_p_p.h:133
QQuickBasePositioner
For specifying a base for QQuickGraphics layouts.
Definition
qquickpositioners_p.h:70
QQuickColumn
Definition
qquickpositioners_p.h:210
QQuickFlowPrivate
\qmltype Flow \nativetype QQuickFlow \inqmlmodule QtQuick \inherits Item
Definition
qquickpositioners.cpp:1996
QQuickFlow
Definition
qquickpositioners_p.h:339
QQuickGridPrivate
\qmltype Grid \nativetype QQuickGrid \inqmlmodule QtQuick \inherits Item
Definition
qquickpositioners.cpp:1408
QQuickGrid
Definition
qquickpositioners_p.h:251
QQuickPositionerAttached
Definition
qquickpositioners_p.h:39
QQuickPositionerAttached::isFirstItemChanged
void isFirstItemChanged()
QQuickPositionerAttached::isLastItem
bool isLastItem() const
Definition
qquickpositioners_p.h:55
QQuickPositionerAttached::setIsFirstItem
void setIsFirstItem(bool isFirstItem)
\qmlattachedproperty bool QtQuick::Positioner::isFirstItem \qmlattachedproperty bool QtQuick::Positio...
Definition
qquickpositioners.cpp:770
QQuickPositionerAttached::setIsLastItem
void setIsLastItem(bool isLastItem)
Definition
qquickpositioners.cpp:778
QQuickPositionerAttached::isFirstItem
bool isFirstItem() const
Definition
qquickpositioners_p.h:52
QQuickPositionerAttached::isLastItemChanged
void isLastItemChanged()
QQuickRowPrivate
\qmltype Row \nativetype QQuickRow \inqmlmodule QtQuick \inherits Item
Definition
qquickpositioners.cpp:1118
QQuickRow
Definition
qquickpositioners_p.h:224
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
QT_REQUIRE_CONFIG
QT_REQUIRE_CONFIG(animation)
positionerWatchedChanges
static QT_BEGIN_NAMESPACE const QQuickItemPrivate::ChangeTypes positionerWatchedChanges
Definition
qquickpositioners.cpp:19
QT_REQUIRE_CONFIG
QT_REQUIRE_CONFIG(quick_positioners)
qtdeclarative
src
quick
items
qquickpositioners_p_p.h
Generated on
for Qt by
1.18.0