diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2019-01-25 21:30:43 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2019-01-26 08:05:39 -0800 |
commit | c210bfc0e0205067c4f4274afc7975486e35252a (patch) | |
tree | 1e83943a45e7089d63ede422aa6123ccb1253e90 /qt-models/filtermodels.cpp | |
parent | 3915e8a0d5a3199ec1aa3c2dfc1de049b2be7d9e (diff) | |
download | subsurface-c210bfc0e0205067c4f4274afc7975486e35252a.tar.gz |
Filter: update counts if dives added / removed
Update the filter counts if dives were added removed by the
undo commands. The undo commands call into the filter model
at the right time so that hidden_by_filter is already set.
The filter model keeps track of the counts and emits a signal,
which is caught by the widget.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'qt-models/filtermodels.cpp')
-rw-r--r-- | qt-models/filtermodels.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/qt-models/filtermodels.cpp b/qt-models/filtermodels.cpp index 53149eba2..5168e32d8 100644 --- a/qt-models/filtermodels.cpp +++ b/qt-models/filtermodels.cpp @@ -79,6 +79,9 @@ MultiFilterSortModel::MultiFilterSortModel(QObject *parent) : QSortFilterProxyMo { setFilterKeyColumn(-1); // filter all columns setFilterCaseSensitivity(Qt::CaseInsensitive); + + connect(&diveListNotifier, &DiveListNotifier::divesAdded, this, &MultiFilterSortModel::divesAdded); + connect(&diveListNotifier, &DiveListNotifier::divesDeleted, this, &MultiFilterSortModel::divesDeleted); } void MultiFilterSortModel::resetModel(DiveTripModelBase::Layout layout) @@ -235,3 +238,21 @@ void MultiFilterSortModel::filterDataChanged(const FilterData &data) filterData = data; myInvalidate(); } + +void MultiFilterSortModel::divesAdded(dive_trip *, bool, const QVector<dive *> &dives) +{ + for (dive *d: dives) { + if (!d->hidden_by_filter) + ++divesDisplayed; + } + emit countsChanged(); +} + +void MultiFilterSortModel::divesDeleted(dive_trip *, bool, const QVector<dive *> &dives) +{ + for (dive *d: dives) { + if (!d->hidden_by_filter) + --divesDisplayed; + } + emit countsChanged(); +} |