mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
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 <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
1a4e7ad0dd
commit
7eed752ba1
2 changed files with 9 additions and 12 deletions
|
@ -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<QAbstractItemModel *>(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<QAbstractItemModel *>(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;
|
||||
|
|
|
@ -7,16 +7,12 @@
|
|||
#include <stdint.h>
|
||||
#include <vector>
|
||||
|
||||
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<char> 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<MultiFilterInterface *> models;
|
||||
QList<FilterModelBase *> models;
|
||||
bool justCleared;
|
||||
struct dive_site *curr_dive_site;
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue