aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk>2011-02-23 02:14:07 +0800
committerEmilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk>2011-06-09 17:20:05 +0800
commit5e797f1df68283302038c9723604c87f476a0656 (patch)
treece3b7c3d4e7898897de6ba140611575315fdf83a
parent0754b2673f0189e892074189535d3dfb6fd2a662 (diff)
downloadgsoc2013-empathy-5e797f1df68283302038c9723604c87f476a0656.tar
gsoc2013-empathy-5e797f1df68283302038c9723604c87f476a0656.tar.gz
gsoc2013-empathy-5e797f1df68283302038c9723604c87f476a0656.tar.bz2
gsoc2013-empathy-5e797f1df68283302038c9723604c87f476a0656.tar.lz
gsoc2013-empathy-5e797f1df68283302038c9723604c87f476a0656.tar.xz
gsoc2013-empathy-5e797f1df68283302038c9723604c87f476a0656.tar.zst
gsoc2013-empathy-5e797f1df68283302038c9723604c87f476a0656.zip
Don't require EmpathyContacts to start a call
Conflicts: libempathy-gtk/empathy-contact-menu.c libempathy-gtk/empathy-individual-menu.c libempathy-gtk/empathy-new-call-dialog.c
-rw-r--r--libempathy-gtk/empathy-call-utils.c18
-rw-r--r--libempathy-gtk/empathy-call-utils.h11
-rw-r--r--libempathy-gtk/empathy-contact-menu.c8
-rw-r--r--libempathy-gtk/empathy-individual-menu.c8
-rw-r--r--libempathy-gtk/empathy-new-call-dialog.c43
-rw-r--r--src/empathy-call-factory.c3
-rw-r--r--src/empathy-streamed-media-handler.c3
7 files changed, 30 insertions, 64 deletions
diff --git a/libempathy-gtk/empathy-call-utils.c b/libempathy-gtk/empathy-call-utils.c
index c95b66236..2a4158539 100644
--- a/libempathy-gtk/empathy-call-utils.c
+++ b/libempathy-gtk/empathy-call-utils.c
@@ -35,7 +35,7 @@
#if HAVE_CALL
GHashTable *
-empathy_call_create_call_request (EmpathyContact *contact,
+empathy_call_create_call_request (const gchar *contact,
gboolean initial_audio,
gboolean initial_video)
{
@@ -44,8 +44,8 @@ empathy_call_create_call_request (EmpathyContact *contact,
TPY_IFACE_CHANNEL_TYPE_CALL,
TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT,
TP_HANDLE_TYPE_CONTACT,
- TP_PROP_CHANNEL_TARGET_HANDLE, G_TYPE_UINT,
- empathy_contact_get_handle (contact),
+ TP_PROP_CHANNEL_TARGET_ID, G_TYPE_STRING,
+ contact,
TPY_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, G_TYPE_BOOLEAN,
initial_audio,
TPY_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, G_TYPE_BOOLEAN,
@@ -55,7 +55,7 @@ empathy_call_create_call_request (EmpathyContact *contact,
#endif
GHashTable *
-empathy_call_create_streamed_media_request (EmpathyContact *contact,
+empathy_call_create_streamed_media_request (const gchar *contact,
gboolean initial_audio,
gboolean initial_video)
{
@@ -64,8 +64,8 @@ empathy_call_create_streamed_media_request (EmpathyContact *contact,
TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA,
TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT,
TP_HANDLE_TYPE_CONTACT,
- TP_PROP_CHANNEL_TARGET_HANDLE, G_TYPE_UINT,
- empathy_contact_get_handle (contact),
+ TP_PROP_CHANNEL_TARGET_ID, G_TYPE_STRING,
+ contact,
TP_PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_AUDIO, G_TYPE_BOOLEAN,
initial_audio,
TP_PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_VIDEO, G_TYPE_BOOLEAN,
@@ -121,14 +121,14 @@ create_call_channel_cb (GObject *source,
#endif
void
-empathy_call_new_with_streams (EmpathyContact *contact,
+empathy_call_new_with_streams (const gchar *contact,
+ TpAccount *account,
gboolean initial_audio,
gboolean initial_video,
gint64 timestamp)
{
#if HAVE_CALL
GHashTable *call_request, *streamed_media_request;
- TpAccount *account;
TpAccountChannelRequest *call_req, *streamed_media_req;
call_request = empathy_call_create_call_request (contact,
@@ -138,8 +138,6 @@ empathy_call_new_with_streams (EmpathyContact *contact,
streamed_media_request = empathy_call_create_streamed_media_request (
contact, initial_audio, initial_video);
- account = empathy_contact_get_account (contact);
-
call_req = tp_account_channel_request_new (account, call_request, timestamp);
streamed_media_req = tp_account_channel_request_new (account,
streamed_media_request,
diff --git a/libempathy-gtk/empathy-call-utils.h b/libempathy-gtk/empathy-call-utils.h
index 1bea52f6a..99a97f202 100644
--- a/libempathy-gtk/empathy-call-utils.h
+++ b/libempathy-gtk/empathy-call-utils.h
@@ -21,23 +21,20 @@
#ifndef __EMPATHY_CALL_UTILS_H__
#define __EMPATHY_CALL_UTILS_H__
-#include <libempathy/empathy-contact.h>
-
G_BEGIN_DECLS
/* Calls */
-void empathy_call_new_with_streams (EmpathyContact *contact,
+void empathy_call_new_with_streams (const gchar *contact,
+ TpAccount *account,
gboolean initial_audio,
gboolean initial_video,
gint64 timestamp);
-GHashTable * empathy_call_create_call_request (
- EmpathyContact *contact,
+GHashTable * empathy_call_create_call_request (const gchar *contact,
gboolean initial_audio,
gboolean initial_video);
-GHashTable * empathy_call_create_streamed_media_request (
- EmpathyContact *contact,
+GHashTable * empathy_call_create_streamed_media_request (const gchar *contact,
gboolean initial_audio,
gboolean initial_video);
diff --git a/libempathy-gtk/empathy-contact-menu.c b/libempathy-gtk/empathy-contact-menu.c
index 86b9f319e..60e7052ea 100644
--- a/libempathy-gtk/empathy-contact-menu.c
+++ b/libempathy-gtk/empathy-contact-menu.c
@@ -344,7 +344,9 @@ static void
empathy_contact_audio_call_menu_item_activated (GtkMenuItem *item,
EmpathyContact *contact)
{
- empathy_call_new_with_streams (contact, TRUE, FALSE,
+ empathy_call_new_with_streams (empathy_contact_get_id (contact),
+ empathy_contact_get_account (contact),
+ TRUE, FALSE,
empathy_get_current_action_time ());
}
@@ -375,7 +377,9 @@ static void
empathy_contact_video_call_menu_item_activated (GtkMenuItem *item,
EmpathyContact *contact)
{
- empathy_call_new_with_streams (contact, TRUE, TRUE,
+ empathy_call_new_with_streams (empathy_contact_get_id (contact),
+ empathy_contact_get_account (contact),
+ TRUE, TRUE,
empathy_get_current_action_time ());
}
diff --git a/libempathy-gtk/empathy-individual-menu.c b/libempathy-gtk/empathy-individual-menu.c
index 33e277135..a92e5bcd9 100644
--- a/libempathy-gtk/empathy-individual-menu.c
+++ b/libempathy-gtk/empathy-individual-menu.c
@@ -618,7 +618,9 @@ empathy_individual_audio_call_menu_item_activated (GtkMenuItem *item,
{
g_return_if_fail (EMPATHY_IS_CONTACT (contact));
- empathy_call_new_with_streams (contact, TRUE, FALSE,
+ empathy_call_new_with_streams (empathy_contact_get_id (contact),
+ empathy_contact_get_account (contact),
+ TRUE, FALSE,
empathy_get_current_action_time ());
}
@@ -660,7 +662,9 @@ empathy_individual_video_call_menu_item_activated (GtkMenuItem *item,
{
g_return_if_fail (EMPATHY_IS_CONTACT (contact));
- empathy_call_new_with_streams (contact, TRUE, TRUE,
+ empathy_call_new_with_streams (empathy_contact_get_id (contact),
+ empathy_contact_get_account (contact),
+ TRUE, TRUE,
empathy_get_current_action_time ());
}
diff --git a/libempathy-gtk/empathy-new-call-dialog.c b/libempathy-gtk/empathy-new-call-dialog.c
index 0c0972de5..8fd273840 100644
--- a/libempathy-gtk/empathy-new-call-dialog.c
+++ b/libempathy-gtk/empathy-new-call-dialog.c
@@ -59,11 +59,6 @@ typedef struct {
gpointer user_data;
} FilterCallbackData;
-typedef struct {
- gboolean video;
- gint64 timestamp;
-} ContactCallbackData;
-
struct _EmpathyNewCallDialogPriv {
GtkWidget *check_video;
};
@@ -83,41 +78,6 @@ struct _EmpathyNewCallDialogPriv {
*/
static void
-got_contact_cb (TpConnection *connection,
- EmpathyContact *contact,
- const GError *error,
- gpointer user_data,
- GObject *weak_object)
-{
- ContactCallbackData *data = user_data;
-
- if (error != NULL)
- g_warning ("Could not get contact: %s", error->message);
- else
- empathy_call_new_with_streams (contact,
- TRUE, data->video, data->timestamp);
-
- g_slice_free (ContactCallbackData, data);
-}
-
-static void
-call_contact (TpAccount *account,
- const gchar *contact_id,
- gboolean video,
- gint64 timestamp)
-{
- ContactCallbackData *data = g_slice_new0 (ContactCallbackData);
-
- data->video = video;
- data->timestamp = timestamp;
-
- empathy_tp_contact_factory_get_from_id (tp_account_get_connection (account),
- contact_id,
- got_contact_cb, data,
- NULL, NULL);
-}
-
-static void
empathy_new_call_dialog_response (GtkDialog *dialog, int response_id)
{
EmpathyNewCallDialogPriv *priv = GET_PRIV (dialog);
@@ -136,7 +96,8 @@ empathy_new_call_dialog_response (GtkDialog *dialog, int response_id)
* we return from this function. */
video = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->check_video));
- call_contact (account, contact_id, video,
+ empathy_call_new_with_streams (contact_id,
+ account, TRUE, video,
empathy_get_current_action_time ());
out:
diff --git a/src/empathy-call-factory.c b/src/empathy-call-factory.c
index 660a743bb..0bae03a0c 100644
--- a/src/empathy-call-factory.c
+++ b/src/empathy-call-factory.c
@@ -240,7 +240,8 @@ empathy_call_factory_new_call_with_streams (EmpathyContact *contact,
TpAccount *account;
TpAccountChannelRequest *call_req;
- call_request = empathy_call_create_call_request (contact,
+ call_request = empathy_call_create_call_request (
+ empathy_contact_get_id (contact),
initial_audio, initial_video);
account = empathy_contact_get_account (contact);
diff --git a/src/empathy-streamed-media-handler.c b/src/empathy-streamed-media-handler.c
index 9d533b993..39e3e560d 100644
--- a/src/empathy-streamed-media-handler.c
+++ b/src/empathy-streamed-media-handler.c
@@ -808,7 +808,8 @@ empathy_streamed_media_handler_start_call (EmpathyStreamedMediaHandler *handler,
g_assert (priv->contact != NULL);
account = empathy_contact_get_account (priv->contact);
- request = empathy_call_create_streamed_media_request (priv->contact,
+ request = empathy_call_create_streamed_media_request (
+ empathy_contact_get_id (priv->contact),
priv->initial_audio, priv->initial_video);
req = tp_account_channel_request_new (account, request, timestamp);