summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2021-05-09 02:12:15 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2021-05-09 02:12:15 -0400
commitae3b25674635257b70f5ad59b71abaf0019c6b4e (patch)
tree4320eaf2e0fb4196453ca8bbce6b2e386c9b88a8 /components
parentbf26e49f2c7868f5bfdeea30db9e0fb3a7af440d (diff)
downloadabaddon-portaudio-ae3b25674635257b70f5ad59b71abaf0019c6b4e.tar.gz
abaddon-portaudio-ae3b25674635257b70f5ad59b71abaf0019c6b4e.zip
friends: handle RELATIONSHIP_ADD events
Diffstat (limited to 'components')
-rw-r--r--components/friendslist.cpp14
-rw-r--r--components/friendslist.hpp4
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 {