aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-send-recv.c
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2011-05-13 22:31:13 +0800
committerMilan Crha <mcrha@redhat.com>2011-05-13 22:31:13 +0800
commit998b265b135da1b373d6e20e5c9a3b405ca26163 (patch)
treec8da043575032ca6d351a1327c0d253f1203efe3 /mail/mail-send-recv.c
parentc5765a097fd18989f16ed0cf4d2dcbcc153eb39b (diff)
downloadgsoc2013-evolution-998b265b135da1b373d6e20e5c9a3b405ca26163.tar
gsoc2013-evolution-998b265b135da1b373d6e20e5c9a3b405ca26163.tar.gz
gsoc2013-evolution-998b265b135da1b373d6e20e5c9a3b405ca26163.tar.bz2
gsoc2013-evolution-998b265b135da1b373d6e20e5c9a3b405ca26163.tar.lz
gsoc2013-evolution-998b265b135da1b373d6e20e5c9a3b405ca26163.tar.xz
gsoc2013-evolution-998b265b135da1b373d6e20e5c9a3b405ca26163.tar.zst
gsoc2013-evolution-998b265b135da1b373d6e20e5c9a3b405ca26163.zip
Bug #646033 - Update progress in Send/Receive dialog
Diffstat (limited to 'mail/mail-send-recv.c')
-rw-r--r--mail/mail-send-recv.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/mail/mail-send-recv.c b/mail/mail-send-recv.c
index a39bf77d1a..a6eb037520 100644
--- a/mail/mail-send-recv.c
+++ b/mail/mail-send-recv.c
@@ -922,6 +922,12 @@ get_folders (CamelStore *store, GPtrArray *folders, CamelFolderInfo *info)
}
}
+static void
+main_op_cancelled_cb (GCancellable *main_op, GCancellable *refresh_op)
+{
+ g_cancellable_cancel (refresh_op);
+}
+
struct _refresh_folders_msg {
MailMsg base;
@@ -945,6 +951,10 @@ refresh_folders_exec (struct _refresh_folders_msg *m,
CamelFolder *folder;
gint i;
GError *local_error = NULL;
+ gulong handler_id = 0;
+
+ if (cancellable)
+ handler_id = g_signal_connect (m->info->cancellable, "cancelled", G_CALLBACK (main_op_cancelled_cb), cancellable);
get_folders (m->store, m->folders, m->finfo);
@@ -966,7 +976,13 @@ refresh_folders_exec (struct _refresh_folders_msg *m,
if (g_cancellable_is_cancelled (m->info->cancellable))
break;
+
+ if (m->info->state != SEND_CANCELLED)
+ g_signal_emit_by_name (m->info->cancellable, "status", _("Updating..."), 100 * i / m->folders->len);
}
+
+ if (cancellable)
+ g_signal_handler_disconnect (m->info->cancellable, handler_id);
}
static void