summaryrefslogtreecommitdiffstats
path: root/qt-models
diff options
context:
space:
mode:
Diffstat (limited to 'qt-models')
-rw-r--r--qt-models/filtermodels.cpp21
-rw-r--r--qt-models/filtermodels.h3
2 files changed, 24 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();
+}
diff --git a/qt-models/filtermodels.h b/qt-models/filtermodels.h
index 1925bc422..faaae8c2f 100644
--- a/qt-models/filtermodels.h
+++ b/qt-models/filtermodels.h
@@ -57,9 +57,12 @@ slots:
void filterChanged(const QModelIndex &from, const QModelIndex &to, const QVector<int> &roles);
void resetModel(DiveTripModelBase::Layout layout);
void filterDataChanged(const FilterData &data);
+ void divesAdded(struct dive_trip *, bool, const QVector<dive *> &dives);
+ void divesDeleted(struct dive_trip *, bool, const QVector<dive *> &dives);
signals:
void filterFinished();
+ void countsChanged();
private:
MultiFilterSortModel(QObject *parent = 0);