[empathy/gnome-2-34] Move empathy_call_* util functions to libempathy-gtk



commit 10edf350020350475ece049d9c8fd969f70cf5c5
Author: Emilio Pozuelo Monfort <emilio pozuelo collabora co uk>
Date:   Tue Feb 22 17:15:11 2011 +0000

    Move empathy_call_* util functions to libempathy-gtk
    
    Since we want to pop up a dialog when starting a call fails.

 libempathy-gtk/Makefile.am               |    2 +
 libempathy-gtk/empathy-call-utils.c      |  169 ++++++++++++++++++++++++++++++
 libempathy-gtk/empathy-call-utils.h      |   46 ++++++++
 libempathy-gtk/empathy-contact-menu.c    |    1 +
 libempathy-gtk/empathy-individual-menu.c |    1 +
 libempathy-gtk/empathy-new-call-dialog.c |    1 +
 libempathy/empathy-utils.c               |  133 -----------------------
 libempathy/empathy-utils.h               |   12 --
 src/empathy-call-factory.c               |    2 +
 src/empathy-streamed-media-handler.c     |    2 +
 10 files changed, 224 insertions(+), 145 deletions(-)
---
diff --git a/libempathy-gtk/Makefile.am b/libempathy-gtk/Makefile.am
index 058ca85..390d37c 100644
--- a/libempathy-gtk/Makefile.am
+++ b/libempathy-gtk/Makefile.am
@@ -38,6 +38,7 @@ libempathy_gtk_handwritten_source =            	\
 	empathy-account-widget.c		\
 	empathy-avatar-chooser.c		\
 	empathy-avatar-image.c			\
+	empathy-call-utils.c			\
 	empathy-cell-renderer-activatable.c	\
 	empathy-cell-renderer-expander.c	\
 	empathy-cell-renderer-text.c		\
@@ -98,6 +99,7 @@ libempathy_gtk_headers =			\
 	empathy-account-widget.h		\
 	empathy-avatar-chooser.h		\
 	empathy-avatar-image.h			\
+	empathy-call-utils.h			\
 	empathy-cell-renderer-activatable.h	\
 	empathy-cell-renderer-expander.h	\
 	empathy-cell-renderer-text.h		\
