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>
50 bool hasPendingChanges()
const;
51 void prepare(
int currentIndex,
int count);
71#if QT_CONFIG(quick_viewtransitions)
92 : visiblePos(0), changedFirstItem(
false),
93 sizeChangesBeforeVisiblePos(0), sizeChangesAfterVisiblePos(0),
94 countChangeBeforeVisible(0), countChangeAfterVisibleItems(0) {}
97 : visiblePos(
p), changedFirstItem(
false),
98 sizeChangesBeforeVisiblePos(0), sizeChangesAfterVisiblePos(0),
99 countChangeBeforeVisible(0), countChangeAfterVisibleItems(0) {}
104 changedFirstItem &=
other.changedFirstItem;
105 sizeChangesBeforeVisiblePos +=
other.sizeChangesBeforeVisiblePos;
106 sizeChangesAfterVisiblePos +=
other.sizeChangesAfterVisiblePos;
107 countChangeBeforeVisible +=
other.countChangeBeforeVisible;
108 countChangeAfterVisibleItems +=
other.countChangeAfterVisibleItems;
113 changedFirstItem =
false;
114 sizeChangesBeforeVisiblePos = 0.0;
115 sizeChangesAfterVisiblePos = 0.0;
116 countChangeBeforeVisible = 0;
117 countChangeAfterVisibleItems = 0;
121 enum BufferMode { NoBuffer = 0x00, BufferBefore = 0x01, BufferAfter = 0x02 };
123 bool isValid()
const;
126 qreal startPosition()
const;
127 qreal endPosition()
const;
128 qreal contentStartOffset()
const;
129 int findLastVisibleIndex(
int defaultValue = -1)
const;
130 FxViewItem *visibleItem(
int modelIndex)
const;
132 int findLastIndexInView()
const;
133 int mapFromModel(
int modelIndex)
const;
136 virtual void clear(
bool onDestruction=
false);
137 virtual void updateViewport();
139 void regenerate(
bool orientationChanged=
false);
151 virtual void initializeComponentItem(
QQuickItem *)
const;
153 void updateCurrent(
int modelIndex);
154 void updateTrackedItem();
155 void updateUnrequestedIndexes();
156 void updateUnrequestedPositions();
157 void updateVisibleIndex();
158 void positionViewAtIndex(
int index,
int mode);
160 qreal minExtentForAxis(
const AxisData &axisData,
bool forXAxis)
const;
161 qreal maxExtentForAxis(
const AxisData &axisData,
bool forXAxis)
const;
162 qreal calculatedMinExtent()
const;
163 qreal calculatedMaxExtent()
const;
165 void applyDelegateChange();
167 void applyPendingChanges();
168 bool applyModelChanges(ChangeResult *insertionResult, ChangeResult *removalResult);
169 bool applyRemovalChange(
const QQmlChangeSet::Change &removal, ChangeResult *changeResult,
int *removedCount);
171 virtual void updateSizeChangesBeforeVisiblePos(
FxViewItem *
item, ChangeResult *removeResult);
172 void repositionFirstItem(
FxViewItem *prevVisibleItemsFirst,
qreal prevVisibleItemsFirstPos,
173 FxViewItem *prevFirstVisible, ChangeResult *insertionResult, ChangeResult *removalResult);
175#if QT_CONFIG(quick_viewtransitions)
176 void createTransitioner();
177 void prepareVisibleItemTransitions();
185 void checkVisible()
const;
186 void showVisibleItems()
const;
190 vData.markExtentsDirty();
192 hData.markExtentsDirty();
196 return currentChanges.hasPendingChanges()
197 || bufferedChanges.hasPendingChanges()
198#if QT_CONFIG(quick_viewtransitions)
199 ||runDelayedRemoveTransition
205 if (hasPendingChanges())
221 visibleItems.
clear();
223 releaseItem(
item, reusableFlag);
242 firstVisibleItemPosition = visibleItems.
constFirst()->position();
276 :
item(
i), moveKey(k) {}
278#if QT_CONFIG(quick_viewtransitions)
300#if QT_CONFIG(quick_viewtransitions)
301 bool runDelayedRemoveTransition : 1;
349#if QT_CONFIG(quick_viewtransitions)
350 virtual void translateAndTransitionItemsAfter(
int afterIndex,
const ChangeResult &insertionResult,
const ChangeResult &removalResult) = 0;
QQuickItemViewAttached * attached
virtual void animationFinished(QAbstractAnimationJob *)
bool isEmpty() const noexcept
const T & constFirst() const noexcept
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