summaryrefslogtreecommitdiffstats
path: root/src/declarative/fx/qfxlistview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/fx/qfxlistview.cpp')
-rw-r--r--src/declarative/fx/qfxlistview.cpp30
1 files changed, 19 insertions, 11 deletions
diff --git a/src/declarative/fx/qfxlistview.cpp b/src/declarative/fx/qfxlistview.cpp
index 1e75026..860e9e4 100644
--- a/src/declarative/fx/qfxlistview.cpp
+++ b/src/declarative/fx/qfxlistview.cpp
@@ -265,7 +265,7 @@ public:
}
bool isValid() const {
- return model && model->count() && (!ownModel || model->delegate());
+ return model && model->count() && model->isValid();
}
int snapIndex() {
@@ -357,7 +357,7 @@ public:
virtual void fixupY();
virtual void fixupX();
- QFxVisualItemModel *model;
+ QFxVisualModel *model;
QVariant modelVariant;
QList<FxListItem*> visibleItems;
QHash<QFxItem*,int> unrequestedItems;
@@ -910,8 +910,8 @@ void QFxListView::setModel(const QVariant &model)
d->clear();
d->modelVariant = model;
QObject *object = qvariant_cast<QObject*>(model);
- QFxVisualItemModel *vim = 0;
- if (object && (vim = qobject_cast<QFxVisualItemModel *>(object))) {
+ QFxVisualModel *vim = 0;
+ if (object && (vim = qobject_cast<QFxVisualModel *>(object))) {
if (d->ownModel) {
delete d->model;
d->ownModel = false;
@@ -919,10 +919,11 @@ void QFxListView::setModel(const QVariant &model)
d->model = vim;
} else {
if (!d->ownModel) {
- d->model = new QFxVisualItemModel(qmlContext(this));
+ d->model = new QFxVisualDataModel(qmlContext(this));
d->ownModel = true;
}
- d->model->setModel(model);
+ if (QFxVisualDataModel *dataModel = qobject_cast<QFxVisualDataModel*>(d->model))
+ dataModel->setModel(model);
}
if (d->model) {
if (d->currentIndex >= d->model->count() || d->currentIndex < 0)
@@ -949,19 +950,26 @@ void QFxListView::setModel(const QVariant &model)
QmlComponent *QFxListView::delegate() const
{
Q_D(const QFxListView);
- return d->model ? d->model->delegate() : 0;
+ if (d->model) {
+ if (QFxVisualDataModel *dataModel = qobject_cast<QFxVisualDataModel*>(d->model))
+ return dataModel->delegate();
+ }
+
+ return 0;
}
void QFxListView::setDelegate(QmlComponent *delegate)
{
Q_D(QFxListView);
if (!d->ownModel) {
- d->model = new QFxVisualItemModel(qmlContext(this));
+ d->model = new QFxVisualDataModel(qmlContext(this));
d->ownModel = true;
}
- d->model->setDelegate(delegate);
- d->updateCurrent(d->currentIndex);
- refill();
+ if (QFxVisualDataModel *dataModel = qobject_cast<QFxVisualDataModel*>(d->model)) {
+ dataModel->setDelegate(delegate);
+ d->updateCurrent(d->currentIndex);
+ refill();
+ }
}
/*!