diff options
author | Martin Jones <martin.jones@nokia.com> | 2010-06-30 06:53:08 (GMT) |
---|---|---|
committer | Martin Jones <martin.jones@nokia.com> | 2010-06-30 06:53:08 (GMT) |
commit | 8987c745c6744e383463ed95e1da99b97f786aef (patch) | |
tree | ab48e367220335756cab34452d40bdc456b2f0d5 /src/declarative/graphicsitems/qdeclarativelistview.cpp | |
parent | 3fb8eede9ee01592542fc1c86b2848db1ce426fb (diff) | |
download | Qt-8987c745c6744e383463ed95e1da99b97f786aef.zip Qt-8987c745c6744e383463ed95e1da99b97f786aef.tar.gz Qt-8987c745c6744e383463ed95e1da99b97f786aef.tar.bz2 |
Add ListView.nextSection attached property
and also renamed ListView.prevSection to ListView.previousSection
Task-number: QTBUG-11372
Diffstat (limited to 'src/declarative/graphicsitems/qdeclarativelistview.cpp')
-rw-r--r-- | src/declarative/graphicsitems/qdeclarativelistview.cpp | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index a69fc3f..4be8705 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -575,6 +575,10 @@ FxListItem *QDeclarativeListViewPrivate::createItem(int modelIndex) listItem->attached->m_prevSection = item->attached->section(); else listItem->attached->m_prevSection = sectionAt(modelIndex-1); + if (FxListItem *item = visibleItem(modelIndex+1)) + listItem->attached->m_nextSection = item->attached->section(); + else + listItem->attached->m_nextSection = sectionAt(modelIndex+1); } } if (model->completePending()) { @@ -951,14 +955,26 @@ void QDeclarativeListViewPrivate::updateSections() QString prevSection; if (visibleIndex > 0) prevSection = sectionAt(visibleIndex-1); + QDeclarativeListViewAttached *prevAtt = 0; + int idx = -1; for (int i = 0; i < visibleItems.count(); ++i) { if (visibleItems.at(i)->index != -1) { QDeclarativeListViewAttached *attached = visibleItems.at(i)->attached; attached->setPrevSection(prevSection); + if (prevAtt) + prevAtt->setNextSection(attached->section()); createSection(visibleItems.at(i)); prevSection = attached->section(); + prevAtt = attached; + idx = visibleItems.at(i)->index; } } + if (prevAtt) { + if (idx > 0 && idx < model->count()-1) + prevAtt->setNextSection(sectionAt(idx+1)); + else + prevAtt->setNextSection(QString()); + } } } @@ -1418,7 +1434,7 @@ QDeclarativeListView::~QDeclarativeListView() */ /*! - \qmlattachedproperty string ListView::prevSection + \qmlattachedproperty string ListView::previousSection This attached property holds the section of the previous element. It is attached to each instance of the delegate. @@ -1427,6 +1443,15 @@ QDeclarativeListView::~QDeclarativeListView() */ /*! + \qmlattachedproperty string ListView::nextSection + This attached property holds the section of the next element. + + It is attached to each instance of the delegate. + + The section is evaluated using the \l {ListView::section.property}{section} properties. +*/ + +/*! \qmlattachedproperty string ListView::section This attached property holds the section of this element. @@ -1963,9 +1988,9 @@ void QDeclarativeListView::setCacheBuffer(int b) \c section.delegate holds the delegate component for each section. - Each item in the list has attached properties named \c ListView.section and - \c ListView.prevSection. These may be used to place a section header for - related items. + Each item in the list has attached properties named \c ListView.section, + \c ListView.previousSection and \c ListView.nextSection. These may be + used to place a section header for related items. For example, here is a ListView that displays a list of animals, separated into sections. Each item in the ListView is placed in a different section |