tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp
changeset 37 758a864f9613
parent 33 3e2da88830cd
equal deleted inserted replaced
36:ef0373b55136 37:758a864f9613
    81 public:
    81 public:
    82     tst_qdeclarativevisualdatamodel();
    82     tst_qdeclarativevisualdatamodel();
    83 
    83 
    84 private slots:
    84 private slots:
    85     void rootIndex();
    85     void rootIndex();
       
    86     void updateLayout();
       
    87     void childChanged();
    86     void objectListModel();
    88     void objectListModel();
    87 
    89 
    88 private:
    90 private:
    89     QDeclarativeEngine engine;
    91     QDeclarativeEngine engine;
    90     template<typename T>
    92     template<typename T>
   151 
   153 
   152     QMetaObject::invokeMethod(obj, "setRootToParent");
   154     QMetaObject::invokeMethod(obj, "setRootToParent");
   153     QVERIFY(qvariant_cast<QModelIndex>(obj->rootIndex()) == QModelIndex());
   155     QVERIFY(qvariant_cast<QModelIndex>(obj->rootIndex()) == QModelIndex());
   154 
   156 
   155     delete obj;
   157     delete obj;
       
   158 }
       
   159 
       
   160 void tst_qdeclarativevisualdatamodel::updateLayout()
       
   161 {
       
   162     QDeclarativeView view;
       
   163 
       
   164     QStandardItemModel model;
       
   165     initStandardTreeModel(&model);
       
   166 
       
   167     view.rootContext()->setContextProperty("myModel", &model);
       
   168 
       
   169     view.setSource(QUrl::fromLocalFile(SRCDIR "/data/datalist.qml"));
       
   170 
       
   171     QDeclarativeListView *listview = qobject_cast<QDeclarativeListView*>(view.rootObject());
       
   172     QVERIFY(listview != 0);
       
   173 
       
   174     QDeclarativeItem *contentItem = listview->contentItem();
       
   175     QVERIFY(contentItem != 0);
       
   176 
       
   177     QDeclarativeText *name = findItem<QDeclarativeText>(contentItem, "display", 0);
       
   178     QVERIFY(name);
       
   179     QCOMPARE(name->text(), QString("Row 1 Item"));
       
   180     name = findItem<QDeclarativeText>(contentItem, "display", 1);
       
   181     QVERIFY(name);
       
   182     QCOMPARE(name->text(), QString("Row 2 Item"));
       
   183     name = findItem<QDeclarativeText>(contentItem, "display", 2);
       
   184     QVERIFY(name);
       
   185     QCOMPARE(name->text(), QString("Row 3 Item"));
       
   186 
       
   187     model.invisibleRootItem()->sortChildren(0, Qt::DescendingOrder);
       
   188 
       
   189     name = findItem<QDeclarativeText>(contentItem, "display", 0);
       
   190     QVERIFY(name);
       
   191     QCOMPARE(name->text(), QString("Row 3 Item"));
       
   192     name = findItem<QDeclarativeText>(contentItem, "display", 1);
       
   193     QVERIFY(name);
       
   194     QCOMPARE(name->text(), QString("Row 2 Item"));
       
   195     name = findItem<QDeclarativeText>(contentItem, "display", 2);
       
   196     QVERIFY(name);
       
   197     QCOMPARE(name->text(), QString("Row 1 Item"));
       
   198 }
       
   199 
       
   200 void tst_qdeclarativevisualdatamodel::childChanged()
       
   201 {
       
   202     QDeclarativeView view;
       
   203 
       
   204     QStandardItemModel model;
       
   205     initStandardTreeModel(&model);
       
   206 
       
   207     view.rootContext()->setContextProperty("myModel", &model);
       
   208 
       
   209     view.setSource(QUrl::fromLocalFile(SRCDIR "/data/datalist.qml"));
       
   210 
       
   211     QDeclarativeListView *listview = qobject_cast<QDeclarativeListView*>(view.rootObject());
       
   212     QVERIFY(listview != 0);
       
   213 
       
   214     QDeclarativeItem *contentItem = listview->contentItem();
       
   215     QVERIFY(contentItem != 0);
       
   216 
       
   217     QDeclarativeVisualDataModel *vdm = listview->findChild<QDeclarativeVisualDataModel*>("visualModel");
       
   218     vdm->setRootIndex(QVariant::fromValue(model.indexFromItem(model.item(1,0))));
       
   219 
       
   220     QDeclarativeText *name = findItem<QDeclarativeText>(contentItem, "display", 0);
       
   221     QVERIFY(name);
       
   222     QCOMPARE(name->text(), QString("Row 2 Child Item"));
       
   223 
       
   224     model.item(1,0)->child(0,0)->setText("Row 2 updated child");
       
   225 
       
   226     name = findItem<QDeclarativeText>(contentItem, "display", 0);
       
   227     QVERIFY(name);
       
   228     QCOMPARE(name->text(), QString("Row 2 updated child"));
       
   229 
       
   230     model.item(1,0)->appendRow(new QStandardItem(QLatin1String("Row 2 Child Item 2")));
       
   231     QTest::qWait(300);
       
   232 
       
   233     name = findItem<QDeclarativeText>(contentItem, "display", 1);
       
   234     QVERIFY(name != 0);
       
   235     QCOMPARE(name->text(), QString("Row 2 Child Item 2"));
       
   236 
       
   237     model.item(1,0)->takeRow(1);
       
   238     name = findItem<QDeclarativeText>(contentItem, "display", 1);
       
   239     QVERIFY(name == 0);
       
   240 
       
   241     vdm->setRootIndex(QVariant::fromValue(QModelIndex()));
       
   242     QTest::qWait(300);
       
   243     name = findItem<QDeclarativeText>(contentItem, "display", 0);
       
   244     QVERIFY(name);
       
   245     QCOMPARE(name->text(), QString("Row 1 Item"));
       
   246     name = findItem<QDeclarativeText>(contentItem, "display", 1);
       
   247     QVERIFY(name);
       
   248     QCOMPARE(name->text(), QString("Row 2 Item"));
       
   249     name = findItem<QDeclarativeText>(contentItem, "display", 2);
       
   250     QVERIFY(name);
       
   251     QCOMPARE(name->text(), QString("Row 3 Item"));
   156 }
   252 }
   157 
   253 
   158 void tst_qdeclarativevisualdatamodel::objectListModel()
   254 void tst_qdeclarativevisualdatamodel::objectListModel()
   159 {
   255 {
   160     QDeclarativeView view;
   256     QDeclarativeView view;