diff --git a/libempathy-gtk/empathy-call-utils.c b/libempathy-gtk/empathy-call-utils.c
new file mode 100644
index 0000000..d94e624
--- /dev/null
+++ b/libempathy-gtk/empathy-call-utils.c
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2011 Collabora Ltd.
+ *
+ * The code contained in this file is free software; you can redistribute
+ * it and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version
+ * 2.1 of the License, or (at your option) any later version.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this code; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * Authors: Emilio Pozuelo Monfort <emilio pozuelo collabora co uk>
+ */
+
+#include "config.h"
+
+#include <telepathy-glib/telepathy-glib.h>
+
+#if HAVE_CALL
+ #include <telepathy-yell/telepathy-yell.h>
+#endif
+
+#include "empathy-call-utils.h"
+
+#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
+#include <libempathy/empathy-debug.h>
+
+#if HAVE_CALL
+GHashTable *
+empathy_call_create_call_request (EmpathyContact *contact,
+    gboolean initial_audio,
+    gboolean initial_video)
+{
+  return tp_asv_new (
+    TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
+      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),
+    TPY_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, G_TYPE_BOOLEAN,
+      initial_audio,
+    TPY_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, G_TYPE_BOOLEAN,
+      initial_video,
+    NULL);
+}
+#endif
+
+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_streamed_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);
+    }
+}
+
+#if HAVE_CALL
+static void
+create_call_channel_cb (GObject *source,
+    GAsyncResult *result,
+    gpointer user_data)
+{
+  TpAccountChannelRequest *streamed_media_req = user_data;
+  GError *error = NULL;
+
+  if (tp_account_channel_request_create_channel_finish (
+      TP_ACCOUNT_CHANNEL_REQUEST (source), result, &error))
+    {
+      g_object_unref (streamed_media_req);
+      return;
+    }
+
+  DEBUG ("Failed to create Call channel: %s", error->message);
+
+  if (error->code != TP_ERROR_NOT_IMPLEMENTED)
+    return;
+
+  DEBUG ("Let's try with an StreamedMedia channel");
+  g_error_free (error);
+  tp_account_channel_request_create_channel_async (streamed_media_req, NULL, NULL,
+      create_streamed_media_channel_cb,
+      NULL);
+}
+#endif
+
+void
+empathy_call_new_with_streams (EmpathyContact *contact,
+    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,
+      initial_audio,
+      initial_video);
+
+  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,
+      timestamp);
+
+  tp_account_channel_request_create_channel_async (call_req, NULL, NULL,
+      create_call_channel_cb,
+      streamed_media_req);
+
+  g_hash_table_unref (call_request);
+  g_hash_table_unref (streamed_media_request);
+  g_object_unref (call_req);
+#else
+  GHashTable *request;
+  TpAccountChannelRequest *req;
+
+  request = empathy_call_create_streamed_media_request (contact,
+      initial_audio,
+      initial_video);
+
+  req = tp_account_channel_request_new (account, request, timestamp);
+
+  tp_account_channel_request_create_channel_async (req, NULL, NULL,
+      create_streamed_media_channel_cb,
+      NULL);
+
+  g_hash_table_unref (request);
+  g_object_unref (req);
+#endif
+}
diff --git a/libempathy-gtk/empathy-call-utils.h b/libempathy-gtk/empathy-call-utils.h
new file mode 100644
index 0000000..1bea52f
--- /dev/null
+++ b/libempathy-gtk/empathy-call-utils.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2011 Collabora Ltd.
+ *
+ * The code contained in this file is free software; you can redistribute
+ * it and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either version
+ * 2.1 of the License, or (at your option) any later version.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this code; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * Authors: Emilio Pozuelo Monfort <emilio pozuelo collabora co uk>
+ */
+
+#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,
+    gboolean initial_audio,
+    gboolean initial_video,
+    gint64 timestamp);
+
+GHashTable * empathy_call_create_call_request (
+    EmpathyContact *contact,
+    gboolean initial_audio,
+    gboolean initial_video);
+
+GHashTable * empathy_call_create_streamed_media_request (
+    EmpathyContact *contact,
+    gboolean initial_audio,
+    gboolean initial_video);
+
+G_END_DECLS
+
+#endif /*  __EMPATHY_CALL_UTILS_H__ */
diff --git a/libempathy-gtk/empathy-contact-menu.c b/libempathy-gtk/empathy-contact-menu.c
index 64056ee..a9504e0 100644
--- a/libempathy-gtk/empathy-contact-menu.c
+++ b/libempathy-gtk/empathy-contact-menu.c
@@ -39,6 +39,7 @@
 #include "empathy-contact-dialogs.h"
 #include "empathy-ui-utils.h"
 #include "empathy-share-my-desktop.h"
+#include "empathy-call-utils.h"
 
 static GtkWidget *empathy_contact_block_menu_item_new (EmpathyContact *);
 
diff --git a/libempathy-gtk/empathy-individual-menu.c b/libempathy-gtk/empathy-individual-menu.c
index 7cab792..fad18b3 100644
--- a/libempathy-gtk/empathy-individual-menu.c
+++ b/libempathy-gtk/empathy-individual-menu.c
@@ -46,6 +46,7 @@
 #include "empathy-ui-utils.h"
 #include "empathy-share-my-desktop.h"
 #include "empathy-linking-dialog.h"
+#include "empathy-call-utils.h"
 
 #define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyIndividualMenu)
 
diff --git a/libempathy-gtk/empathy-new-call-dialog.c b/libempathy-gtk/empathy-new-call-dialog.c
index 3f02646..cbfbb95 100644
--- a/libempathy-gtk/empathy-new-call-dialog.c
+++ b/libempathy-gtk/empathy-new-call-dialog.c
@@ -44,6 +44,7 @@
 
 #include "empathy-new-call-dialog.h"
 #include "empathy-account-chooser.h"
+#include "empathy-call-utils.h"
 
 static EmpathyNewCallDialog *dialog_singleton = NULL;
 
diff --git a/libempathy/empathy-utils.c b/libempathy/empathy-utils.c
index a11a949..69ccd88 100644
--- a/libempathy/empathy-utils.c
+++ b/libempathy/empathy-utils.c
@@ -45,10 +45,6 @@
 #include <telepathy-glib/dbus.h>
 #include <telepathy-glib/util.h>
 
