summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2020-08-29 01:14:20 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2020-08-29 01:14:20 -0400
commit713ed0f9271bfd9249809940cf214d600adaecab (patch)
treef6493059fea382df2301823805e0a7fc1a393589 /components
parent299ecc71d980904ad7ffaf6d44254da71f948666 (diff)
downloadabaddon-portaudio-713ed0f9271bfd9249809940cf214d600adaecab.tar.gz
abaddon-portaudio-713ed0f9271bfd9249809940cf214d600adaecab.zip
add dm's
Diffstat (limited to 'components')
-rw-r--r--components/channels.cpp50
-rw-r--r--components/channels.hpp1
2 files changed, 51 insertions, 0 deletions
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("<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;
diff --git a/components/channels.hpp b/components/channels.hpp
index fce1ce9..b41dc63 100644
--- a/components/channels.hpp
+++ b/components/channels.hpp
@@ -51,6 +51,7 @@ protected:
Glib::Dispatcher m_update_dispatcher;
mutable std::mutex m_update_mutex;
std::queue<DiscordClient::Guilds_t> m_update_queue;
+ void AddPrivateChannels(); // retard moment
void SetListingFromGuildsInternal();
void AttachMenuHandler(Gtk::ListBoxRow* row);