summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2020-09-21 18:47:34 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2020-09-21 18:47:34 -0400
commit3b4edbfa16861b5013663396e1af827ba889e9df (patch)
tree51686baf5997c32a3e3aac0aa20368c404f6f3f1 /components
parent23b32f8de957204597308f2c1823d5e89f632610 (diff)
downloadabaddon-portaudio-3b4edbfa16861b5013663396e1af827ba889e9df.tar.gz
abaddon-portaudio-3b4edbfa16861b5013663396e1af827ba889e9df.zip
join/leave guild
Diffstat (limited to 'components')
-rw-r--r--components/channels.cpp14
-rw-r--r--components/channels.hpp5
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;
};