add FriendListManager block filtering support

reviewable/pr6623/r10
Anthony Bilinski 2022-04-07 15:15:33 -07:00
parent ff194cf9cf
commit ced3b94a3b
No known key found for this signature in database
GPG Key ID: 2AA8E0DA1B31FB3C
5 changed files with 24 additions and 16 deletions

View File

@ -87,15 +87,17 @@ void FriendListManager::resetParents()
}
void FriendListManager::setFilter(const QString &searchString, bool hideOnline, bool hideOffline,
bool hideGroups)
bool hideBlocked, bool hideGroups)
{
if (filterParams.searchString == searchString && filterParams.hideOnline == hideOnline &&
filterParams.hideOffline == hideOffline && filterParams.hideGroups == hideGroups) {
filterParams.hideOffline == hideOffline && filterParams.hideBlocked == hideBlocked &&
filterParams.hideGroups == hideGroups) {
return;
}
filterParams.searchString = searchString;
filterParams.hideOnline = hideOnline;
filterParams.hideOffline = hideOffline;
filterParams.hideBlocked = hideBlocked;
filterParams.hideGroups = hideGroups;
setSortRequired();
@ -126,6 +128,10 @@ void FriendListManager::applyFilter()
if (filterParams.hideGroups && itemTmp->isGroup()) {
itemTmp->setWidgetVisible(false);
}
if (filterParams.hideBlocked && itemTmp->isBlocked()) {
itemTmp->setWidgetVisible(false);
}
}
if (filterParams.hideOnline && filterParams.hideOffline) {

View File

@ -46,7 +46,7 @@ public:
void sortByActivity();
void resetParents();
void setFilter(const QString& searchString, bool hideOnline,
bool hideOffline, bool hideGroups);
bool hideOffline, bool hideBlocked, bool hideGroups);
void applyFilter();
void updatePositions();
void setSortRequired();
@ -61,6 +61,7 @@ private:
QString searchString = "";
bool hideOnline = false;
bool hideOffline = false;
bool hideBlocked = false;
bool hideGroups = false;
} filterParams;

View File

@ -417,9 +417,9 @@ void FriendListWidget::removeCircleWidget(CircleWidget* widget)
}
void FriendListWidget::searchChatrooms(const QString& searchString, bool hideOnline,
bool hideOffline, bool hideGroups)
bool hideOffline, bool hideBlocked, bool hideGroups)
{
manager->setFilter(searchString, hideOnline, hideOffline, hideGroups);
manager->setFilter(searchString, hideOnline, hideOffline, hideBlocked, hideGroups);
}
void FriendListWidget::renameGroupWidget(GroupWidget* groupWidget, const QString& newName)

View File

@ -65,7 +65,8 @@ public:
void addCircleWidget(FriendWidget* widget = nullptr);
void removeCircleWidget(CircleWidget* widget);
void searchChatrooms(const QString& searchString, bool hideOnline = false,
bool hideOffline = false, bool hideGroups = false);
bool hideOffline = false, bool hideBlocked = false,
bool hideGroups = false);
void cycleChats(GenericChatroomWidget* activeChatroomWidget, bool forward);

View File

@ -387,12 +387,12 @@ void TestFriendListManager::testSetFilter()
listBuilder.addOfflineFriends()->addOnlineFriends()->addGroups()->buildUnsorted());
QSignalSpy spy(manager.get(), &FriendListManager::itemsChanged);
manager->setFilter("", false, false, false);
manager->setFilter("", false, false, false, false);
QCOMPARE(spy.count(), 0);
manager->setFilter("Test", true, false, false);
manager->setFilter("Test", true, false, false);
manager->setFilter("Test", true, false, false, false);
manager->setFilter("Test", true, false, false, false);
QCOMPARE(spy.count(), 1);
}
@ -406,7 +406,7 @@ void TestFriendListManager::testApplyFilterSearchString()
QString testNameA = "NOITEMSWITHTHISNAME";
QString testNameB = "Test Name B";
manager->sortByName();
manager->setFilter(testNameA, false, false, false);
manager->setFilter(testNameA, false, false, false, false);
manager->applyFilter();
resultVec = manager->getItems();
@ -435,7 +435,7 @@ void TestFriendListManager::testApplyFilterSearchString()
}
}
manager->setFilter("", false, false, false);
manager->setFilter("", false, false, false, false);
manager->applyFilter();
resultVec = manager->getItems();
@ -454,7 +454,7 @@ void TestFriendListManager::testApplyFilterByStatus()
auto groupItems = listBuilder.addGroups()->buildSortedByName();
manager->sortByName();
manager->setFilter("", true /*hideOnline*/, false /*hideOffline*/, false /*hideGroups*/);
manager->setFilter("", true /*hideOnline*/, false /*hideOffline*/, false /*hideBlocked*/, false /*hideGroups*/);
manager->applyFilter();
for (auto item : manager->getItems()) {
@ -465,7 +465,7 @@ void TestFriendListManager::testApplyFilterByStatus()
}
}
manager->setFilter("", false /*hideOnline*/, true /*hideOffline*/, false /*hideGroups*/);
manager->setFilter("", false /*hideOnline*/, true /*hideOffline*/, false /*hideBlocked*/, false /*hideGroups*/);
manager->applyFilter();
for (auto item : manager->getItems()) {
@ -476,7 +476,7 @@ void TestFriendListManager::testApplyFilterByStatus()
}
}
manager->setFilter("", false /*hideOnline*/, false /*hideOffline*/, true /*hideGroups*/);
manager->setFilter("", false /*hideOnline*/, false /*hideOffline*/, false /*hideBlocked*/, true /*hideGroups*/);
manager->applyFilter();
for (auto item : manager->getItems()) {
@ -487,14 +487,14 @@ void TestFriendListManager::testApplyFilterByStatus()
}
}
manager->setFilter("", true /*hideOnline*/, true /*hideOffline*/, true /*hideGroups*/);
manager->setFilter("", true /*hideOnline*/, true /*hideOffline*/, false /*hideBlocked*/, true /*hideGroups*/);
manager->applyFilter();
for (auto item : manager->getItems()) {
QCOMPARE(item->widgetIsVisible(), false);
}
manager->setFilter("", false /*hideOnline*/, false /*hideOffline*/, false /*hideGroups*/);
manager->setFilter("", false /*hideOnline*/, false /*hideOffline*/, false /*hideBlocked*/, false /*hideGroups*/);
manager->applyFilter();
for (auto item : manager->getItems()) {