summaryrefslogtreecommitdiffstats
path: root/desktop-widgets
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-01-22 09:32:39 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-01-26 11:13:01 -0800
commitde4e6792c67992747d3deecd080ca95a7b15e81d (patch)
tree33c28460a0e9ca8eda0f8e99f462f40d002f2ef7 /desktop-widgets
parentc383079626178269bf0a3afefe6828a1c44d4d76 (diff)
downloadsubsurface-de4e6792c67992747d3deecd080ca95a7b15e81d.tar.gz
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 <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets')
-rw-r--r--desktop-widgets/filterwidget2.cpp20
-rw-r--r--desktop-widgets/filterwidget2.ui59
2 files changed, 62 insertions, 17 deletions
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 @@
</property>
</widget>
</item>
- <item row="8" column="2" colspan="7">
+ <item row="8" column="2" colspan="6">
<widget class="QLineEdit" name="tags"/>
</item>
<item row="1" column="2">
@@ -62,16 +62,6 @@
<item row="3" column="6">
<widget class="QDoubleSpinBox" name="minWaterTemp"/>
</item>
- <item row="12" column="2" colspan="7">
- <widget class="QCheckBox" name="invertFilter">
- <property name="toolTip">
- <string>Display dives that will not match the search, only applies to tags, people, location and equipment</string>
- </property>
- <property name="text">
- <string>Invert filter</string>
- </property>
- </widget>
- </item>
<item row="2" column="7">
<widget class="QLabel" name="label_16">
<property name="text">
@@ -131,7 +121,7 @@
</property>
</widget>
</item>
- <item row="10" column="2" colspan="7">
+ <item row="10" column="2" colspan="6">
<widget class="QLineEdit" name="location"/>
</item>
<item row="11" column="0">
@@ -147,7 +137,7 @@
<item row="4" column="8">
<widget class="QDoubleSpinBox" name="maxAirTemp"/>
</item>
- <item row="11" column="2" colspan="7">
+ <item row="11" column="2" colspan="6">
<widget class="QLineEdit" name="equipment"/>
</item>
<item row="3" column="0">
@@ -157,7 +147,7 @@
</property>
</widget>
</item>
- <item row="9" column="2" colspan="7">
+ <item row="9" column="2" colspan="6">
<widget class="QLineEdit" name="people"/>
</item>
<item row="4" column="7">
@@ -301,6 +291,46 @@
</property>
</widget>
</item>
+ <item row="8" column="8">
+ <widget class="QToolButton" name="tagsNegate">
+ <property name="text">
+ <string>¬</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="9" column="8">
+ <widget class="QToolButton" name="peopleNegate">
+ <property name="text">
+ <string>¬</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="10" column="8">
+ <widget class="QToolButton" name="locationNegate">
+ <property name="text">
+ <string>¬</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="11" column="8">
+ <widget class="QToolButton" name="equipmentNegate">
+ <property name="text">
+ <string>¬</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
<customwidgets>
@@ -326,7 +356,6 @@
<tabstop>people</tabstop>
<tabstop>location</tabstop>
<tabstop>equipment</tabstop>
- <tabstop>invertFilter</tabstop>
</tabstops>
<resources/>
<connections/>