-#if HAVE_CALL
- #include <telepathy-yell/telepathy-yell.h>
-#endif
-
 #include "empathy-utils.h"
 #include "empathy-contact-manager.h"
 #include "empathy-individual-manager.h"
@@ -241,135 +237,6 @@ empathy_xml_node_find_child_prop_value (xmlNodePtr   node,
 	return found;
 }
 
-#if HAVE_CALL
-GHashTable *
-empathy_call_create_call_request (EmpathyContact *contact,
-				  gboolean initial_audio,
-				  gboolean initial_video)
-{
-	return tp_asv_new (
-		TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
-			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),
-		TPY_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, G_TYPE_BOOLEAN,
-			initial_audio,
-		TPY_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, G_TYPE_BOOLEAN,
-			initial_video,
-		NULL);
-}
-#endif
-
-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_streamed_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);
-	}
-}
-
-#if HAVE_CALL
-static void
-create_call_channel_cb (GObject *source,
-			GAsyncResult *result,
-			gpointer user_data)
-{
-	TpAccountChannelRequest *streamed_media_req = user_data;
-	GError *error = NULL;
-
-	if (tp_account_channel_request_create_channel_finish (
-            TP_ACCOUNT_CHANNEL_REQUEST (source), result, &error)) {
-		g_object_unref (streamed_media_req);
-		return;
-	}
-
-	DEBUG ("Failed to create Call channel: %s", error->message);
-	DEBUG ("Let's try with an StreamedMedia channel");
-	g_error_free (error);
-	tp_account_channel_request_create_channel_async (streamed_media_req, NULL, NULL,
-							 create_streamed_media_channel_cb,
-							 NULL);
-}
-#endif
-
-void
-empathy_call_new_with_streams (EmpathyContact *contact,
-			       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,
-							 initial_audio,
-							 initial_video);
-
-	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,
-							     timestamp);
-
-	tp_account_channel_request_create_channel_async (call_req, NULL, NULL,
-							 create_call_channel_cb,
-							 streamed_media_req);
-
-	g_hash_table_unref (call_request);
-	g_hash_table_unref (streamed_media_request);
-	g_object_unref (call_req);
-#else
-	GHashTable *request;
-	TpAccountChannelRequest *req;
-
-	request = empathy_call_create_streamed_media_request (contact,
-							      initial_audio,
-							      initial_video);
-
-	req = tp_account_channel_request_new (account, request, timestamp);
-
-	tp_account_channel_request_create_channel_async (req, NULL, NULL,
-							 create_streamed_media_channel_cb,
-							 NULL);
-
-	g_hash_table_unref (request);
-	g_object_unref (req);
-#endif
-}
-
 const gchar *
 empathy_presence_get_default_message (TpConnectionPresenceType presence)
 {
diff --git a/libempathy/empathy-utils.h b/libempathy/empathy-utils.h
index 9dd6d6d..00525aa 100644
--- a/libempathy/empathy-utils.h
+++ b/libempathy/empathy-utils.h
@@ -65,18 +65,6 @@ 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_call_request	       (EmpathyContact *contact,
-								gboolean initial_audio,
-								gboolean initial_video);
-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);
diff --git a/src/empathy-call-factory.c b/src/empathy-call-factory.c
index 92c36ca..21d3a65 100644
--- a/src/empathy-call-factory.c
+++ b/src/empathy-call-factory.c
@@ -34,6 +34,8 @@
 #include <libempathy/empathy-tp-contact-factory.h>
 #include <libempathy/empathy-utils.h>
 
+#include <libempathy-gtk/empathy-call-utils.h>
+
 #include "empathy-call-factory.h"
 #include "empathy-call-handler.h"
 #include "src-marshal.h"
diff --git a/src/empathy-streamed-media-handler.c b/src/empathy-streamed-media-handler.c
index 75007f1..9d533b9 100644
--- a/src/empathy-streamed-media-handler.c
+++ b/src/empathy-streamed-media-handler.c
@@ -31,6 +31,8 @@
 
 #include <libempathy/empathy-utils.h>
 
+#include <libempathy-gtk/empathy-call-utils.h>
+
 #include "empathy-streamed-media-handler.h"
 #include "src-marshal.h"
 



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