Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/quick/items/qquicktableview_p_p.h |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||
---|---|---|---|---|---|---|---|---|
1 | - | |||||||
2 | - | |||||||
3 | - | |||||||
4 | - | |||||||
5 | extern const QLoggingCategory &lcTableViewDelegateLifecycle(); | - | ||||||
6 | - | |||||||
7 | static const int kDefaultCacheBuffer = 300; | - | ||||||
8 | static const qreal kDefaultRowHeight = 50; | - | ||||||
9 | static const qreal kDefaultColumnWidth = 50; | - | ||||||
10 | - | |||||||
11 | class FxTableItem; | - | ||||||
12 | - | |||||||
13 | class __attribute__((visibility("default"))) QQuickTableViewPrivate : public QQuickFlickablePrivate | - | ||||||
14 | { | - | ||||||
15 | inline QQuickTableView* q_func() { return static_cast<QQuickTableView *>(q_ptr); } inline const QQuickTableView* q_func() const { return static_cast<const QQuickTableView *>(q_ptr); } friend class QQuickTableView; | - | ||||||
16 | - | |||||||
17 | public: | - | ||||||
18 | class TableEdgeLoadRequest | - | ||||||
19 | { | - | ||||||
20 | - | |||||||
21 | - | |||||||
22 | - | |||||||
23 | - | |||||||
24 | - | |||||||
25 | - | |||||||
26 | - | |||||||
27 | public: | - | ||||||
28 | void begin(const QPoint &cell, QQmlIncubator::IncubationMode incubationMode) | - | ||||||
29 | { | - | ||||||
30 | ((!active) ? static_cast<void>(0) : qt_assert("!active", __FILE__, 89)); | - | ||||||
31 | active = true; | - | ||||||
32 | tableEdge = Qt::Edge(0); | - | ||||||
33 | tableCells = QLine(cell, cell); | - | ||||||
34 | mode = incubationMode; | - | ||||||
35 | cellCount = 1; | - | ||||||
36 | currentIndex = 0; | - | ||||||
37 | for (bool qt_category_enabled = lcTableViewDelegateLifecycle()().isDebugEnabled(); qt_category_enabled
never executed: QMessageLogger(__FILE__, 96, __PRETTY_FUNCTION__, lcTableViewDelegateLifecycle()().categoryName()).debug() << "begin top-left:" << toString(); | 0 | ||||||
38 | } never executed: end of block | 0 | ||||||
39 | - | |||||||
40 | void begin(const QLine cellsToLoad, Qt::Edge edgeToLoad, QQmlIncubator::IncubationMode incubationMode) | - | ||||||
41 | { | - | ||||||
42 | ((!active) ? static_cast<void>(0) : qt_assert("!active", __FILE__, 101)); | - | ||||||
43 | active = true; | - | ||||||
44 | tableEdge = edgeToLoad; | - | ||||||
45 | tableCells = cellsToLoad; | - | ||||||
46 | mode = incubationMode; | - | ||||||
47 | cellCount = tableCells.x2() - tableCells.x1() + tableCells.y2() - tableCells.y1() + 1; | - | ||||||
48 | currentIndex = 0; | - | ||||||
49 | for (bool qt_category_enabled = lcTableViewDelegateLifecycle()().isDebugEnabled(); qt_category_enabled
never executed: QMessageLogger(__FILE__, 108, __PRETTY_FUNCTION__, lcTableViewDelegateLifecycle()().categoryName()).debug() << "begin:" << toString(); | 0 | ||||||
50 | } never executed: end of block | 0 | ||||||
51 | - | |||||||
52 | inline void markAsDone() { active = false; } never executed: end of block | 0 | ||||||
53 | inline bool isActive() { return executed 816 times by 1 test: active;return active; Executed by:
executed 816 times by 1 test: }return active; Executed by:
| 816 | ||||||
54 | - | |||||||
55 | inline QPoint firstCell() { return never executed: tableCells.p1();return tableCells.p1(); never executed: }return tableCells.p1(); | 0 | ||||||
56 | inline QPoint lastCell() { return never executed: tableCells.p2();return tableCells.p2(); never executed: }return tableCells.p2(); | 0 | ||||||
57 | inline QPoint currentCell() { return never executed: cellAt(currentIndex);return cellAt(currentIndex); never executed: }return cellAt(currentIndex); | 0 | ||||||
58 | inline QPoint previousCell() { return never executed: cellAt(currentIndex - 1);return cellAt(currentIndex - 1); never executed: }return cellAt(currentIndex - 1); | 0 | ||||||
59 | - | |||||||
60 | inline bool atBeginning() { return never executed: currentIndex == 0;return currentIndex == 0; never executed: }return currentIndex == 0; | 0 | ||||||
61 | inline bool hasCurrentCell() { return never executed: currentIndex < cellCount;return currentIndex < cellCount; never executed: }return currentIndex < cellCount; | 0 | ||||||
62 | inline void moveToNextCell() { ++currentIndex; } never executed: end of block | 0 | ||||||
63 | - | |||||||
64 | inline Qt::Edge edge() { return never executed: tableEdge;return tableEdge; never executed: }return tableEdge; | 0 | ||||||
65 | inline QQmlIncubator::IncubationMode incubationMode() { return never executed: mode;return mode; never executed: }return mode; | 0 | ||||||
66 | - | |||||||
67 | QString toString() | - | ||||||
68 | { | - | ||||||
69 | QString str; | - | ||||||
70 | QDebug dbg(&str); | - | ||||||
71 | dbg.nospace() << "TableSectionLoadRequest(" << "edge:" | - | ||||||
72 | << tableEdge << " cells:" << tableCells << " incubation:"; | - | ||||||
73 | - | |||||||
74 | switch (mode) { | - | ||||||
75 | case never executed: QQmlIncubator::Asynchronous:case QQmlIncubator::Asynchronous: never executed: case QQmlIncubator::Asynchronous: | 0 | ||||||
76 | dbg << "Asynchronous"; | - | ||||||
77 | break; never executed: break; | 0 | ||||||
78 | case never executed: QQmlIncubator::AsynchronousIfNested:case QQmlIncubator::AsynchronousIfNested: never executed: case QQmlIncubator::AsynchronousIfNested: | 0 | ||||||
79 | dbg << "AsynchronousIfNested"; | - | ||||||
80 | break; never executed: break; | 0 | ||||||
81 | case never executed: QQmlIncubator::Synchronous:case QQmlIncubator::Synchronous: never executed: case QQmlIncubator::Synchronous: | 0 | ||||||
82 | dbg << "Synchronous"; | - | ||||||
83 | break; never executed: break; | 0 | ||||||
84 | } | - | ||||||
85 | - | |||||||
86 | return never executed: str;return str; never executed: return str; | 0 | ||||||
87 | } | - | ||||||
88 | - | |||||||
89 | private: | - | ||||||
90 | Qt::Edge tableEdge = Qt::Edge(0); | - | ||||||
91 | QLine tableCells; | - | ||||||
92 | int currentIndex = 0; | - | ||||||
93 | int cellCount = 0; | - | ||||||
94 | bool active = false; | - | ||||||
95 | QQmlIncubator::IncubationMode mode = QQmlIncubator::AsynchronousIfNested; | - | ||||||
96 | - | |||||||
97 | QPoint cellAt(int index) | - | ||||||
98 | { | - | ||||||
99 | int x = tableCells.p1().x() + (tableCells.dx()
| 0 | ||||||
100 | int y = tableCells.p1().y() + (tableCells.dy()
| 0 | ||||||
101 | return never executed: QPoint(x, y);return QPoint(x, y); never executed: return QPoint(x, y); | 0 | ||||||
102 | } | - | ||||||
103 | }; | - | ||||||
104 | - | |||||||
105 | struct ColumnRowSize | - | ||||||
106 | { | - | ||||||
107 | int index; | - | ||||||
108 | qreal size; | - | ||||||
109 | - | |||||||
110 | static bool lessThan(const ColumnRowSize& a, const ColumnRowSize& b) | - | ||||||
111 | { | - | ||||||
112 | return never executed: a.index < b.index;return a.index < b.index; never executed: return a.index < b.index; | 0 | ||||||
113 | } | - | ||||||
114 | }; | - | ||||||
115 | - | |||||||
116 | public: | - | ||||||
117 | QQuickTableViewPrivate(); | - | ||||||
118 | ~QQuickTableViewPrivate() override; | - | ||||||
119 | - | |||||||
120 | static inline QQuickTableViewPrivate *get(QQuickTableView *q) { return never executed: q->d_func();return q->d_func(); never executed: }return q->d_func(); | 0 | ||||||
121 | - | |||||||
122 | void updatePolish() override; | - | ||||||
123 | - | |||||||
124 | public: | - | ||||||
125 | QHash<int, FxTableItem *> loadedItems; | - | ||||||
126 | - | |||||||
127 | - | |||||||
128 | - | |||||||
129 | - | |||||||
130 | - | |||||||
131 | QQmlInstanceModel* model = nullptr; | - | ||||||
132 | QPointer<QQmlDelegateModel> delegateModel = nullptr; | - | ||||||
133 | QVariant modelVariant; | - | ||||||
134 | - | |||||||
135 | - | |||||||
136 | - | |||||||
137 | - | |||||||
138 | - | |||||||
139 | - | |||||||
140 | - | |||||||
141 | QRect loadedTable; | - | ||||||
142 | QRectF loadedTableOuterRect; | - | ||||||
143 | QRectF loadedTableInnerRect; | - | ||||||
144 | - | |||||||
145 | QRectF viewportRect = QRectF(0, 0, -1, -1); | - | ||||||
146 | - | |||||||
147 | QSize tableSize; | - | ||||||
148 | - | |||||||
149 | TableEdgeLoadRequest loadRequest; | - | ||||||
150 | - | |||||||
151 | QPoint contentSizeBenchMarkPoint = QPoint(-1, -1); | - | ||||||
152 | QSizeF cellSpacing; | - | ||||||
153 | QMarginsF tableMargins; | - | ||||||
154 | - | |||||||
155 | int cacheBuffer = kDefaultCacheBuffer; | - | ||||||
156 | QTimer cacheBufferDelayTimer; | - | ||||||
157 | bool hasBufferedItems = false; | - | ||||||
158 | - | |||||||
159 | bool blockItemCreatedCallback = false; | - | ||||||
160 | bool tableInvalid = false; | - | ||||||
161 | bool tableRebuilding = false; | - | ||||||
162 | bool columnRowPositionsInvalid = false; | - | ||||||
163 | - | |||||||
164 | QVector<ColumnRowSize> columnWidths; | - | ||||||
165 | QVector<ColumnRowSize> rowHeights; | - | ||||||
166 | - | |||||||
167 | const static QPoint kLeft; | - | ||||||
168 | const static QPoint kRight; | - | ||||||
169 | const static QPoint kUp; | - | ||||||
170 | const static QPoint kDown; | - | ||||||
171 | - | |||||||
172 | - | |||||||
173 | QString forcedIncubationMode = qEnvironmentVariable("QT_TABLEVIEW_INCUBATION_MODE"); | - | ||||||
174 | - | |||||||
175 | - | |||||||
176 | public: | - | ||||||
177 | QQuickTableViewAttached *getAttachedObject(const QObject *object) const; | - | ||||||
178 | - | |||||||
179 | int modelIndexAtCell(const QPoint &cell) const; | - | ||||||
180 | QPoint cellAtModelIndex(int modelIndex) const; | - | ||||||
181 | - | |||||||
182 | void calculateColumnWidthsAfterRebuilding(); | - | ||||||
183 | void calculateRowHeightsAfterRebuilding(); | - | ||||||
184 | void calculateColumnWidth(int column); | - | ||||||
185 | void calculateRowHeight(int row); | - | ||||||
186 | void calculateEdgeSizeFromLoadRequest(); | - | ||||||
187 | void calculateTableSize(); | - | ||||||
188 | - | |||||||
189 | qreal columnWidth(int column); | - | ||||||
190 | qreal rowHeight(int row); | - | ||||||
191 | - | |||||||
192 | void relayoutTable(); | - | ||||||
193 | void relayoutTableItems(); | - | ||||||
194 | - | |||||||
195 | void layoutVerticalEdge(Qt::Edge tableEdge); | - | ||||||
196 | void layoutHorizontalEdge(Qt::Edge tableEdge); | - | ||||||
197 | void layoutTopLeftItem(); | - | ||||||
198 | void layoutTableEdgeFromLoadRequest(); | - | ||||||
199 | - | |||||||
200 | void updateContentWidth(); | - | ||||||
201 | void updateContentHeight(); | - | ||||||
202 | - | |||||||
203 | void enforceFirstRowColumnAtOrigo(); | - | ||||||
204 | void syncLoadedTableRectFromLoadedTable(); | - | ||||||
205 | void syncLoadedTableFromLoadRequest(); | - | ||||||
206 | - | |||||||
207 | bool canLoadTableEdge(Qt::Edge tableEdge, const QRectF fillRect) const; | - | ||||||
208 | bool canUnloadTableEdge(Qt::Edge tableEdge, const QRectF fillRect) const; | - | ||||||
209 | Qt::Edge nextEdgeToLoad(const QRectF rect); | - | ||||||
210 | Qt::Edge nextEdgeToUnload(const QRectF rect); | - | ||||||
211 | - | |||||||
212 | qreal cellWidth(const QPoint &cell); | - | ||||||
213 | qreal cellHeight(const QPoint &cell); | - | ||||||
214 | - | |||||||
215 | FxTableItem *loadedTableItem(const QPoint &cell) const; | - | ||||||
216 | FxTableItem *itemNextTo(const FxTableItem *fxTableItem, const QPoint &direction) const; | - | ||||||
217 | FxTableItem *createFxTableItem(const QPoint &cell, QQmlIncubator::IncubationMode incubationMode); | - | ||||||
218 | FxTableItem *loadFxTableItem(const QPoint &cell, QQmlIncubator::IncubationMode incubationMode); | - | ||||||
219 | - | |||||||
220 | void releaseItem(FxTableItem *fxTableItem); | - | ||||||
221 | void releaseLoadedItems(); | - | ||||||
222 | void clear(); | - | ||||||
223 | - | |||||||
224 | void unloadItem(const QPoint &cell); | - | ||||||
225 | void unloadItems(const QLine &items); | - | ||||||
226 | - | |||||||
227 | void loadInitialTopLeftItem(); | - | ||||||
228 | void loadEdge(Qt::Edge edge, QQmlIncubator::IncubationMode incubationMode); | - | ||||||
229 | void unloadEdge(Qt::Edge edge); | - | ||||||
230 | void loadAndUnloadVisibleEdges(); | - | ||||||
231 | void cancelLoadRequest(); | - | ||||||
232 | void processLoadRequest(); | - | ||||||
233 | void beginRebuildTable(); | - | ||||||
234 | void endRebuildTable(); | - | ||||||
235 | - | |||||||
236 | void loadBuffer(); | - | ||||||
237 | void unloadBuffer(); | - | ||||||
238 | QRectF bufferRect(); | - | ||||||
239 | - | |||||||
240 | void invalidateTable(); | - | ||||||
241 | void invalidateColumnRowPositions(); | - | ||||||
242 | - | |||||||
243 | void createWrapperModel(); | - | ||||||
244 | - | |||||||
245 | void initItemCallback(int modelIndex, QObject *item); | - | ||||||
246 | void itemCreatedCallback(int modelIndex, QObject *object); | - | ||||||
247 | void modelUpdated(const QQmlChangeSet &changeSet, bool reset); | - | ||||||
248 | - | |||||||
249 | inline QString tableLayoutToString() const; | - | ||||||
250 | void dumpTable() const; | - | ||||||
251 | }; | - | ||||||
252 | - | |||||||
253 | class FxTableItem : public QQuickItemViewFxItem | - | ||||||
254 | { | - | ||||||
255 | public: | - | ||||||
256 | FxTableItem(QQuickItem *item, QQuickTableView *table, bool own) | - | ||||||
257 | : QQuickItemViewFxItem(item, own, QQuickTableViewPrivate::get(table)) | - | ||||||
258 | { | - | ||||||
259 | } never executed: end of block | 0 | ||||||
260 | - | |||||||
261 | qreal position() const override { return never executed: 0;return 0; never executed: }return 0; | 0 | ||||||
262 | qreal endPosition() const override { return never executed: 0;return 0; never executed: }return 0; | 0 | ||||||
263 | qreal size() const override { return never executed: 0;return 0; never executed: }return 0; | 0 | ||||||
264 | qreal sectionSize() const override { return never executed: 0;return 0; never executed: }return 0; | 0 | ||||||
265 | bool contains(qreal, qreal) const override { return never executed: false;return false; never executed: }return false; | 0 | ||||||
266 | - | |||||||
267 | QPoint cell; | - | ||||||
268 | }; | - | ||||||
269 | - | |||||||
270 | template<> class QTypeInfo<QQuickTableViewPrivate::ColumnRowSize > { public: enum { isSpecialized = true, isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_PRIMITIVE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QQuickTableViewPrivate::ColumnRowSize)>sizeof(void*)), isPointer = false, isIntegral = std::is_integral< QQuickTableViewPrivate::ColumnRowSize >::value, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QQuickTableViewPrivate::ColumnRowSize) }; static inline const char *name() { return "QQuickTableViewPrivate::ColumnRowSize"; } }; | - | ||||||
271 | - | |||||||
272 | - | |||||||
Switch to Source code | Preprocessed file |