summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/channels.cpp20
-rw-r--r--components/channels.hpp8
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;
};