Fix spaces showing up with world filter

This commit is contained in:
Nicolas Werner 2021-06-20 13:30:35 +02:00
parent d30446a8b3
commit f8dfc72625
No known key found for this signature in database
GPG key ID: C8D75E610773F2D9

View file

@ -531,6 +531,12 @@ bool
FilteredRoomlistModel::filterAcceptsRow(int sourceRow, const QModelIndex &) const FilteredRoomlistModel::filterAcceptsRow(int sourceRow, const QModelIndex &) const
{ {
if (filterType == FilterBy::Nothing) { if (filterType == FilterBy::Nothing) {
if (sourceModel()
->data(sourceModel()->index(sourceRow, 0), RoomlistModel::IsSpace)
.toBool()) {
return false;
}
if (!hiddenTags.empty()) { if (!hiddenTags.empty()) {
auto tags = auto tags =
sourceModel() sourceModel()
@ -540,7 +546,9 @@ FilteredRoomlistModel::filterAcceptsRow(int sourceRow, const QModelIndex &) cons
for (const auto &t : tags) for (const auto &t : tags)
if (hiddenTags.contains(t)) if (hiddenTags.contains(t))
return false; return false;
} else if (!hiddenSpaces.empty()) { }
if (!hiddenSpaces.empty()) {
auto parents = auto parents =
sourceModel() sourceModel()
->data(sourceModel()->index(sourceRow, 0), RoomlistModel::ParentSpaces) ->data(sourceModel()->index(sourceRow, 0), RoomlistModel::ParentSpaces)
@ -548,25 +556,30 @@ FilteredRoomlistModel::filterAcceptsRow(int sourceRow, const QModelIndex &) cons
for (const auto &t : parents) for (const auto &t : parents)
if (hiddenSpaces.contains(t)) if (hiddenSpaces.contains(t))
return false; return false;
} else if (sourceModel() }
return true;
} else if (filterType == FilterBy::Tag) {
if (sourceModel()
->data(sourceModel()->index(sourceRow, 0), RoomlistModel::IsSpace) ->data(sourceModel()->index(sourceRow, 0), RoomlistModel::IsSpace)
.toBool()) { .toBool()) {
return false; return false;
} }
return true;
} else if (filterType == FilterBy::Tag) {
auto tags = sourceModel() auto tags = sourceModel()
->data(sourceModel()->index(sourceRow, 0), RoomlistModel::Tags) ->data(sourceModel()->index(sourceRow, 0), RoomlistModel::Tags)
.toStringList(); .toStringList();
if (!tags.contains(filterStr)) if (!tags.contains(filterStr))
return false; return false;
else if (!hiddenTags.empty()) {
if (!hiddenTags.empty()) {
for (const auto &t : tags) for (const auto &t : tags)
if (t != filterStr && hiddenTags.contains(t)) if (t != filterStr && hiddenTags.contains(t))
return false; return false;
} else if (!hiddenSpaces.empty()) { }
if (!hiddenSpaces.empty()) {
auto parents = auto parents =
sourceModel() sourceModel()
->data(sourceModel()->index(sourceRow, 0), RoomlistModel::ParentSpaces) ->data(sourceModel()->index(sourceRow, 0), RoomlistModel::ParentSpaces)
@ -574,41 +587,47 @@ FilteredRoomlistModel::filterAcceptsRow(int sourceRow, const QModelIndex &) cons
for (const auto &t : parents) for (const auto &t : parents)
if (hiddenSpaces.contains(t)) if (hiddenSpaces.contains(t))
return false; return false;
} else if (sourceModel()
->data(sourceModel()->index(sourceRow, 0), RoomlistModel::IsSpace)
.toBool()) {
return false;
} }
return true; return true;
} else if (filterType == FilterBy::Space) { } else if (filterType == FilterBy::Space) {
auto parents =
sourceModel()
->data(sourceModel()->index(sourceRow, 0), RoomlistModel::ParentSpaces)
.toStringList();
auto tags = sourceModel()
->data(sourceModel()->index(sourceRow, 0), RoomlistModel::Tags)
.toStringList();
if (filterStr == sourceModel() if (filterStr == sourceModel()
->data(sourceModel()->index(sourceRow, 0), RoomlistModel::RoomId) ->data(sourceModel()->index(sourceRow, 0), RoomlistModel::RoomId)
.toString()) .toString())
return true; return true;
else if (!parents.contains(filterStr))
auto parents =
sourceModel()
->data(sourceModel()->index(sourceRow, 0), RoomlistModel::ParentSpaces)
.toStringList();
if (!parents.contains(filterStr))
return false; return false;
else if (!hiddenTags.empty()) {
if (!hiddenTags.empty()) {
auto tags =
sourceModel()
->data(sourceModel()->index(sourceRow, 0), RoomlistModel::Tags)
.toStringList();
for (const auto &t : tags) for (const auto &t : tags)
if (hiddenTags.contains(t)) if (hiddenTags.contains(t))
return false; return false;
} else if (!hiddenSpaces.empty()) { }
if (!hiddenSpaces.empty()) {
for (const auto &t : parents) for (const auto &t : parents)
if (hiddenSpaces.contains(t)) if (hiddenSpaces.contains(t))
return false; return false;
} else if (sourceModel() }
if (sourceModel()
->data(sourceModel()->index(sourceRow, 0), RoomlistModel::IsSpace) ->data(sourceModel()->index(sourceRow, 0), RoomlistModel::IsSpace)
.toBool() && .toBool() &&
!parents.contains(filterStr)) { !parents.contains(filterStr)) {
return false; return false;
} }
return true; return true;
} else { } else {
return true; return true;