From 28e97e75556e50c33fb064a60725ab7937ef5440 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Thu, 28 Nov 2019 21:55:26 +0100 Subject: Cleanup: remove DiveListView::expandedRows member variable The QList served as backing store for backupExpandedRows() and restoreExpandedRows(). However, these always came in pairs in the same scope. There is no reason to store the expanded rows over a longer time. Therefore, return the expanded rows from backupExpandedRows() and take them as argument in restoreExpandedRows(). Morover replace the QList by the much lighter std::vector. We certainly don't need copy-on-write, reference-counting and immutability of iterators in this case. Signed-off-by: Berthold Stoeger --- desktop-widgets/divelistview.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'desktop-widgets/divelistview.cpp') diff --git a/desktop-widgets/divelistview.cpp b/desktop-widgets/divelistview.cpp index a4b5ad282..ee0c1c98f 100644 --- a/desktop-widgets/divelistview.cpp +++ b/desktop-widgets/divelistview.cpp @@ -135,7 +135,7 @@ void DiveListView::calculateInitialColumnWidth(int col) void DiveListView::setColumnWidths() { QSettings settings; - backupExpandedRows(); + std::vector expandedRows = backupExpandedRows(); settings.beginGroup("ListWidget"); /* if no width are set, use the calculated width for each column; * for that to work we need to temporarily expand all rows */ @@ -150,7 +150,7 @@ void DiveListView::setColumnWidths() setColumnWidth(i, initialColumnWidths[i]); } settings.endGroup(); - restoreExpandedRows(); + restoreExpandedRows(expandedRows); setColumnWidth(lastVisibleColumn(), 10); } @@ -165,18 +165,19 @@ int DiveListView::lastVisibleColumn() return lastColumn; } -void DiveListView::backupExpandedRows() +std::vector DiveListView::backupExpandedRows() { - expandedRows.clear(); + std::vector expandedRows; for (int i = 0; i < model()->rowCount(); i++) if (isExpanded(model()->index(i, 0))) expandedRows.push_back(i); + return expandedRows; } -void DiveListView::restoreExpandedRows() +void DiveListView::restoreExpandedRows(const std::vector &expandedRows) { setAnimated(false); - Q_FOREACH (const int &i, expandedRows) + for (int i: expandedRows) setExpanded(model()->index(i, 0), true); setAnimated(true); } @@ -437,13 +438,14 @@ void DiveListView::sortIndicatorChanged(int i, Qt::SortOrder order) sortByColumn(i, order); } else { // clear the model, repopulate with new indexes. - if (currentLayout == DiveTripModelBase::TREE) - backupExpandedRows(); + std::vector expandedRows; + if(currentLayout == DiveTripModelBase::TREE) + expandedRows = backupExpandedRows(); currentLayout = newLayout; resetModel(); sortByColumn(i, order); if (newLayout == DiveTripModelBase::TREE) - restoreExpandedRows(); + restoreExpandedRows(expandedRows); } } -- cgit v1.2.3-70-g09d2