Move a couple of call-related functions to empathy-utils.h

Since the rest of the call stuff will only be compiled for
empathy-av so we don't link every binary against farsight.
parent f22e466a
......@@ -27,7 +27,6 @@
#include <gtk/gtk.h>
#include <telepathy-logger/log-manager.h>
#include <libempathy/empathy-streamed-media-factory.h>
#include <libempathy/empathy-contact-manager.h>
#include <libempathy/empathy-dispatcher.h>
#include <libempathy/empathy-utils.h>
......@@ -248,8 +247,8 @@ empathy_contact_audio_call_menu_item_activated (GtkMenuItem *item,
EmpathyContact *contact)
{
empathy_streamed_media_factory_new_call_with_streams (contact, TRUE, FALSE,
gtk_get_current_event_time (), NULL);
empathy_call_new_with_streams (contact, TRUE, FALSE,
gtk_get_current_event_time ());
}
GtkWidget *
......@@ -279,8 +278,8 @@ static void
empathy_contact_video_call_menu_item_activated (GtkMenuItem *item,
EmpathyContact *contact)
{
empathy_streamed_media_factory_new_call_with_streams (contact, TRUE, TRUE,
gtk_get_current_event_time (), NULL);
empathy_call_new_with_streams (contact, TRUE, TRUE,
gtk_get_current_event_time ());
}
GtkWidget *
......
......@@ -31,7 +31,6 @@
#include <folks/folks.h>
#include <folks/folks-telepathy.h>
#include <libempathy/empathy-streamed-media-factory.h>
#include <libempathy/empathy-dispatcher.h>
#include <libempathy/empathy-individual-manager.h>
#include <libempathy/empathy-chatroom-manager.h>
......@@ -543,8 +542,8 @@ empathy_individual_audio_call_menu_item_activated (GtkMenuItem *item,
{
g_return_if_fail (EMPATHY_IS_CONTACT (contact));
empathy_streamed_media_factory_new_call_with_streams (contact, TRUE, FALSE,
gtk_get_current_event_time (), NULL);
empathy_call_new_with_streams (contact, TRUE, FALSE,
gtk_get_current_event_time ());
}
GtkWidget *
......@@ -585,8 +584,8 @@ empathy_individual_video_call_menu_item_activated (GtkMenuItem *item,
{
g_return_if_fail (EMPATHY_IS_CONTACT (contact));
empathy_streamed_media_factory_new_call_with_streams (contact, TRUE, TRUE,
gtk_get_current_event_time (), NULL);
empathy_call_new_with_streams (contact, TRUE, TRUE,
gtk_get_current_event_time ());
}
GtkWidget *
......
......@@ -192,73 +192,6 @@ empathy_streamed_media_factory_get (void)
return EMPATHY_STREAMED_MEDIA_FACTORY (call_factory);
}
GHashTable *
empathy_streamed_media_factory_create_request (EmpathyContact *contact,
gboolean initial_audio,
gboolean initial_video)
{
return tp_asv_new (
TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
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_TYPE_STREAMED_MEDIA_INITIAL_AUDIO, G_TYPE_BOOLEAN,
initial_audio,
TP_PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_VIDEO, G_TYPE_BOOLEAN,
initial_video,
NULL);
}
static void
create_media_channel_cb (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
GError *error = NULL;
if (!tp_account_channel_request_create_channel_finish (
TP_ACCOUNT_CHANNEL_REQUEST (source), result, &error))
{
DEBUG ("Failed to create media channel: %s", error->message);
g_error_free (error);
}
}
/**
* empathy_streamed_media_factory_new_call_with_streams:
* @factory: an #EmpathyStreamedMediaFactory
* @contact: an #EmpathyContact
* @initial_audio: if %TRUE the call will be started with audio
* @initial_video: if %TRUE the call will be started with video
*
* Initiate a new call with @contact.
*/
void
empathy_streamed_media_factory_new_call_with_streams (EmpathyContact *contact,
gboolean initial_audio,
gboolean initial_video,
gint64 timestamp,
gpointer user_data)
{
GHashTable *request;
TpAccount *account;
TpAccountChannelRequest *req;
request = empathy_streamed_media_factory_create_request (contact, initial_audio,
initial_video);
account = empathy_contact_get_account (contact);
req = tp_account_channel_request_new (account, request, timestamp);
tp_account_channel_request_create_channel_async (req, NULL, NULL,
create_media_channel_cb, NULL);
g_hash_table_unref (request);
g_object_unref (req);
}
static void
create_streamed_media_handler (EmpathyStreamedMediaFactory *factory,
EmpathyTpStreamedMedia *call)
......
......@@ -64,19 +64,9 @@ EmpathyStreamedMediaFactory *empathy_streamed_media_factory_initialise (void);
EmpathyStreamedMediaFactory *empathy_streamed_media_factory_get (void);
void empathy_streamed_media_factory_new_call_with_streams (EmpathyContact *contact,
gboolean initial_audio,
gboolean initial_video,
gint64 timestamp,
gpointer user_data);
gboolean empathy_streamed_media_factory_register (EmpathyStreamedMediaFactory *self,
GError **error);
GHashTable * empathy_streamed_media_factory_create_request (EmpathyContact *contact,
gboolean initial_audio,
gboolean initial_video);
G_END_DECLS
#endif /* #ifndef __EMPATHY_STREAMED_MEDIA_FACTORY_H__*/
......@@ -30,7 +30,6 @@
#include <telepathy-farsight/stream.h>
#include "empathy-streamed-media-handler.h"
#include "empathy-streamed-media-factory.h"
#include "empathy-marshal.h"
#include "empathy-utils.h"
......@@ -806,7 +805,7 @@ empathy_streamed_media_handler_start_call (EmpathyStreamedMediaHandler *handler,
g_assert (priv->contact != NULL);
account = empathy_contact_get_account (priv->contact);
request = empathy_streamed_media_factory_create_request (priv->contact,
request = empathy_call_create_streamed_media_request (priv->contact,
priv->initial_audio, priv->initial_video);
req = tp_account_channel_request_new (account, request, timestamp);
......
/*
* Copyright (C) 2003-2007 Imendio AB
* Copyright (C) 2007-2008 Collabora Ltd.
* Copyright (C) 2007-2011 Collabora Ltd.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
......@@ -237,6 +237,66 @@ empathy_xml_node_find_child_prop_value (xmlNodePtr node,
return found;
}
GHashTable *
empathy_call_create_streamed_media_request (EmpathyContact *contact,
gboolean initial_audio,
gboolean initial_video)
{
return tp_asv_new (
TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
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_TYPE_STREAMED_MEDIA_INITIAL_AUDIO, G_TYPE_BOOLEAN,
initial_audio,
TP_PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_VIDEO, G_TYPE_BOOLEAN,
initial_video,
NULL);
}
static void
create_media_channel_cb (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
GError *error = NULL;
if (!tp_account_channel_request_create_channel_finish (TP_ACCOUNT_CHANNEL_REQUEST (source),
result,
&error)) {
DEBUG ("Failed to create StreamedMedia channel: %s", error->message);
g_error_free (error);
}
}
void
empathy_call_new_with_streams (EmpathyContact *contact,
gboolean initial_audio,
gboolean initial_video,
gint64 timestamp)
{
GHashTable *request;
TpAccount *account;
TpAccountChannelRequest *req;
request = empathy_call_create_streamed_media_request (contact,
initial_audio,
initial_video);
account = empathy_contact_get_account (contact);
req = tp_account_channel_request_new (account, request, timestamp);
tp_account_channel_request_create_channel_async (req, NULL, NULL,
create_media_channel_cb,
NULL);
g_hash_table_unref (request);
g_object_unref (req);
}
const gchar *
empathy_presence_get_default_message (TpConnectionPresenceType presence)
{
......
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
* Copyright (C) 2003-2007 Imendio AB
* Copyright (C) 2007-2008 Collabora Ltd.
* Copyright (C) 2007-2011 Collabora Ltd.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
......@@ -66,6 +66,15 @@ xmlNodePtr empathy_xml_node_find_child_prop_value (xmlNodePtr node,
const gchar *prop_name,
const gchar *prop_value);
/* Calls */
void empathy_call_new_with_streams (EmpathyContact *contact,
gboolean initial_audio,
gboolean initial_video,
gint64 timestamp);
GHashTable * empathy_call_create_streamed_media_request (EmpathyContact *contact,
gboolean initial_audio,
gboolean initial_video);
/* Others */
const gchar * empathy_presence_get_default_message (TpConnectionPresenceType presence);
const gchar * empathy_presence_to_str (TpConnectionPresenceType presence);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment