aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquicktableview_p_p.h
diff options
context:
space:
mode:
authorRichard Moe Gustavsen <richard.gustavsen@qt.io>2020-03-31 15:03:40 +0200
committerRichard Moe Gustavsen <richard.gustavsen@qt.io>2020-04-08 15:57:11 +0200
commitbe12b71faeba23a8ef0cf9695e11aa847b68ae7e (patch)
treef4049c71c49a281ac9091dc34b78220aad522558 /src/quick/items/qquicktableview_p_p.h
parentfaa3e0b41e12ad36bb45272dbcb3991fd99f3836 (diff)
QQuickTableView: add positionViewAtRow()/Column()
Add functions to let the application scroll the table to a specific row or column using a specific mode. This API partially mirrors the API found in ListView. [ChangeLog][QtQuick][TableView] positionViewAtCell(), positionViewAtRow(), and positionViewAtColumn() have been added to enable the application to position the contents to show a specific cell. Fixes: QTBUG-83215 Change-Id: I321588041977f9ded40f84fc0499ea1c5f6ac801 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/quick/items/qquicktableview_p_p.h')
-rw-r--r--src/quick/items/qquicktableview_p_p.h34
1 files changed, 27 insertions, 7 deletions
diff --git a/src/quick/items/qquicktableview_p_p.h b/src/quick/items/qquicktableview_p_p.h
index 93a8d839e0..ab53a07dd0 100644
--- a/src/quick/items/qquicktableview_p_p.h
+++ b/src/quick/items/qquicktableview_p_p.h
@@ -208,11 +208,13 @@ public:
enum class RebuildOption {
None = 0,
- LayoutOnly = 0x1,
- ViewportOnly = 0x2,
- CalculateNewTopLeftRow = 0x4,
- CalculateNewTopLeftColumn = 0x8,
- All = 0x10,
+ All = 0x1,
+ LayoutOnly = 0x2,
+ ViewportOnly = 0x4,
+ CalculateNewTopLeftRow = 0x8,
+ CalculateNewTopLeftColumn = 0x10,
+ PositionViewAtRow = 0x20,
+ PositionViewAtColumn = 0x40,
};
Q_DECLARE_FLAGS(RebuildOptions, RebuildOption)
@@ -310,6 +312,15 @@ public:
QList<QPointer<QQuickTableView> > syncChildren;
Qt::Orientations assignedSyncDirection = Qt::Horizontal | Qt::Vertical;
+ int assignedPositionViewAtRow = 0;
+ int assignedPositionViewAtColumn = 0;
+ int positionViewAtRow = 0;
+ int positionViewAtColumn = 0;
+ qreal positionViewAtRowOffset = 0;
+ qreal positionViewAtColumnOffset = 0;
+ Qt::Alignment positionViewAtRowAlignment = Qt::AlignTop;
+ Qt::Alignment positionViewAtColumnAlignment = Qt::AlignLeft;
+
const static QPoint kLeft;
const static QPoint kRight;
const static QPoint kUp;
@@ -337,6 +348,8 @@ public:
qreal getRowLayoutHeight(int row);
qreal getColumnWidth(int column);
qreal getRowHeight(int row);
+ qreal getEffectiveRowHeight(int row) const;
+ qreal getEffectiveColumnWidth(int column) const;
inline int topRow() const { return loadedRows.cbegin().key(); }
inline int bottomRow() const { return (--loadedRows.cend()).key(); }
@@ -363,6 +376,7 @@ public:
void updateExtents();
void syncLoadedTableRectFromLoadedTable();
void syncLoadedTableFromLoadRequest();
+ void shiftLoadedTableRect(const QPointF newPosition);
int nextVisibleEdgeIndex(Qt::Edge edge, int startIndex);
int nextVisibleEdgeIndexAroundLoadedTable(Qt::Edge edge);
@@ -394,8 +408,11 @@ public:
void processRebuildTable();
bool moveToNextRebuildState();
void calculateTopLeft(QPoint &topLeft, QPointF &topLeftPos);
- void beginRebuildTable();
+ void loadInitialTable();
+
void layoutAfterLoadingInitialTable();
+ void adjustViewportXAccordingToAlignment();
+ void adjustViewportYAccordingToAlignment();
void scheduleRebuildTable(QQuickTableViewPrivate::RebuildOptions options);
@@ -413,8 +430,9 @@ public:
virtual QVariant modelImpl() const;
virtual void setModelImpl(const QVariant &newModel);
virtual void syncModel();
- inline void syncRebuildOptions();
virtual void syncSyncView();
+ virtual void syncPositionView();
+ inline void syncRebuildOptions();
void connectToModel();
void disconnectFromModel();
@@ -459,6 +477,8 @@ public:
QPoint cell;
};
+Q_DECLARE_OPERATORS_FOR_FLAGS(QQuickTableViewPrivate::RebuildOptions)
+
QT_END_NAMESPACE
#endif