Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qquickstacktransition.cpp
Go to the documentation of this file.
1// Copyright (C) 2017 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
8
10
11static QQuickStackTransition exitTransition(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view)
12{
14 st.status = QQuickStackView::Deactivating;
15 st.element = element;
16
17 const QQuickItemViewTransitioner *transitioner = QQuickStackViewPrivate::get(view)->transitioner;
18
19 switch (operation) {
20 case QQuickStackView::PushTransition:
21 st.type = QQuickItemViewTransitioner::AddTransition;
22 if (transitioner)
23 st.transition = transitioner->addDisplacedTransition;
24 break;
25 case QQuickStackView::ReplaceTransition:
26 st.type = QQuickItemViewTransitioner::MoveTransition;
27 if (transitioner)
28 st.transition = transitioner->moveDisplacedTransition;
29 break;
30 case QQuickStackView::PopTransition:
31 st.target = true;
32 st.type = QQuickItemViewTransitioner::RemoveTransition;
33 st.viewBounds = view->boundingRect();
34 if (transitioner)
35 st.transition = transitioner->removeTransition;
36 break;
37 default:
38 Q_UNREACHABLE();
39 break;
40 }
41
42 return st;
43}
44
45static QQuickStackTransition enterTransition(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view)
46{
48 st.status = QQuickStackView::Activating;
49 st.element = element;
50
51 const QQuickItemViewTransitioner *transitioner = QQuickStackViewPrivate::get(view)->transitioner;
52
53 switch (operation) {
54 case QQuickStackView::PushTransition:
55 st.target = true;
56 st.type = QQuickItemViewTransitioner::AddTransition;
57 st.viewBounds = view->boundingRect();
58 if (transitioner)
59 st.transition = transitioner->addTransition;
60 break;
61 case QQuickStackView::ReplaceTransition:
62 st.target = true;
63 st.type = QQuickItemViewTransitioner::MoveTransition;
64 st.viewBounds = view->boundingRect();
65 if (transitioner)
66 st.transition = transitioner->moveTransition;
67 break;
68 case QQuickStackView::PopTransition:
69 st.type = QQuickItemViewTransitioner::RemoveTransition;
70 if (transitioner)
71 st.transition = transitioner->removeDisplacedTransition;
72 break;
73 default:
74 Q_UNREACHABLE();
75 break;
76 }
77
78 return st;
79}
80
81static QQuickStackView::Operation operationTransition(QQuickStackView::Operation operation, QQuickStackView::Operation transition)
82{
83 if (operation == QQuickStackView::Immediate || operation == QQuickStackView::Transition)
84 return transition;
85 return operation;
86}
87
88QQuickStackTransition QQuickStackTransition::popExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view)
89{
90 return exitTransition(operationTransition(operation, QQuickStackView::PopTransition), element, view);
91}
92
93QQuickStackTransition QQuickStackTransition::popEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view)
94{
95 return enterTransition(operationTransition(operation, QQuickStackView::PopTransition), element, view);
96}
97
98QQuickStackTransition QQuickStackTransition::pushExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view)
99{
100 return exitTransition(operationTransition(operation, QQuickStackView::PushTransition), element, view);
101}
102
103QQuickStackTransition QQuickStackTransition::pushEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view)
104{
105 return enterTransition(operationTransition(operation, QQuickStackView::PushTransition), element, view);
106}
107
108QQuickStackTransition QQuickStackTransition::replaceExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view)
109{
110 return exitTransition(operationTransition(operation, QQuickStackView::ReplaceTransition), element, view);
111}
112
113QQuickStackTransition QQuickStackTransition::replaceEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view)
114{
115 return enterTransition(operationTransition(operation, QQuickStackView::ReplaceTransition), element, view);
116}
117
118QT_END_NAMESPACE
static QQuickStackTransition enterTransition(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view)
static QT_BEGIN_NAMESPACE QQuickStackTransition exitTransition(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view)
static QQuickStackView::Operation operationTransition(QQuickStackView::Operation operation, QQuickStackView::Operation transition)