+resolve_contact (ELHomeApplet *self)
+{
+ ELHomeAppletPrivate *priv = self->priv;
+ GList *contacts = NULL;
+
+ if (priv->contact_id) {
+ contacts = osso_abook_aggregator_lookup
+ (OSSO_ABOOK_AGGREGATOR (priv->aggregator),
+ priv->contact_id);
+ }
+ else if (priv->local_id && priv->remote_id) {
+ if (g_strcmp0 (priv->local_id, "ring/tel/ring" == 0)) {
+ contacts = osso_abook_aggregator_find_contacts_for_phone_number
+ (OSSO_ABOOK_AGGREGATOR (priv->aggregator),
+ priv->remote_id,
+ TRUE);
+ }
+ else {
+ McAccount *account;
+ account = osso_abook_account_manager_lookup_by_name
+ (NULL,
+ priv->local_id);
+ if (account) {
+ contacts = osso_abook_aggregator_find_contacts_for_im_contact
+ (OSSO_ABOOK_AGGREGATOR (priv->aggregator),
+ priv->remote_id,
+ account);
+ }
+ }
+ }
+
+ if (contacts && contacts->data) {
+ priv->contact = g_object_ref (OSSO_ABOOK_CONTACT (contacts->data));
+ gtk_label_set_text (GTK_LABEL (priv->sender),
+ osso_abook_contact_get_display_name (priv->contact));
+
+ priv->avatar_pixbuf = osso_abook_avatar_get_image_scaled
+ (OSSO_ABOOK_AVATAR (priv->contact),
+ HILDON_ICON_PIXEL_SIZE_THUMB,
+ HILDON_ICON_PIXEL_SIZE_THUMB,
+ TRUE);
+
+ g_warning ("HAVE avatar");
+ if (priv->avatar_pixbuf) {
+ gtk_widget_set_size_request (priv->sender,
+ C_WIDTH - AVATAR_SIZE - HILDON_MARGIN_DEFAULT,
+ HILDON_ICON_PIXEL_SIZE_THUMB);
+
+ }
+
+ update_presence_pixbuf (self,
+ OSSO_ABOOK_PRESENCE (priv->contact));
+ g_signal_connect (priv->contact,
+ "notify::presence-status",
+ G_CALLBACK (presence_updated),
+ self);
+ gtk_widget_queue_draw (GTK_WIDGET (self));
+ }
+
+}
+
+static void
+contacts_added (OssoABookRoster *roster,
+ OssoABookContact **contacts,
+ gpointer userdata)
+{
+ ELHomeApplet *self = EL_HOME_APPLET (userdata);
+ ELHomeAppletPrivate *priv = self->priv;
+
+ if (!priv->contact)
+ resolve_contact (self);
+}
+
+static void
+reset_contact (ELHomeApplet *self)