[empathy] factor out empathy_get_tp_contact_for_individual



commit ad119467cf50c8437a62ba6e6f483eb9032771a9
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Thu Sep 8 17:02:44 2011 +0200

    factor out empathy_get_tp_contact_for_individual

 libempathy/empathy-utils.c              |   38 +++++++++++++++++++++++++++++++
 libempathy/empathy-utils.h              |    3 ++
 src/empathy-invite-participant-dialog.c |   32 ++-----------------------
 3 files changed, 44 insertions(+), 29 deletions(-)
---
diff --git a/libempathy/empathy-utils.c b/libempathy/empathy-utils.c
index 24fdf97..172e9e1 100644
--- a/libempathy/empathy-utils.c
+++ b/libempathy/empathy-utils.c
@@ -992,3 +992,41 @@ empathy_account_has_uri_scheme_tel (TpAccount *account)
 
   return FALSE;
 }
+
+/* Return the TpContact on @conn associated with @individual, if any */
+TpContact *
+empathy_get_tp_contact_for_individual (FolksIndividual *individual,
+    TpConnection *conn)
+{
+  TpContact *contact = NULL;
+  GeeSet *personas;
+  GeeIterator *iter;
+
+  personas = folks_individual_get_personas (individual);
+  iter = gee_iterable_iterator (GEE_ITERABLE (personas));
+  while (contact == NULL && gee_iterator_next (iter))
+    {
+      TpfPersona *persona = gee_iterator_get (iter);
+      TpConnection *contact_conn;
+      TpContact *contact_cur = NULL;
+
+      if (TPF_IS_PERSONA (persona))
+        {
+          contact_cur = tpf_persona_get_contact (persona);
+          if (contact_cur != NULL)
+            {
+              contact_conn = tp_contact_get_connection (contact_cur);
+
+              if (!tp_strdiff (tp_proxy_get_object_path (contact_conn),
+                    tp_proxy_get_object_path (conn)))
+                contact = contact_cur;
+            }
+        }
+
+      g_clear_object (&persona);
+    }
+  g_clear_object (&iter);
+
+  return contact;
+}
+
diff --git a/libempathy/empathy-utils.h b/libempathy/empathy-utils.h
index fb25d7a..69a7d62 100644
--- a/libempathy/empathy-utils.h
+++ b/libempathy/empathy-utils.h
@@ -108,6 +108,9 @@ gchar *empathy_format_currency (gint amount,
 
 gboolean empathy_account_has_uri_scheme_tel (TpAccount *account);
 
+TpContact * empathy_get_tp_contact_for_individual (FolksIndividual *individual,
+    TpConnection *conn);
+
 /* Copied from wocky/wocky-utils.h */
 
 #define empathy_implement_finish_void(source, tag) \
diff --git a/src/empathy-invite-participant-dialog.c b/src/empathy-invite-participant-dialog.c
index ec5a275..9280dda 100644
--- a/src/empathy-invite-participant-dialog.c
+++ b/src/empathy-invite-participant-dialog.c
@@ -14,6 +14,8 @@
 
 #include "empathy-invite-participant-dialog.h"
 
+#include <libempathy/empathy-utils.h>
+
 #include <libempathy-gtk/empathy-contact-chooser.h>
 #include <libempathy-gtk/empathy-individual-view.h>
 #include <libempathy-gtk/empathy-ui-utils.h>
@@ -101,39 +103,11 @@ static TpContact *
 get_tp_contact_for_chat (EmpathyInviteParticipantDialog *self,
     FolksIndividual *individual)
 {
-  TpContact *contact = NULL;
   TpConnection *chat_conn;
-  GeeSet *personas;
-  GeeIterator *iter;
 
   chat_conn = tp_channel_borrow_connection (TP_CHANNEL (self->priv->tp_chat));
 
-  personas = folks_individual_get_personas (individual);
-  iter = gee_iterable_iterator (GEE_ITERABLE (personas));
-  while (contact == FALSE && gee_iterator_next (iter))
-    {
-      TpfPersona *persona = gee_iterator_get (iter);
-      TpConnection *contact_conn;
-      TpContact *contact_cur = NULL;
-
-      if (TPF_IS_PERSONA (persona))
-        {
-          contact_cur = tpf_persona_get_contact (persona);
-          if (contact_cur != NULL)
-            {
-              contact_conn = tp_contact_get_connection (contact_cur);
-
-              if (!tp_strdiff (tp_proxy_get_object_path (contact_conn),
-                    tp_proxy_get_object_path (chat_conn)))
-                contact = contact_cur;
-            }
-        }
-
-      g_clear_object (&persona);
-    }
-  g_clear_object (&iter);
-
-  return contact;
+  return empathy_get_tp_contact_for_individual (individual, chat_conn);
 }
 
 static gboolean



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]