]> git.0d.be Git - empathy.git/commitdiff
Add back empathy_tp_chat_new_with_contact
authorXavier Claessens <xclaesse@src.gnome.org>
Tue, 1 Jan 2008 21:29:18 +0000 (21:29 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Tue, 1 Jan 2008 21:29:18 +0000 (21:29 +0000)
svn path=/trunk/; revision=526

libempathy/empathy-tp-chat.c
libempathy/empathy-tp-chat.h

index 68a0af174eb4cb367d8f84667846d4c2f77997fe..7a7f8dfecbaf62a8ef5f7b9134b2638075c01079 100644 (file)
@@ -561,6 +561,49 @@ empathy_tp_chat_new (McAccount *account,
                             NULL);
 }
 
+EmpathyTpChat *
+empathy_tp_chat_new_with_contact (EmpathyContact *contact)
+{
+       EmpathyTpChat  *chat;
+       MissionControl *mc;
+       McAccount      *account;
+       TpConn         *tp_conn;
+       TpChan         *text_chan;
+       const gchar    *bus_name;
+       guint           handle;
+
+       g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
+
+       mc = empathy_mission_control_new ();
+       account = empathy_contact_get_account (contact);
+
+       if (mission_control_get_connection_status (mc, account, NULL) != 0) {
+               /* The account is not connected. */
+               return NULL;
+       }
+
+       tp_conn = mission_control_get_connection (mc, account, NULL);
+       g_return_val_if_fail (tp_conn != NULL, NULL);
+       bus_name = dbus_g_proxy_get_bus_name (DBUS_G_PROXY (tp_conn));
+       handle = empathy_contact_get_handle (contact);
+
+       text_chan = tp_conn_new_channel (tp_get_bus (),
+                                        tp_conn,
+                                        bus_name,
+                                        TP_IFACE_CHANNEL_TYPE_TEXT,
+                                        TP_HANDLE_TYPE_CONTACT,
+                                        handle,
+                                        TRUE);
+
+       chat = empathy_tp_chat_new (account, text_chan);
+
+       g_object_unref (tp_conn);
+       g_object_unref (text_chan);
+       g_object_unref (mc);
+
+       return chat;
+}
+
 gboolean
 empathy_tp_chat_get_acknowledge (EmpathyTpChat *chat)
 {
index 7f5ef212ef306b9d9bbec8ed808f40256281a09c..6de2cad4ebad30e8482a7400f05737f77e6b86af 100644 (file)
@@ -57,6 +57,7 @@ struct _EmpathyTpChatClass {
 GType          empathy_tp_chat_get_type             (void) G_GNUC_CONST;
 EmpathyTpChat *empathy_tp_chat_new                  (McAccount          *account,
                                                     TpChan             *tp_chan);
+EmpathyTpChat *empathy_tp_chat_new_with_contact     (EmpathyContact     *contact);
 gboolean       empathy_tp_chat_get_acknowledge      (EmpathyTpChat      *chat);
 void           empathy_tp_chat_set_acknowledge      (EmpathyTpChat      *chat,
                                                     gboolean            acknowledge);