diff options
Diffstat (limited to 'qt-models')
-rw-r--r-- | qt-models/divelistmodel.cpp | 21 | ||||
-rw-r--r-- | qt-models/divelistmodel.h | 1 |
2 files changed, 22 insertions, 0 deletions
diff --git a/qt-models/divelistmodel.cpp b/qt-models/divelistmodel.cpp index a12a1d9fa..75eb9137a 100644 --- a/qt-models/divelistmodel.cpp +++ b/qt-models/divelistmodel.cpp @@ -27,6 +27,7 @@ void DiveListSortModel::updateFilterState() QString fullText = includeNotes? mySourceModel->at(i)->fullText() : mySourceModel->at(i)->fullTextNoNotes(); filteredRows.at(i) = fullText.contains(filterString, cs); } + updateDivesShownInTrips(); } void DiveListSortModel::setSourceModel(QAbstractItemModel *sourceModel) @@ -38,6 +39,7 @@ void DiveListSortModel::setFilter(QString f) filterString = f; updateFilterState(); invalidateFilter(); + updateDivesShownInTrips(); } void DiveListSortModel::resetFilter() @@ -45,6 +47,7 @@ void DiveListSortModel::resetFilter() filterString = ""; filteredRows.clear(); invalidateFilter(); + updateDivesShownInTrips(); } // filtering is way too slow on mobile. Maybe we should roll our own? @@ -91,6 +94,24 @@ void DiveListSortModel::addAllDives() updateFilterState(); } +void DiveListSortModel::updateDivesShownInTrips() +{ + // if filtering is active, reset all the counts to zero, otherwise set them to the full count + struct dive_trip *dt = dive_trip_list; + int rc = rowCount(); + while (dt) { + dt->showndives = rc ? 0 : dt->nrdives; + dt = dt->next; + } + for (int i = 0; i < rowCount(); i++) { + QVariant v = data(index(i, 0), DiveListModel::DiveRole); + DiveObjectHelper *d = v.value<DiveObjectHelper *>(); + dt = d->getDive()->divetrip; + if (dt) + dt->showndives++; + } +} + DiveListModel *DiveListModel::m_instance = NULL; DiveListModel::DiveListModel(QObject *parent) : QAbstractListModel(parent) diff --git a/qt-models/divelistmodel.h b/qt-models/divelistmodel.h index dcfc573ee..05c3b76ff 100644 --- a/qt-models/divelistmodel.h +++ b/qt-models/divelistmodel.h @@ -21,6 +21,7 @@ public slots: void setFilter(QString f); void resetFilter(); int shown(); + void updateDivesShownInTrips(); protected: bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const; private: |