4#ifndef QQUICKTABLEVIEW_P_P_H
5#define QQUICKTABLEVIEW_P_P_H
20#include <QtCore/qtimer.h>
21#include <QtCore/qitemselectionmodel.h>
22#include <QtQmlModels/private/qqmltableinstancemodel_p.h>
23#include <QtQml/private/qqmlincubator_p.h>
24#include <QtQmlModels/private/qqmlchangeset_p.h>
25#include <QtQml/qqmlinfo.h>
27#include <QtQuick/private/qminimalflatset_p.h>
28#include <QtQuick/private/qquickflickable_p_p.h>
29#include <QtQuick/private/qquickitemviewfxitem_p_p.h>
30#include <QtQuick/private/qquickanimation_p.h>
31#include <QtQuick/private/qquickselectable_p.h>
32#include <QtQuick/private/qquicksinglepointhandler_p.h>
33#include <QtQuick/private/qquickhoverhandler_p.h>
34#include <QtQuick/private/qquicktaphandler_p.h>
46class QQuickTableSectionSizeProviderPrivate;
59 inline bool isHoveringGrid()
const {
return m_row != -1 || m_column != -1; };
147 m_mode = incubationMode;
148 m_edgeIndex = cell.
x();
149 m_visibleCellsInEdge.clear();
150 m_visibleCellsInEdge.append(cell.
y());
153 qCDebug(lcTableViewDelegateLifecycle()) <<
"begin top-left:" <<
toString();
161 m_edgeIndex = edgeIndex;
162 m_visibleCellsInEdge = visibleCellsInEdge;
163 m_mode = incubationMode;
172 inline bool hasCurrentCell()
const {
return m_currentIndex < m_visibleCellsInEdge.size(); }
176 inline int row()
const {
return cellAt(0).y(); }
177 inline int column()
const {
return cellAt(0).x(); }
186 dbg.nospace() <<
"TableSectionLoadRequest(" <<
"edge:"
187 << m_edge <<
", edgeIndex:" << m_edgeIndex <<
", incubation:";
191 dbg <<
"Asynchronous";
194 dbg <<
"AsynchronousIfNested";
197 dbg <<
"Synchronous";
208 int m_currentIndex = 0;
216 :
QPoint(m_visibleCellsInEdge[
index], m_edgeIndex);
239 MovePreloadedItemsToPool,
248 CalculateNewTopLeftRow = 0x8,
249 CalculateNewTopLeftColumn = 0x10,
250 CalculateNewContentWidth = 0x20,
251 CalculateNewContentHeight = 0x40,
252 PositionViewAtRow = 0x80,
253 PositionViewAtColumn = 0x100,
301 RebuildOptions rebuildOptions = RebuildOption::All;
302 RebuildOptions scheduledRebuildOptions = RebuildOption::All;
310 bool blockItemCreatedCallback =
false;
311 mutable bool layoutWarningIssued =
false;
312 bool polishing =
false;
313 bool syncVertically =
false;
314 bool syncHorizontally =
false;
315 bool inSetLocalViewportPos =
false;
316 bool inSyncViewportPosRecursive =
false;
317 bool inUpdateContentSize =
false;
319 bool keyNavigationEnabled =
true;
320 bool pointerNavigationEnabled =
true;
321 bool alternatingRows =
true;
322 bool resizableColumns =
false;
323 bool resizableRows =
false;
325 bool m_cursorSet =
false;
330 bool isTransposed =
false;
332 bool warnNoSelectionModel =
true;
364 int assignedPositionViewAtRowAfterRebuild = 0;
365 int assignedPositionViewAtColumnAfterRebuild = 0;
366 int positionViewAtRowAfterRebuild = 0;
367 int positionViewAtColumnAfterRebuild = 0;
369 qreal positionViewAtColumnOffset = 0;
384 int currentColumn = -1;
406 int modelIndexAtCell(
const QPoint &cell)
const;
407 QPoint cellAtModelIndex(
int modelIndex)
const;
408 int modelIndexToCellIndex(
const QModelIndex &modelIndex)
const;
412 qreal sizeHintForRow(
int row)
const;
413 QSize calculateTableSize();
414 void updateTableSize();
416 inline bool isColumnHidden(
int column)
const;
417 inline bool isRowHidden(
int row)
const;
423 qreal getEffectiveRowY(
int row)
const;
424 qreal getEffectiveRowHeight(
int row)
const;
437 bool updateTableRecursive();
439 void relayoutTableItems();
441 void layoutVerticalEdge(
Qt::Edge tableEdge);
442 void layoutHorizontalEdge(
Qt::Edge tableEdge);
443 void layoutTopLeftItem();
444 void layoutTableEdgeFromLoadRequest();
446 void updateContentWidth();
447 void updateContentHeight();
448 void updateAverageColumnWidth();
449 void updateAverageRowHeight();
450 RebuildOptions checkForVisibilityChanges();
451 void forceLayout(
bool immediate);
453 void updateExtents();
454 void syncLoadedTableRectFromLoadedTable();
455 void syncLoadedTableFromLoadRequest();
456 void shiftLoadedTableRect(
const QPointF newPosition);
458 int nextVisibleEdgeIndex(
Qt::Edge edge,
int startIndex)
const;
459 int nextVisibleEdgeIndexAroundLoadedTable(
Qt::Edge edge)
const;
462 inline int edgeToArrayIndex(
Qt::Edge edge)
const;
463 void clearEdgeSizeCache();
465 bool canLoadTableEdge(
Qt::Edge tableEdge,
const QRectF fillRect)
const;
466 bool canUnloadTableEdge(
Qt::Edge tableEdge,
const QRectF fillRect)
const;
480 void unloadItem(
const QPoint &cell);
484 void drainReusePoolAfterLoadRequest();
485 void processLoadRequest();
487 void processRebuildTable();
488 bool moveToNextRebuildState();
490 void loadInitialTable();
492 void layoutAfterLoadingInitialTable();
493 void adjustViewportXAccordingToAlignment();
494 void adjustViewportYAccordingToAlignment();
495 void cancelOvershootAfterLayout();
497 void scheduleRebuildTable(QQuickTableViewPrivate::RebuildOptions options);
502 void updateEditItem();
503 void updateContentSize();
506 void createWrapperModel();
509 virtual void initItemCallback(
int modelIndex,
QObject *
item);
510 virtual void itemCreatedCallback(
int modelIndex,
QObject *
object);
511 virtual void itemPooledCallback(
int modelIndex,
QObject *
object);
512 virtual void itemReusedCallback(
int modelIndex,
QObject *
object);
515 virtual void syncWithPendingChanges();
516 virtual void syncDelegate();
518 virtual void setModelImpl(
const QVariant &newModel);
519 virtual void syncModel();
520 virtual void syncSyncView();
521 virtual void syncPositionView();
522 inline void syncRebuildOptions();
524 void connectToModel();
525 void disconnectFromModel();
534 void modelResetCallback();
541 void scheduleRebuildIfFastFlick();
542 void setLocalViewportX(
qreal contentX);
543 void setLocalViewportY(
qreal contentY);
544 void syncViewportRect();
545 void syncViewportPosRecursive();
547 bool selectedInSelectionModel(
const QPoint &cell)
const;
549 void updateSelectedOnAllDelegateItems();
553 bool currentInSelectionModel(
const QPoint &cell)
const;
556 void updateCurrentRowAndColumn();
558 void fetchMoreData();
563 inline QString tableLayoutToString()
const;
564 void dumpTable()
const;
566 void setRequiredProperty(
const char *
property,
568 int serializedModelIndex,
572 void setCurrentIndexFromTap(
const QPointF &
pos);
573 void setCurrentIndex(
const QPoint &cell);
574 bool setCurrentIndexFromKeyEvent(
QKeyEvent *
e);
575 bool canEdit(
const QModelIndex tappedIndex,
bool warn);
589 virtual void updateSelection(
const QRect &oldSelection,
const QRect &newSelection);
qreal sectionSize() const override
qreal endPosition() const override
qreal size() const override
qreal position() const override
FxTableItem(QQuickItem *item, QQuickTableView *table, bool own)
bool contains(qreal, qreal) const override
LayoutChangeHint
This enum describes the way the model changes layout.
The QEventPoint class provides information about a point in a QPointerEvent.
The QJSValue class acts as a container for Qt/JavaScript data types.
The QKeyEvent class describes a key event.
reverse_iterator crbegin() const
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
constexpr int x() const noexcept
Returns the x coordinate of this point.
constexpr int y() const noexcept
Returns the y coordinate of this point.
A base class for pointer events.
GrabTransition
This enum represents a transition of exclusive or passive grab from one object (possibly nullptr) to ...
The QQmlChangeSet class stores an ordered list of notifications about changes to a linear data set.
IncubationMode
Specifies the mode the incubator operates in.
virtual void fixup(AxisData &data, qreal minExtent, qreal maxExtent)
virtual void updatePolish()
QPointer< QQuickItem > item
The QQuickItem class provides the most basic of all visual items in \l {Qt Quick}.
virtual void normalizeSelection()=0
virtual bool startSelection(const QPointF &pos)=0
virtual QQuickItem * selectionPointerHandlerTarget() const =0
virtual void setSelectionEndPos(const QPointF &pos)=0
virtual void clearSelection()=0
virtual QRectF selectionRectangle() const =0
virtual QSizeF scrollTowardsSelectionPoint(const QPointF &pos, const QSizeF &step)=0
virtual void setSelectionStartPos(const QPointF &pos)=0
bool isHoveringGrid() const
QPoint currentCell() const
void begin(Qt::Edge edgeToLoad, int edgeIndex, const QVector< int > visibleCellsInEdge, QQmlIncubator::IncubationMode incubationMode)
QQmlIncubator::IncubationMode incubationMode() const
void begin(const QPoint &cell, const QPointF &pos, QQmlIncubator::IncubationMode incubationMode)
QPointF startPosition() const
bool hasCurrentCell() const
bool atTableEnd(Qt::Edge edge, int startIndex) const
QJSValue rowHeightProvider
QRectF positionViewAtRowSubRect
QQmlNullableValue< qreal > explicitContentWidth
bool atTableEnd(Qt::Edge edge) const
QRectF loadedTableOuterRect
void registerCallbackWhenBindingsAreEvaluated()
QList< QPointer< QQuickTableView > > syncChildren
QQmlGuard< QQmlComponent > assignedDelegate
QMargins edgesBeforeRebuild
static QQuickTableViewPrivate * get(QQuickTableView *q)
QJSValue columnWidthProvider
QRectF positionViewAtColumnSubRect
EdgeRange cachedColumnWidth
bool cellIsValid(const QPoint &cell) const
QPointer< QQuickTableView > assignedSyncView
QQmlNullableValue< qreal > explicitContentHeight
TableEdgeLoadRequest loadRequest
QRectF loadedTableInnerRect
QQuickPropertyAnimation positionXAnimation
QMinimalFlatSet< int > loadedColumns
QHash< int, FxTableItem * > loadedItems
QMinimalFlatSet< int > loadedRows
QPointer< QItemSelectionModel > selectionModel
QHash< int, qreal > explicitColumnWidths
QHash< int, qreal > explicitRowHeights
QPointer< QQuickTableView > syncView
QQuickPropertyAnimation positionYAnimation
void _q_componentFinalized()
EdgeRange cachedRowHeight
void syncSourceModelInSelectionModel()
QPersistentModelIndex editIndex
void onGrabChanged(QQuickPointerHandler *grabber, QPointingDevice::GrabTransition transition, QPointerEvent *ev, QEventPoint &point) override
Notification that the grab has changed in some way which is relevant to this handler.
void updateState(QEventPoint &point)
void updateDrag(QPointerEvent *event, QEventPoint &point)
void handleEventPoint(QPointerEvent *event, QEventPoint &point) override
bool wantsEventPoint(const QPointerEvent *event, const QEventPoint &point) override
Returns true if the given point (as part of event) could be relevant at all to this handler,...
bool wantsEventPoint(const QPointerEvent *event, const QEventPoint &point) override
Returns true if the given point (as part of event) could be relevant at all to this handler,...
\inmodule QtCore\reentrant
\inmodule QtCore\reentrant
\macro QT_RESTRICTED_CAST_FROM_ASCII
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char * destination
static QDBusError::ErrorType get(const char *name)
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
#define Q_DECLARE_FLAGS(Flags, Enum)
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
#define qCDebug(category,...)
#define Q_DECLARE_LOGGING_CATEGORY(name)
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLuint GLintptr offset
GLenum GLenum GLsizei void GLsizei void * column
GLdouble GLdouble GLdouble GLdouble q
GLenum GLenum GLsizei void * row
GLenum GLenum GLsizei void * table
static const qreal kDefaultColumnWidth
static const int kEdgeIndexAtEnd
static QT_BEGIN_NAMESPACE const qreal kDefaultRowHeight
static const int kEdgeIndexNotSet
QtPrivate::QRegularExpressionMatchIteratorRangeBasedForIterator begin(const QRegularExpressionMatchIterator &iterator)
static QT_BEGIN_NAMESPACE QVariant hint(QPlatformIntegration::StyleHint h)
QString qEnvironmentVariable(const char *varName, const QString &defaultValue)
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
QSqlQueryModel * model
[16]
QItemSelection * selection
[0]
selection select(topLeft, bottomRight)
char * toString(const MyType &t)
[31]
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent