diff options
Diffstat (limited to 'components/friendslist.cpp')
-rw-r--r-- | components/friendslist.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/components/friendslist.cpp b/components/friendslist.cpp index 4486d97..9a8efe8 100644 --- a/components/friendslist.cpp +++ b/components/friendslist.cpp @@ -77,6 +77,7 @@ FriendsList::FriendsList() FriendsListFriendRow *FriendsList::MakeRow(const UserData &user, RelationshipType type) { auto *row = Gtk::manage(new FriendsListFriendRow(type, user)); row->signal_action_remove().connect(sigc::bind(sigc::mem_fun(*this, &FriendsList::OnActionRemove), user.ID)); + row->signal_action_accept().connect(sigc::bind(sigc::mem_fun(*this, &FriendsList::OnActionAccept), user.ID)); return row; } @@ -102,6 +103,17 @@ void FriendsList::OnRelationshipRemove(Snowflake id, RelationshipType type) { } } +void FriendsList::OnActionAccept(Snowflake id) { + const auto cb = [this](bool success, DiscordError code) { + if (!success) { + Gtk::MessageDialog dlg(*dynamic_cast<Gtk::Window *>(get_toplevel()), "Failed to accept", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); + dlg.set_position(Gtk::WIN_POS_CENTER); + dlg.run(); + } + }; + Abaddon::Get().GetDiscordClient().PutRelationship(id, sigc::track_obj(cb, *this)); +} + void FriendsList::OnActionRemove(Snowflake id) { auto &discord = Abaddon::Get().GetDiscordClient(); const auto user = discord.GetUser(id); @@ -316,7 +328,7 @@ FriendsListFriendRow::type_signal_remove FriendsListFriendRow::signal_action_rem } FriendsListFriendRow::type_signal_accept FriendsListFriendRow::signal_action_accept() { - return type_signal_accept(); + return m_signal_accept; } FriendsListWindow::FriendsListWindow() { |