diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2019-11-19 21:03:24 +0100 |
---|---|---|
committer | bstoeger <32835590+bstoeger@users.noreply.github.com> | 2019-12-04 13:00:23 +0100 |
commit | 3cc6576913b4063b88f510f22a063aee76fa5870 (patch) | |
tree | cf623b208fe39b7940cc540c741b14447d008090 /qt-models | |
parent | 569e532f5c63f25abb81eec92937caec20f38d77 (diff) | |
download | subsurface-3cc6576913b4063b88f510f22a063aee76fa5870.tar.gz |
Dive list model: move filtering of trip-items to own function
Implementing proper model semantics (only sending a changed
signal for items that actually changed) will be somewhat
complicated. Therefore, move the filtering of trip-items
to its own function to make the nesting a little bit less
deep.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'qt-models')
-rw-r--r-- | qt-models/divetripmodel.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/qt-models/divetripmodel.cpp b/qt-models/divetripmodel.cpp index bcdf14377..1d4a9a2a0 100644 --- a/qt-models/divetripmodel.cpp +++ b/qt-models/divetripmodel.cpp @@ -691,6 +691,17 @@ dive *DiveTripModelTree::diveOrNull(const QModelIndex &index) const return tripOrDive(index).dive; } +static bool calculateFilterForTrip(const std::vector<dive *> &dives, const DiveFilter *filter) +{ + bool showTrip = false; + for (dive *d: dives) { + bool shown = filter->showDive(d); + filter_dive(d, shown); + showTrip |= shown; + } + return showTrip; +} + void DiveTripModelTree::recalculateFilter() { { @@ -710,18 +721,11 @@ void DiveTripModelTree::recalculateFilter() filter_dive(d, item.shown); } else { // Trips are shown if any of the dives is shown - bool showTrip = false; - for (dive *d: item.dives) { - bool shown = filter->showDive(d); - filter_dive(d, shown); - showTrip |= shown; - } - item.shown = showTrip; + item.shown = calculateFilterForTrip(item.dives, filter); } } } - // Rerender all trip headers. TODO: be smarter about this and only rerender if the number // of shown dives changed. for (int idx = 0; idx < (int)items.size(); ++idx) { |