diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-05-09 02:12:15 -0400 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-05-09 02:12:15 -0400 |
commit | ae3b25674635257b70f5ad59b71abaf0019c6b4e (patch) | |
tree | 4320eaf2e0fb4196453ca8bbce6b2e386c9b88a8 /components | |
parent | bf26e49f2c7868f5bfdeea30db9e0fb3a7af440d (diff) | |
download | abaddon-portaudio-ae3b25674635257b70f5ad59b71abaf0019c6b4e.tar.gz abaddon-portaudio-ae3b25674635257b70f5ad59b71abaf0019c6b4e.zip |
friends: handle RELATIONSHIP_ADD events
Diffstat (limited to 'components')
-rw-r--r-- | components/friendslist.cpp | 14 | ||||
-rw-r--r-- | components/friendslist.hpp | 4 |
2 files changed, 16 insertions, 2 deletions
diff --git a/components/friendslist.cpp b/components/friendslist.cpp index 2221547..14e4538 100644 --- a/components/friendslist.cpp +++ b/components/friendslist.cpp @@ -7,6 +7,7 @@ FriendsList::FriendsList() , m_filter_mode(FILTER_FRIENDS) { auto &discord = Abaddon::Get().GetDiscordClient(); + discord.signal_relationship_add().connect(sigc::mem_fun(*this, &FriendsList::OnRelationshipAdd)); discord.signal_relationship_remove().connect(sigc::mem_fun(*this, &FriendsList::OnRelationshipRemove)); for (const auto &[id, type] : discord.GetRelationships()) { @@ -71,6 +72,19 @@ FriendsList::FriendsList() m_list.show(); } +void FriendsList::OnRelationshipAdd(const RelationshipAddData &data) { + for (auto *row_ : m_list.get_children()) { + auto *row = dynamic_cast<FriendsListFriendRow *>(row_); + if (row == nullptr || row->ID != data.ID) continue; + delete row; + break; + } + + auto *row = Gtk::manage(new FriendsListFriendRow(data.Type, data.User)); + m_list.add(*row); + row->show(); +} + void FriendsList::OnRelationshipRemove(Snowflake id, RelationshipType type) { for (auto *row_ : m_list.get_children()) { auto *row = dynamic_cast<FriendsListFriendRow *>(row_); diff --git a/components/friendslist.hpp b/components/friendslist.hpp index c161de4..dcd5e74 100644 --- a/components/friendslist.hpp +++ b/components/friendslist.hpp @@ -1,7 +1,6 @@ #pragma once #include <gtkmm.h> -#include "../discord/relationship.hpp" -#include "../discord/activity.hpp" +#include "../discord/objects.hpp" class FriendsListAddComponent : public Gtk::Box { public: @@ -20,6 +19,7 @@ public: FriendsList(); private: + void OnRelationshipAdd(const RelationshipAddData &data); void OnRelationshipRemove(Snowflake id, RelationshipType type); enum FilterMode { |