This commit is contained in:
ouwou
2020-08-29 01:14:20 -04:00
parent 299ecc71d9
commit 713ed0f927
6 changed files with 99 additions and 6 deletions

View File

@@ -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("<b>Direct Messages</b>");
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<Snowflake, std::vector<const ChannelData *>> cat_to_channels;
std::unordered_map<Snowflake, std::vector<const ChannelData *>> orphan_channels;