summaryrefslogtreecommitdiff
path: root/src/components/channellist/classic/guildlist.hpp
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2024-03-08 19:36:52 -0500
committerGitHub <noreply@github.com>2024-03-08 19:36:52 -0500
commit43f87ae38153e46a1d81431e47e7d45486a505de (patch)
treeb0f588b12536cc9e6ea738a45ae5cbacfed818f2 /src/components/channellist/classic/guildlist.hpp
parent91e89c06958f1e058de445f9b53205e7eb341d3a (diff)
parentff76ec5f866b5dc77bb635f2d62bec861794fb63 (diff)
downloadabaddon-portaudio-43f87ae38153e46a1d81431e47e7d45486a505de.tar.gz
abaddon-portaudio-43f87ae38153e46a1d81431e47e7d45486a505de.zip
Merge pull request #242 from uowuo/classic-channels
Discord-style channel/server listing
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;
+};