From af371b8de6e6ea07cc902b858eedc67cd64427e9 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Sat, 23 Dec 2017 14:55:59 +0100 Subject: [PATCH] Fold MultiFilterInterface into FilterModelBase There were two classes, MultiFilterInterface and FiterModelBase. The latter derives from the former and from QStringListModel. The former was not used anywhere else. Moreover, in contradiction to its name, MultiFilterInterface is not an interface (in the Java sense), because it actually has (non-virtual) data members. All in all, the data model is very weird. Merge these two classes, since there seems to be no gain whatsoever from keeping MultiFilterInterface separate. Signed-off-by: Berthold Stoeger --- qt-models/filtermodels.cpp | 9 +++++---- qt-models/filtermodels.h | 12 ++++-------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/qt-models/filtermodels.cpp b/qt-models/filtermodels.cpp index 31a84a8bb..abc8d3bac 100644 --- a/qt-models/filtermodels.cpp +++ b/qt-models/filtermodels.cpp @@ -79,6 +79,7 @@ CREATE_COMMON_METHODS_FOR_FILTER(SuitsFilterModel, count_dives_with_suit) CREATE_INSTANCE_METHOD(MultiFilterSortModel) FilterModelBase::FilterModelBase(QObject *parent) : QStringListModel(parent) + , anyChecked(false) { } @@ -401,7 +402,7 @@ bool MultiFilterSortModel::filterAcceptsRow(int source_row, const QModelIndex &s } return showTrip; } - Q_FOREACH (MultiFilterInterface *model, models) { + Q_FOREACH (FilterModelBase *model, models) { if (!model->doFilter(d, index0, sourceModel())) shouldShow = false; } @@ -456,7 +457,7 @@ void MultiFilterSortModel::myInvalidate() #endif } -void MultiFilterSortModel::addFilterModel(MultiFilterInterface *model) +void MultiFilterSortModel::addFilterModel(FilterModelBase *model) { QAbstractItemModel *itemModel = dynamic_cast(model); Q_ASSERT(itemModel); @@ -464,7 +465,7 @@ void MultiFilterSortModel::addFilterModel(MultiFilterInterface *model) connect(itemModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, SLOT(myInvalidate())); } -void MultiFilterSortModel::removeFilterModel(MultiFilterInterface *model) +void MultiFilterSortModel::removeFilterModel(FilterModelBase *model) { QAbstractItemModel *itemModel = dynamic_cast(model); Q_ASSERT(itemModel); @@ -475,7 +476,7 @@ void MultiFilterSortModel::removeFilterModel(MultiFilterInterface *model) void MultiFilterSortModel::clearFilter() { justCleared = true; - Q_FOREACH (MultiFilterInterface *iface, models) { + Q_FOREACH (FilterModelBase *iface, models) { iface->clearFilter(); } justCleared = false; diff --git a/qt-models/filtermodels.h b/qt-models/filtermodels.h index 671ac1d19..b7d65aae2 100644 --- a/qt-models/filtermodels.h +++ b/qt-models/filtermodels.h @@ -7,16 +7,12 @@ #include #include -class MultiFilterInterface { +class FilterModelBase : public QStringListModel { public: - MultiFilterInterface() : anyChecked(false) {} virtual bool doFilter(struct dive *d, QModelIndex &index0, QAbstractItemModel *sourceModel) const = 0; virtual void clearFilter() = 0; std::vector checkState; bool anyChecked; -}; - -class FilterModelBase : public QStringListModel, public MultiFilterInterface { protected: explicit FilterModelBase(QObject *parent = 0); void updateList(const QStringList &new_list); @@ -97,8 +93,8 @@ class MultiFilterSortModel : public QSortFilterProxyModel { public: static MultiFilterSortModel *instance(); virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const; - void addFilterModel(MultiFilterInterface *model); - void removeFilterModel(MultiFilterInterface *model); + void addFilterModel(FilterModelBase *model); + void removeFilterModel(FilterModelBase *model); int divesDisplayed; public slots: @@ -111,7 +107,7 @@ signals: void filterFinished(); private: MultiFilterSortModel(QObject *parent = 0); - QList models; + QList models; bool justCleared; struct dive_site *curr_dive_site; };