summaryrefslogtreecommitdiffstats
path: root/qt-models
diff options
context:
space:
mode:
Diffstat (limited to 'qt-models')
-rw-r--r--qt-models/filtermodels.cpp15
-rw-r--r--qt-models/filtermodels.h2
2 files changed, 17 insertions, 0 deletions
diff --git a/qt-models/filtermodels.cpp b/qt-models/filtermodels.cpp
index 26759571a..0dece6f8f 100644
--- a/qt-models/filtermodels.cpp
+++ b/qt-models/filtermodels.cpp
@@ -100,6 +100,21 @@ void FilterModelBase::clearFilter()
emit dataChanged(createIndex(0,0), createIndex(rowCount()-1, 0));
}
+void FilterModelBase::selectAll()
+{
+ std::fill(checkState.begin(), checkState.end(), true);
+ anyChecked = true;
+ emit dataChanged(createIndex(0,0), createIndex(rowCount()-1, 0));
+}
+
+void FilterModelBase::invertSelection()
+{
+ for (char &b: checkState)
+ b = !b;
+ anyChecked = std::any_of(checkState.begin(), checkState.end(), [](char b){return !!b;});
+ emit dataChanged(createIndex(0,0), createIndex(rowCount()-1, 0));
+}
+
SuitsFilterModel::SuitsFilterModel(QObject *parent) : FilterModelBase(parent)
{
}
diff --git a/qt-models/filtermodels.h b/qt-models/filtermodels.h
index d0c3a215a..9db5e5a97 100644
--- a/qt-models/filtermodels.h
+++ b/qt-models/filtermodels.h
@@ -11,6 +11,8 @@ class FilterModelBase : public QStringListModel {
public:
virtual bool doFilter(struct dive *d, QModelIndex &index0, QAbstractItemModel *sourceModel) const = 0;
void clearFilter();
+ void selectAll();
+ void invertSelection();
std::vector<char> checkState;
bool anyChecked;
protected: