diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2019-11-30 03:02:11 -0500 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2019-11-30 03:02:11 -0500 |
| commit | f463c5494362a0fa75c581e59192e2640ec10f7e (patch) | |
| tree | b6375d6d04fb941a6b13e082f17323893ae4a2c3 /src | |
| parent | ed14d5510d932362f8e232496b824729e096d3cf (diff) | |
added context menu items so set/unset inverted flag
Diffstat (limited to 'src')
| -rw-r--r-- | src/filterlist.cpp | 33 | ||||
| -rw-r--r-- | src/filterlist.h | 1 |
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, |
