diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-11-03 17:17:56 -0500 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-11-03 17:17:56 -0500 |
commit | 1a197b1494655f7cbb286f0040930eff878ad848 (patch) | |
tree | 6a3fdffff7ee930b6887d536644492a890871f6c /components | |
parent | e562b75f95621e726a3eef67ff1f8d042527f269 (diff) | |
download | abaddon-portaudio-1a197b1494655f7cbb286f0040930eff878ad848.tar.gz abaddon-portaudio-1a197b1494655f7cbb286f0040930eff878ad848.zip |
handle CHANNEL_CREATE for dm's
Diffstat (limited to 'components')
-rw-r--r-- | components/channels.cpp | 23 | ||||
-rw-r--r-- | components/channels.hpp | 3 |
2 files changed, 21 insertions, 5 deletions
diff --git a/components/channels.cpp b/components/channels.cpp index 629ca28..adcfe13 100644 --- a/components/channels.cpp +++ b/components/channels.cpp @@ -349,9 +349,22 @@ void ChannelList::UpdateChannel(Snowflake id) { m_list->insert(*new_row, pos); } +void ChannelList::UpdateCreateDMChannel(Snowflake id) { + auto *dm_row = Gtk::manage(new ChannelListRowDMChannel(Abaddon::Get().GetDiscordClient().GetChannel(id))); + dm_row->IsUserCollapsed = false; + m_list->insert(*dm_row, m_dm_header_row->get_index() + 1); + m_dm_header_row->Children.insert(dm_row); + if (!m_dm_header_row->IsUserCollapsed) + dm_row->show(); +} + void ChannelList::UpdateCreateChannel(Snowflake id) { const auto &discord = Abaddon::Get().GetDiscordClient(); const auto *data = discord.GetChannel(id); + if (data->Type == ChannelType::DM || data->Type == ChannelType::GROUP_DM) { + UpdateCreateDMChannel(id); + return; + } const auto *guild = discord.GetGuild(data->GuildID); auto *guild_row = m_guild_id_to_row.at(data->GuildID); @@ -545,16 +558,16 @@ void ChannelList::InsertGuildAt(Snowflake id, int pos) { void ChannelList::AddPrivateChannels() { auto dms = Abaddon::Get().GetDiscordClient().GetPrivateChannels(); - auto *parent_row = Gtk::manage(new ChannelListRowDMHeader); - parent_row->show_all(); - parent_row->IsUserCollapsed = true; - m_list->add(*parent_row); + m_dm_header_row = Gtk::manage(new ChannelListRowDMHeader); + m_dm_header_row->show_all(); + m_dm_header_row->IsUserCollapsed = true; + m_list->add(*m_dm_header_row); for (const auto &dm : dms) { auto *dm_row = Gtk::manage(new ChannelListRowDMChannel(Abaddon::Get().GetDiscordClient().GetChannel(dm))); dm_row->IsUserCollapsed = false; m_list->add(*dm_row); - parent_row->Children.insert(dm_row); + m_dm_header_row->Children.insert(dm_row); } } diff --git a/components/channels.hpp b/components/channels.hpp index 012891f..0326841 100644 --- a/components/channels.hpp +++ b/components/channels.hpp @@ -90,6 +90,7 @@ public: void UpdateRemoveGuild(Snowflake id); void UpdateRemoveChannel(Snowflake id); void UpdateChannel(Snowflake id); + void UpdateCreateDMChannel(Snowflake id); void UpdateCreateChannel(Snowflake id); void UpdateGuild(Snowflake id); void Clear(); @@ -100,6 +101,8 @@ protected: Gtk::ListBox *m_list; Gtk::ScrolledWindow *m_main; + ChannelListRowDMHeader *m_dm_header_row = nullptr; + void CollapseRow(ChannelListRow *row); void ExpandRow(ChannelListRow *row); void DeleteRow(ChannelListRow *row); |