summaryrefslogtreecommitdiff
path: root/src/components/channellist/classic/guildlist.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/channellist/classic/guildlist.hpp')
-rw-r--r--src/components/channellist/classic/guildlist.hpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/components/channellist/classic/guildlist.hpp b/src/components/channellist/classic/guildlist.hpp
new file mode 100644
index 0000000..72e88e8
--- /dev/null
+++ b/src/components/channellist/classic/guildlist.hpp
@@ -0,0 +1,48 @@
+#pragma once
+#include <gtkmm/listbox.h>
+#include "discord/snowflake.hpp"
+#include "discord/usersettings.hpp"
+
+class GuildListGuildItem;
+
+class GuildList : public Gtk::ListBox {
+public:
+ GuildList();
+
+ void UpdateListing();
+
+private:
+ void AddGuild(Snowflake id);
+ void AddFolder(const UserSettingsGuildFoldersEntry &folder);
+ void Clear();
+
+ GuildListGuildItem *CreateGuildWidget(Snowflake id);
+
+ // todo code duplication not good no sir
+ Gtk::Menu m_menu_guild;
+ Gtk::MenuItem m_menu_guild_copy_id;
+ Gtk::MenuItem m_menu_guild_settings;
+ Gtk::MenuItem m_menu_guild_leave;
+ Gtk::MenuItem m_menu_guild_mark_as_read;
+ Gtk::MenuItem m_menu_guild_toggle_mute;
+ Snowflake m_menu_guild_target;
+
+ void OnGuildSubmenuPopup();
+
+public:
+ using type_signal_guild_selected = sigc::signal<void, Snowflake>;
+ using type_signal_dms_selected = sigc::signal<void>;
+ using type_signal_action_guild_leave = sigc::signal<void, Snowflake>;
+ using type_signal_action_guild_settings = sigc::signal<void, Snowflake>;
+
+ type_signal_guild_selected signal_guild_selected();
+ type_signal_dms_selected signal_dms_selected();
+ type_signal_action_guild_leave signal_action_guild_leave();
+ type_signal_action_guild_settings signal_action_guild_settings();
+
+private:
+ type_signal_guild_selected m_signal_guild_selected;
+ type_signal_dms_selected m_signal_dms_selected;
+ type_signal_action_guild_leave m_signal_action_guild_leave;
+ type_signal_action_guild_settings m_signal_action_guild_settings;
+};