diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2024-03-08 19:36:52 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-08 19:36:52 -0500 |
commit | 43f87ae38153e46a1d81431e47e7d45486a505de (patch) | |
tree | b0f588b12536cc9e6ea738a45ae5cbacfed818f2 /src/components/channellist/classic/guildlist.hpp | |
parent | 91e89c06958f1e058de445f9b53205e7eb341d3a (diff) | |
parent | ff76ec5f866b5dc77bb635f2d62bec861794fb63 (diff) | |
download | abaddon-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.hpp | 48 |
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; +}; |