[gthumb] facebook: update the progress bar while uploading images
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] facebook: update the progress bar while uploading images
- Date: Fri, 2 Sep 2011 13:36:06 +0000 (UTC)
commit f3003b3d0c964edc50a1361b387695830ec967fe
Author: Paolo Bacchilega <paobac src gnome org>
Date: Fri Sep 2 12:50:59 2011 +0200
facebook: update the progress bar while uploading images
extensions/facebook/facebook-service.c | 49 ++++++++++++++++++++++++--------
1 files changed, 37 insertions(+), 12 deletions(-)
---
diff --git a/extensions/facebook/facebook-service.c b/extensions/facebook/facebook-service.c
index fc35d6d..dc4e390 100644
--- a/extensions/facebook/facebook-service.c
+++ b/extensions/facebook/facebook-service.c
@@ -42,6 +42,7 @@ typedef struct {
GList *current;
goffset total_size;
goffset uploaded_size;
+ goffset wrote_body_data_size;
int n_files;
int uploaded_files;
GList *ids;
@@ -675,6 +676,37 @@ upload_photo_ready_cb (SoupSession *session,
static void
+upload_photo_wrote_body_data_cb (SoupMessage *msg,
+ SoupBuffer *chunk,
+ gpointer user_data)
+{
+ FacebookService *self = user_data;
+ GthFileData *file_data;
+ char *details;
+ double current_file_fraction;
+
+ if (self->priv->post_photos->current == NULL)
+ return;
+
+ self->priv->post_photos->wrote_body_data_size += chunk->length;
+ if (self->priv->post_photos->wrote_body_data_size > msg->request_body->length)
+ return;
+
+ file_data = self->priv->post_photos->current->data;
+ /* Translators: %s is a filename */
+ details = g_strdup_printf (_("Uploading '%s'"), g_file_info_get_display_name (file_data->info));
+ current_file_fraction = (double) self->priv->post_photos->wrote_body_data_size / msg->request_body->length;
+ gth_task_progress (GTH_TASK (self->priv->conn),
+ NULL,
+ details,
+ FALSE,
+ (double) (self->priv->post_photos->uploaded_size + (g_file_info_get_size (file_data->info) * current_file_fraction)) / self->priv->post_photos->total_size);
+
+ g_free (details);
+}
+
+
+static void
upload_photo_file_buffer_ready_cb (void **buffer,
gsize count,
GError *error,
@@ -803,20 +835,13 @@ upload_photo_file_buffer_ready_cb (void **buffer,
/* send the file */
- {
- char *details;
-
- /* Translators: %s is a filename */
- details = g_strdup_printf (_("Uploading '%s'"), g_file_info_get_display_name (file_data->info));
- gth_task_progress (GTH_TASK (self->priv->conn),
- NULL, details,
- FALSE,
- (double) (self->priv->post_photos->uploaded_size + (g_file_info_get_size (file_data->info) / 2.0)) / self->priv->post_photos->total_size);
-
- g_free (details);
- }
+ self->priv->post_photos->wrote_body_data_size = 0;
msg = soup_form_request_new_from_multipart (FACEBOOK_HTTPS_REST_SERVER, multipart);
+ g_signal_connect (msg,
+ "wrote-body-data",
+ (GCallback) upload_photo_wrote_body_data_cb,
+ self);
facebook_connection_send_message (self->priv->conn,
msg,
self->priv->post_photos->cancellable,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]