diff options
author | Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com> | 2015-03-03 18:36:51 +0100 |
---|---|---|
committer | Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com> | 2015-03-22 16:20:10 +0000 |
commit | ae1c3eba3e7e11a9b1ab4d18792c82c9bb6e62de (patch) | |
tree | 0afbf5ed19f00a91ff8873ef52c190f50acc1436 /tests/auto/qml/qqmlitemmodels | |
parent | 226419514e9a05040e691ac84bae5e1fb5e5191a (diff) |
Remove QModelIndexList value type, use Array instead
We implement this by adding QModelIndexList to the
set of sequence types.
Change-Id: If7e0e88ab0c2916c2b65a926f8241549520d7391
Reviewed-by: Stephen Kelly <steveire@gmail.com>
Diffstat (limited to 'tests/auto/qml/qqmlitemmodels')
-rw-r--r-- | tests/auto/qml/qqmlitemmodels/data/modelindexlist.qml | 27 | ||||
-rw-r--r-- | tests/auto/qml/qqmlitemmodels/testtypes.h | 42 | ||||
-rw-r--r-- | tests/auto/qml/qqmlitemmodels/tst_qqmlitemmodels.cpp | 36 |
3 files changed, 82 insertions, 23 deletions
diff --git a/tests/auto/qml/qqmlitemmodels/data/modelindexlist.qml b/tests/auto/qml/qqmlitemmodels/data/modelindexlist.qml index 44393392d3..389c5daaf5 100644 --- a/tests/auto/qml/qqmlitemmodels/data/modelindexlist.qml +++ b/tests/auto/qml/qqmlitemmodels/data/modelindexlist.qml @@ -1,21 +1,30 @@ import Test 1.0 ItemModelsTest { - property var modelIndexList property int count + property var modelIndexListCopy + property var modelIndexListRead + property var modelIndexListBinding: modelIndexList + property bool varPropIsArray + property bool varIsArray + property bool propIsArray onModelChanged: { - modelIndexList = createModelIndexList() - modelIndexList.prepend(model.index(0, 0)) - modelIndexList.append(model.index(1, 1)) + var jsModelIndexList = [] for (var i = 0; i < 3; i++) - modelIndexList.insert(i, model.index(2 + i, 2 + i)) + jsModelIndexList.push(model.index(2 + i, 2 + i)) + jsModelIndexList.push("Hi Bronsky!") + modelIndex = jsModelIndexList[0] count = modelIndexList.length - modelIndex = modelIndexList.at(0) + propIsArray = modelIndexList instanceof Array + modelIndexList = jsModelIndexList + modelIndexListRead = modelIndexList - modelIndexList.removeAt(3) - modelIndexList.removeFirst() - modelIndexList.removeLast() + modelIndexListCopy = someModelIndexList() + varPropIsArray = modelIndexListCopy instanceof Array + + jsModelIndexList = someModelIndexList() + varIsArray = jsModelIndexList instanceof Array } } diff --git a/tests/auto/qml/qqmlitemmodels/testtypes.h b/tests/auto/qml/qqmlitemmodels/testtypes.h index 5345609cd3..d61064fcad 100644 --- a/tests/auto/qml/qqmlitemmodels/testtypes.h +++ b/tests/auto/qml/qqmlitemmodels/testtypes.h @@ -45,8 +45,15 @@ class ItemModelsTest : public QObject Q_PROPERTY(QAbstractItemModel *model READ model WRITE setModel NOTIFY modelChanged) Q_PROPERTY(QModelIndex modelIndex READ modelIndex WRITE setModelIndex NOTIFY changed) Q_PROPERTY(QPersistentModelIndex persistentModelIndex READ persistentModelIndex WRITE setPersistentModelIndex NOTIFY changed) + Q_PROPERTY(QModelIndexList modelIndexList READ modelIndexList WRITE setModelIndexList NOTIFY changed) public: + ItemModelsTest(QObject *parent = 0) + : QObject(parent) + , m_model(0) + { + } + QModelIndex modelIndex() const { return m_modelIndex; @@ -57,6 +64,26 @@ public: return m_persistentModelIndex; } + QModelIndexList modelIndexList() + { + static bool firstTime = true; + if (firstTime && m_model && m_modelIndexList.isEmpty()) { + firstTime = false; + for (int i = 0; i < m_model->rowCount(); i++) + m_modelIndexList << m_model->index(i, 0); + } + return m_modelIndexList; + } + + Q_INVOKABLE QModelIndexList someModelIndexList() const + { + QModelIndexList list; + if (m_model) + for (int i = 0; i < m_model->rowCount(); i++) + list << m_model->index(i, 0); + return list; + } + void emitChanged() { emit changed(); @@ -82,11 +109,6 @@ public: return QModelIndex(); } - Q_INVOKABLE QModelIndexList createModelIndexList() const - { - return QModelIndexList(); - } - Q_INVOKABLE QItemSelectionRange createItemSelectionRange(const QModelIndex &tl, const QModelIndex &br) const { return QItemSelectionRange(tl, br); @@ -130,6 +152,15 @@ public slots: emit modelChanged(arg); } + void setModelIndexList(QModelIndexList arg) + { + if (m_modelIndexList == arg) + return; + + m_modelIndexList = arg; + emit changed(); + } + signals: void changed(); @@ -142,6 +173,7 @@ private: QModelIndex m_modelIndex; QPersistentModelIndex m_persistentModelIndex; QAbstractItemModel *m_model; + QModelIndexList m_modelIndexList; }; #endif // TESTTYPES_H diff --git a/tests/auto/qml/qqmlitemmodels/tst_qqmlitemmodels.cpp b/tests/auto/qml/qqmlitemmodels/tst_qqmlitemmodels.cpp index 84e8011685..cd00593ee6 100644 --- a/tests/auto/qml/qqmlitemmodels/tst_qqmlitemmodels.cpp +++ b/tests/auto/qml/qqmlitemmodels/tst_qqmlitemmodels.cpp @@ -198,17 +198,35 @@ void tst_qqmlitemmodels::modelIndexList() { INIT_TEST_OBJECT("modelindexlist.qml", object); TestModel model(10, 10); + model.fetchMore(QModelIndex()); object->setModel(&model); - QCOMPARE(object->property("count").toInt(), 5); - - QVariant milVariant = object->property("modelIndexList"); - QCOMPARE(milVariant.userType(), qMetaTypeId<QModelIndexList>()); - - const QModelIndexList &mil = milVariant.value<QModelIndexList>(); - QCOMPARE(mil.count(), 2); - QCOMPARE(mil.at(0), model.index(3, 3)); - QCOMPARE(mil.at(1), model.index(4, 4)); + QVERIFY(object->property("propIsArray").toBool()); + QVERIFY(object->property("varPropIsArray").toBool()); + QVERIFY(object->property("varIsArray").toBool()); + + QCOMPARE(object->property("count").toInt(), 10); + const QModelIndexList &mil = object->modelIndexList(); + QCOMPARE(mil.count(), 4); + for (int i = 0; i < 3; i++) + QCOMPARE(mil.at(i), model.index(2 + i, 2 + i)); + QCOMPARE(mil.at(3), QModelIndex()); // The string inserted at the end should result in an invalid index + QCOMPARE(mil.at(0), object->modelIndex()); + + QVariant cppMILVariant = object->property("modelIndexListCopy"); + QCOMPARE(cppMILVariant.userType(), qMetaTypeId<QModelIndexList>()); + QModelIndexList someMIL = object->someModelIndexList(); + QCOMPARE(cppMILVariant.value<QModelIndexList>(), someMIL); + + const char *propNames[] = { "modelIndexListRead", "modelIndexListBinding", 0 }; + for (const char **name = propNames; *name; name++) { + QVariant milVariant = object->property(*name); + QCOMPARE(milVariant.userType(), qMetaTypeId<QModelIndexList>()); + + const QModelIndexList &milProp = milVariant.value<QModelIndexList>(); + QCOMPARE(milProp.count(), mil.count()); + QCOMPARE(milProp, mil); + } } #undef INIT_TEST_OBJECT |