From d5adf274c137bef22d5695d4a280e10068edcb0e Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Wed, 23 Jun 2010 20:37:31 +0200 Subject: Show avatars in roster --- src/gui/CoreConnector.vala | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/gui/CoreConnector.vala') diff --git a/src/gui/CoreConnector.vala b/src/gui/CoreConnector.vala index 1030428..9c492b7 100644 --- a/src/gui/CoreConnector.vala +++ b/src/gui/CoreConnector.vala @@ -90,7 +90,7 @@ public class CoreConnector { unowned Erl.Term term = store.term; Erl.Term match_term; - if((match_term = match("{roster_update,JID,Name,Subscription,Groups,Resources}", term)) != null) { + if((match_term = match("{roster_update,JID,Name,Subscription,Groups,Resources,Avatar}", term)) != null) { Erl.Term jid_term = match_term.var_content("JID"); if(!jid_term.is_binary()) // TODO Debug output @@ -151,6 +151,21 @@ public class CoreConnector { resources = resources.tl(); } + Erl.Term avatar = match("{avatar,Data}", match_term.var_content("Avatar")); + if(avatar != null) { + Erl.Term avatarData = avatar.var_content("Data"); + + if(avatarData.is_binary()) { + InputStream avatarStream = new MemoryInputStream.from_data(avatarData.bin_ptr(), avatarData.bin_size(), null); + try { + contact.avatar = new Gdk.Pixbuf.from_stream_at_scale(avatarStream, 32, 32, true, null); + avatarStream.close(null); + } catch(Error e) { + // TODO Debug output + } + } + } + roster.update_contact(contact); } else { -- cgit v1.2.3