From de4e6792c67992747d3deecd080ca95a7b15e81d Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Tue, 22 Jan 2019 09:32:39 +0100 Subject: Filter: quick implementation of negation Add negate buttons to the Tags, People, Location and Equipment filters. Currently, if nothing is entered the filter is ignored whether negate is on or off. One might think about filtering all dives without tags, etc. instead. Signed-off-by: Berthold Stoeger --- desktop-widgets/filterwidget2.cpp | 20 +++++++++++-- desktop-widgets/filterwidget2.ui | 59 +++++++++++++++++++++++++++++---------- 2 files changed, 62 insertions(+), 17 deletions(-) (limited to 'desktop-widgets') diff --git a/desktop-widgets/filterwidget2.cpp b/desktop-widgets/filterwidget2.cpp index c27d22062..71e7de83d 100644 --- a/desktop-widgets/filterwidget2.cpp +++ b/desktop-widgets/filterwidget2.cpp @@ -20,8 +20,8 @@ FilterWidget2::FilterWidget2(QWidget* parent) : QWidget(parent), ignoreSignal(fa // TODO: unhide this when we discover how to search for equipment. ui.equipment->hide(); + ui.equipmentNegate->hide(); ui.labelEquipment->hide(); - ui.invertFilter->hide(); ui.fromDate->setDisplayFormat(prefs.date_format); ui.fromTime->setDisplayFormat(prefs.time_format); @@ -77,12 +77,21 @@ FilterWidget2::FilterWidget2(QWidget* parent) : QWidget(parent), ignoreSignal(fa connect(ui.tags, &QLineEdit::textChanged, this, &FilterWidget2::updateFilter); + connect(ui.tagsNegate, &QToolButton::toggled, + this, &FilterWidget2::updateFilter); + connect(ui.people, &QLineEdit::textChanged, this, &FilterWidget2::updateFilter); + connect(ui.peopleNegate, &QToolButton::toggled, + this, &FilterWidget2::updateFilter); + connect(ui.location, &QLineEdit::textChanged, this, &FilterWidget2::updateFilter); + connect(ui.locationNegate, &QToolButton::toggled, + this, &FilterWidget2::updateFilter); + connect(ui.logged, SIGNAL(stateChanged(int)), this, SLOT(updateLogged(int))); connect(ui.planned, SIGNAL(stateChanged(int)), this, SLOT(updatePlanned(int))); @@ -121,6 +130,10 @@ void FilterWidget2::clearFilter() ui.fromTime->setTime(filterData.fromTime); ui.toDate->setDate(filterData.toDate.date()); ui.toTime->setTime(filterData.toTime); + ui.tagsNegate->setChecked(filterData.tagsNegate); + ui.peopleNegate->setChecked(filterData.peopleNegate); + ui.locationNegate->setChecked(filterData.locationNegate); + ui.equipmentNegate->setChecked(filterData.equipmentNegate); ignoreSignal = false; filterDataChanged(filterData); @@ -162,7 +175,10 @@ void FilterWidget2::updateFilter() filterData.people = ui.people->text().split(",", QString::SkipEmptyParts); filterData.location = ui.location->text().split(",", QString::SkipEmptyParts); filterData.equipment = ui.equipment->text().split(",", QString::SkipEmptyParts); - filterData.invertFilter = ui.invertFilter->isChecked(); + filterData.tagsNegate = ui.tagsNegate->isChecked(); + filterData.peopleNegate = ui.peopleNegate->isChecked(); + filterData.locationNegate = ui.locationNegate->isChecked(); + filterData.equipmentNegate = ui.equipmentNegate->isChecked(); filterData.logged = ui.logged->isChecked(); filterData.planned = ui.planned->isChecked(); diff --git a/desktop-widgets/filterwidget2.ui b/desktop-widgets/filterwidget2.ui index 0822a582f..84c543640 100644 --- a/desktop-widgets/filterwidget2.ui +++ b/desktop-widgets/filterwidget2.ui @@ -21,7 +21,7 @@ - + @@ -62,16 +62,6 @@ - - - - Display dives that will not match the search, only applies to tags, people, location and equipment - - - Invert filter - - - @@ -131,7 +121,7 @@ - + @@ -147,7 +137,7 @@ - + @@ -157,7 +147,7 @@ - + @@ -301,6 +291,46 @@ + + + + ¬ + + + true + + + + + + + ¬ + + + true + + + + + + + ¬ + + + true + + + + + + + ¬ + + + true + + + @@ -326,7 +356,6 @@ people location equipment - invertFilter -- cgit v1.2.3-70-g09d2