]> git.0d.be Git - empathy.git/blobdiff - libempathy/empathy-ft-factory.c
Merge remote-tracking branch 'origin/gnome-3-8'
[empathy.git] / libempathy / empathy-ft-factory.c
index 5fb238a2b9e5efcab49e52954e485de0a8575f9b..855ddb98f549a56abd83ee229a8e6155a22195d2 100644 (file)
 
 /* empathy-ft-factory.c */
 
-#include <glib.h>
-
-#include <telepathy-glib/telepathy-glib.h>
-
+#include "config.h"
 #include "empathy-ft-factory.h"
-#include "empathy-ft-handler.h"
-#include "empathy-marshal.h"
+
 #include "empathy-request-util.h"
 #include "empathy-utils.h"
 
@@ -126,7 +122,7 @@ empathy_ft_factory_class_init (EmpathyFTFactoryClass *klass)
       G_TYPE_FROM_CLASS (klass),
       G_SIGNAL_RUN_LAST, 0,
       NULL, NULL,
-      _empathy_marshal_VOID__OBJECT_POINTER,
+      g_cclosure_marshal_generic,
       G_TYPE_NONE, 2, EMPATHY_TYPE_FT_HANDLER, G_TYPE_POINTER);
 
   /**
@@ -149,7 +145,7 @@ empathy_ft_factory_class_init (EmpathyFTFactoryClass *klass)
       G_TYPE_FROM_CLASS (klass),
       G_SIGNAL_RUN_LAST, 0,
       NULL, NULL,
-      _empathy_marshal_VOID__OBJECT_POINTER,
+      g_cclosure_marshal_generic,
       G_TYPE_NONE, 2, EMPATHY_TYPE_FT_HANDLER, G_TYPE_POINTER);
 }
 
@@ -179,22 +175,16 @@ handle_channels_cb (TpSimpleHandler *handler,
   for (l = channels; l != NULL; l = g_list_next (l))
     {
       TpChannel *channel = l->data;
-      EmpathyTpFile *tp_file;
 
       if (tp_proxy_get_invalidated (channel) != NULL)
         continue;
 
-      if (tp_channel_get_channel_type_id (channel) !=
-          TP_IFACE_QUARK_CHANNEL_TYPE_FILE_TRANSFER)
+      if (!TP_IS_FILE_TRANSFER_CHANNEL (channel))
         continue;
 
-      tp_file = empathy_tp_file_new (channel);
-
       /* We handle only incoming FT */
-      empathy_ft_handler_new_incoming (tp_file, ft_handler_incoming_ready_cb,
-          self);
-
-      g_object_unref (tp_file);
+      empathy_ft_handler_new_incoming ((TpFileTransferChannel *) channel,
+          ft_handler_incoming_ready_cb, self);
     }
 
 
@@ -206,20 +196,13 @@ empathy_ft_factory_init (EmpathyFTFactory *self)
 {
   EmpathyFTFactoryPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
     EMPATHY_TYPE_FT_FACTORY, EmpathyFTFactoryPriv);
-  TpDBusDaemon *dbus;
-  GError *error = NULL;
+  TpAccountManager *am;
 
   self->priv = priv;
 
-  dbus = tp_dbus_daemon_dup (&error);
-  if (dbus == NULL)
-    {
-      g_warning ("Failed to get TpDBusDaemon: %s", error->message);
-      g_error_free (error);
-      return;
-    }
+  am = tp_account_manager_dup ();
 
-  priv->handler = tp_simple_handler_new (dbus, FALSE, FALSE,
+  priv->handler = tp_simple_handler_new_with_am (am, FALSE, FALSE,
       EMPATHY_FT_BUS_NAME_SUFFIX, FALSE, handle_channels_cb, self, NULL);
 
   tp_base_client_take_handler_filter (priv->handler, tp_asv_new (
@@ -231,7 +214,7 @@ empathy_ft_factory_init (EmpathyFTFactory *self)
         TP_PROP_CHANNEL_REQUESTED, G_TYPE_BOOLEAN, FALSE,
         NULL));
 
-  g_object_unref (dbus);
+  g_object_unref (am);
 }
 
 static void
@@ -239,9 +222,11 @@ ft_handler_outgoing_ready_cb (EmpathyFTHandler *handler,
     GError *error,
     gpointer user_data)
 {
-  EmpathyFTFactory *factory = user_data;
+  EmpathyFTFactory *factory = EMPATHY_FT_FACTORY (user_data);
 
   g_signal_emit (factory, signals[NEW_FT_HANDLER], 0, handler, error);
+
+  g_object_unref (factory);
 }
 
 /* public methods */
@@ -272,14 +257,15 @@ empathy_ft_factory_dup_singleton (void)
 void
 empathy_ft_factory_new_transfer_outgoing (EmpathyFTFactory *factory,
     EmpathyContact *contact,
-    GFile *source)
+    GFile *source,
+    gint64 action_time)
 {
   g_return_if_fail (EMPATHY_IS_FT_FACTORY (factory));
   g_return_if_fail (EMPATHY_IS_CONTACT (contact));
   g_return_if_fail (G_IS_FILE (source));
 
-  empathy_ft_handler_new_outgoing (contact, source,
-      ft_handler_outgoing_ready_cb, factory);
+  empathy_ft_handler_new_outgoing (contact, source, action_time,
+      ft_handler_outgoing_ready_cb, g_object_ref (factory));
 }
 
 /**