@@ -22,6 +22,7 @@
22#include <QtQml/qqml.h>
22#include <QtQml/qqml.h>
23#include <QStringListModel>
23#include <QStringListModel>
24#include <QQmlContext>
24#include <QQmlContext>
25#pragma GCC diagnostic push
26#pragma GCC diagnostic push
26#pragma GCC diagnostic ignored "-pedantic"
27#pragma GCC diagnostic ignored "-pedantic"
27#include <private/qquickitem_p.h>
28#include <private/qquickitem_p.h>
@@ -29,7 +30,7 @@
30#include "verticaljournal.h"
31#include "verticaljournal.h"
32−class QHeightModel : public QStringListModel {
33+class QHeightModel : public QAbstractListModel {
34 QHash<int, QByteArray> roleNames() const
35 QHash<int, QByteArray> roleNames() const
@@ -37,6 +38,45 @@ public:
37 roles.insert(Qt::DisplayRole, "modelHeight");
38 roles.insert(Qt::DisplayRole, "modelHeight");
38 return roles;
39 return roles;
42+ int rowCount(const QModelIndex & /*parent*/) const
44+ return m_list.count();
47+ QVariant data(const QModelIndex &index, int /*role*/) const
49+ return m_list[index.row()];
52+ QStringList stringList() const
57+ void setStringList(const QStringList &list)
64+ void addString(const QString& string)
66+ beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
73+ beginRemoveRows(QModelIndex(), m_list.count() - 1, m_list.count() - 1);
42class VerticalJournalTest : public QObject
82class VerticalJournalTest : public QObject
@@ -49,7 +89,7 @@ private:
49 QTRY_COMPARE(item.m_modelIndex, modelIndex);
89 QTRY_COMPARE(item.m_modelIndex, modelIndex);
50 QTRY_COMPARE(item.x(), x);
90 QTRY_COMPARE(item.x(), x);
51 QTRY_COMPARE(item.y(), y);
91 QTRY_COMPARE(item.y(), y);
52− QTRY_COMPARE(item.height(), heightList[modelIndex].toDouble());
92+ QTRY_COMPARE(item.height(), model->stringList()[modelIndex].toDouble());
53 QTRY_COMPARE(QQuickItemPrivate::get(item.m_item)->culled, !visible);
93 QTRY_COMPARE(QQuickItemPrivate::get(item.m_item)->culled, !visible);
@@ -81,31 +121,24 @@ private:
83private Q_SLOTS:
123private Q_SLOTS:
86− qmlRegisterType<QAbstractItemModel>();
87− qmlRegisterType<VerticalJournal>("Journals", 0, 1, "VerticalJournal");
90 void init()
124 void init()
92 view = new QQuickView();
126 view = new QQuickView();
93 view->setResizeMode(QQuickView::SizeRootObjectToView);
127 view->setResizeMode(QQuickView::SizeRootObjectToView);
128+ view->engine()->addImportPath(BUILT_PLUGINS_DIR);
95 model = new QHeightModel();
130 model = new QHeightModel();
96− heightList.clear();
131+ QStringList heightList;
97 heightList << "100" << "50" << "125" << "10" << "40" << "70" << "200" << "110" << "160" << "20" << "20" << "65" << "80" << "200" << "300" << "130" << "400" << "300" << "500" << "10";
132 heightList << "100" << "50" << "125" << "10" << "40" << "70" << "200" << "110" << "160" << "20" << "20" << "65" << "80" << "200" << "300" << "130" << "400" << "300" << "500" << "10";
98 model->setStringList(heightList);
133 model->setStringList(heightList);
100− view->rootContext()->setContextProperty("theModel", model);
102 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/verticaljournaltest.qml"));
135 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/verticaljournaltest.qml"));
104 view->show();
137 view->show();
105 view->resize(470, 400);
138 view->resize(470, 400);
106 QTest::qWaitForWindowExposed(view);
139 QTest::qWaitForWindowExposed(view);
108− vj = view->rootObject()->findChild<VerticalJournal*>();
141+ vj = dynamic_cast<VerticalJournal*>(view->rootObject()->findChild<QObject*>("vj"));
109 vj->setModel(model);
142 vj->setModel(model);
111 checkInitialPositions();
144 checkInitialPositions();
@@ -160,7 +193,7 @@ private Q_SLOTS:
160 checkInitialPositions();
193 checkInitialPositions();
163− void testHorizontalSpacing()
196+ void testColumnSpacing()
165 vj->setColumnSpacing(11);
198 vj->setColumnSpacing(11);
@@ -191,7 +224,7 @@ private Q_SLOTS:
191 checkInitialPositions();
224 checkInitialPositions();
194− void testVerticalSpacing()
227+ void testRowSpacing()
196 vj->setRowSpacing(11);
229 vj->setRowSpacing(11);
@@ -290,12 +323,51 @@ private Q_SLOTS:
291 void testChangeModel()
324 void testChangeModel()
293− QHeightModel model2;
326+ QHeightModel *model2 = new QHeightModel();
328+ list2 << "100" << "50" << "25" << "25" << "50" << "50";
329+ model2->setStringList(list2);
330+ vj->setModel(model2);
334+ QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
335+ QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 1);
336+ QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 2);
337+ QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 3);
338+ verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
339+ verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
340+ verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
341+ verifyItem(vj->m_columnVisibleItems[2][1], 3, 320, 35, true);
342+ verifyItem(vj->m_columnVisibleItems[1][1], 4, 160, 60, true);
343+ verifyItem(vj->m_columnVisibleItems[2][2], 5, 320, 70, true);
346+ void testModelReset()
348+ QStringList heightList;
349+ heightList << "100" << "50" << "50" << "30";
350+ model->setStringList(heightList);
352+ QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
353+ QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 1);
354+ QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 2);
355+ QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 1);
356+ verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
357+ verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
358+ verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
359+ verifyItem(vj->m_columnVisibleItems[1][1], 3, 160, 60, true);
362+ void testModelAppendRemoveLast()
364+ QHeightModel *model2 = new QHeightModel();
294 QStringList list2;
365 QStringList list2;
295 list2 << "100" << "50" << "25" << "25" << "50" << "50";
366 list2 << "100" << "50" << "25" << "25" << "50" << "50";
296− model2.setStringList(list2);
367+ model2->setStringList(list2);
297− vj->setModel(&model2);
368+ vj->setModel(model2);
298− heightList = list2;
369+ delete model;
300 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
372 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
301 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 1);
373 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 1);
@@ -307,12 +379,57 @@ private Q_SLOTS:
307 verifyItem(vj->m_columnVisibleItems[2][1], 3, 320, 35, true);
379 verifyItem(vj->m_columnVisibleItems[2][1], 3, 320, 35, true);
308 verifyItem(vj->m_columnVisibleItems[1][1], 4, 160, 60, true);
380 verifyItem(vj->m_columnVisibleItems[1][1], 4, 160, 60, true);
309 verifyItem(vj->m_columnVisibleItems[2][2], 5, 320, 70, true);
381 verifyItem(vj->m_columnVisibleItems[2][2], 5, 320, 70, true);
383+ model2->addString("75");
385+ QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
386+ QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 2);
387+ QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 2);
388+ QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 3);
389+ verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
390+ verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
391+ verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
392+ verifyItem(vj->m_columnVisibleItems[2][1], 3, 320, 35, true);
393+ verifyItem(vj->m_columnVisibleItems[1][1], 4, 160, 60, true);
394+ verifyItem(vj->m_columnVisibleItems[2][2], 5, 320, 70, true);
395+ verifyItem(vj->m_columnVisibleItems[0][1], 6, 0, 110, true);
397+ model2->addString("50");
398+ model2->addString("50");
400+ QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
401+ QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 2);
402+ QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 3);
403+ QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 4);
404+ verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
405+ verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
406+ verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
407+ verifyItem(vj->m_columnVisibleItems[2][1], 3, 320, 35, true);
408+ verifyItem(vj->m_columnVisibleItems[1][1], 4, 160, 60, true);
409+ verifyItem(vj->m_columnVisibleItems[2][2], 5, 320, 70, true);
410+ verifyItem(vj->m_columnVisibleItems[0][1], 6, 0, 110, true);
411+ verifyItem(vj->m_columnVisibleItems[1][2], 7, 160, 120, true);
412+ verifyItem(vj->m_columnVisibleItems[2][3], 8, 320, 130, true);
414+ model2->removeLast();
416+ QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
417+ QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 2);
418+ QTRY_COMPARE(vj->m_columnVisibleItems[1].count(), 3);
419+ QTRY_COMPARE(vj->m_columnVisibleItems[2].count(), 3);
420+ verifyItem(vj->m_columnVisibleItems[0][0], 0, 0, 0, true);
421+ verifyItem(vj->m_columnVisibleItems[1][0], 1, 160, 0, true);
422+ verifyItem(vj->m_columnVisibleItems[2][0], 2, 320, 0, true);
423+ verifyItem(vj->m_columnVisibleItems[2][1], 3, 320, 35, true);
424+ verifyItem(vj->m_columnVisibleItems[1][1], 4, 160, 60, true);
425+ verifyItem(vj->m_columnVisibleItems[2][2], 5, 320, 70, true);
426+ verifyItem(vj->m_columnVisibleItems[0][1], 6, 0, 110, true);
427+ verifyItem(vj->m_columnVisibleItems[1][2], 7, 160, 120, true);
313 QQuickView *view;
431 QQuickView *view;
314 VerticalJournal *vj;
432 VerticalJournal *vj;
315− QStringList heightList;
316 QHeightModel *model;
433 QHeightModel *model;