summaryrefslogtreecommitdiff
path: root/components/chatmessage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'components/chatmessage.cpp')
-rw-r--r--components/chatmessage.cpp20
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;