public class CellRendererPresence : Gtk.CellRendererPixbuf { private static Gdk.Pixbuf online; private static Gdk.Pixbuf away; private static Gdk.Pixbuf dnd; private static Gdk.Pixbuf xa; private static Gdk.Pixbuf undefined; private static Gdk.Pixbuf offline; private Contact _contact; static construct { try { online = new Gdk.Pixbuf.from_file("icons/16x16/online.png"); away = new Gdk.Pixbuf.from_file("icons/16x16/away.png"); dnd = new Gdk.Pixbuf.from_file("icons/16x16/dnd.png"); xa = new Gdk.Pixbuf.from_file("icons/16x16/xa.png"); undefined = new Gdk.Pixbuf.from_file("icons/16x16/requested.png"); offline = new Gdk.Pixbuf.from_file("icons/16x16/offline.png"); } catch(Error e) { } } public Contact contact { get { return _contact; } set { _contact = value; Gee.Map.Entry? r = value.get_resource_with_highest_priority(); if(r == null) { pixbuf = offline; return; } switch(r.value.show) { case Contact.Show.ONLINE: pixbuf = online; break; case Contact.Show.AWAY: pixbuf = away; break; case Contact.Show.DND: pixbuf = dnd; break; case Contact.Show.XA: pixbuf = xa; break; case Contact.Show.UNDEFINED: pixbuf = undefined; break; } } } }