From afde4dce0dc89e4ac7edbbffd5dd68a9ce96c5f1 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Fri, 12 Apr 2019 15:47:41 +0200 Subject: Filter: allow filtering multiple dive sites In the edit-dive-site tab the filter is switched to a particular mode where only dives at that site are shown. If we want to reuse this for the dive-site tab the mode has to be extended to allow for multiple dive sites. This is trivially done by replacing a pointer by a vector of pointers. Signed-off-by: Berthold Stoeger --- qt-models/filtermodels.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'qt-models/filtermodels.cpp') diff --git a/qt-models/filtermodels.cpp b/qt-models/filtermodels.cpp index 94b74d92d..bc454bcc9 100644 --- a/qt-models/filtermodels.cpp +++ b/qt-models/filtermodels.cpp @@ -105,8 +105,7 @@ MultiFilterSortModel *MultiFilterSortModel::instance() } MultiFilterSortModel::MultiFilterSortModel(QObject *parent) : QSortFilterProxyModel(parent), - divesDisplayed(0), - curr_dive_site(NULL) + divesDisplayed(0) { setFilterKeyColumn(-1); // filter all columns setFilterCaseSensitivity(Qt::CaseInsensitive); @@ -125,9 +124,9 @@ void MultiFilterSortModel::resetModel(DiveTripModelBase::Layout layout) bool MultiFilterSortModel::showDive(const struct dive *d) const { - // If curr_dive_site is set, we are in a special dive-site editing mode. - if (curr_dive_site) - return d->dive_site == curr_dive_site; + // If dive_sites is not empty, we are in a special dive-site filtering mode. + if (!dive_sites.isEmpty()) + return dive_sites.contains(d->dive_site); if (!filterData.validFilter) return true; @@ -245,7 +244,7 @@ void MultiFilterSortModel::myInvalidate() emit filterFinished(); #if !defined(SUBSURFACE_MOBILE) - if (curr_dive_site) + if (!dive_sites.isEmpty()) MainWindow::instance()->diveList->expandAll(); #endif } @@ -267,15 +266,15 @@ void MultiFilterSortModel::clearFilter() myInvalidate(); } -void MultiFilterSortModel::startFilterDiveSite(struct dive_site *ds) +void MultiFilterSortModel::startFilterDiveSites(QVector ds) { - curr_dive_site = ds; + dive_sites = ds; myInvalidate(); } -void MultiFilterSortModel::stopFilterDiveSite() +void MultiFilterSortModel::stopFilterDiveSites() { - curr_dive_site = NULL; + dive_sites.clear(); myInvalidate(); } -- cgit v1.2.3-70-g09d2