From c6cc07122a847001c505a3b1bf17888691ed7046 Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Mon, 21 Sep 2020 23:58:32 -0400 Subject: add user icons to dm channels --- components/channels.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'components/channels.cpp') diff --git a/components/channels.cpp b/components/channels.cpp index 5c12953..dffd200 100644 --- a/components/channels.cpp +++ b/components/channels.cpp @@ -40,12 +40,30 @@ ChannelListRowDMChannel::ChannelListRowDMChannel(const Channel *data) { get_style_context()->add_class("channel-row"); m_lbl->get_style_context()->add_class("channel-row-label"); + if (data->Type == ChannelType::DM) { + auto buf = Abaddon::Get().GetImageManager().GetFromURLIfCached(data->Recipients[0].GetAvatarURL("png", "16")); + if (buf) + m_icon = Gtk::manage(new Gtk::Image(buf)); + else { + m_icon = Gtk::manage(new Gtk::Image(Abaddon::Get().GetImageManager().GetPlaceholder(24))); + Abaddon::Get().GetImageManager().LoadFromURL(data->Recipients[0].GetAvatarURL("png", "16"), [this](Glib::RefPtr ldbuf) { + Glib::signal_idle().connect([this, ldbuf]() -> bool { + m_icon->property_pixbuf() = ldbuf; + + return false; + }); + }); + } + } + if (data->Type == ChannelType::DM) m_lbl->set_text(data->Recipients[0].Username); else if (data->Type == ChannelType::GROUP_DM) m_lbl->set_text(std::to_string(data->Recipients.size()) + " users"); m_box->set_halign(Gtk::ALIGN_START); + if (m_icon != nullptr) + m_box->pack_start(*m_icon); m_box->pack_start(*m_lbl); m_ev->add(*m_box); add(*m_ev); -- cgit v1.2.3