diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2023-10-24 21:55:26 -0400 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2023-10-24 21:55:26 -0400 |
commit | 8b034e48e27e4889b08ed648745a74d05630a431 (patch) | |
tree | be492529d57526c84df791721a4faee87d2f16ef /src/components/channellist/channellist.hpp | |
parent | 201b114183454f3fb9114fed2caef4ac46587225 (diff) | |
download | abaddon-portaudio-8b034e48e27e4889b08ed648745a74d05630a431.tar.gz abaddon-portaudio-8b034e48e27e4889b08ed648745a74d05630a431.zip |
add intermediate container for channel list
Diffstat (limited to 'src/components/channellist/channellist.hpp')
-rw-r--r-- | src/components/channellist/channellist.hpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/components/channellist/channellist.hpp b/src/components/channellist/channellist.hpp new file mode 100644 index 0000000..5863485 --- /dev/null +++ b/src/components/channellist/channellist.hpp @@ -0,0 +1,61 @@ +#pragma once +#include <gtkmm/box.h> +#include <gtkmm/paned.h> +#include "channellisttree.hpp" +#include "discord/snowflake.hpp" +#include "state.hpp" + +// Contains the actual ChannelListTree and the classic listing if enabled +class ChannelList : public Gtk::Box { + // have to proxy public and signals to underlying tree... ew!!! +public: + ChannelList(); + + void UpdateListing(); + void SetActiveChannel(Snowflake id, bool expand_to); + + // channel list should be populated when this is called + void UseExpansionState(const ExpansionStateRoot &state); + ExpansionStateRoot GetExpansionState() const; + + void UsePanedHack(Gtk::Paned &paned); + +private: + ChannelListTree m_tree; + +public: + using type_signal_action_channel_item_select = sigc::signal<void, Snowflake>; + using type_signal_action_guild_leave = sigc::signal<void, Snowflake>; + using type_signal_action_guild_settings = sigc::signal<void, Snowflake>; + +#ifdef WITH_LIBHANDY + using type_signal_action_open_new_tab = sigc::signal<void, Snowflake>; + type_signal_action_open_new_tab signal_action_open_new_tab(); +#endif + +#ifdef WITH_VOICE + using type_signal_action_join_voice_channel = sigc::signal<void, Snowflake>; + using type_signal_action_disconnect_voice = sigc::signal<void>; + + type_signal_action_join_voice_channel signal_action_join_voice_channel(); + type_signal_action_disconnect_voice signal_action_disconnect_voice(); +#endif + + 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(); + +private: + 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; + +#ifdef WITH_LIBHANDY + type_signal_action_open_new_tab m_signal_action_open_new_tab; +#endif + +#ifdef WITH_VOICE + type_signal_action_join_voice_channel m_signal_action_join_voice_channel; + type_signal_action_disconnect_voice m_signal_action_disconnect_voice; +#endif +}; |