diff options
Diffstat (limited to 'libempathy-gtk/empathy-roster-contact.c')
-rw-r--r-- | libempathy-gtk/empathy-roster-contact.c | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/libempathy-gtk/empathy-roster-contact.c b/libempathy-gtk/empathy-roster-contact.c index e72ae4494..7ab808746 100644 --- a/libempathy-gtk/empathy-roster-contact.c +++ b/libempathy-gtk/empathy-roster-contact.c @@ -1,5 +1,7 @@ #include "config.h" +#include <glib/gi18n-lib.h> + #include "empathy-roster-contact.h" #include <telepathy-glib/telepathy-glib.h> @@ -171,25 +173,11 @@ alias_changed_cb (FolksIndividual *individual, update_alias (self); } -static gboolean -is_phone (FolksIndividual *individual) -{ - const gchar * const *types; - - types = empathy_individual_get_client_types (individual); - if (types == NULL) - return FALSE; - - if (g_strv_length ((GStrv) types) <= 0) - return FALSE; - - return !tp_strdiff (types[0], "phone"); -} - static void update_presence_msg (EmpathyRosterContact *self) { const gchar *msg; + GStrv types; msg = folks_presence_details_get_presence_message ( FOLKS_PRESENCE_DETAILS (self->priv->individual)); @@ -204,7 +192,25 @@ update_presence_msg (EmpathyRosterContact *self) } else { - gtk_label_set_text (GTK_LABEL (self->priv->presence_msg), msg); + FolksPresenceType type; + + type = folks_presence_details_get_presence_type ( + FOLKS_PRESENCE_DETAILS (self->priv->individual)); + if (type == FOLKS_PRESENCE_TYPE_ERROR) + { + gchar *tmp; + + /* Add a prefix explaining that something goes wrong when trying to + * fetch contact's presence. */ + tmp = g_strdup_printf (_("Server cannot find contact: %s"), msg); + gtk_label_set_text (GTK_LABEL (self->priv->presence_msg), tmp); + + g_free (tmp); + } + else + { + gtk_label_set_text (GTK_LABEL (self->priv->presence_msg), msg); + } gtk_alignment_set (GTK_ALIGNMENT (self->priv->first_line_alig), 0, 0.75, 1, 1); @@ -213,8 +219,10 @@ update_presence_msg (EmpathyRosterContact *self) gtk_widget_show (self->priv->presence_msg); } + types = (GStrv) empathy_individual_get_client_types (self->priv->individual); + gtk_widget_set_visible (self->priv->phone_icon, - is_phone (self->priv->individual)); + empathy_client_types_contains_mobile_device (types)); } static void |