on xenial help sign in
Merge
commitdb3f0609c1659fd84180de547114d146792ef828 authorAlbert Astals <albert.astals@canonical.com> dateTue 17 Dec 2013, 13:34 (13 years ago) parent0404034f260fe7
5 files changed+240−212
plugins/DashViews/verticaljournal.cpp+73−70 plugins/DashViews/verticaljournal.h+38−17 tests/plugins/DashViews/CMakeLists.txt+2−2 tests/plugins/DashViews/verticaljournaltest.cpp+125−121 tests/plugins/DashViews/verticaljournaltest.qml+2−2
plugins/DashViews/verticaljournal.cpp+73−70
@@ -45,8 +45,8 @@ VerticalJournal::VerticalJournal()
4545 : m_delegateModel(nullptr)
4646 , m_asyncRequestedIndex(-1)
4747 , m_columnWidth(0)
48− , m_horizontalSpacing(0)
49− , m_verticalSpacing(0)
48+ , m_columnSpacing(0)
49+ , m_rowSpacing(0)
5050 , m_delegateCreationBegin(0)
5151 , m_delegateCreationEnd(0)
5252 , m_delegateCreationBeginValid(false)
@@ -70,20 +70,9 @@ void VerticalJournal::setModel(QAbstractItemModel *model)
7070 if (!m_delegateModel) {
7171 createDelegateModel();
7272 }
73−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
74− m_delegateModel->setModel(QVariant::fromValue<QAbstractItemModel *>(model));
75−#else
7673 m_delegateModel->setModel(QVariant::fromValue<QAbstractItemModel *>(model));
77−#endif
78− // Cleanup the existing items
79− for (int i = 0; i < m_columnVisibleItems.count(); ++i)
80− {
81− QList<ViewItem> &column = m_columnVisibleItems[i];
82− Q_FOREACH(const ViewItem &item, column)
83− releaseItem(item);
84− column.clear();
85− }
86− m_indexColumnMap.clear();
74+
75+ cleanupExistingItems();
8776
8877 Q_EMIT modelChanged();
8978 polish();
@@ -102,15 +91,7 @@ void VerticalJournal::setDelegate(QQmlComponent *delegate)
10291 createDelegateModel();
10392 }
10493
105− // Cleanup the existing items
106− for (int i = 0; i < m_columnVisibleItems.count(); ++i)
107− {
108− QList<ViewItem> &column = m_columnVisibleItems[i];
109− Q_FOREACH(const ViewItem &item, column)
110− releaseItem(item);
111− column.clear();
112− }
113− m_indexColumnMap.clear();
94+ cleanupExistingItems();
11495
11596 m_delegateModel->setDelegate(delegate);
11697
@@ -142,16 +123,16 @@ void VerticalJournal::setColumnWidth(qreal columnWidth)
142123 }
143124}
144125
145−qreal VerticalJournal::horizontalSpacing() const
126+qreal VerticalJournal::columnSpacing() const
146127{
147− return m_horizontalSpacing;
128+ return m_columnSpacing;
148129}
149130
150−void VerticalJournal::setHorizontalSpacing(qreal horizontalSpacing)
131+void VerticalJournal::setColumnSpacing(qreal columnSpacing)
151132{
152− if (horizontalSpacing != m_horizontalSpacing) {
153− m_horizontalSpacing = horizontalSpacing;
154− Q_EMIT horizontalSpacingChanged();
133+ if (columnSpacing != m_columnSpacing) {
134+ m_columnSpacing = columnSpacing;
135+ Q_EMIT columnSpacingChanged();
155136
156137 if (isComponentComplete()) {
157138 relayout();
@@ -159,16 +140,16 @@ void VerticalJournal::setHorizontalSpacing(qreal horizontalSpacing)
159140 }
160141}
161142
162−qreal VerticalJournal::verticalSpacing() const
143+qreal VerticalJournal::rowSpacing() const
163144{
164− return m_verticalSpacing;
145+ return m_rowSpacing;
165146}
166147
167−void VerticalJournal::setVerticalSpacing(qreal verticalSpacing)
148+void VerticalJournal::setRowSpacing(qreal rowSpacing)
168149{
169− if (verticalSpacing != m_verticalSpacing) {
170− m_verticalSpacing = verticalSpacing;
171− Q_EMIT verticalSpacingChanged();
150+ if (rowSpacing != m_rowSpacing) {
151+ m_rowSpacing = rowSpacing;
152+ Q_EMIT rowSpacingChanged();
172153
173154 if (isComponentComplete()) {
174155 relayout();
@@ -269,15 +250,15 @@ void VerticalJournal::refill()
269250 }
270251}
271252
272−void VerticalJournal::findBottomModelIndexToAdd(int *modelIndex, double *yPos)
253+void VerticalJournal::findBottomModelIndexToAdd(int *modelIndex, qreal *yPos)
273254{
274255 *modelIndex = 0;
275− *yPos = INT_MAX;
256+ *yPos = std::numeric_limits<qreal>::max();
276257
277258 Q_FOREACH(const auto &column, m_columnVisibleItems) {
278259 if (!column.isEmpty()) {
279260 const ViewItem &item = column.last();
280− *yPos = qMin(*yPos, static_cast<double>(item.y() + item.height() + m_verticalSpacing));
261+ *yPos = qMin(*yPos, item.y() + item.height() + m_rowSpacing);
281262 *modelIndex = qMax(*modelIndex, item.m_modelIndex + 1);
282263 } else {
283264 *yPos = 0;
@@ -285,10 +266,10 @@ void VerticalJournal::findBottomModelIndexToAdd(int *modelIndex, double *yPos)
285266 }
286267}
287268
288−void VerticalJournal::findTopModelIndexToAdd(int *modelIndex, double *yPos)
269+void VerticalJournal::findTopModelIndexToAdd(int *modelIndex, qreal *yPos)
289270{
290271 *modelIndex = INT_MAX;
291− *yPos = INT_MIN;
272+ *yPos = std::numeric_limits<qreal>::lowest();
292273 int columnToAddTo = -1;
293274
294275 // Find the topmost free column
@@ -296,7 +277,7 @@ void VerticalJournal::findTopModelIndexToAdd(int *modelIndex, double *yPos)
296277 const auto &column = m_columnVisibleItems[i];
297278 if (!column.isEmpty()) {
298279 const ViewItem &item = column.first();
299− const auto itemTopPos = item.y() - m_verticalSpacing;
280+ const auto itemTopPos = item.y() - m_rowSpacing;
300281 if (itemTopPos > *yPos) {
301282 *yPos = itemTopPos;
302283 *modelIndex = item.m_modelIndex - 1;
@@ -327,7 +308,7 @@ bool VerticalJournal::addVisibleItems(qreal fillFrom, qreal fillTo, bool asynchr
327308 return false;
328309
329310 int modelIndex;
330− double yPos;
311+ qreal yPos;
331312 findBottomModelIndexToAdd(&modelIndex, &yPos);
332313 bool changed = false;
333314 while (modelIndex < m_delegateModel->count() && yPos <= fillTo) {
@@ -411,18 +392,22 @@ QQuickItem *VerticalJournal::createItem(int modelIndex, bool asynchronous)
411392void VerticalJournal::positionItem(int modelIndex, QQuickItem *item)
412393{
413394 // Check if we add it to the bottom of existing column items
414− qreal columnToAddY = !m_columnVisibleItems[0].isEmpty() ? m_columnVisibleItems[0].last().y() + m_columnVisibleItems[0].last().height() : 0;
395+ const QList<ViewItem> &firstColumn = m_columnVisibleItems[0];
396+ qreal columnToAddY = !firstColumn.isEmpty() ? firstColumn.last().y() + firstColumn.last().height() : -m_rowSpacing;
415397 int columnToAddTo = 0;
416398 for (int i = 1; i < m_columnVisibleItems.count(); ++i) {
417− const qreal iY = !m_columnVisibleItems[i].isEmpty() ? m_columnVisibleItems[i].last().y() + m_columnVisibleItems[i].last().height() : 0;
399+ const QList<ViewItem> &column = m_columnVisibleItems[i];
400+ const qreal iY = !column.isEmpty() ? column.last().y() + column.last().height() : -m_rowSpacing;
418401 if (iY < columnToAddY) {
419402 columnToAddTo = i;
420403 columnToAddY = iY;
421404 }
422405 }
423− if (m_columnVisibleItems[columnToAddTo].isEmpty() || m_columnVisibleItems[columnToAddTo].last().m_modelIndex < modelIndex) {
424− item->setX(columnToAddTo * m_columnWidth + m_horizontalSpacing * (columnToAddTo + 1));
425− item->setY(columnToAddY + m_verticalSpacing);
406+
407+ const QList<ViewItem> &columnToAdd = m_columnVisibleItems[columnToAddTo];
408+ if (columnToAdd.isEmpty() || columnToAdd.last().m_modelIndex < modelIndex) {
409+ item->setX(columnToAddTo * (m_columnWidth + m_columnSpacing));
410+ item->setY(columnToAddY + m_rowSpacing);
426411
427412 m_columnVisibleItems[columnToAddTo] << ViewItem(item, modelIndex);
428413 m_indexColumnMap[modelIndex] = columnToAddTo;
@@ -431,13 +416,25 @@ void VerticalJournal::positionItem(int modelIndex, QQuickItem *item)
431416 columnToAddTo = m_indexColumnMap[modelIndex];
432417 columnToAddY = m_columnVisibleItems[columnToAddTo].first().y();
433418
434− item->setX(columnToAddTo * m_columnWidth + m_horizontalSpacing * (columnToAddTo + 1));
435− item->setY(columnToAddY - m_verticalSpacing - item->height());
419+ item->setX(columnToAddTo * (m_columnWidth + m_columnSpacing));
420+ item->setY(columnToAddY - m_rowSpacing - item->height());
436421
437422 m_columnVisibleItems[columnToAddTo].prepend(ViewItem(item, modelIndex));
438423 }
439424}
440425
426+void VerticalJournal::cleanupExistingItems()
427+{
428+ // Cleanup the existing items
429+ for (int i = 0; i < m_columnVisibleItems.count(); ++i) {
430+ QList<ViewItem> &column = m_columnVisibleItems[i];
431+ Q_FOREACH(const ViewItem &item, column)
432+ releaseItem(item);
433+ column.clear();
434+ }
435+ m_indexColumnMap.clear();
436+}
437+
441438void VerticalJournal::releaseItem(const ViewItem &item)
442439{
443440#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
@@ -451,6 +448,27 @@ void VerticalJournal::releaseItem(const ViewItem &item)
451448 }
452449}
453450
451+void VerticalJournal::calculateImplicitHeight()
452+{
453+ m_implicitHeightDirty = false;
454+
455+ int lastModelIndex = -1;
456+ qreal bottomMostY = 0;
457+ Q_FOREACH(const auto &column, m_columnVisibleItems) {
458+ if (!column.isEmpty()) {
459+ const ViewItem &item = column.last();
460+ lastModelIndex = qMax(lastModelIndex, item.m_modelIndex);
461+ bottomMostY = qMax(bottomMostY, item.y() + item.height());
462+ }
463+ }
464+ if (lastModelIndex >= 0) {
465+ const double averageHeight = bottomMostY / (lastModelIndex + 1);
466+ setImplicitHeight(bottomMostY + averageHeight * (model()->rowCount() - lastModelIndex - 1));
467+ } else {
468+ setImplicitHeight(0);
469+ }
470+}
471+
454472#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
455473void VerticalJournal::itemCreated(int modelIndex, QQuickItem *item)
456474{
@@ -488,13 +506,15 @@ void VerticalJournal::updatePolish()
488506 return;
489507
490508 if (m_needsRelayout) {
509+ m_implicitHeightDirty = true;
510+
491511 QList<ViewItem> allItems;
492512 Q_FOREACH(const auto &column, m_columnVisibleItems)
493513 allItems << column;
494514
495515 qSort(allItems);
496516
497− const int nColumns = qMax(1., floor((double)(width() - m_horizontalSpacing) / (m_columnWidth + m_horizontalSpacing)));
517+ const int nColumns = qMax(1., floor((double)(width() + m_columnSpacing) / (m_columnWidth + m_columnSpacing)));
498518 m_columnVisibleItems.resize(nColumns);
499519 m_indexColumnMap.clear();
500520 for (int i = 0; i < nColumns; ++i)
@@ -528,23 +548,7 @@ void VerticalJournal::updatePolish()
528548 }
529549
530550 if (m_implicitHeightDirty) {
531− m_implicitHeightDirty = false;
532−
533− int lastModelIndex = -1;
534− qreal bottomMostY = 0;
535− Q_FOREACH(const auto &column, m_columnVisibleItems) {
536− if (!column.isEmpty()) {
537− const ViewItem &item = column.last();
538− lastModelIndex = qMax(lastModelIndex, item.m_modelIndex);
539− bottomMostY = qMax(bottomMostY, item.y() + item.height() + m_verticalSpacing);
540− }
541− }
542− if (lastModelIndex >= 0) {
543− const double averageHeight = bottomMostY / (lastModelIndex + 1);
544− setImplicitHeight(bottomMostY + averageHeight * (model()->rowCount() - lastModelIndex - 1));
545− } else {
546− setImplicitHeight(0);
547− }
551+ calculateImplicitHeight();
548552 }
549553}
550554
@@ -555,8 +559,7 @@ void VerticalJournal::componentComplete()
555559
556560 QQuickItem::componentComplete();
557561
558− const int nColumns = ceil((double)(width() - m_horizontalSpacing) / (m_columnWidth + m_horizontalSpacing));
559− m_columnVisibleItems.resize(nColumns);
562+ m_needsRelayout = true;
560563
561564 polish();
562565}
plugins/DashViews/verticaljournal.h+38−17
@@ -33,7 +33,7 @@ class QQmlDelegateModel;
3333 *
3434 * The number of columns is calculated using the width of
3535 * the view itself, the columnWidth (i.e. the width of each individual delegate)
36− * and the horizontalSpacing between columns.
36+ * and the columnSpacing between columns.
3737 *
3838 * All delegates are forced to columnWidth if they don't have it.
3939 *
@@ -42,6 +42,21 @@ class QQmlDelegateModel;
4242 * is positioned in the column which provides the free topmost
4343 * position as possible. If more than one column tie in providing
4444 * the topmost free position the leftmost column will be used.
45+ *
46+ * Example:
47+ *
48+ * +-----+ +-----+ +-----+
49+ * | | | 2 | | |
50+ * | | | | | |
51+ * | 1 | +-----+ | 3 |
52+ * | | +-----+ | |
53+ * | | | | +-----+
54+ * +-----+ | 4 | +-----+
55+ * +-----+ | | | 5 |
56+ * | 6 | +-----+ | |
57+ * | | +-----+
58+ * +-----+
59+ *
4560 */
4661 class VerticalJournal : public QQuickItem
4762{
@@ -50,10 +65,16 @@ class QQmlDelegateModel;
5065 Q_PROPERTY(QAbstractItemModel *model READ model WRITE setModel NOTIFY modelChanged)
5166 Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged)
5267 Q_PROPERTY(qreal columnWidth READ columnWidth WRITE setColumnWidth NOTIFY columnWidthChanged)
53− Q_PROPERTY(qreal horizontalSpacing READ horizontalSpacing WRITE setHorizontalSpacing NOTIFY horizontalSpacingChanged)
54− Q_PROPERTY(qreal verticalSpacing READ verticalSpacing WRITE setVerticalSpacing NOTIFY verticalSpacingChanged)
55− Q_PROPERTY(qreal delegateCreationBegin READ delegateCreationBegin WRITE setDelegateCreationBegin NOTIFY delegateCreationBeginChanged RESET resetDelegateCreationBegin)
56− Q_PROPERTY(qreal delegateCreationEnd READ delegateCreationEnd WRITE setDelegateCreationEnd NOTIFY delegateCreationEndChanged RESET resetDelegateCreationEnd)
68+ Q_PROPERTY(qreal columnSpacing READ columnSpacing WRITE setColumnSpacing NOTIFY columnSpacingChanged)
69+ Q_PROPERTY(qreal rowSpacing READ rowSpacing WRITE setRowSpacing NOTIFY rowSpacingChanged)
70+ Q_PROPERTY(qreal delegateCreationBegin READ delegateCreationBegin
71+ WRITE setDelegateCreationBegin
72+ NOTIFY delegateCreationBeginChanged
73+ RESET resetDelegateCreationBegin)
74+ Q_PROPERTY(qreal delegateCreationEnd READ delegateCreationEnd
75+ WRITE setDelegateCreationEnd
76+ NOTIFY delegateCreationEndChanged
77+ RESET resetDelegateCreationEnd)
5778
5879friend class VerticalJournalTest;
5980
@@ -69,11 +90,11 @@ public:
6990 qreal columnWidth() const;
7091 void setColumnWidth(qreal columnWidth);
7192
72− qreal horizontalSpacing() const;
73− void setHorizontalSpacing(qreal horizontalSpacing);
93+ qreal columnSpacing() const;
94+ void setColumnSpacing(qreal columnSpacing);
7495
75− qreal verticalSpacing() const;
76− void setVerticalSpacing(qreal verticalSpacing);
96+ qreal rowSpacing() const;
97+ void setRowSpacing(qreal rowSpacing);
7798
7899 qreal delegateCreationBegin() const;
79100 void setDelegateCreationBegin(qreal);
@@ -87,8 +108,8 @@ Q_SIGNALS:
87108 void modelChanged();
88109 void delegateChanged();
89110 void columnWidthChanged();
90− void horizontalSpacingChanged();
91− void verticalSpacingChanged();
111+ void columnSpacingChanged();
112+ void rowSpacingChanged();
92113 void delegateCreationBeginChanged();
93114 void delegateCreationEndChanged();
94115
@@ -121,15 +142,15 @@ private:
121142
122143 void createDelegateModel();
123144 void refill();
124− void findBottomModelIndexToAdd(int *modelIndex, double *yPos);
125− void findTopModelIndexToAdd(int *modelIndex, double *yPos);
145+ void findBottomModelIndexToAdd(int *modelIndex, qreal *yPos);
146+ void findTopModelIndexToAdd(int *modelIndex, qreal *yPos);
126147 bool addVisibleItems(qreal fillFrom, qreal fillTo, bool asynchronous);
127148 bool removeNonVisibleItems(qreal bufferFrom, qreal bufferTo);
128149 QQuickItem *createItem(int modelIndex, bool asynchronous);
129150 void positionItem(int modelIndex, QQuickItem *item);
130− void doRelayout();
131−
151+ void cleanupExistingItems();
132152 void releaseItem(const ViewItem &item);
153+ void calculateImplicitHeight();
133154
134155#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
135156 QQuickVisualDataModel *m_delegateModel;
@@ -143,8 +164,8 @@ private:
143164 QVector<QList<ViewItem>> m_columnVisibleItems;
144165 QHash<int, int> m_indexColumnMap;
145166 int m_columnWidth;
146− int m_horizontalSpacing;
147− int m_verticalSpacing;
167+ int m_columnSpacing;
168+ int m_rowSpacing;
148169 qreal m_delegateCreationBegin;
149170 qreal m_delegateCreationEnd;
150171 bool m_delegateCreationBeginValid;
tests/plugins/DashViews/CMakeLists.txt+2−2
@@ -43,7 +43,7 @@ add_custom_target(testlistviewwithpageheadersectionexternalmodel ${CMAKE_CURRENT
4343add_executable(verticaljournaltestExec verticaljournaltest.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/DashViews/verticaljournal.cpp)
4444qt5_use_modules(verticaljournaltestExec Test Core Qml)
4545target_link_libraries(verticaljournaltestExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
46−add_custom_target(testverticaljournal ${CMAKE_CURRENT_BINARY_DIR}/verticaljournaltestExec -o ${CMAKE_BINARY_DIR}/testverticaljournal.xml,xunitxml -o -,txt)
46+add_custom_target(testVerticalJournal ${CMAKE_CURRENT_BINARY_DIR}/verticaljournaltestExec -o ${CMAKE_BINARY_DIR}/testVerticalJournal.xml,xunitxml -o -,txt)
4747
4848set(qmltest_DEFAULT_NO_ADD_TEST TRUE)
4949add_qml_test(. listviewwithpageheaderqml IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins)
@@ -52,4 +52,4 @@ add_dependencies(qmluitests testlistviewwithpageheader)
5252add_dependencies(qmluitests testlistviewwithpageheadersection)
5353add_dependencies(qmluitests testlistviewwithpageheadersectionexternalmodel)
5454add_dependencies(qmluitests testlistviewwithpageheaderqml)
55−add_dependencies(qmluitests testverticaljournal)
55+add_dependencies(qmluitests testVerticalJournal)
tests/plugins/DashViews/verticaljournaltest.cpp+125−121
@@ -22,7 +22,10 @@
2222#include <QtQml/qqml.h>
2323#include <QStringListModel>
2424#include <QQmlContext>
25+#pragma GCC diagnostic push
26+#pragma GCC diagnostic ignored "-pedantic"
2527#include <private/qquickitem_p.h>
28+#pragma GCC diagnostic pop
2629
2730#include "verticaljournal.h"
2831
@@ -56,25 +59,25 @@ private:
5659 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 5);
5760 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 7);
5861 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 6);
59− verifyItem(vj->m_columnVisibleItems[0][0], 0, 10, 10, true);
60− verifyItem(vj->m_columnVisibleItems[1][0], 1, 170, 10, true);
61− verifyItem(vj->m_columnVisibleItems[2][0], 2, 330, 10, true);
62− verifyItem(vj->m_columnVisibleItems[1][1], 3, 170, 70, true);
63− verifyItem(vj->m_columnVisibleItems[1][2], 4, 170, 90, true);
64− verifyItem(vj->m_columnVisibleItems[0][1], 5, 10, 120, true);
65− verifyItem(vj->m_columnVisibleItems[1][3], 6, 170, 140, true);
66− verifyItem(vj->m_columnVisibleItems[2][1], 7, 330, 145, true);
67− verifyItem(vj->m_columnVisibleItems[0][2], 8, 10, 200, true);
68− verifyItem(vj->m_columnVisibleItems[2][2], 9, 330, 265, true);
69− verifyItem(vj->m_columnVisibleItems[2][3], 10, 330, 295, true);
70− verifyItem(vj->m_columnVisibleItems[2][4], 11, 330, 325, true);
71− verifyItem(vj->m_columnVisibleItems[1][4], 12, 170, 350, true);
72− verifyItem(vj->m_columnVisibleItems[0][3], 13, 10, 370, true);
73− verifyItem(vj->m_columnVisibleItems[2][5], 14, 330, 400, false);
74− verifyItem(vj->m_columnVisibleItems[1][5], 15, 170, 440, false);
75− verifyItem(vj->m_columnVisibleItems[0][4], 16, 10, 580, false);
76− verifyItem(vj->m_columnVisibleItems[1][6], 17, 170, 580, false);
77− QCOMPARE(vj->implicitHeight(), 990. + 2. * 990. / 18.);
62+ verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
63+ verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
64+ verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
65+ verifyItem(vj->m_columnVisibleItems[1][1], 3, 160, 60, true);
66+ verifyItem(vj->m_columnVisibleItems[1][2], 4, 160, 80, true);
67+ verifyItem(vj->m_columnVisibleItems[0][1], 5, 0, 110, true);
68+ verifyItem(vj->m_columnVisibleItems[1][3], 6, 160, 130, true);
69+ verifyItem(vj->m_columnVisibleItems[2][1], 7, 320, 135, true);
70+ verifyItem(vj->m_columnVisibleItems[0][2], 8, 0, 190, true);
71+ verifyItem(vj->m_columnVisibleItems[2][2], 9, 320, 255, true);
72+ verifyItem(vj->m_columnVisibleItems[2][3], 10, 320, 285, true);
73+ verifyItem(vj->m_columnVisibleItems[2][4], 11, 320, 315, true);
74+ verifyItem(vj->m_columnVisibleItems[1][4], 12, 160, 340, true);
75+ verifyItem(vj->m_columnVisibleItems[0][3], 13, 0, 360, true);
76+ verifyItem(vj->m_columnVisibleItems[2][5], 14, 320, 390, true);
77+ verifyItem(vj->m_columnVisibleItems[1][5], 15, 160, 430, false);
78+ verifyItem(vj->m_columnVisibleItems[0][4], 16, 0, 570, false);
79+ verifyItem(vj->m_columnVisibleItems[1][6], 17, 160, 570, false);
80+ QCOMPARE(vj->implicitHeight(), 970. + 2. * 970. / 18.);
7881 }
7982
8083private Q_SLOTS:
@@ -99,7 +102,7 @@ private Q_SLOTS:
99102 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/verticaljournaltest.qml"));
100103
101104 view->show();
102− view->resize(490, 400);
105+ view->resize(470, 400);
103106 QTest::qWaitForWindowExposed(view);
104107
105108 vj = view->rootObject()->findChild<VerticalJournal*>();
@@ -116,41 +119,42 @@ private Q_SLOTS:
116119
117120 void testWidthResize()
118121 {
119− view->resize(649, 400);
122+ view->resize(629, 400);
123+ QTRY_COMPARE(vj->width(), 629.);
120124
121125 // This is exactly the same block as above as nothing changed, just white space on the right
122126 checkInitialPositions();
123127
124− view->resize(650, 400);
128+ view->resize(630, 400);
125129
126130 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 4);
127131 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 4);
128132 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 7);
129133 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 4);
130134 QTRY_COMPARE(vj->m_columnVisibleItems[3].count(), 5);
131− verifyItem(vj->m_columnVisibleItems[0][0], 0, 10, 10, true);
132− verifyItem(vj->m_columnVisibleItems[1][0], 1, 170, 10, true);
133− verifyItem(vj->m_columnVisibleItems[2][0], 2, 330, 10, true);
134− verifyItem(vj->m_columnVisibleItems[3][0], 3, 490, 10, true);
135− verifyItem(vj->m_columnVisibleItems[3][1], 4, 490, 30, true);
136− verifyItem(vj->m_columnVisibleItems[1][1], 5, 170, 70, true);
137− verifyItem(vj->m_columnVisibleItems[3][2], 6, 490, 80, true);
138− verifyItem(vj->m_columnVisibleItems[0][1], 7, 10, 120, true);
139− verifyItem(vj->m_columnVisibleItems[2][1], 8, 330, 145, true);
140− verifyItem(vj->m_columnVisibleItems[1][2], 9, 170, 150, true);
141− verifyItem(vj->m_columnVisibleItems[1][3], 10, 170, 180, true);
142− verifyItem(vj->m_columnVisibleItems[1][4], 11, 170, 210, true);
143− verifyItem(vj->m_columnVisibleItems[0][2], 12, 10, 240, true);
144− verifyItem(vj->m_columnVisibleItems[1][5], 13, 170, 285, true);
145− verifyItem(vj->m_columnVisibleItems[3][3], 14, 490, 290, true);
146− verifyItem(vj->m_columnVisibleItems[2][2], 15, 330, 315, true);
147− verifyItem(vj->m_columnVisibleItems[0][3], 16, 10, 330, true);
148− verifyItem(vj->m_columnVisibleItems[2][3], 17, 330, 455, false);
149− verifyItem(vj->m_columnVisibleItems[1][6], 18, 170, 495, false);
150− verifyItem(vj->m_columnVisibleItems[3][4], 19, 490, 600, false);
151− QTRY_COMPARE(vj->implicitHeight(), 1005.);
152−
153− view->resize(490, 400);
135+ verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
136+ verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
137+ verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
138+ verifyItem(vj->m_columnVisibleItems[3][0], 3, 480, 0, true);
139+ verifyItem(vj->m_columnVisibleItems[3][1], 4, 480, 20, true);
140+ verifyItem(vj->m_columnVisibleItems[1][1], 5, 160, 60, true);
141+ verifyItem(vj->m_columnVisibleItems[3][2], 6, 480, 70, true);
142+ verifyItem(vj->m_columnVisibleItems[0][1], 7, 0, 110, true);
143+ verifyItem(vj->m_columnVisibleItems[2][1], 8, 320, 135, true);
144+ verifyItem(vj->m_columnVisibleItems[1][2], 9, 160, 140, true);
145+ verifyItem(vj->m_columnVisibleItems[1][3], 10, 160, 170, true);
146+ verifyItem(vj->m_columnVisibleItems[1][4], 11, 160, 200, true);
147+ verifyItem(vj->m_columnVisibleItems[0][2], 12, 0, 230, true);
148+ verifyItem(vj->m_columnVisibleItems[1][5], 13, 160, 275, true);
149+ verifyItem(vj->m_columnVisibleItems[3][3], 14, 480, 280, true);
150+ verifyItem(vj->m_columnVisibleItems[2][2], 15, 320, 305, true);
151+ verifyItem(vj->m_columnVisibleItems[0][3], 16, 0, 320, true);
152+ verifyItem(vj->m_columnVisibleItems[2][3], 17, 320, 445, false);
153+ verifyItem(vj->m_columnVisibleItems[1][6], 18, 160, 485, false);
154+ verifyItem(vj->m_columnVisibleItems[3][4], 19, 480, 590, false);
155+ QTRY_COMPARE(vj->implicitHeight(), 985.);
156+
157+ view->resize(470, 400);
154158
155159 // This is exactly the same block as the first again
156160 checkInitialPositions();
@@ -158,29 +162,29 @@ private Q_SLOTS:
158162
159163 void testHorizontalSpacing()
160164 {
161− vj->setHorizontalSpacing(11);
165+ vj->setColumnSpacing(11);
162166
163167 QTRY_COMPARE(vj->m_needsRelayout, false);
164168 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 2);
165169 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 7);
166170 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 7);
167− verifyItem(vj->m_columnVisibleItems[0][0], 0, 11, 10, true);
168− verifyItem(vj->m_columnVisibleItems[1][0], 1, 172, 10, true);
169− verifyItem(vj->m_columnVisibleItems[1][1], 2, 172, 70, true);
170− verifyItem(vj->m_columnVisibleItems[0][1], 3, 11, 120, true);
171− verifyItem(vj->m_columnVisibleItems[0][2], 4, 11, 140, true);
172− verifyItem(vj->m_columnVisibleItems[0][3], 5, 11, 190, true);
173− verifyItem(vj->m_columnVisibleItems[1][2], 6, 172, 205, true);
174− verifyItem(vj->m_columnVisibleItems[0][4], 7, 11, 270, true);
175− verifyItem(vj->m_columnVisibleItems[0][5], 8, 11, 390, true);
176− verifyItem(vj->m_columnVisibleItems[1][3], 9, 172, 415, false);
177− verifyItem(vj->m_columnVisibleItems[1][4], 10, 172, 445, false);
178− verifyItem(vj->m_columnVisibleItems[1][5], 11, 172, 475, false);
179− verifyItem(vj->m_columnVisibleItems[1][6], 12, 172, 550, false);
180− verifyItem(vj->m_columnVisibleItems[0][6], 13, 11, 560, false);
181− QCOMPARE(vj->implicitHeight(), 770. + 6. * 770. / 14.);
182−
183− vj->setHorizontalSpacing(10);
171+ verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
172+ verifyItem(vj->m_columnVisibleItems[1][0], 1, 161, 0, true);
173+ verifyItem(vj->m_columnVisibleItems[1][1], 2, 161, 60, true);
174+ verifyItem(vj->m_columnVisibleItems[0][1], 3, 0, 110, true);
175+ verifyItem(vj->m_columnVisibleItems[0][2], 4, 0, 130, true);
176+ verifyItem(vj->m_columnVisibleItems[0][3], 5, 0, 180, true);
177+ verifyItem(vj->m_columnVisibleItems[1][2], 6, 161, 195, true);
178+ verifyItem(vj->m_columnVisibleItems[0][4], 7, 0, 260, true);
179+ verifyItem(vj->m_columnVisibleItems[0][5], 8, 0, 380, true);
180+ verifyItem(vj->m_columnVisibleItems[1][3], 9, 161, 405, false);
181+ verifyItem(vj->m_columnVisibleItems[1][4], 10, 161, 435, false);
182+ verifyItem(vj->m_columnVisibleItems[1][5], 11, 161, 465, false);
183+ verifyItem(vj->m_columnVisibleItems[1][6], 12, 161, 540, false);
184+ verifyItem(vj->m_columnVisibleItems[0][6], 13, 0, 550, false);
185+ QCOMPARE(vj->implicitHeight(), 750. + 6. * 750. / 14.);
186+
187+ vj->setColumnSpacing(10);
184188 QTRY_COMPARE(vj->m_needsRelayout, false);
185189
186190 // This is exactly the same block as the first again
@@ -189,34 +193,34 @@ private Q_SLOTS:
189193
190194 void testVerticalSpacing()
191195 {
192− vj->setVerticalSpacing(11);
196+ vj->setRowSpacing(11);
193197
194198 QTRY_COMPARE(vj->m_needsRelayout, false);
195199 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
196200 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 5);
197201 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 7);
198202 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 6);
199− verifyItem(vj->m_columnVisibleItems[0][0], 0, 10, 11, true);
200− verifyItem(vj->m_columnVisibleItems[1][0], 1, 170, 11, true);
201− verifyItem(vj->m_columnVisibleItems[2][0], 2, 330, 11, true);
202− verifyItem(vj->m_columnVisibleItems[1][1], 3, 170, 72, true);
203− verifyItem(vj->m_columnVisibleItems[1][2], 4, 170, 93, true);
204− verifyItem(vj->m_columnVisibleItems[0][1], 5, 10, 122, true);
205− verifyItem(vj->m_columnVisibleItems[1][3], 6, 170, 144, true);
206− verifyItem(vj->m_columnVisibleItems[2][1], 7, 330, 147, true);
207− verifyItem(vj->m_columnVisibleItems[0][2], 8, 10, 203, true);
208− verifyItem(vj->m_columnVisibleItems[2][2], 9, 330, 268, true);
209− verifyItem(vj->m_columnVisibleItems[2][3], 10, 330, 299, true);
210− verifyItem(vj->m_columnVisibleItems[2][4], 11, 330, 330, true);
211− verifyItem(vj->m_columnVisibleItems[1][4], 12, 170, 355, true);
212− verifyItem(vj->m_columnVisibleItems[0][3], 13, 10, 374, true);
213− verifyItem(vj->m_columnVisibleItems[2][5], 14, 330, 406, false);
214− verifyItem(vj->m_columnVisibleItems[1][5], 15, 170, 446, false);
215− verifyItem(vj->m_columnVisibleItems[0][4], 16, 10, 585, false);
216− verifyItem(vj->m_columnVisibleItems[1][6], 17, 170, 587, false);
217− QCOMPARE(vj->implicitHeight(), 990. + 2. * 990. / 18.);
218−
219− vj->setVerticalSpacing(10);
203+ verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
204+ verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
205+ verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
206+ verifyItem(vj->m_columnVisibleItems[1][1], 3, 160, 61, true);
207+ verifyItem(vj->m_columnVisibleItems[1][2], 4, 160, 82, true);
208+ verifyItem(vj->m_columnVisibleItems[0][1], 5, 0, 111, true);
209+ verifyItem(vj->m_columnVisibleItems[1][3], 6, 160, 133, true);
210+ verifyItem(vj->m_columnVisibleItems[2][1], 7, 320, 136, true);
211+ verifyItem(vj->m_columnVisibleItems[0][2], 8, 0, 192, true);
212+ verifyItem(vj->m_columnVisibleItems[2][2], 9, 320, 257, true);
213+ verifyItem(vj->m_columnVisibleItems[2][3], 10, 320, 288, true);
214+ verifyItem(vj->m_columnVisibleItems[2][4], 11, 320, 319, true);
215+ verifyItem(vj->m_columnVisibleItems[1][4], 12, 160, 344, true);
216+ verifyItem(vj->m_columnVisibleItems[0][3], 13, 0, 363, true);
217+ verifyItem(vj->m_columnVisibleItems[2][5], 14, 320, 395, true);
218+ verifyItem(vj->m_columnVisibleItems[1][5], 15, 160, 435, false);
219+ verifyItem(vj->m_columnVisibleItems[0][4], 16, 0, 574, false);
220+ verifyItem(vj->m_columnVisibleItems[1][6], 17, 160, 576, false);
221+ QCOMPARE(vj->implicitHeight(), 974. + 2. * 974. / 18.);
222+
223+ vj->setRowSpacing(10);
220224 QTRY_COMPARE(vj->m_needsRelayout, false);
221225
222226 // This is exactly the same block as the first again
@@ -232,21 +236,21 @@ private Q_SLOTS:
232236 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 4);
233237 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 4);
234238 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 6);
235− verifyItem(vj->m_columnVisibleItems[0][0], 0, 10, 10, false);
236− verifyItem(vj->m_columnVisibleItems[2][0], 2, 330, 10, false);
237− verifyItem(vj->m_columnVisibleItems[1][0], 4, 170, 90, false);
238− verifyItem(vj->m_columnVisibleItems[0][1], 5, 10, 120, false);
239− verifyItem(vj->m_columnVisibleItems[1][1], 6, 170, 140, true);
240− verifyItem(vj->m_columnVisibleItems[2][1], 7, 330, 145, true);
241− verifyItem(vj->m_columnVisibleItems[0][2], 8, 10, 200, true);
242− verifyItem(vj->m_columnVisibleItems[2][2], 9, 330, 265, true);
243− verifyItem(vj->m_columnVisibleItems[2][3], 10, 330, 295, true);
244− verifyItem(vj->m_columnVisibleItems[2][4], 11, 330, 325, true);
245− verifyItem(vj->m_columnVisibleItems[1][2], 12, 170, 350, true);
246− verifyItem(vj->m_columnVisibleItems[0][3], 13, 10, 370, true);
247− verifyItem(vj->m_columnVisibleItems[2][5], 14, 330, 400, false);
248− verifyItem(vj->m_columnVisibleItems[1][3], 15, 170, 440, false);
249− QCOMPARE(vj->implicitHeight(), 710. + 4. * 710. / 16.);
239+ verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, false);
240+ verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, false);
241+ verifyItem(vj->m_columnVisibleItems[1][0], 4, 160, 80, false);
242+ verifyItem(vj->m_columnVisibleItems[0][1], 5, 0, 110, false);
243+ verifyItem(vj->m_columnVisibleItems[1][1], 6, 160, 130, true);
244+ verifyItem(vj->m_columnVisibleItems[2][1], 7, 320, 135, true);
245+ verifyItem(vj->m_columnVisibleItems[0][2], 8, 0, 190, true);
246+ verifyItem(vj->m_columnVisibleItems[2][2], 9, 320, 255, true);
247+ verifyItem(vj->m_columnVisibleItems[2][3], 10, 320, 285, true);
248+ verifyItem(vj->m_columnVisibleItems[2][4], 11, 320, 315, true);
249+ verifyItem(vj->m_columnVisibleItems[1][2], 12, 160, 340, true);
250+ verifyItem(vj->m_columnVisibleItems[0][3], 13, 0, 360, true);
251+ verifyItem(vj->m_columnVisibleItems[2][5], 14, 320, 390, true);
252+ verifyItem(vj->m_columnVisibleItems[1][3], 15, 160, 430, false);
253+ QCOMPARE(vj->implicitHeight(), 690. + 4. * 690. / 16.);
250254
251255 vj->resetDelegateCreationBegin();
252256 vj->resetDelegateCreationEnd();
@@ -262,21 +266,21 @@ private Q_SLOTS:
262266 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 2);
263267 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 7);
264268 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 7);
265− verifyItem(vj->m_columnVisibleItems[0][0], 0, 10, 10, true);
266− verifyItem(vj->m_columnVisibleItems[1][0], 1, 220, 10, true);
267− verifyItem(vj->m_columnVisibleItems[1][1], 2, 220, 70, true);
268− verifyItem(vj->m_columnVisibleItems[0][1], 3, 10, 120, true);
269− verifyItem(vj->m_columnVisibleItems[0][2], 4, 10, 140, true);
270− verifyItem(vj->m_columnVisibleItems[0][3], 5, 10, 190, true);
271− verifyItem(vj->m_columnVisibleItems[1][2], 6, 220, 205, true);
272− verifyItem(vj->m_columnVisibleItems[0][4], 7, 10, 270, true);
273− verifyItem(vj->m_columnVisibleItems[0][5], 8, 10, 390, true);
274− verifyItem(vj->m_columnVisibleItems[1][3], 9, 220, 415, false);
275− verifyItem(vj->m_columnVisibleItems[1][4], 10, 220, 445, false);
276− verifyItem(vj->m_columnVisibleItems[1][5], 11, 220, 475, false);
277− verifyItem(vj->m_columnVisibleItems[1][6], 12, 220, 550, false);
278− verifyItem(vj->m_columnVisibleItems[0][6], 13, 10, 560, false);
279− QCOMPARE(vj->implicitHeight(), 770. + 6. * 770. / 14.);
269+ verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
270+ verifyItem(vj->m_columnVisibleItems[1][0], 1, 210, 0, true);
271+ verifyItem(vj->m_columnVisibleItems[1][1], 2, 210, 60, true);
272+ verifyItem(vj->m_columnVisibleItems[0][1], 3, 0, 110, true);
273+ verifyItem(vj->m_columnVisibleItems[0][2], 4, 0, 130, true);
274+ verifyItem(vj->m_columnVisibleItems[0][3], 5, 0, 180, true);
275+ verifyItem(vj->m_columnVisibleItems[1][2], 6, 210, 195, true);
276+ verifyItem(vj->m_columnVisibleItems[0][4], 7, 0, 260, true);
277+ verifyItem(vj->m_columnVisibleItems[0][5], 8, 0, 380, true);
278+ verifyItem(vj->m_columnVisibleItems[1][3], 9, 210, 405, false);
279+ verifyItem(vj->m_columnVisibleItems[1][4], 10, 210, 435, false);
280+ verifyItem(vj->m_columnVisibleItems[1][5], 11, 210, 465, false);
281+ verifyItem(vj->m_columnVisibleItems[1][6], 12, 210, 540, false);
282+ verifyItem(vj->m_columnVisibleItems[0][6], 13, 0, 550, false);
283+ QCOMPARE(vj->implicitHeight(), 750. + 6. * 750. / 14.);
280284
281285 vj->setColumnWidth(150);
282286
@@ -297,12 +301,12 @@ private Q_SLOTS:
297301 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 1);
298302 QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 2);
299303 QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 3);
300− verifyItem(vj->m_columnVisibleItems[0][0], 0, 10, 10, true);
301− verifyItem(vj->m_columnVisibleItems[1][0], 1, 170, 10, true);
302− verifyItem(vj->m_columnVisibleItems[2][0], 2, 330, 10, true);
303− verifyItem(vj->m_columnVisibleItems[2][1], 3, 330, 45, true);
304− verifyItem(vj->m_columnVisibleItems[1][1], 4, 170, 70, true);
305− verifyItem(vj->m_columnVisibleItems[2][2], 5, 330, 80, true);
304+ verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
305+ verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
306+ verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
307+ verifyItem(vj->m_columnVisibleItems[2][1], 3, 320, 35, true);
308+ verifyItem(vj->m_columnVisibleItems[1][1], 4, 160, 60, true);
309+ verifyItem(vj->m_columnVisibleItems[2][2], 5, 320, 70, true);
306310 }
307311
308312private:
tests/plugins/DashViews/verticaljournaltest.qml+2−2
@@ -23,8 +23,8 @@ Item {
2323 id: vj
2424 anchors.fill: parent
2525 columnWidth: 150
26− horizontalSpacing: 10
27− verticalSpacing: 10
26+ columnSpacing: 10
27+ rowSpacing: 10
2828
2929 delegate: Rectangle {
3030 property real randomValue: Math.random()