diff options
Diffstat (limited to 'components/chatmessage.cpp')
-rw-r--r-- | components/chatmessage.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/components/chatmessage.cpp b/components/chatmessage.cpp index c3f4dae..cdb1b28 100644 --- a/components/chatmessage.cpp +++ b/components/chatmessage.cpp @@ -14,18 +14,16 @@ ChatMessageContainer::ChatMessageContainer(const Message *data) { m_author = Gtk::manage(new Gtk::Label); m_timestamp = Gtk::manage(new Gtk::Label); - static Glib::RefPtr<Gdk::Pixbuf> test = Gdk::Pixbuf::create_from_file("res/decamarks.png", 32, 32); - m_avatar = Gtk::manage(new Gtk::Image(test)); + static auto placeholder = Gdk::Pixbuf::create_from_file("res/decamarks.png", 32, 32); + auto buf = Abaddon::Get().GetImageManager().GetFromURLIfCached(data->Author.GetAvatarURL()); + if (buf) + m_avatar = Gtk::manage(new Gtk::Image(buf)); + else + m_avatar = Gtk::manage(new Gtk::Image(placeholder)); + m_avatar->set_valign(Gtk::ALIGN_START); m_avatar->set_margin_right(10); - if (data->Author.HasAvatar()) { - Abaddon::Get().GetCache().GetFileFromURL(data->Author.GetAvatarURL(), [this](std::string filepath) { - auto buf = Gdk::Pixbuf::create_from_file(filepath, 32, 32); - m_avatar->property_pixbuf() = buf; - }); - } - get_style_context()->add_class("message-container"); m_author->get_style_context()->add_class("message-container-author"); m_timestamp->get_style_context()->add_class("message-container-timestamp"); @@ -67,6 +65,10 @@ ChatMessageContainer::ChatMessageContainer(const Message *data) { show(); } +void ChatMessageContainer::SetAvatarFromPixbuf(Glib::RefPtr<Gdk::Pixbuf> pixbuf) { + m_avatar->property_pixbuf() = pixbuf; +} + void ChatMessageContainer::Update() { auto &discord = Abaddon::Get().GetDiscordClient(); auto guild_id = discord.GetChannel(ChannelID)->GuildID; |