diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2019-12-12 22:50:01 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-12-12 22:50:01 -0500 |
| commit | 8cf24923bb510360d18f6dd0bd1a2a57ea1a2bca (patch) | |
| tree | a4ec63db3781b2d76592b14b0581ab6c3c840bda /src/filterlist.cpp | |
| parent | 1d0b202ee64fe12d23922e816812749e8fe40bf6 (diff) | |
| parent | 0f67ee4fcd8a2735751eaed738244327e5571239 (diff) | |
Merge pull request #936 from isanae/rc3-fixes
rc3 fixes
Diffstat (limited to 'src/filterlist.cpp')
| -rw-r--r-- | src/filterlist.cpp | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/src/filterlist.cpp b/src/filterlist.cpp index 6a85bcaa..69aca4c5 100644 --- a/src/filterlist.cpp +++ b/src/filterlist.cpp @@ -275,10 +275,7 @@ void FilterList::addSpecialCriteria(int type) void FilterList::refresh() { - QStringList selectedItems; - for (QTreeWidgetItem *item : ui->filters->selectedItems()) { - selectedItems.append(item->text(0)); - } + const auto oldSelection = selectedCriteria(); ui->filters->clear(); @@ -315,33 +312,30 @@ void FilterList::refresh() } addCategoryCriteria(nullptr, categoriesUsed, 0); - - for (const QString &item : selectedItems) { - QList<QTreeWidgetItem*> matches = ui->filters->findItems( - item, Qt::MatchFixedString | Qt::MatchRecursive); - - if (matches.size() > 0) { - matches.at(0)->setSelected(true); - } - } + setSelection(oldSelection); } void FilterList::setSelection(const std::vector<Criteria>& criteria) { for (int i = 0; i < ui->filters->topLevelItemCount(); ++i) { - const auto* item = dynamic_cast<CriteriaItem*>( - ui->filters->topLevelItem(i)); - + auto* item = dynamic_cast<CriteriaItem*>(ui->filters->topLevelItem(i)); if (!item) { continue; } + bool found = false; + for (auto&& c : criteria) { if (item->type() == c.type && item->id() == c.id) { - ui->filters->setCurrentItem(ui->filters->topLevelItem(i)); + item->setState(c.inverse ? CriteriaItem::Inverted : CriteriaItem::Active); + found = true; break; } } + + if (!found) { + item->setState(CriteriaItem::Inactive); + } } } @@ -378,7 +372,7 @@ bool FilterList::cycleItem(QTreeWidgetItem* item, int direction) return true; } -void FilterList::checkCriteria() +std::vector<ModListSortProxy::Criteria> FilterList::selectedCriteria() const { std::vector<Criteria> criteria; @@ -395,7 +389,12 @@ void FilterList::checkCriteria() } } - emit criteriaChanged(criteria); + return criteria; +} + +void FilterList::checkCriteria() +{ + emit criteriaChanged(selectedCriteria()); } void FilterList::editCategories() @@ -404,6 +403,7 @@ void FilterList::editCategories() if (dialog.exec() == QDialog::Accepted) { dialog.commitChanges(); + refresh(); } } |
