]> git.0d.be Git - empathy.git/commitdiff
Handle incoming file transfers in the event manager. (Jonny Lamb)
authorJonny Lamb <jonny.lamb@collabora.co.uk>
Fri, 21 Nov 2008 16:15:06 +0000 (16:15 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Fri, 21 Nov 2008 16:15:06 +0000 (16:15 +0000)
Signed-off-by: Jonny Lamb <jonny.lamb@collabora.co.uk>
svn path=/trunk/; revision=1757

src/empathy-event-manager.c

index 618706f1ca4a1aed72d645b0d5ef0b3e570e3244..712b33b5c6911dcd31bb648c00949ec9fcfdaef4 100644 (file)
@@ -31,6 +31,9 @@
 #include <libempathy/empathy-tp-chat.h>
 #include <libempathy/empathy-tp-group.h>
 #include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-file.h>
+
+#include <libempathy-gtk/empathy-ft-manager.h>
 #include <libempathy-gtk/empathy-images.h>
 #include <libempathy-gtk/empathy-contact-dialogs.h>
 
@@ -212,6 +215,33 @@ event_manager_filter_channel_cb (EmpathyDispatcher   *dispatcher,
                g_object_unref (contact);
                g_object_unref (tp_group);
        }
+       else if (!tp_strdiff (channel_type, EMP_IFACE_CHANNEL_TYPE_FILE)) {
+               GValue *direction;
+
+               tp_cli_dbus_properties_run_get (channel,
+                                               -1,
+                                               EMP_IFACE_CHANNEL_TYPE_FILE,
+                                               "Direction",
+                                               &direction,
+                                               NULL,
+                                               NULL);
+
+               /* Only deal with incoming channels */
+               if (g_value_get_uint (direction) == EMP_FILE_TRANSFER_DIRECTION_INCOMING) {
+                       EmpathyFTManager *manager;
+                       McAccount        *account;
+                       EmpathyFile      *file;
+
+                       manager = empathy_ft_manager_get_default ();
+                       account = empathy_channel_get_account (channel);
+
+                       file = empathy_file_new (account, channel);
+
+                       empathy_ft_manager_add_file (manager, file);
+               }
+
+               g_value_unset (direction);
+       }
 
        g_free (channel_type);
 }