on xenial help sign in
Update the section header on list change events
commit572c1b9ac56033e50618315378aeb94c2de4b491 authorAlbert Astals <albert.astals@canonical.com> dateMon 2 Sep 2013, 15:22 (13 years ago) parenta81cbd7
4 files changed+22
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+14 plugins/ListViewWithPageHeader/listviewwithpageheader.h+1 tests/plugins/ListViewWithPageHeader/CMakeLists.txt+6 tests/plugins/ListViewWithPageHeader/listviewwithpageheadertestsection.cpp+1
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+14
@@ -199,6 +199,7 @@ void ListViewWithPageHeader::setModel(QAbstractItemModel *model)
199199 connect(m_delegateModel, SIGNAL(modelUpdated(QQmlChangeSet,bool)), this, SLOT(onModelUpdated(QQmlChangeSet,bool)));
200200#endif
201201 Q_EMIT modelChanged();
202+ polish();
202203 // TODO?
203204// Q_EMIT contentHeightChanged();
204205// Q_EMIT contentYChanged();
@@ -1006,6 +1007,18 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
10061007 }
10071008 }
10081009
1010+ Q_FOREACH(const QQuickChangeSet::Change &change, changeSet.changes()) {
1011+// qDebug() << "ListViewWithPageHeader::onModelUpdated Change" << change.index << change.count;
1012+ for (int i = change.index; i < change.count; ++i) {
1013+ ListItem *item = itemAtIndex(i);
1014+ if (item && item->m_sectionItem) {
1015+ QQmlContext *context = QQmlEngine::contextForObject(item->m_sectionItem)->parentContext();
1016+ const QString sectionText = m_delegateModel->stringValue(i, m_sectionProperty);
1017+ context->setContextProperty(QLatin1String("section"), sectionText);
1018+ }
1019+ }
1020+ }
1021+
10091022 if (m_firstVisibleIndex != oldFirstVisibleIndex) {
10101023 adjustMinYExtent();
10111024 }
@@ -1154,6 +1167,7 @@ void ListViewWithPageHeader::layout()
11541167 // Update the top sticky section header
11551168 const QString section = m_delegateModel->stringValue(modelIndex, m_sectionProperty);
11561169 QQmlContext *context = QQmlEngine::contextForObject(m_topSectionItem)->parentContext();
1170+ qDebug() << modelIndex << section;
11571171 context->setContextProperty(QLatin1String("section"), section);
11581172
11591173 QQuickItemPrivate::get(m_topSectionItem)->setCulled(false);
plugins/ListViewWithPageHeader/listviewwithpageheader.h+1
@@ -63,6 +63,7 @@ class ListViewWithPageHeader : public QQuickFlickable, public QQuickItemChangeLi
6363
6464 friend class ListViewWithPageHeaderTest;
6565 friend class ListViewWithPageHeaderTestSection;
66+ friend class ListViewWithPageHeaderTestExternalModel;
6667
6768public:
6869 ListViewWithPageHeader();
tests/plugins/ListViewWithPageHeader/CMakeLists.txt+6
@@ -32,5 +32,11 @@ qt5_use_modules(listviewwithpageheadertestsectionExec Test Core Qml)
3232target_link_libraries(listviewwithpageheadertestsectionExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
3333add_custom_target(testlistviewwithpageheadersection ${CMAKE_CURRENT_BINARY_DIR}/listviewwithpageheadertestsectionExec -o ${CMAKE_BINARY_DIR}/testlistviewwithpageheadersection.xml,xunitxml -o -,txt)
3434
35+add_executable(listviewwithpageheadertestsectionexternalmodelExec listviewwithpageheadertestsectionexternalmodel.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/ListViewWithPageHeader/listviewwithpageheader.cpp)
36+qt5_use_modules(listviewwithpageheadertestsectionexternalmodelExec Test Core Qml)
37+target_link_libraries(listviewwithpageheadertestsectionexternalmodelExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
38+add_custom_target(testlistviewwithpageheadersectionexternalmodel ${CMAKE_CURRENT_BINARY_DIR}/listviewwithpageheadertestsectionexternalmodelExec -o ${CMAKE_BINARY_DIR}/testlistviewwithpageheadersectionexternalmodel.xml,xunitxml -o -,txt)
39+
3540add_dependencies(qmluitests testlistviewwithpageheader)
3641add_dependencies(qmluitests testlistviewwithpageheadersection)
42+add_dependencies(qmluitests testlistviewwithpageheadersectionexternalmodel)
tests/plugins/ListViewWithPageHeader/listviewwithpageheadertestsection.cpp+1
@@ -20,6 +20,7 @@
2020#include <QQmlEngine>
2121#include <QQuickView>
2222#include <QSignalSpy>
23+#include <QSortFilterProxyModel>
2324#include <QtTestGui>
2425#pragma GCC diagnostic push
2526#pragma GCC diagnostic ignored "-pedantic"