diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-01-16 12:18:44 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2017-01-16 17:06:54 +0000 |
commit | 0b82932dd3f6d0ef72a504b10beff8ea7a967a0d (patch) | |
tree | 03afda6e5c016c7fceb49db354fc65e8ea716ab2 /src/quick/items/qquicklistview.cpp | |
parent | 8eada7ae7d41a2d93142ea1a6454ab2bbb0998ed (diff) |
Item views: eliminate some repeated QList::at() access
Change-Id: Iccc1ec0cf4408e25c04ca0be2562175e76d2d198
Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
Diffstat (limited to 'src/quick/items/qquicklistview.cpp')
-rw-r--r-- | src/quick/items/qquicklistview.cpp | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/src/quick/items/qquicklistview.cpp b/src/quick/items/qquicklistview.cpp index 9419d3cf96..5a39ff9422 100644 --- a/src/quick/items/qquicklistview.cpp +++ b/src/quick/items/qquicklistview.cpp @@ -438,11 +438,12 @@ qreal QQuickListViewPrivate::lastPosition() const int invisibleCount = INT_MIN; int delayRemovedCount = 0; for (int i = visibleItems.count()-1; i >= 0; --i) { - if (visibleItems.at(i)->index != -1) { + FxViewItem *item = visibleItems.at(i); + if (item->index != -1) { // Find the invisible count after the last visible item with known index - invisibleCount = model->count() - (visibleItems.at(i)->index + 1 + delayRemovedCount); + invisibleCount = model->count() - (item->index + 1 + delayRemovedCount); break; - } else if (visibleItems.at(i)->attached->delayRemove()) { + } else if (item->attached->delayRemove()) { ++delayRemovedCount; } } @@ -1172,12 +1173,12 @@ void QQuickListViewPrivate::updateSections() FxViewItem *item = visibleItems.at(i); QQuickListViewAttached *attached = static_cast<QQuickListViewAttached*>(item->attached); attached->setPrevSection(prevSection); - if (visibleItems.at(i)->index != -1) { - QString propValue = model->stringValue(visibleItems.at(i)->index, sectionCriteria->property()); + if (item->index != -1) { + QString propValue = model->stringValue(item->index, sectionCriteria->property()); attached->setSection(sectionCriteria->sectionString(propValue)); - idx = visibleItems.at(i)->index; + idx = item->index; } - updateInlineSection(static_cast<FxListItemSG*>(visibleItems.at(i))); + updateInlineSection(static_cast<FxListItemSG*>(item)); if (prevAtt) prevAtt->setNextSection(sectionAt(prevIdx+1)); prevSection = attached->section(); @@ -1210,9 +1211,12 @@ void QQuickListViewPrivate::updateCurrentSection() qreal startPos = hasStickyHeader() ? header->endPosition() : viewPos; int index = 0; int modelIndex = visibleIndex; - while (index < visibleItems.count() && visibleItems.at(index)->endPosition() <= startPos) { - if (visibleItems.at(index)->index != -1) - modelIndex = visibleItems.at(index)->index; + while (index < visibleItems.count()) { + FxViewItem *item = visibleItems.at(index); + if (item->endPosition() > startPos) + break; + if (item->index != -1) + modelIndex = item->index; ++index; } @@ -1236,10 +1240,13 @@ void QQuickListViewPrivate::updateCurrentSection() qreal endPos = hasStickyFooter() ? footer->position() : viewPos + size(); if (nextSectionItem && !inlineSections) endPos -= orient == QQuickListView::Vertical ? nextSectionItem->height() : nextSectionItem->width(); - while (index < visibleItems.count() && static_cast<FxListItemSG*>(visibleItems.at(index))->itemPosition() < endPos) { - if (visibleItems.at(index)->index != -1) - modelIndex = visibleItems.at(index)->index; - lastSection = visibleItems.at(index)->attached->section(); + while (index < visibleItems.count()) { + FxListItemSG *listItem = static_cast<FxListItemSG *>(visibleItems.at(index)); + if (listItem->itemPosition() >= endPos) + break; + if (listItem->index != -1) + modelIndex = listItem->index; + lastSection = listItem->attached->section(); ++index; } @@ -3323,8 +3330,10 @@ void QQuickListViewPrivate::translateAndTransitionItemsAfter(int afterModelIndex qreal sizeRemoved = -removalResult.sizeChangesAfterVisiblePos - (removalResult.countChangeAfterVisibleItems * (averageSize + spacing)); - for (int i=markerItemIndex+1; i<visibleItems.count() && visibleItems.at(i)->position() < viewEndPos; i++) { + for (int i=markerItemIndex+1; i<visibleItems.count(); i++) { FxListItemSG *listItem = static_cast<FxListItemSG *>(visibleItems.at(i)); + if (listItem->position() >= viewEndPos) + break; if (!listItem->transitionScheduledOrRunning()) { qreal pos = listItem->position(); listItem->setPosition(pos - sizeRemoved); |