diff options
Diffstat (limited to 'components')
-rw-r--r-- | components/channels.cpp | 20 | ||||
-rw-r--r-- | components/channels.hpp | 8 |
2 files changed, 28 insertions, 0 deletions
diff --git a/components/channels.cpp b/components/channels.cpp index 64613a4..0819f8c 100644 --- a/components/channels.cpp +++ b/components/channels.cpp @@ -117,6 +117,12 @@ ChannelListRowGuild::ChannelListRowGuild(const GuildData *data) { }); m_menu.append(*m_menu_leave); + m_menu_settings = Gtk::manage(new Gtk::MenuItem("Guild _Settings", true)); + m_menu_settings->signal_activate().connect([this]() { + m_signal_settings.emit(); + }); + m_menu.append(*m_menu_settings); + m_menu.show_all(); const auto show_animations = Abaddon::Get().GetSettings().GetShowAnimations(); @@ -176,6 +182,10 @@ ChannelListRowGuild::type_signal_leave ChannelListRowGuild::signal_leave() { return m_signal_leave; } +ChannelListRowGuild::type_signal_settings ChannelListRowGuild::signal_settings() { + return m_signal_settings; +} + ChannelListRowCategory::ChannelListRowCategory(const ChannelData *data) { ID = data->ID; m_ev = Gtk::manage(new Gtk::EventBox); @@ -519,6 +529,7 @@ void ChannelList::UpdateGuild(Snowflake id) { m_guild_id_to_row[new_row->ID] = new_row; new_row->signal_leave().connect(sigc::bind(sigc::mem_fun(*this, &ChannelList::OnGuildMenuLeave), new_row->ID)); new_row->signal_copy_id().connect(sigc::bind(sigc::mem_fun(*this, &ChannelList::OnMenuCopyID), new_row->ID)); + new_row->signal_settings().connect(sigc::bind(sigc::mem_fun(*this, &ChannelList::OnGuildMenuSettings), new_row->ID)); new_row->Children = children; for (auto child : children) child->Parent = new_row; @@ -615,6 +626,7 @@ void ChannelList::InsertGuildAt(Snowflake id, int pos) { m_guild_id_to_row[guild_row->ID] = guild_row; guild_row->signal_leave().connect(sigc::bind(sigc::mem_fun(*this, &ChannelList::OnGuildMenuLeave), guild_row->ID)); guild_row->signal_copy_id().connect(sigc::bind(sigc::mem_fun(*this, &ChannelList::OnMenuCopyID), guild_row->ID)); + guild_row->signal_settings().connect(sigc::bind(sigc::mem_fun(*this, &ChannelList::OnGuildMenuSettings), guild_row->ID)); // add channels with no parent category for (const auto &[pos, channel] : orphan_channels) { @@ -726,6 +738,10 @@ void ChannelList::OnGuildMenuLeave(Snowflake id) { m_signal_action_guild_leave.emit(id); } +void ChannelList::OnGuildMenuSettings(Snowflake id) { + m_signal_action_guild_settings.emit(id); +} + void ChannelList::CheckBumpDM(Snowflake channel_id) { auto it = m_dm_id_to_row.find(channel_id); if (it == m_dm_id_to_row.end()) return; @@ -756,3 +772,7 @@ ChannelList::type_signal_action_channel_item_select ChannelList::signal_action_c ChannelList::type_signal_action_guild_leave ChannelList::signal_action_guild_leave() { return m_signal_action_guild_leave; } + +ChannelList::type_signal_action_guild_settings ChannelList::signal_action_guild_settings() { + return m_signal_action_guild_settings; +} diff --git a/components/channels.hpp b/components/channels.hpp index 15632ab..8f73a50 100644 --- a/components/channels.hpp +++ b/components/channels.hpp @@ -64,17 +64,21 @@ protected: Gtk::Menu m_menu; Gtk::MenuItem *m_menu_copyid; Gtk::MenuItem *m_menu_leave; + Gtk::MenuItem *m_menu_settings; private: typedef sigc::signal<void> type_signal_copy_id; typedef sigc::signal<void> type_signal_leave; + typedef sigc::signal<void> type_signal_settings; type_signal_copy_id m_signal_copy_id; type_signal_leave m_signal_leave; + type_signal_settings m_signal_settings; public: type_signal_copy_id signal_copy_id(); type_signal_leave signal_leave(); + type_signal_settings signal_settings(); }; class ChannelListRowCategory : public ChannelListRow { @@ -156,6 +160,7 @@ protected: int m_guild_count; void OnMenuCopyID(Snowflake id); void OnGuildMenuLeave(Snowflake id); + void OnGuildMenuSettings(Snowflake id); Gtk::Menu m_channel_menu; Gtk::MenuItem *m_channel_menu_copyid; @@ -179,11 +184,14 @@ protected: public: typedef sigc::signal<void, Snowflake> type_signal_action_channel_item_select; typedef sigc::signal<void, Snowflake> type_signal_action_guild_leave; + typedef sigc::signal<void, Snowflake> type_signal_action_guild_settings; type_signal_action_channel_item_select signal_action_channel_item_select(); type_signal_action_guild_leave signal_action_guild_leave(); + type_signal_action_guild_settings signal_action_guild_settings(); protected: type_signal_action_channel_item_select m_signal_action_channel_item_select; type_signal_action_guild_leave m_signal_action_guild_leave; + type_signal_action_guild_settings m_signal_action_guild_settings; }; |