From: Xavier Claessens Date: Tue, 1 Jan 2008 21:29:18 +0000 (+0000) Subject: Add back empathy_tp_chat_new_with_contact X-Git-Url: https://git.0d.be/?p=empathy.git;a=commitdiff_plain;h=f4d9313a82b4ce88b87bba1427fdbece4f1d00ad Add back empathy_tp_chat_new_with_contact svn path=/trunk/; revision=526 --- diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c index 68a0af17..7a7f8dfe 100644 --- a/libempathy/empathy-tp-chat.c +++ b/libempathy/empathy-tp-chat.c @@ -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) { diff --git a/libempathy/empathy-tp-chat.h b/libempathy/empathy-tp-chat.h index 7f5ef212..6de2cad4 100644 --- a/libempathy/empathy-tp-chat.h +++ b/libempathy/empathy-tp-chat.h @@ -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);