From 713ed0f9271bfd9249809940cf214d600adaecab Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Sat, 29 Aug 2020 01:14:20 -0400 Subject: add dm's --- components/channels.cpp | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'components/channels.cpp') diff --git a/components/channels.cpp b/components/channels.cpp index b913919..adaa11d 100644 --- a/components/channels.cpp +++ b/components/channels.cpp @@ -86,6 +86,54 @@ void ChannelList::on_row_activated(Gtk::ListBoxRow *row) { } } +void ChannelList::AddPrivateChannels() { + auto dms = m_abaddon->GetDiscordClient().GetPrivateChannels(); + + auto *parent_row = Gtk::manage(new Gtk::ListBoxRow); + auto *parent_ev = Gtk::manage(new Gtk::EventBox); + auto *parent_box = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_HORIZONTAL)); + auto *parent_label = Gtk::manage(new Gtk::Label); + parent_label->set_use_markup(true); + parent_label->set_markup("Direct Messages"); + parent_box->set_halign(Gtk::ALIGN_START); + parent_box->pack_start(*parent_label); + parent_ev->add(*parent_box); + parent_row->add(*parent_ev); + parent_row->show_all(); + m_list->add(*parent_row); + + ListItemInfo parent_info; + parent_info.IsUserCollapsed = true; + parent_info.IsHidden = false; + parent_info.Type = ListItemInfo::ListItemType::Guild; // good nuf + + for (const auto &dmid : dms) { + auto *data = m_abaddon->GetDiscordClient().GetChannel(dmid); + + auto *dm_row = Gtk::manage(new Gtk::ListBoxRow); + auto *dm_ev = Gtk::manage(new Gtk::EventBox); + auto *dm_box = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_HORIZONTAL)); + auto *dm_label = Gtk::manage(new Gtk::Label); + dm_label->set_text(data->Recipients[0].Username); + dm_box->set_halign(Gtk::ALIGN_START); + dm_box->pack_start(*dm_label); + dm_ev->add(*dm_box); + dm_row->add(*dm_ev); + dm_row->show_all_children(); + m_list->add(*dm_row); + + ListItemInfo info; + info.ID = dmid; + info.IsUserCollapsed = false; + info.IsHidden = false; + info.Type = ListItemInfo::ListItemType::Channel; + m_infos[dm_row] = std::move(info); + parent_info.Children.insert(dm_row); + } + + m_infos[parent_row] = std::move(parent_info); +} + void ChannelList::SetListingFromGuildsInternal() { DiscordClient::Guilds_t *guilds; { @@ -109,6 +157,8 @@ void ChannelList::SetListingFromGuildsInternal() { return; } + AddPrivateChannels(); + // map each category to its channels std::unordered_map> cat_to_channels; std::unordered_map> orphan_channels; -- cgit v1.2.3