diff options
author | Richard Moe Gustavsen <richard.gustavsen@qt.io> | 2018-02-09 20:19:32 +0100 |
---|---|---|
committer | Richard Moe Gustavsen <richard.gustavsen@qt.io> | 2018-03-23 08:17:23 +0000 |
commit | 9a98d16d9e49395a24cd733ca8f65b2f82ebba94 (patch) | |
tree | 86907a25fbfb096464c8ad3814e8a20193bf04eb /src/quick/items/qquickitemview.cpp | |
parent | 115968f291cf802290c3b11b3ec4470646b31168 (diff) |
QQuickItemViewFxItem: factor out FxViewItem from QQuickItemView
FxItemViews wraps the QQuickItems used in QQuickItemView with
additional item view information, like transition status.
This patch will factor out FxItemView so that it can be reused
in the coming QQuickTable as well.
Change-Id: I5544b177d0ff28b2cbb76f33343808d953ec47bd
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Diffstat (limited to 'src/quick/items/qquickitemview.cpp')
-rw-r--r-- | src/quick/items/qquickitemview.cpp | 106 |
1 files changed, 2 insertions, 104 deletions
diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp index f2e055e874..4e4881ce19 100644 --- a/src/quick/items/qquickitemview.cpp +++ b/src/quick/items/qquickitemview.cpp @@ -38,6 +38,7 @@ ****************************************************************************/ #include "qquickitemview_p_p.h" +#include "qquickitemviewfxitem_p_p.h" #include <QtQuick/private/qquicktransition_p.h> #include <QtQml/QQmlInfo> #include "qplatformdefs.h" @@ -52,117 +53,14 @@ Q_LOGGING_CATEGORY(lcItemViewDelegateLifecycle, "qt.quick.itemview.lifecycle") #endif FxViewItem::FxViewItem(QQuickItem *i, QQuickItemView *v, bool own, QQuickItemViewAttached *attached) - : item(i) + : QQuickItemViewFxItem(i, own, QQuickItemViewPrivate::get(v)) , view(v) - , transitionableItem(nullptr) , attached(attached) - , ownItem(own) - , releaseAfterTransition(false) - , trackGeom(false) { if (attached) // can be null for default components (see createComponentItem) attached->setView(view); } -FxViewItem::~FxViewItem() -{ - delete transitionableItem; - if (ownItem && item) { - trackGeometry(false); - item->setParentItem(nullptr); - item->deleteLater(); - item = nullptr; - } -} - -qreal FxViewItem::itemX() const -{ - return transitionableItem ? transitionableItem->itemX() : (item ? item->x() : 0); -} - -qreal FxViewItem::itemY() const -{ - return transitionableItem ? transitionableItem->itemY() : (item ? item->y() : 0); -} - -void FxViewItem::moveTo(const QPointF &pos, bool immediate) -{ - if (transitionableItem) - transitionableItem->moveTo(pos, immediate); - else if (item) - item->setPosition(pos); -} - -void FxViewItem::setVisible(bool visible) -{ - if (!visible && transitionableItem && transitionableItem->transitionScheduledOrRunning()) - return; - if (item) - QQuickItemPrivate::get(item)->setCulled(!visible); -} - -void FxViewItem::trackGeometry(bool track) -{ - if (track) { - if (!trackGeom) { - if (item) { - QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item); - itemPrivate->addItemChangeListener(QQuickItemViewPrivate::get(view), QQuickItemPrivate::Geometry); - } - trackGeom = true; - } - } else { - if (trackGeom) { - if (item) { - QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item); - itemPrivate->removeItemChangeListener(QQuickItemViewPrivate::get(view), QQuickItemPrivate::Geometry); - } - trackGeom = false; - } - } -} - -QQuickItemViewTransitioner::TransitionType FxViewItem::scheduledTransitionType() const -{ - return transitionableItem ? transitionableItem->nextTransitionType : QQuickItemViewTransitioner::NoTransition; -} - -bool FxViewItem::transitionScheduledOrRunning() const -{ - return transitionableItem ? transitionableItem->transitionScheduledOrRunning() : false; -} - -bool FxViewItem::transitionRunning() const -{ - return transitionableItem ? transitionableItem->transitionRunning() : false; -} - -bool FxViewItem::isPendingRemoval() const -{ - return transitionableItem ? transitionableItem->isPendingRemoval() : false; -} - -void FxViewItem::transitionNextReposition(QQuickItemViewTransitioner *transitioner, QQuickItemViewTransitioner::TransitionType type, bool asTarget) -{ - if (!transitioner) - return; - if (!transitionableItem) - transitionableItem = new QQuickItemViewTransitionableItem(item); - transitioner->transitionNextReposition(transitionableItem, type, asTarget); -} - -bool FxViewItem::prepareTransition(QQuickItemViewTransitioner *transitioner, const QRectF &viewBounds) -{ - return transitionableItem ? transitionableItem->prepareTransition(transitioner, index, viewBounds) : false; -} - -void FxViewItem::startTransition(QQuickItemViewTransitioner *transitioner) -{ - if (transitionableItem) - transitionableItem->startTransition(transitioner, index); -} - - QQuickItemViewChangeSet::QQuickItemViewChangeSet() : active(false) { |