summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2020-11-03 17:17:56 -0500
committerouwou <26526779+ouwou@users.noreply.github.com>2020-11-03 17:17:56 -0500
commit1a197b1494655f7cbb286f0040930eff878ad848 (patch)
tree6a3fdffff7ee930b6887d536644492a890871f6c /components
parente562b75f95621e726a3eef67ff1f8d042527f269 (diff)
downloadabaddon-portaudio-1a197b1494655f7cbb286f0040930eff878ad848.tar.gz
abaddon-portaudio-1a197b1494655f7cbb286f0040930eff878ad848.zip
handle CHANNEL_CREATE for dm's
Diffstat (limited to 'components')
-rw-r--r--components/channels.cpp23
-rw-r--r--components/channels.hpp3
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);