summaryrefslogtreecommitdiff
path: root/src/filterlist.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-12-12 22:50:01 -0500
committerGitHub <noreply@github.com>2019-12-12 22:50:01 -0500
commit8cf24923bb510360d18f6dd0bd1a2a57ea1a2bca (patch)
treea4ec63db3781b2d76592b14b0581ab6c3c840bda /src/filterlist.cpp
parent1d0b202ee64fe12d23922e816812749e8fe40bf6 (diff)
parent0f67ee4fcd8a2735751eaed738244327e5571239 (diff)
Merge pull request #936 from isanae/rc3-fixes
rc3 fixes
Diffstat (limited to 'src/filterlist.cpp')
-rw-r--r--src/filterlist.cpp38
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();
}
}