[empathy] Implement TpContact selection in EmpathyInviteParticipantDialog



commit 508d001793fdcb91dc6305c547a9b2f205acdad1
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Fri Aug 5 12:00:31 2011 +0200

    Implement TpContact selection in EmpathyInviteParticipantDialog
    
    https://bugzilla.gnome.org/show_bug.cgi?id=656020

 libempathy-gtk/empathy-contact-chooser.c |   57 ++----------------------------
 libempathy-gtk/empathy-contact-chooser.h |    2 +-
 src/empathy-invite-participant-dialog.c  |   12 ++++++-
 3 files changed, 15 insertions(+), 56 deletions(-)
---
diff --git a/libempathy-gtk/empathy-contact-chooser.c b/libempathy-gtk/empathy-contact-chooser.c
index 9605855..f6fa59d 100644
--- a/libempathy-gtk/empathy-contact-chooser.c
+++ b/libempathy-gtk/empathy-contact-chooser.c
@@ -192,47 +192,6 @@ view_selection_changed_cb (GtkWidget *treeview,
   tp_clear_object (&individual);
 }
 
-/* Return the TpContact of @individual which is on the same connection as the
- * EmpathyTpChat */
-static TpContact *
-get_tp_contact_for_chat (EmpathyContactChooser *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;
-}
-
 static gboolean
 filter_func (GtkTreeModel *model,
     GtkTreeIter *iter,
@@ -446,20 +405,10 @@ empathy_contact_chooser_new (EmpathyTpChat *tp_chat)
       NULL);
 }
 
-TpContact *
-empathy_contact_chooser_get_selected (EmpathyContactChooser *self)
+FolksIndividual *
+empathy_contact_chooser_dup_selected (EmpathyContactChooser *self)
 {
-  FolksIndividual *individual;
-  TpContact *contact;
-
-  individual = empathy_individual_view_dup_selected (self->priv->view);
-  if (individual == NULL)
-    return NULL;
-
-  contact = get_tp_contact_for_chat (self, individual);
-
-  g_object_unref (individual);
-  return contact;
+  return empathy_individual_view_dup_selected (self->priv->view);
 }
 
 void
diff --git a/libempathy-gtk/empathy-contact-chooser.h b/libempathy-gtk/empathy-contact-chooser.h
index 142660a..b6e45c2 100644
--- a/libempathy-gtk/empathy-contact-chooser.h
+++ b/libempathy-gtk/empathy-contact-chooser.h
@@ -54,7 +54,7 @@ GType empathy_contact_chooser_get_type (void);
 
 GtkWidget * empathy_contact_chooser_new (EmpathyTpChat *tp_chat);
 
-TpContact * empathy_contact_chooser_get_selected (
+FolksIndividual * empathy_contact_chooser_dup_selected (
     EmpathyContactChooser *self);
 
 void empathy_contact_chooser_set_filter_func (EmpathyContactChooser *self,
diff --git a/src/empathy-invite-participant-dialog.c b/src/empathy-invite-participant-dialog.c
index eedc6af..4023eba 100644
--- a/src/empathy-invite-participant-dialog.c
+++ b/src/empathy-invite-participant-dialog.c
@@ -284,6 +284,16 @@ TpContact *
 empathy_invite_participant_dialog_get_selected (
     EmpathyInviteParticipantDialog *self)
 {
-  return empathy_contact_chooser_get_selected (
+  FolksIndividual *individual;
+  TpContact *contact;
+
+  individual = empathy_contact_chooser_dup_selected (
       EMPATHY_CONTACT_CHOOSER (self->priv->chooser));
+  if (individual == NULL)
+    return NULL;
+
+  contact = get_tp_contact_for_chat (self, individual);
+
+  g_object_unref (individual);
+  return contact;
 }



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