aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libempathy-gtk/empathy-cell-renderer-text.c4
-rw-r--r--libempathy-gtk/empathy-individual-widget.c4
-rw-r--r--libempathy-gtk/empathy-roster-contact.c20
-rw-r--r--libempathy/empathy-utils.c14
-rw-r--r--libempathy/empathy-utils.h3
-rw-r--r--src/empathy-chat-window.c4
6 files changed, 26 insertions, 23 deletions
diff --git a/libempathy-gtk/empathy-cell-renderer-text.c b/libempathy-gtk/empathy-cell-renderer-text.c
index d52abb485..d96ccc403 100644
--- a/libempathy-gtk/empathy-cell-renderer-text.c
+++ b/libempathy-gtk/empathy-cell-renderer-text.c
@@ -364,8 +364,8 @@ cell_renderer_text_update_text (EmpathyCellRendererText *cell,
status = empathy_presence_get_default_message (priv->presence_type);
}
- if (!priv->is_group && priv->types != NULL && g_strv_length (priv->types) > 0
- && !tp_strdiff (priv->types[0], "phone")) {
+ if (!priv->is_group &&
+ empathy_client_types_contains_mobile_device (priv->types)) {
on_a_phone = TRUE;
/* We want the phone black. */
if (attr_color)
diff --git a/libempathy-gtk/empathy-individual-widget.c b/libempathy-gtk/empathy-individual-widget.c
index 735397456..4dab7390c 100644
--- a/libempathy-gtk/empathy-individual-widget.c
+++ b/libempathy-gtk/empathy-individual-widget.c
@@ -808,9 +808,7 @@ client_types_update (EmpathyIndividualWidget *self)
types = tp_contact_get_client_types (priv->contact);
- if (types != NULL
- && g_strv_length ((gchar **) types) > 0
- && !tp_strdiff (types[0], "phone"))
+ if (empathy_client_types_contains_mobile_device ((GStrv) types))
{
gtk_widget_show (priv->hbox_client_types);
}
diff --git a/libempathy-gtk/empathy-roster-contact.c b/libempathy-gtk/empathy-roster-contact.c
index 918ccdb96..7ab808746 100644
--- a/libempathy-gtk/empathy-roster-contact.c
+++ b/libempathy-gtk/empathy-roster-contact.c
@@ -173,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));
@@ -233,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
diff --git a/libempathy/empathy-utils.c b/libempathy/empathy-utils.c
index a7ae0bdd7..191544fbf 100644
--- a/libempathy/empathy-utils.c
+++ b/libempathy/empathy-utils.c
@@ -1122,6 +1122,20 @@ while_finish:
*can_video_call = can_video;
}
+gboolean
+empathy_client_types_contains_mobile_device (const GStrv types) {
+ int i;
+
+ if (types == NULL)
+ return FALSE;
+
+ for (i = 0; types[i] != NULL; i++)
+ if (!tp_strdiff (types[i], "phone") || !tp_strdiff (types[i], "handheld"))
+ return TRUE;
+
+ return FALSE;
+}
+
static FolksIndividual *
create_individual_from_persona (FolksPersona *persona)
{
diff --git a/libempathy/empathy-utils.h b/libempathy/empathy-utils.h
index a310d2b02..3950c5be3 100644
--- a/libempathy/empathy-utils.h
+++ b/libempathy/empathy-utils.h
@@ -115,6 +115,9 @@ void empathy_individual_can_audio_video_call (FolksIndividual *individual,
gboolean *can_video_call,
EmpathyContact **out_contact);
+gboolean empathy_client_types_contains_mobile_device (
+ const GStrv types);
+
FolksIndividual * empathy_create_individual_from_tp_contact (
TpContact *contact);
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c
index 06d1b0cec..676c4ef23 100644
--- a/src/empathy-chat-window.c
+++ b/src/empathy-chat-window.c
@@ -986,9 +986,9 @@ chat_window_update_chat_tab_full (EmpathyChat *chat,
const gchar * const *types;
types = empathy_contact_get_client_types (remote_contact);
- if (types != NULL && !tp_strdiff (types[0], "phone"))
+ if (empathy_client_types_contains_mobile_device ((GStrv) types))
{
- /* I'm on a phone ! */
+ /* I'm on a mobile device ! */
gchar *tmp = name;
name = g_strdup_printf ("☎ %s", name);