aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickstackview_p_p.h
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-07-14 10:09:41 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-07-14 13:16:21 +0000
commitacecb06f1890feab9fee20345cd768ae61a8ae35 (patch)
tree6276f226eba82d168af04150f297a012c2a55dd4 /src/quicktemplates2/qquickstackview_p_p.h
parent16a142977dd328689f2de4eb35c52340aceea204 (diff)
Refactor QQuickStackView transition startup
Merge the separate but very similar looking popTransition(), pushTransition(), and replaceTransition() methods to a single startTransition() method, and pass the necessary arguments in a QQuickStackTransition structure. This is an enabler step for being able to specify the desired transition type for replace (and push & pop, for that matter) operations. Change-Id: Ia68bb94dc9280aace8718f4df0e798a7f1469e78 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2/qquickstackview_p_p.h')
-rw-r--r--src/quicktemplates2/qquickstackview_p_p.h20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/quicktemplates2/qquickstackview_p_p.h b/src/quicktemplates2/qquickstackview_p_p.h
index e57353f3..7fe7f005 100644
--- a/src/quicktemplates2/qquickstackview_p_p.h
+++ b/src/quicktemplates2/qquickstackview_p_p.h
@@ -58,6 +58,7 @@ QT_BEGIN_NAMESPACE
class QQmlContext;
class QQmlComponent;
+struct QQuickStackTransition;
class QQuickStackElement : public QQuickItemViewTransitionableItem, public QQuickItemChangeListener
{
@@ -123,9 +124,7 @@ public:
bool replaceElements(QQuickStackElement *element, const QList<QQuickStackElement *> &elements);
void ensureTransitioner();
- void popTransition(QQuickStackElement *enter, QQuickStackElement *exit, const QRectF &viewBounds, bool immediate);
- void pushTransition(QQuickStackElement *enter, QQuickStackElement *exit, const QRectF &viewBounds, bool immediate);
- void replaceTransition(QQuickStackElement *enter, QQuickStackElement *exit, const QRectF &viewBounds, bool immediate);
+ void startTransition(const QQuickStackTransition &first, const QQuickStackTransition &second, bool immediate);
void completeTransition(QQuickStackElement *element, QQuickTransition *transition);
void viewItemTransitionFinished(QQuickItemViewTransitionableItem *item) override;
@@ -139,6 +138,21 @@ public:
QQuickItemViewTransitioner *transitioner;
};
+struct QQuickStackTransition
+{
+ enum Operation { Push, Replace, Pop };
+
+ static QQuickStackTransition exit(Operation operation, QQuickStackElement *element, QQuickStackView *view);
+ static QQuickStackTransition enter(Operation operation, QQuickStackElement *element, QQuickStackView *view);
+
+ bool target;
+ QQuickStackView::Status status;
+ QQuickItemViewTransitioner::TransitionType type;
+ QRectF viewBounds;
+ QQuickStackElement *element;
+ QQuickTransition *transition;
+};
+
class QQuickStackAttachedPrivate : public QObjectPrivate, public QQuickItemChangeListener
{
Q_DECLARE_PUBLIC(QQuickStackAttached)