summaryrefslogtreecommitdiff
path: root/src/filterlist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/filterlist.cpp')
-rw-r--r--src/filterlist.cpp30
1 files changed, 24 insertions, 6 deletions
diff --git a/src/filterlist.cpp b/src/filterlist.cpp
index 36cdacd0..66a9aed0 100644
--- a/src/filterlist.cpp
+++ b/src/filterlist.cpp
@@ -78,7 +78,7 @@ FilterList::FilterList(Ui::MainWindow* ui, CategoryFactory& factory)
connect(
ui->filtersClear, &QPushButton::clicked,
- [&]{ clearSelection(); });
+ [&]{ clear(); });
connect(
ui->filtersAnd, &QCheckBox::toggled,
@@ -241,20 +241,23 @@ void FilterList::onSelection()
});
}
- ui->filtersClear->setEnabled(!criteria.empty());
-
emit criteriaChanged(criteria);
}
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); });
+
+ QAction* set = menu.addAction(tr("Set inverted"), [&]{ toggleInverted(true); });
+ QAction* unset = menu.addAction(tr("Unset inverted"), [&]{ toggleInverted(false); });
menu.addSeparator();
menu.addAction(tr("Edit Categories..."), [&]{ editCategories(); });
+ if (ui->filters->selectedItems().empty()) {
+ set->setEnabled(false);
+ unset->setEnabled(false);
+ }
+
menu.exec(ui->filters->viewport()->mapToGlobal(pos));
}
@@ -267,6 +270,21 @@ void FilterList::editCategories()
}
}
+void FilterList::clear()
+{
+ const auto count = ui->filters->topLevelItemCount();
+ for (int i=0; i<count; ++i) {
+ auto* ci = dynamic_cast<CriteriaItem*>(ui->filters->topLevelItem(i));
+ if (!ci) {
+ continue;
+ }
+
+ ci->setInverted(false);
+ }
+
+ clearSelection();
+}
+
void FilterList::toggleInverted(bool b)
{
bool changed = false;