summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/filterlist.cpp33
-rw-r--r--src/filterlist.h1
2 files changed, 32 insertions, 2 deletions
diff --git a/src/filterlist.cpp b/src/filterlist.cpp
index 31783c88..8f297af6 100644
--- a/src/filterlist.cpp
+++ b/src/filterlist.cpp
@@ -50,6 +50,11 @@ public:
return m_checkbox->isChecked();
}
+ void setInverted(bool b)
+ {
+ m_checkbox->setChecked(b);
+ }
+
private:
const int IDRole = Qt::UserRole;
const int TypeRole = Qt::UserRole + 1;
@@ -223,7 +228,7 @@ void FilterList::onSelection()
const QModelIndexList indices = ui->filters->selectionModel()->selectedRows();
std::vector<Criteria> criteria;
- for (auto* item: ui->filters->selectedItems()) {
+ for (auto* item : ui->filters->selectedItems()) {
const auto* ci = dynamic_cast<CriteriaItem*>(item);
if (!ci) {
continue;
@@ -242,8 +247,11 @@ void FilterList::onSelection()
void FilterList::onContextMenu(const QPoint &pos)
{
QMenu menu;
+ menu.addAction(tr("Deselect filters"), [&]{ clearSelection(); });
+ menu.addAction(tr("Set inverted"), [&]{ toggleInverted(true); });
+ menu.addAction(tr("Unset inverted"), [&]{ toggleInverted(false); });
+ menu.addSeparator();
menu.addAction(tr("Edit Categories..."), [&]{ editCategories(); });
- menu.addAction(tr("Deselect filter"), [&]{ clearSelection(); });
menu.exec(ui->filters->viewport()->mapToGlobal(pos));
}
@@ -257,6 +265,27 @@ void FilterList::editCategories()
}
}
+void FilterList::toggleInverted(bool b)
+{
+ bool changed = false;
+
+ for (auto* item : ui->filters->selectedItems()) {
+ auto* ci = dynamic_cast<CriteriaItem*>(item);
+ if (!ci) {
+ continue;
+ }
+
+ if (ci->inverse() != b) {
+ ci->setInverted(b);
+ changed = true;
+ }
+ }
+
+ if (changed) {
+ onSelection();
+ }
+}
+
void FilterList::onCriteriaChanged()
{
const auto mode = ui->filtersAnd->isChecked() ?
diff --git a/src/filterlist.h b/src/filterlist.h
index 72fe3b5f..1fd0942a 100644
--- a/src/filterlist.h
+++ b/src/filterlist.h
@@ -33,6 +33,7 @@ private:
void onCriteriaChanged();
void editCategories();
+ void toggleInverted(bool b);
QTreeWidgetItem* addCriteriaItem(
QTreeWidgetItem *root, const QString &name, int categoryID,