Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qquickitemviewtransition_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
4#ifndef QQUICKITEMVIEWTRANSITION_P_P_H
5#define QQUICKITEMVIEWTRANSITION_P_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtQuick/private/qtquickglobal_p.h>
19
20QT_REQUIRE_CONFIG(quick_viewtransitions);
21
22#include <QtCore/qobject.h>
23#include <QtCore/qpoint.h>
24#include <QtQml/qqml.h>
25#include <private/qqmlguard_p.h>
26#include <private/qquicktransition_p.h>
27#include <private/qanimationjobutil_p.h>
28
29#include <QtCore/qpointer.h>
30
32
33class QQuickItem;
37
38
47
48
49class Q_QUICK_EXPORT QQuickItemViewTransitioner
50{
51public:
59
62
63 bool canTransition(QQuickItemViewTransitioner::TransitionType type, bool asTarget) const;
64 void transitionNextReposition(QQuickItemViewTransitionableItem *item, QQuickItemViewTransitioner::TransitionType type, bool isTarget);
65
67 void resetTargetLists();
68
69 QQuickTransition *transitionObject(QQuickItemViewTransitioner::TransitionType type, bool asTarget) const;
70 const QList<int> &targetIndexes(QQuickItemViewTransitioner::TransitionType type) const;
71 const QList<QObject *> &targetItems(QQuickItemViewTransitioner::TransitionType type) const;
72
73 inline void setPopulateTransitionEnabled(bool b) { usePopulateTransition = b; }
74 inline bool populateTransitionEnabled() const { return usePopulateTransition; }
75
77
78 QSet<QQuickItemViewTransitionJob *> runningJobs;
79
83 QList<QObject *> addTransitionTargets;
84 QList<QObject *> moveTransitionTargets;
85 QList<QObject *> removeTransitionTargets;
86
87 QQmlGuard<QQuickTransition> populateTransition;
88 QQmlGuard<QQuickTransition> addTransition;
89 QQmlGuard<QQuickTransition> addDisplacedTransition;
90 QQmlGuard<QQuickTransition> moveTransition;
91 QQmlGuard<QQuickTransition> moveDisplacedTransition;
92 QQmlGuard<QQuickTransition> removeTransition;
93 QQmlGuard<QQuickTransition> removeDisplacedTransition;
94 QQmlGuard<QQuickTransition> displacedTransition;
95
96private:
98
100 bool usePopulateTransition;
101
103};
104
105
106/*
107 An item that can be transitioned using QQuickViewTransitionJob.
108 */
110{
111public:
114
115 qreal itemX() const;
116 qreal itemY() const;
117
118 void moveTo(const QPointF &pos, bool immediate = false);
119
120 bool transitionScheduledOrRunning() const;
121 bool transitionRunning() const;
122 bool isPendingRemoval() const;
123
124 bool prepareTransition(QQuickItemViewTransitioner *transitioner, int index, const QRectF &viewBounds);
125 void startTransition(QQuickItemViewTransitioner *transitioner, int index);
126 void completeTransition(QQuickTransition *quickTransition);
127
139 bool prepared : 1;
140
141private:
144 void setNextTransition(QQuickItemViewTransitioner::TransitionType, bool isTargetItem);
145 bool transitionWillChangePosition() const;
146 void finishedTransition();
147 void resetNextTransitionPos();
148 void clearCurrentScheduledTransition();
149 void stopTransition();
150};
151
152
154{
156
157 Q_PROPERTY(int index READ index NOTIFY indexChanged FINAL)
160
163
164 QML_NAMED_ELEMENT(ViewTransition)
166 QML_UNCREATABLE("ViewTransition is only available via attached properties.")
168
169public:
171
172 int index() const { return m_index; }
173 QQuickItem *item() const { return m_item; }
174 QPointF destination() const { return m_destination; }
175
176 QList<int> targetIndexes() const { return m_targetIndexes; }
177 QQmlListProperty<QObject> targetItems();
178
180
185
188
189private:
191 QPointF m_destination;
192 QList<int> m_targetIndexes;
193 QList<QObject *> m_targetItems;
194
195 QPointer<QQuickItem> m_item;
196 int m_index;
197};
198
200
201#endif // QQUICKITEMVIEWTRANSITION_P_P_H
Definition qlist.h:75
\inmodule QtCore
Definition qobject.h:103
QObject * parent() const
Returns a pointer to the parent object.
Definition qobject.h:346
\inmodule QtCore\reentrant
Definition qpoint.h:217
The QQmlListProperty class allows applications to expose list-like properties of QObject-derived clas...
Definition qqmllist.h:24
virtual void viewItemTransitionFinished(QQuickItemViewTransitionableItem *item)=0
QQuickItemViewTransitionJob * transition
QQuickItemViewTransitioner::TransitionType nextTransitionType
QSet< QQuickItemViewTransitionJob * > runningJobs
QQmlGuard< QQuickTransition > displacedTransition
QQmlGuard< QQuickTransition > addTransition
QQmlGuard< QQuickTransition > removeTransition
QQmlGuard< QQuickTransition > removeDisplacedTransition
QQmlGuard< QQuickTransition > moveTransition
QQmlGuard< QQuickTransition > addDisplacedTransition
QQmlGuard< QQuickTransition > moveDisplacedTransition
QQmlGuard< QQuickTransition > populateTransition
void setChangeListener(QQuickItemViewTransitionChangeListener *obj)
The QQuickItem class provides the most basic of all visual items in \l {Qt Quick}.
Definition qquickitem.h:63
QQmlListProperty< QObject > targetItems()
QQmlListProperty< QObject > targetItems
\qmltype ViewTransition \instantiates QQuickViewTransitionAttached \inqmlmodule QtQuick
static QQuickViewTransitionAttached * qmlAttachedProperties(QObject *)
\inmodule QtCore\reentrant
Definition qrect.h:484
Combined button and popup list for selecting options.
static const QCssKnownValue properties[NumProperties - 1]
GLboolean GLboolean GLboolean b
GLuint index
[2]
GLenum type
GLhandleARB obj
[2]
#define QML_UNCREATABLE(REASON)
#define QML_NAMED_ELEMENT(NAME)
#define QML_ADDED_IN_VERSION(MAJOR, MINOR)
#define QML_ATTACHED(ATTACHED_TYPE)
static QList< QQuickStateAction > prepareTransition(QQuickDrawer *drawer, QQuickTransition *transition, qreal to)
#define QT_REQUIRE_CONFIG(feature)
#define Q_PROPERTY(...)
#define Q_OBJECT
#define Q_SIGNALS
double qreal
Definition qtypes.h:187
QGraphicsItem * item