mirror of https://github.com/qTox/qTox
add FriendListManager block filtering support
parent
ff194cf9cf
commit
ced3b94a3b
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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()) {
|
||||
|
|
Loading…
Reference in New Issue