aboutsummaryrefslogtreecommitdiffstats
path: root/src/empathy-event-manager.c
diff options
context:
space:
mode:
authorJonny Lamb <jonny.lamb@collabora.co.uk>2008-11-22 00:15:06 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2008-11-22 00:15:06 +0800
commit64e6014e9cf6b2038126fc5288dc398d59acbbb1 (patch)
treec622372d4b5f1b1ca8e63e31b98c3613720c8e48 /src/empathy-event-manager.c
parent924b52e5d45d8dcaa1c22c27bdb53acd7156c012 (diff)
downloadgsoc2013-empathy-64e6014e9cf6b2038126fc5288dc398d59acbbb1.tar
gsoc2013-empathy-64e6014e9cf6b2038126fc5288dc398d59acbbb1.tar.gz
gsoc2013-empathy-64e6014e9cf6b2038126fc5288dc398d59acbbb1.tar.bz2
gsoc2013-empathy-64e6014e9cf6b2038126fc5288dc398d59acbbb1.tar.lz
gsoc2013-empathy-64e6014e9cf6b2038126fc5288dc398d59acbbb1.tar.xz
gsoc2013-empathy-64e6014e9cf6b2038126fc5288dc398d59acbbb1.tar.zst
gsoc2013-empathy-64e6014e9cf6b2038126fc5288dc398d59acbbb1.zip
Handle incoming file transfers in the event manager. (Jonny Lamb)
Signed-off-by: Jonny Lamb <jonny.lamb@collabora.co.uk> svn path=/trunk/; revision=1757
Diffstat (limited to 'src/empathy-event-manager.c')
-rw-r--r--src/empathy-event-manager.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/empathy-event-manager.c b/src/empathy-event-manager.c
index 618706f1c..712b33b5c 100644
--- a/src/empathy-event-manager.c
+++ b/src/empathy-event-manager.c
@@ -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);
}