4#ifndef QQUICKITEMVIEW_P_P_H
5#define QQUICKITEMVIEW_P_P_H
18#include <QtQuick/private/qtquickglobal_p.h>
24#if QT_CONFIG(quick_viewtransitions)
28#include <QtQmlModels/private/qqmlobjectmodel_p.h>
29#include <QtQmlModels/private/qqmldelegatemodel_p.h>
30#include <QtQmlModels/private/qqmlchangeset_p.h>
32#include <QtCore/qpointer.h>
51 bool hasPendingChanges()
const;
52 void prepare(
int currentIndex,
int count);
72#if QT_CONFIG(quick_viewtransitions)
93 : visiblePos(0), changedFirstItem(
false),
94 sizeChangesBeforeVisiblePos(0), sizeChangesAfterVisiblePos(0),
95 countChangeBeforeVisible(0), countChangeAfterVisibleItems(0) {}
98 : visiblePos(
p), changedFirstItem(
false),
99 sizeChangesBeforeVisiblePos(0), sizeChangesAfterVisiblePos(0),
100 countChangeBeforeVisible(0), countChangeAfterVisibleItems(0) {}
105 changedFirstItem &=
other.changedFirstItem;
106 sizeChangesBeforeVisiblePos +=
other.sizeChangesBeforeVisiblePos;
107 sizeChangesAfterVisiblePos +=
other.sizeChangesAfterVisiblePos;
108 countChangeBeforeVisible +=
other.countChangeBeforeVisible;
109 countChangeAfterVisibleItems +=
other.countChangeAfterVisibleItems;
114 changedFirstItem =
false;
115 sizeChangesBeforeVisiblePos = 0.0;
116 sizeChangesAfterVisiblePos = 0.0;
117 countChangeBeforeVisible = 0;
118 countChangeAfterVisibleItems = 0;
122 enum BufferMode { NoBuffer = 0x00, BufferBefore = 0x01, BufferAfter = 0x02 };
124 bool isValid()
const;
127 qreal startPosition()
const;
128 qreal endPosition()
const;
129 qreal contentStartOffset()
const;
130 int findLastVisibleIndex(
int defaultValue = -1)
const;
131 FxViewItem *visibleItem(
int modelIndex)
const;
133 int findLastIndexInView()
const;
134 int mapFromModel(
int modelIndex)
const;
137 virtual void clear(
bool onDestruction=
false);
138 virtual void updateViewport();
140 void regenerate(
bool orientationChanged=
false);
152 virtual void initializeComponentItem(
QQuickItem *)
const;
154 void updateCurrent(
int modelIndex);
155 void updateTrackedItem();
156 void updateUnrequestedIndexes();
157 void updateUnrequestedPositions();
158 void updateVisibleIndex();
159 void positionViewAtIndex(
int index,
int mode);
161 qreal minExtentForAxis(
const AxisData &axisData,
bool forXAxis)
const;
162 qreal maxExtentForAxis(
const AxisData &axisData,
bool forXAxis)
const;
163 qreal calculatedMinExtent()
const;
164 qreal calculatedMaxExtent()
const;
166 void applyDelegateChange();
168 void applyPendingChanges();
169 bool applyModelChanges(ChangeResult *insertionResult, ChangeResult *removalResult);
170 bool applyRemovalChange(
const QQmlChangeSet::Change &removal, ChangeResult *changeResult,
int *removedCount);
172 virtual void updateSizeChangesBeforeVisiblePos(
FxViewItem *
item, ChangeResult *removeResult);
173 void repositionFirstItem(
FxViewItem *prevVisibleItemsFirst,
qreal prevVisibleItemsFirstPos,
174 FxViewItem *prevFirstVisible, ChangeResult *insertionResult, ChangeResult *removalResult);
176#if QT_CONFIG(quick_viewtransitions)
177 void createTransitioner();
178 void prepareVisibleItemTransitions();
179 void prepareRemoveTransitions(QMultiHash<QQmlChangeSet::MoveKey, FxViewItem *> *removedItems);
186 void checkVisible()
const;
187 void showVisibleItems()
const;
191 vData.markExtentsDirty();
193 hData.markExtentsDirty();
197 return currentChanges.hasPendingChanges()
198 || bufferedChanges.hasPendingChanges()
199#if QT_CONFIG(quick_viewtransitions)
200 ||runDelayedRemoveTransition
206 if (hasPendingChanges())
221 const QList<FxViewItem *> oldVisible = visibleItems;
222 visibleItems.clear();
224 releaseItem(
item, reusableFlag);
242 if (!visibleItems.isEmpty()) {
243 firstVisibleItemPosition = visibleItems.constFirst()->position();
277 :
item(
i), moveKey(k) {}
279#if QT_CONFIG(quick_viewtransitions)
281 QVector<FxViewItem *> releasePendingTransition;
301#if QT_CONFIG(quick_viewtransitions)
302 bool runDelayedRemoveTransition : 1;
347 QList<FxViewItem *> *newItems, QList<MovedItem> *movingIntoView) = 0;
350#if QT_CONFIG(quick_viewtransitions)
351 virtual void translateAndTransitionItemsAfter(
int afterIndex,
const ChangeResult &insertionResult,
const ChangeResult &removalResult) = 0;
QQuickItemViewAttached * attached
virtual void animationFinished(QAbstractAnimationJob *)
The QQmlChangeSet class stores an ordered list of notifications about changes to a linear data set.
The QQmlComponent class encapsulates a QML component definition.
IncubationMode
Specifies the mode the incubator operates in.
void itemGeometryChanged(QQuickItem *, QQuickGeometryChange, const QRectF &) override
virtual void mirrorChange()
QQmlChangeSet pendingChanges
QMultiHash< QQmlChangeSet::MoveKey, FxViewItem * > removedItems
virtual qreal originPosition() const =0
virtual void initializeCurrentItem()
virtual bool showHeaderForIndex(int index) const =0
virtual bool hasStickyFooter() const
virtual void fixupPosition()=0
virtual bool showFooterForIndex(int index) const =0
qreal highlightRangeStart
virtual void createHighlight(bool onDestruction=false)=0
virtual void repositionItemAt(FxViewItem *item, int index, qreal sizeBuffer)=0
bool keyNavigationEnabled
int highlightMoveDuration
virtual QQuickItemViewAttached * getAttachedObject(const QObject *) const
virtual void updateHeader()=0
virtual void resetHighlightPosition()=0
QPointer< QQmlInstanceModel > model
QList< FxViewItem * > visibleItems
virtual bool isContentFlowReversed() const =0
int displayMarginBeginning
virtual void initializeViewItem(FxViewItem *)
void storeFirstVisibleItemPosition()
virtual void updateFooter()=0
virtual void layoutVisibleItems(int fromModelIndex=0)=0
virtual void visibleItemsChanged()
bool hasPendingChanges() const
virtual void updateHighlight()=0
bool explicitKeyNavigationEnabled
QHash< QQuickItem *, int > unrequestedItems
virtual void updateSections()
virtual bool hasStickyHeader() const
virtual Qt::Orientation layoutOrientation() const =0
QQmlComponent * footerComponent
QQuickItemViewChangeSet currentChanges
virtual void repositionPackageItemAt(QQuickItem *item, int index)=0
virtual qreal endPositionAt(int index) const =0
virtual void resetFirstItemPosition(qreal pos=0.0)=0
virtual void updateSectionCriteria()
virtual qreal positionAt(int index) const =0
virtual void setPosition(qreal pos)=0
Qt::LayoutDirection layoutDirection
virtual void changedVisibleIndex(int newIndex)=0
QQuickItemView::VerticalLayoutDirection verticalLayoutDirection
virtual bool needsRefillForAddedOrRemovedIndex(int) const
static QQuickItemViewPrivate * get(QQuickItemView *o)
virtual bool removeNonVisibleItems(qreal bufferFrom, qreal bufferTo)=0
virtual bool movingFromHighlight()
bool highlightRangeEndValid
void releaseVisibleItems(QQmlInstanceModel::ReusableFlag reusableFlag)
bool highlightRangeStartValid
virtual qreal lastPosition() const =0
virtual qreal headerSize() const =0
virtual qreal footerSize() const =0
QQuickItemViewChangeSet bufferedChanges
QQmlComponent * headerComponent
virtual bool addVisibleItems(qreal fillFrom, qreal fillTo, qreal bufferFrom, qreal bufferTo, bool doBuffer)=0
QPauseAnimationJob bufferPause
virtual void adjustFirstItem(qreal forwards, qreal backwards, int changeBeforeVisible)=0
virtual FxViewItem * newViewItem(int index, QQuickItem *item)=0
virtual bool applyInsertionChange(const QQmlChangeSet::Change &insert, ChangeResult *changeResult, QList< FxViewItem * > *newItems, QList< MovedItem > *movingIntoView)=0
QQmlComponent * highlightComponent
std::unique_ptr< FxViewItem > highlight
virtual void viewItemTransitionFinished(QQuickItemViewTransitionableItem *item)=0
The QQuickItem class provides the most basic of all visual items in \l {Qt Quick}.
\inmodule QtCore\reentrant
cache insert(employee->id(), employee)
Combined button and popup list for selecting options.
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLenum GLenum GLsizei count
GLdouble GLdouble GLdouble GLdouble q
static qreal component(const QPointF &point, unsigned int i)
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
#define Q_AUTOTEST_EXPORT
#define QT_REQUIRE_CONFIG(feature)
#define Q_QUICK_AUTOTEST_EXPORT
ChangeResult(const QQmlNullableValue< qreal > &p)
QQmlNullableValue< qreal > visiblePos
ChangeResult & operator+=(const ChangeResult &other)
qreal sizeChangesAfterVisiblePos
qreal sizeChangesBeforeVisiblePos
int countChangeAfterVisibleItems
int countChangeBeforeVisible
MovedItem(FxViewItem *i, QQmlChangeSet::MoveKey k)
QQmlChangeSet::MoveKey moveKey