summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2010-07-19 05:30:06 (GMT)
committerMartin Jones <martin.jones@nokia.com>2010-07-19 05:30:06 (GMT)
commitb6251d31652232a6ac3a5dff54ad4229542089b1 (patch)
tree81c39b61313383fce9f6498dfe94b253c9e9a44a
parent099f684de47b936268e7c052c9ac3f97ca7ad209 (diff)
downloadQt-b6251d31652232a6ac3a5dff54ad4229542089b1.zip
Qt-b6251d31652232a6ac3a5dff54ad4229542089b1.tar.gz
Qt-b6251d31652232a6ac3a5dff54ad4229542089b1.tar.bz2
Fix ListView sections with QList<QObject*>
QDeclarativeVisualDataModel::stringValue() did not handle QList<QObject*> model types. Task-number: QTBUG-12005
-rw-r--r--src/declarative/graphicsitems/qdeclarativelistview.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp5
-rw-r--r--tests/auto/declarative/qdeclarativevisualdatamodel/data/objectlist.qml3
-rw-r--r--tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp3
4 files changed, 12 insertions, 1 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp
index fa422fd..38bc6f5 100644
--- a/src/declarative/graphicsitems/qdeclarativelistview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp
@@ -577,7 +577,7 @@ FxListItem *QDeclarativeListViewPrivate::createItem(int modelIndex)
listItem->attached->m_prevSection = sectionAt(modelIndex-1);
if (FxListItem *item = visibleItem(modelIndex+1))
listItem->attached->m_nextSection = item->attached->section();
- else
+ else if (modelIndex < model->count()-1)
listItem->attached->m_nextSection = sectionAt(modelIndex+1);
}
}
diff --git a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
index 786d6f9..cfa1c6d 100644
--- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
+++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
@@ -1089,6 +1089,11 @@ QString QDeclarativeVisualDataModel::stringValue(int index, const QString &name)
if (d->m_visualItemModel)
return d->m_visualItemModel->stringValue(index, name);
+ if ((!d->m_listModelInterface || !d->m_abstractItemModel) && d->m_listAccessor) {
+ if (QObject *object = d->m_listAccessor->at(index).value<QObject*>())
+ return object->property(name.toUtf8()).toString();
+ }
+
if ((!d->m_listModelInterface && !d->m_abstractItemModel) || !d->m_delegate)
return QString();
diff --git a/tests/auto/declarative/qdeclarativevisualdatamodel/data/objectlist.qml b/tests/auto/declarative/qdeclarativevisualdatamodel/data/objectlist.qml
index f5198c9..d030222 100644
--- a/tests/auto/declarative/qdeclarativevisualdatamodel/data/objectlist.qml
+++ b/tests/auto/declarative/qdeclarativevisualdatamodel/data/objectlist.qml
@@ -11,6 +11,9 @@ ListView {
width: 100
color: model.modelData.color
Text { objectName: "name"; text: name }
+ Text { objectName: "section"; text: parent.ListView.section }
}
}
+ section.property: "name"
+ section.criteria: ViewSection.FullString
}
diff --git a/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp b/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp
index 43d4d06..e0f32ea 100644
--- a/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp
+++ b/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp
@@ -179,6 +179,9 @@ void tst_qdeclarativevisualdatamodel::objectListModel()
QDeclarativeText *name = findItem<QDeclarativeText>(contentItem, "name", 0);
QCOMPARE(name->text(), QString("Item 1"));
+ QDeclarativeText *section = findItem<QDeclarativeText>(contentItem, "section", 0);
+ QCOMPARE(section->text(), QString("Item 1"));
+
dataList[0]->setProperty("name", QLatin1String("Changed"));
QCOMPARE(name->text(), QString("Changed"));
}