diff options
author | Sjoerd Simons <sjoerd@luon.net> | 2013-01-03 18:42:13 +0800 |
---|---|---|
committer | Sjoerd Simons <sjoerd@luon.net> | 2013-01-03 22:30:47 +0800 |
commit | 55ce28ebe490bc803dd524970ebb187402bb6031 (patch) | |
tree | 9add34c7bd5b98583fa64feb6ed04c2a7d168dfb /libempathy-gtk | |
parent | 05c170e3de251f2161e9ff5bb1eac4785cdc91da (diff) | |
download | gsoc2013-empathy-55ce28ebe490bc803dd524970ebb187402bb6031.tar gsoc2013-empathy-55ce28ebe490bc803dd524970ebb187402bb6031.tar.gz gsoc2013-empathy-55ce28ebe490bc803dd524970ebb187402bb6031.tar.bz2 gsoc2013-empathy-55ce28ebe490bc803dd524970ebb187402bb6031.tar.lz gsoc2013-empathy-55ce28ebe490bc803dd524970ebb187402bb6031.tar.xz gsoc2013-empathy-55ce28ebe490bc803dd524970ebb187402bb6031.tar.zst gsoc2013-empathy-55ce28ebe490bc803dd524970ebb187402bb6031.zip |
Recognize both handheld and phone clienttypes as mobile devices
Empathy currently displays a phone icon for clients which indicate that
they're phones. However some mobile clients use the "handheld" client
type instead (e.g. Xabber on android devices).
While changing things around, i've also refactored the code a bit to
ensure that the determination will stay consistent in the various
location if it's changed in future.
Diffstat (limited to 'libempathy-gtk')
-rw-r--r-- | libempathy-gtk/empathy-cell-renderer-text.c | 4 | ||||
-rw-r--r-- | libempathy-gtk/empathy-individual-widget.c | 4 | ||||
-rw-r--r-- | libempathy-gtk/empathy-roster-contact.c | 20 |
3 files changed, 7 insertions, 21 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 |