diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/quicktemplates2/qquickstacktransition.cpp | 158 | ||||
-rw-r--r-- | src/quicktemplates2/qquickstacktransition_p_p.h | 79 | ||||
-rw-r--r-- | src/quicktemplates2/qquickstackview.cpp | 1 | ||||
-rw-r--r-- | src/quicktemplates2/qquickstackview_p.cpp | 116 | ||||
-rw-r--r-- | src/quicktemplates2/qquickstackview_p_p.h | 19 | ||||
-rw-r--r-- | src/quicktemplates2/quicktemplates2.pri | 2 |
6 files changed, 241 insertions, 134 deletions
diff --git a/src/quicktemplates2/qquickstacktransition.cpp b/src/quicktemplates2/qquickstacktransition.cpp new file mode 100644 index 00000000..4cfbb888 --- /dev/null +++ b/src/quicktemplates2/qquickstacktransition.cpp @@ -0,0 +1,158 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qquickstacktransition_p_p.h" +#include "qquickstackelement_p_p.h" +#include "qquickstackview_p_p.h" + +QT_BEGIN_NAMESPACE + +static QQuickStackTransition exitTransition(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) +{ + QQuickStackTransition st; + st.status = QQuickStackView::Deactivating; + st.transition = nullptr; + st.element = element; + + const QQuickItemViewTransitioner *transitioner = QQuickStackViewPrivate::get(view)->transitioner; + + switch (operation) { + case QQuickStackView::PushTransition: + st.target = false; + st.type = QQuickItemViewTransitioner::AddTransition; + st.viewBounds = QRectF(); + if (transitioner) + st.transition = transitioner->addDisplacedTransition; + break; + case QQuickStackView::ReplaceTransition: + st.target = false; + st.type = QQuickItemViewTransitioner::MoveTransition; + st.viewBounds = QRectF(); + if (transitioner) + st.transition = transitioner->moveDisplacedTransition; + break; + case QQuickStackView::PopTransition: + st.target = true; + st.type = QQuickItemViewTransitioner::RemoveTransition; + st.viewBounds = view->boundingRect(); + if (transitioner) + st.transition = transitioner->removeTransition; + break; + default: + Q_UNREACHABLE(); + break; + } + + return st; +} + +static QQuickStackTransition enterTransition(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) +{ + QQuickStackTransition st; + st.status = QQuickStackView::Activating; + st.transition = nullptr; + st.element = element; + + const QQuickItemViewTransitioner *transitioner = QQuickStackViewPrivate::get(view)->transitioner; + + switch (operation) { + case QQuickStackView::PushTransition: + st.target = true; + st.type = QQuickItemViewTransitioner::AddTransition; + st.viewBounds = view->boundingRect(); + if (transitioner) + st.transition = transitioner->addTransition; + break; + case QQuickStackView::ReplaceTransition: + st.target = true; + st.type = QQuickItemViewTransitioner::MoveTransition; + st.viewBounds = view->boundingRect(); + if (transitioner) + st.transition = transitioner->moveTransition; + break; + case QQuickStackView::PopTransition: + st.target = false; + st.type = QQuickItemViewTransitioner::RemoveTransition; + st.viewBounds = QRectF(); + if (transitioner) + st.transition = transitioner->removeDisplacedTransition; + break; + default: + Q_UNREACHABLE(); + break; + } + + return st; +} + +static QQuickStackView::Operation operationTransition(QQuickStackView::Operation operation, QQuickStackView::Operation transition) +{ + if (operation == QQuickStackView::Immediate || operation == QQuickStackView::Transition) + return transition; + return operation; +} + +QQuickStackTransition QQuickStackTransition::popExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) +{ + return exitTransition(operationTransition(operation, QQuickStackView::PopTransition), element, view); +} + +QQuickStackTransition QQuickStackTransition::popEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) +{ + return enterTransition(operationTransition(operation, QQuickStackView::PopTransition), element, view); +} + +QQuickStackTransition QQuickStackTransition::pushExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) +{ + return exitTransition(operationTransition(operation, QQuickStackView::PushTransition), element, view); +} + +QQuickStackTransition QQuickStackTransition::pushEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) +{ + return enterTransition(operationTransition(operation, QQuickStackView::PushTransition), element, view); +} + +QQuickStackTransition QQuickStackTransition::replaceExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) +{ + return exitTransition(operationTransition(operation, QQuickStackView::ReplaceTransition), element, view); +} + +QQuickStackTransition QQuickStackTransition::replaceEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) +{ + return enterTransition(operationTransition(operation, QQuickStackView::ReplaceTransition), element, view); +} + +QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickstacktransition_p_p.h b/src/quicktemplates2/qquickstacktransition_p_p.h new file mode 100644 index 00000000..294a688a --- /dev/null +++ b/src/quicktemplates2/qquickstacktransition_p_p.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QQUICKSTACKTRANSITION_P_P_H +#define QQUICKSTACKTRANSITION_P_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtQuickTemplates2/private/qquickstackview_p.h> +#include <QtQuick/private/qquickitemviewtransition_p.h> + +QT_BEGIN_NAMESPACE + +class QQuickStackElement; + +struct QQuickStackTransition +{ + static QQuickStackTransition popExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view); + static QQuickStackTransition popEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view); + + static QQuickStackTransition pushExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view); + static QQuickStackTransition pushEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view); + + static QQuickStackTransition replaceExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view); + static QQuickStackTransition replaceEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view); + + bool target; + QQuickStackView::Status status; + QQuickItemViewTransitioner::TransitionType type; + QRectF viewBounds; + QQuickStackElement *element; + QQuickTransition *transition; +}; + +QT_END_NAMESPACE + +#endif // QQUICKSTACKTRANSITION_P_P_H diff --git a/src/quicktemplates2/qquickstackview.cpp b/src/quicktemplates2/qquickstackview.cpp index 3ccb85d1..34d8d3c1 100644 --- a/src/quicktemplates2/qquickstackview.cpp +++ b/src/quicktemplates2/qquickstackview.cpp @@ -37,6 +37,7 @@ #include "qquickstackview_p.h" #include "qquickstackview_p_p.h" #include "qquickstackelement_p_p.h" +#include "qquickstacktransition_p_p.h" #include <QtQml/qjsvalue.h> #include <QtQml/qqmlengine.h> diff --git a/src/quicktemplates2/qquickstackview_p.cpp b/src/quicktemplates2/qquickstackview_p.cpp index 2842eeb4..1254ab62 100644 --- a/src/quicktemplates2/qquickstackview_p.cpp +++ b/src/quicktemplates2/qquickstackview_p.cpp @@ -36,6 +36,7 @@ #include "qquickstackview_p_p.h" #include "qquickstackelement_p_p.h" +#include "qquickstacktransition_p_p.h" #include <QtQml/qqmllist.h> #include <QtQml/private/qv4qobjectwrapper_p.h> @@ -265,119 +266,4 @@ void QQuickStackViewPrivate::setBusy(bool b) emit q->busyChanged(); } -static QQuickStackTransition exitTransition(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) -{ - QQuickStackTransition st; - st.status = QQuickStackView::Deactivating; - st.transition = nullptr; - st.element = element; - - const QQuickItemViewTransitioner *transitioner = QQuickStackViewPrivate::get(view)->transitioner; - - switch (operation) { - case QQuickStackView::PushTransition: - st.target = false; - st.type = QQuickItemViewTransitioner::AddTransition; - st.viewBounds = QRectF(); - if (transitioner) - st.transition = transitioner->addDisplacedTransition; - break; - case QQuickStackView::ReplaceTransition: - st.target = false; - st.type = QQuickItemViewTransitioner::MoveTransition; - st.viewBounds = QRectF(); - if (transitioner) - st.transition = transitioner->moveDisplacedTransition; - break; - case QQuickStackView::PopTransition: - st.target = true; - st.type = QQuickItemViewTransitioner::RemoveTransition; - st.viewBounds = view->boundingRect(); - if (transitioner) - st.transition = transitioner->removeTransition; - break; - default: - Q_UNREACHABLE(); - break; - } - - return st; -} - -static QQuickStackTransition enterTransition(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) -{ - QQuickStackTransition st; - st.status = QQuickStackView::Activating; - st.transition = nullptr; - st.element = element; - - const QQuickItemViewTransitioner *transitioner = QQuickStackViewPrivate::get(view)->transitioner; - - switch (operation) { - case QQuickStackView::PushTransition: - st.target = true; - st.type = QQuickItemViewTransitioner::AddTransition; - st.viewBounds = view->boundingRect(); - if (transitioner) - st.transition = transitioner->addTransition; - break; - case QQuickStackView::ReplaceTransition: - st.target = true; - st.type = QQuickItemViewTransitioner::MoveTransition; - st.viewBounds = view->boundingRect(); - if (transitioner) - st.transition = transitioner->moveTransition; - break; - case QQuickStackView::PopTransition: - st.target = false; - st.type = QQuickItemViewTransitioner::RemoveTransition; - st.viewBounds = QRectF(); - if (transitioner) - st.transition = transitioner->removeDisplacedTransition; - break; - default: - Q_UNREACHABLE(); - break; - } - - return st; -} - -static QQuickStackView::Operation operationTransition(QQuickStackView::Operation operation, QQuickStackView::Operation transition) -{ - if (operation == QQuickStackView::Immediate || operation == QQuickStackView::Transition) - return transition; - return operation; -} - -QQuickStackTransition QQuickStackTransition::popExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) -{ - return exitTransition(operationTransition(operation, QQuickStackView::PopTransition), element, view); -} - -QQuickStackTransition QQuickStackTransition::popEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) -{ - return enterTransition(operationTransition(operation, QQuickStackView::PopTransition), element, view); -} - -QQuickStackTransition QQuickStackTransition::pushExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) -{ - return exitTransition(operationTransition(operation, QQuickStackView::PushTransition), element, view); -} - -QQuickStackTransition QQuickStackTransition::pushEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) -{ - return enterTransition(operationTransition(operation, QQuickStackView::PushTransition), element, view); -} - -QQuickStackTransition QQuickStackTransition::replaceExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) -{ - return exitTransition(operationTransition(operation, QQuickStackView::ReplaceTransition), element, view); -} - -QQuickStackTransition QQuickStackTransition::replaceEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) -{ - return enterTransition(operationTransition(operation, QQuickStackView::ReplaceTransition), element, view); -} - QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickstackview_p_p.h b/src/quicktemplates2/qquickstackview_p_p.h index 806ce747..425f37b4 100644 --- a/src/quicktemplates2/qquickstackview_p_p.h +++ b/src/quicktemplates2/qquickstackview_p_p.h @@ -97,25 +97,6 @@ public: QQuickItemViewTransitioner *transitioner; }; -struct QQuickStackTransition -{ - static QQuickStackTransition popExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view); - static QQuickStackTransition popEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view); - - static QQuickStackTransition pushExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view); - static QQuickStackTransition pushEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view); - - static QQuickStackTransition replaceExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view); - static QQuickStackTransition replaceEnter(QQuickStackView::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) diff --git a/src/quicktemplates2/quicktemplates2.pri b/src/quicktemplates2/quicktemplates2.pri index 69671225..5ec4d3f3 100644 --- a/src/quicktemplates2/quicktemplates2.pri +++ b/src/quicktemplates2/quicktemplates2.pri @@ -55,6 +55,7 @@ HEADERS += \ $$PWD/qquickslider_p.h \ $$PWD/qquickspinbox_p.h \ $$PWD/qquickstackelement_p_p.h \ + $$PWD/qquickstacktransition_p_p.h \ $$PWD/qquickstackview_p.h \ $$PWD/qquickstackview_p_p.h \ $$PWD/qquickswipedelegate_p.h \ @@ -116,6 +117,7 @@ SOURCES += \ $$PWD/qquickslider.cpp \ $$PWD/qquickspinbox.cpp \ $$PWD/qquickstackelement.cpp \ + $$PWD/qquickstacktransition.cpp \ $$PWD/qquickstackview.cpp \ $$PWD/qquickstackview_p.cpp \ $$PWD/qquickswipedelegate.cpp \ |