Filter: implement any-of mode

Add an additional mode to the tags, people and location filters: any_of.
Replace the original invert-bool by an enum.
Move the common code into a distinct function.

Reported-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2019-02-19 16:31:21 +01:00 committed by Dirk Hohndel
parent ce669adc53
commit e550a788f0
4 changed files with 66 additions and 31 deletions

View file

@ -15,6 +15,13 @@ struct dive;
struct dive_trip;
struct FilterData {
// The mode ids are chosen such that they can be directly converted from / to combobox indices.
enum class Mode {
ALL_OF = 0,
ANY_OF = 1,
NONE_OF = 2
};
bool validFilter = false;
int minVisibility = 0;
int maxVisibility = 5;
@ -35,10 +42,10 @@ struct FilterData {
QStringList people;
QStringList location;
QStringList equipment;
bool tagsNegate = false;
bool peopleNegate = false;
bool locationNegate = false;
bool equipmentNegate = false;
Mode tagsMode = Mode::ALL_OF;
Mode peopleMode = Mode::ALL_OF;
Mode locationMode = Mode::ALL_OF;
Mode equipmentMode = Mode::ALL_OF;
bool logged = true;
bool planned = true;
};