diff options
author | Jonny Lamb <jonny.lamb@collabora.co.uk> | 2008-11-22 00:17:03 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@src.gnome.org> | 2008-11-22 00:17:03 +0800 |
commit | bc82fc3c32d04bbef0f1921fe8f534cfac345f8d (patch) | |
tree | ccd1880d566b2ed76ed6af29592143251e8b1389 | |
parent | 7cb242a20728f515058468cbc3ffab111785f53e (diff) | |
download | gsoc2013-empathy-bc82fc3c32d04bbef0f1921fe8f534cfac345f8d.tar gsoc2013-empathy-bc82fc3c32d04bbef0f1921fe8f534cfac345f8d.tar.gz gsoc2013-empathy-bc82fc3c32d04bbef0f1921fe8f534cfac345f8d.tar.bz2 gsoc2013-empathy-bc82fc3c32d04bbef0f1921fe8f534cfac345f8d.tar.lz gsoc2013-empathy-bc82fc3c32d04bbef0f1921fe8f534cfac345f8d.tar.xz gsoc2013-empathy-bc82fc3c32d04bbef0f1921fe8f534cfac345f8d.tar.zst gsoc2013-empathy-bc82fc3c32d04bbef0f1921fe8f534cfac345f8d.zip |
Added empathy_offer_file function and updated accept_file. (Jonny Lamb)
Signed-off-by: Jonny Lamb <jonny.lamb@collabora.co.uk>
svn path=/trunk/; revision=1788
-rw-r--r-- | libempathy-gtk/empathy-ft-manager.c | 7 | ||||
-rw-r--r-- | libempathy/empathy-tp-file.c | 40 | ||||
-rw-r--r-- | libempathy/empathy-tp-file.h | 3 | ||||
-rw-r--r-- | libempathy/empathy-utils.c | 2 |
4 files changed, 47 insertions, 5 deletions
diff --git a/libempathy-gtk/empathy-ft-manager.c b/libempathy-gtk/empathy-ft-manager.c index 5c23ccb5c..c295b53e6 100644 --- a/libempathy-gtk/empathy-ft-manager.c +++ b/libempathy-gtk/empathy-ft-manager.c @@ -365,6 +365,8 @@ update_ft_row (EmpathyFTManager *ft_manager, { case EMP_FILE_TRANSFER_STATE_REMOTE_PENDING: case EMP_FILE_TRANSFER_STATE_OPEN: + case EMP_FILE_TRANSFER_STATE_ACCEPTED: + case EMP_FILE_TRANSFER_STATE_NOT_OFFERED: if (empathy_tp_file_get_incoming (tp_file)) /* translators: first %s is filename, second %s is the contact name */ first_line_format = _("Receiving \"%s\" from %s"); @@ -374,7 +376,8 @@ update_ft_row (EmpathyFTManager *ft_manager, first_line = g_strdup_printf (first_line_format, filename, contact_name); - if (state == EMP_FILE_TRANSFER_STATE_OPEN) + if (state == EMP_FILE_TRANSFER_STATE_OPEN + || state == EMP_FILE_TRANSFER_STATE_ACCEPTED) { gchar *total_size_str; gchar *transferred_bytes_str; @@ -1064,7 +1067,7 @@ ft_manager_save_dialog_response_cb (GtkDialog *widget, filename = g_file_get_basename (file); empathy_tp_file_set_filename (response_data->tp_file, filename); - empathy_tp_file_accept (response_data->tp_file); + empathy_tp_file_accept (response_data->tp_file, 0); ft_manager_add_tp_file_to_list (response_data->ft_manager, response_data->tp_file); diff --git a/libempathy/empathy-tp-file.c b/libempathy/empathy-tp-file.c index c64c0e2f8..0d1a47a39 100644 --- a/libempathy/empathy-tp-file.c +++ b/libempathy/empathy-tp-file.c @@ -621,7 +621,8 @@ _get_local_socket (EmpathyTpFile *tp_file) * EMP_FILE_TRANSFER_STATE_LOCAL_PENDING). */ void -empathy_tp_file_accept (EmpathyTpFile *tp_file) +empathy_tp_file_accept (EmpathyTpFile *tp_file, + guint64 offset) { EmpathyTpFilePriv *priv; GValue *address; @@ -641,11 +642,46 @@ empathy_tp_file_accept (EmpathyTpFile *tp_file) if (!emp_cli_channel_type_file_run_accept_file (TP_PROXY (priv->channel), -1, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST, - ¬hing, &address, &error, NULL)) + ¬hing, offset, &address, &error, NULL)) { DEBUG ("Accept error: %s", error ? error->message : "No message given"); g_clear_error (&error); + return; + } + + if (priv->unix_socket_path) + g_free (priv->unix_socket_path); + + priv->unix_socket_path = g_value_dup_string (address); + g_value_unset (address); + + DEBUG ("Got unix socket path: %s", priv->unix_socket_path); +} + +void +empathy_tp_file_offer (EmpathyTpFile *tp_file) +{ + EmpathyTpFilePriv *priv; + GValue *address; + GError *error = NULL; + GValue nothing = { 0 }; + + g_return_if_fail (EMPATHY_IS_TP_FILE (tp_file)); + + priv = GET_PRIV (tp_file); + + g_value_init (¬hing, G_TYPE_STRING); + g_value_set_string (¬hing, ""); + + if (!emp_cli_channel_type_file_run_offer_file (TP_PROXY (priv->channel), + -1, TP_SOCKET_ADDRESS_TYPE_UNIX, TP_SOCKET_ACCESS_CONTROL_LOCALHOST, + ¬hing, &address, &error, NULL)) + { + DEBUG ("OfferFile error: %s", + error ? error->message : "No message given"); + g_clear_error (&error); + return; } if (priv->unix_socket_path) diff --git a/libempathy/empathy-tp-file.h b/libempathy/empathy-tp-file.h index 213948c93..5ba1f1d47 100644 --- a/libempathy/empathy-tp-file.h +++ b/libempathy/empathy-tp-file.h @@ -65,8 +65,9 @@ GType empathy_tp_file_get_type (void) G_GNUC_CONST; EmpathyTpFile *empathy_tp_file_new (McAccount *account, TpChannel *channel); TpChannel *empathy_tp_file_get_channel (EmpathyTpFile *tp_file); -void empathy_tp_file_accept (EmpathyTpFile *tp_file); +void empathy_tp_file_accept (EmpathyTpFile *tp_file, guint64 offset); void empathy_tp_file_cancel (EmpathyTpFile *tp_file); +void empathy_tp_file_offer (EmpathyTpFile *tp_file); const gchar *empathy_tp_file_get_id (EmpathyTpFile *tp_file); guint64 empathy_tp_file_get_transferred_bytes (EmpathyTpFile *tp_file); diff --git a/libempathy/empathy-utils.c b/libempathy/empathy-utils.c index 1a33328a4..b17d18a52 100644 --- a/libempathy/empathy-utils.c +++ b/libempathy/empathy-utils.c @@ -867,6 +867,8 @@ empathy_send_file (EmpathyContact *contact, empathy_tp_file_set_input_stream (tp_file, in_stream); } + empathy_tp_file_offer (tp_file); + g_object_unref (mc); g_object_unref (connection); g_object_unref (channel); |