@@ -96,7 +96,11 @@
9696#include <qqmlengine.h>
9797#pragma GCC diagnostic push
9898#pragma GCC diagnostic ignored "-pedantic"
99+#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
99100#include <private/qquickvisualdatamodel_p.h>
101+#else
102+#include <private/qqmldelegatemodel_p.h>
103+#endif
100104#include <private/qqmlglobal_p.h>
101105#include <private/qquickitem_p.h>
102106#include <private/qquickanimation_p.h>
@@ -183,10 +187,17 @@ void ListViewWithPageHeader::setModel(QAbstractItemModel *model)
183187 if (!m_delegateModel) {
184188 createDelegateModel();
185189 } else {
190+#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
186191 disconnect(m_delegateModel, SIGNAL(modelUpdated(QQuickChangeSet,bool)), this, SLOT(onModelUpdated(QQuickChangeSet,bool)));
187192 }
188193 m_delegateModel->setModel(QVariant::fromValue<QAbstractItemModel *>(model));
189194 connect(m_delegateModel, SIGNAL(modelUpdated(QQuickChangeSet,bool)), this, SLOT(onModelUpdated(QQuickChangeSet,bool)));
195+#else
196+ disconnect(m_delegateModel, SIGNAL(modelUpdated(QQmlChangeSet,bool)), this, SLOT(onModelUpdated(QQmlChangeSet,bool)));
197+ }
198+ m_delegateModel->setModel(QVariant::fromValue<QAbstractItemModel *>(model));
199+ connect(m_delegateModel, SIGNAL(modelUpdated(QQmlChangeSet,bool)), this, SLOT(onModelUpdated(QQmlChangeSet,bool)));
200+#endif
190201 Q_EMIT modelChanged();
191202 // TODO?
192203// Q_EMIT contentHeightChanged();
@@ -446,8 +457,13 @@ void ListViewWithPageHeader::viewportMoved(Qt::Orientations orient)
446457
447458void ListViewWithPageHeader::createDelegateModel()
448459{
460+#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
449461 m_delegateModel = new QQuickVisualDataModel(qmlContext(this), this);
450462 connect(m_delegateModel, SIGNAL(createdItem(int,QQuickItem*)), this, SLOT(itemCreated(int,QQuickItem*)));
463+#else
464+ m_delegateModel = new QQmlDelegateModel(qmlContext(this), this);
465+ connect(m_delegateModel, SIGNAL(createdItem(int,QObject*)), this, SLOT(itemCreated(int,QObject*)));
466+#endif
451467 if (isComponentComplete())
452468 m_delegateModel->componentComplete();
453469 updateWatchedRoles();
@@ -528,8 +544,13 @@ bool ListViewWithPageHeader::addVisibleItems(qreal fillFrom, qreal fillTo, bool
528544void ListViewWithPageHeader::reallyReleaseItem(ListItem *listItem)
529545{
530546 QQuickItem *item = listItem->m_item;
547+#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
531548 QQuickVisualModel::ReleaseFlags flags = m_delegateModel->release(item);
532549 if (flags & QQuickVisualModel::Destroyed) {
550+#else
551+ QQmlDelegateModel::ReleaseFlags flags = m_delegateModel->release(item);
552+ if (flags & QQmlDelegateModel::Destroyed) {
553+#endif
533554 item->setParentItem(nullptr);
534555 }
535556 delete listItem->m_sectionItem;
@@ -658,7 +679,11 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::createItem(int modelIn
658679 return nullptr;
659680
660681 m_asyncRequestedIndex = -1;
682+#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
661683 QQuickItem *item = m_delegateModel->item(modelIndex, asynchronous);
684+#else
685+ QQuickItem *item = qobject_cast<QQuickItem *>(m_delegateModel->object(modelIndex, asynchronous));
686+#endif
662687 if (!item) {
663688 m_asyncRequestedIndex = modelIndex;
664689 return 0;
@@ -711,8 +736,14 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::createItem(int modelIn
711736 }
712737}
713738
739+#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
714740void ListViewWithPageHeader::itemCreated(int modelIndex, QQuickItem *item)
715741{
742+#else
743+void ListViewWithPageHeader::itemCreated(int modelIndex, QObject *object)
744+{
745+ QQuickItem *item = qobject_cast<QQuickItem *>(object);
746+#endif
716747// qDebug() << "ListViewWithPageHeader::itemCreated" << modelIndex << item;
717748
718749 item->setParentItem(m_clipItem);
@@ -747,13 +778,22 @@ void ListViewWithPageHeader::onHeightChanged()
747778 polish();
748779}
749780
781+
782+#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
750783void ListViewWithPageHeader::onModelUpdated(const QQuickChangeSet &changeSet, bool /*reset*/)
784+#else
785+void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool /*reset*/)
786+#endif
751787{
752788 // TODO Do something with reset
753789// qDebug() << "ListViewWithPageHeader::onModelUpdated" << changeSet << reset;
754790 const auto oldFirstVisibleIndex = m_firstVisibleIndex;
755791
792+#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
756793 Q_FOREACH(const QQuickChangeSet::Remove &remove, changeSet.removes()) {
794+#else
795+ Q_FOREACH(const QQmlChangeSet::Remove &remove, changeSet.removes()) {
796+#endif
757797// qDebug() << "ListViewWithPageHeader::onModelUpdated Remove" << remove.index << remove.count;
758798 if (remove.index + remove.count > m_firstVisibleIndex && remove.index < m_firstVisibleIndex + m_visibleItems.count()) {
759799 const qreal oldFirstValidIndexPos = m_visibleItems.first()->y();
@@ -803,7 +843,11 @@ void ListViewWithPageHeader::onModelUpdated(const QQuickChangeSet &changeSet, bo
803843 }
804844 }
805845
846+#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
806847 Q_FOREACH(const QQuickChangeSet::Insert &insert, changeSet.inserts()) {
848+#else
849+ Q_FOREACH(const QQmlChangeSet::Insert &insert, changeSet.inserts()) {
850+#endif
807851// qDebug() << "ListViewWithPageHeader::onModelUpdated Insert" << insert.index << insert.count;
808852 const bool insertingInValidIndexes = insert.index > m_firstVisibleIndex && insert.index < m_firstVisibleIndex + m_visibleItems.count();
809853 const bool firstItemWithViewOnTop = insert.index == 0 && m_firstVisibleIndex == 0 && m_visibleItems.first()->y() + m_clipItem->y() > contentY();