+static void
+update_presence_pixbuf (ELHomeApplet *self,
+ OssoABookPresence *presence)
+{
+ ELHomeAppletPrivate *priv = self->priv;
+ const gchar *icon_name = osso_abook_presence_get_icon_name (presence);
+
+ if (priv->presence_pixbuf) {
+ g_object_unref (priv->presence_pixbuf);
+ priv->presence_pixbuf = NULL;
+ }
+ g_warning ("presence %s", icon_name);
+ if (icon_name)
+ priv->presence_pixbuf = gtk_icon_theme_load_icon
+ (gtk_icon_theme_get_default (),
+ icon_name,
+ HILDON_ICON_PIXEL_SIZE_XSMALL,
+ 0, NULL);
+
+ gtk_widget_queue_draw (GTK_WIDGET (self));
+}
+
+static void
+presence_updated (OssoABookPresence *presence,
+ GParamSpec *spec,
+ gpointer *user_data)
+{
+ ELHomeApplet *self = EL_HOME_APPLET(user_data);
+
+ if (!OSSO_ABOOK_IS_CONTACT(self->priv->contact))
+ return;
+
+ update_presence_pixbuf (self, presence);
+}