summary refs log tree commit diff
path: root/src/CommunitiesList.cpp
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2021-01-23 00:30:45 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2021-01-23 00:49:28 +0100
commitfdb9d7ab40da1d6b40ae11c3988af7082b6bc7cd (patch)
tree25e3cff2e5824c6b94c10d349b925f91623f4cc5 /src/CommunitiesList.cpp
parentFix font tags showing up in playable media messages (diff)
downloadnheko-fdb9d7ab40da1d6b40ae11c3988af7082b6bc7cd.tar.xz
Allow users to hide rooms with specific tags
Diffstat (limited to 'src/CommunitiesList.cpp')
-rw-r--r--src/CommunitiesList.cpp30
1 files changed, 26 insertions, 4 deletions
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<QString, bool> &rooms) { + [this](const QString &id, const std::set<QString> &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<QString, bool> room_ids; + std::set<QString> 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<QString, bool> +std::set<QString> CommunitiesList::roomList(const QString &id) const { if (communityExists(id)) @@ -277,6 +287,18 @@ CommunitiesList::currentTags() const return tags; } +std::set<QString> +CommunitiesList::hiddenTagsAndCommunities() const +{ + std::set<QString> hiddenTags; + for (auto &entry : communities_) { + if (entry.second->isDisabled()) + hiddenTags.insert(entry.first); + } + + return hiddenTags; +} + void CommunitiesList::sortEntries() {