diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-09-21 18:47:34 -0400 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-09-21 18:47:34 -0400 |
commit | 3b4edbfa16861b5013663396e1af827ba889e9df (patch) | |
tree | 51686baf5997c32a3e3aac0aa20368c404f6f3f1 /components | |
parent | 23b32f8de957204597308f2c1823d5e89f632610 (diff) | |
download | abaddon-portaudio-3b4edbfa16861b5013663396e1af827ba889e9df.tar.gz abaddon-portaudio-3b4edbfa16861b5013663396e1af827ba889e9df.zip |
join/leave guild
Diffstat (limited to 'components')
-rw-r--r-- | components/channels.cpp | 14 | ||||
-rw-r--r-- | components/channels.hpp | 5 |
2 files changed, 19 insertions, 0 deletions
diff --git a/components/channels.cpp b/components/channels.cpp index 159e86b..5c12953 100644 --- a/components/channels.cpp +++ b/components/channels.cpp @@ -149,6 +149,10 @@ ChannelList::ChannelList() { m_guild_menu_copyid->signal_activate().connect(sigc::mem_fun(*this, &ChannelList::on_menu_copyid)); m_guild_menu.append(*m_guild_menu_copyid); + m_guild_menu_leave = Gtk::manage(new Gtk::MenuItem("_Leave Guild", true)); + m_guild_menu_leave->signal_activate().connect(sigc::mem_fun(*this, &ChannelList::on_menu_leave)); + m_guild_menu.append(*m_guild_menu_leave); + m_guild_menu.show_all(); m_list->set_activate_on_single_click(true); @@ -339,6 +343,12 @@ void ChannelList::on_menu_copyid() { m_signal_action_guild_copy_id.emit(row->ID); } +void ChannelList::on_menu_leave() { + auto row = dynamic_cast<ChannelListRow *>(m_list->get_selected_row()); + if (row != nullptr) + m_signal_action_guild_leave.emit(row->ID); +} + void ChannelList::AttachMenuHandler(Gtk::ListBoxRow *row) { row->signal_button_press_event().connect([&, row](GdkEventButton *e) -> bool { if (e->type == GDK_BUTTON_PRESS && e->button == GDK_BUTTON_SECONDARY) { @@ -371,3 +381,7 @@ ChannelList::type_signal_action_guild_move_down ChannelList::signal_action_guild ChannelList::type_signal_action_guild_copy_id ChannelList::signal_action_guild_copy_id() { return m_signal_action_guild_copy_id; } + +ChannelList::type_signal_action_guild_leave ChannelList::signal_action_guild_leave() { + return m_signal_action_guild_leave; +} diff --git a/components/channels.hpp b/components/channels.hpp index f898df7..9cd8c32 100644 --- a/components/channels.hpp +++ b/components/channels.hpp @@ -97,9 +97,11 @@ protected: Gtk::MenuItem *m_guild_menu_up; Gtk::MenuItem *m_guild_menu_down; Gtk::MenuItem *m_guild_menu_copyid; + Gtk::MenuItem *m_guild_menu_leave; void on_menu_move_up(); void on_menu_move_down(); void on_menu_copyid(); + void on_menu_leave(); Glib::Dispatcher m_update_dispatcher; //mutable std::mutex m_update_mutex; @@ -113,15 +115,18 @@ public: typedef sigc::signal<void, Snowflake> type_signal_action_guild_move_up; typedef sigc::signal<void, Snowflake> type_signal_action_guild_move_down; typedef sigc::signal<void, Snowflake> type_signal_action_guild_copy_id; + typedef sigc::signal<void, Snowflake> type_signal_action_guild_leave; type_signal_action_channel_item_select signal_action_channel_item_select(); type_signal_action_guild_move_up signal_action_guild_move_up(); type_signal_action_guild_move_down signal_action_guild_move_down(); type_signal_action_guild_copy_id signal_action_guild_copy_id(); + type_signal_action_guild_leave signal_action_guild_leave(); protected: type_signal_action_channel_item_select m_signal_action_channel_item_select; type_signal_action_guild_move_up m_signal_action_guild_move_up; type_signal_action_guild_move_down m_signal_action_guild_move_down; type_signal_action_guild_copy_id m_signal_action_guild_copy_id; + type_signal_action_guild_leave m_signal_action_guild_leave; }; |