From fdb9d7ab40da1d6b40ae11c3988af7082b6bc7cd Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sat, 23 Jan 2021 00:30:45 +0100 Subject: Allow users to hide rooms with specific tags --- src/CommunitiesList.cpp | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'src/CommunitiesList.cpp') diff --git a/src/CommunitiesList.cpp b/src/CommunitiesList.cpp index f3af9932..38d27864 100644 --- a/src/CommunitiesList.cpp +++ b/src/CommunitiesList.cpp @@ -135,6 +135,14 @@ CommunitiesList::addCommunity(const std::string &group_id) &CommunitiesListItem::clicked, this, &CommunitiesList::highlightSelectedCommunity); + connect(list_item, &CommunitiesListItem::isDisabledChanged, this, [this]() { + for (const auto &community : communities_) { + if (community.second->isPressed()) { + emit highlightSelectedCommunity(community.first); + break; + } + } + }); if (group_id.empty() || group_id.front() != '+') return; @@ -157,7 +165,9 @@ CommunitiesList::addCommunity(const std::string &group_id) connect(this, &CommunitiesList::groupRoomsRetrieved, this, - [this](const QString &id, const std::map &rooms) { + [this](const QString &id, const std::set &rooms) { + nhlog::ui()->info( + "Fetched rooms for {}: {}", id.toStdString(), rooms.size()); if (communities_.find(id) == communities_.end()) return; @@ -179,9 +189,9 @@ CommunitiesList::addCommunity(const std::string &group_id) return; } - std::map room_ids; + std::set room_ids; for (const auto &room : res.at("chunk")) - room_ids.emplace(QString::fromStdString(room.at("room_id")), true); + room_ids.emplace(QString::fromStdString(room.at("room_id"))); emit groupRoomsRetrieved(id, room_ids); }); @@ -256,7 +266,7 @@ CommunitiesList::fetchCommunityAvatar(const QString &id, const QString &avatarUr }); } -std::map +std::set CommunitiesList::roomList(const QString &id) const { if (communityExists(id)) @@ -277,6 +287,18 @@ CommunitiesList::currentTags() const return tags; } +std::set +CommunitiesList::hiddenTagsAndCommunities() const +{ + std::set hiddenTags; + for (auto &entry : communities_) { + if (entry.second->isDisabled()) + hiddenTags.insert(entry.first); + } + + return hiddenTags; +} + void CommunitiesList::sortEntries() { -- cgit 1.5.1