aboutsummaryrefslogtreecommitdiffstats
path: root/camel
diff options
context:
space:
mode:
Diffstat (limited to 'camel')
-rw-r--r--camel/ChangeLog8
-rw-r--r--camel/providers/imap4/camel-imap4-summary.c21
2 files changed, 29 insertions, 0 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog
index 4a9c83f055..aa2ed7dff6 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -1,3 +1,11 @@
+2004-08-06 Jeffrey Stedfast <fejj@novell.com>
+
+ * providers/imap4/camel-imap4-summary.c (untagged_fetch_all): Call
+ camel_operation_progress().
+ (imap4_summary_fetch_all): Setup info we need for progress
+ reporting.
+ (imap4_summary_fetch_flags): Same.
+
2004-08-04 Rodney Dawes <dobey@novell.com>
* camel-charset-map.c: #include <gal/util/e-iconv.h>
diff --git a/camel/providers/imap4/camel-imap4-summary.c b/camel/providers/imap4/camel-imap4-summary.c
index af53bcef4f..ed4a9cbde9 100644
--- a/camel/providers/imap4/camel-imap4-summary.c
+++ b/camel/providers/imap4/camel-imap4-summary.c
@@ -598,6 +598,9 @@ struct imap4_fetch_all_t {
GHashTable *uid_hash;
GPtrArray *added;
guint32 first;
+ guint32 need;
+ int count;
+ int total;
};
static void
@@ -891,6 +894,8 @@ untagged_fetch_all (CamelIMAP4Engine *engine, CamelIMAP4Command *ic, guint32 ind
if (envelope) {
envelope->changed |= changed;
+ if ((envelope->changed & fetch->need) == fetch->need)
+ camel_operation_progress (NULL, (++fetch->count * 100.0f) / fetch->total);
} else if (changed & IMAP4_FETCH_FLAGS) {
camel_folder_change_info_change_uid (fetch->changes, camel_message_info_uid (info));
}
@@ -930,6 +935,11 @@ imap4_summary_fetch_all (CamelFolderSummary *summary, guint32 first, guint32 las
fetch->added = g_ptr_array_new ();
fetch->summary = summary;
fetch->first = first;
+ fetch->need = IMAP4_FETCH_ALL;
+ fetch->total = last ? (last - first) + 1 : (imap4_summary->exists - first) + 1;
+ fetch->count = 0;
+
+ g_ptr_array_set_size (fetch->added, fetch->total);
/* From rfc2060, Section 6.4.5:
*
@@ -971,6 +981,11 @@ imap4_summary_fetch_flags (CamelFolderSummary *summary, guint32 first, guint32 l
fetch->added = g_ptr_array_new ();
fetch->summary = summary;
fetch->first = first;
+ fetch->need = IMAP4_FETCH_UID | IMAP4_FETCH_FLAGS;
+ fetch->total = (last - first) + 1;
+ fetch->count = 0;
+
+ g_ptr_array_set_size (fetch->added, fetch->total);
if (last != 0)
ic = camel_imap4_engine_queue (engine, folder, "FETCH %u:%u (UID FLAGS)\r\n", first, last);
@@ -1201,6 +1216,7 @@ camel_imap4_summary_flush_updates (CamelFolderSummary *summary, CamelException *
* client */
ic = imap4_summary_fetch_flags (summary, 1, scount);
+ camel_operation_start (NULL, _("Scanning for changed messages"));
while ((id = camel_imap4_engine_iterate (engine)) < ic->id && id != -1)
;
@@ -1208,6 +1224,7 @@ camel_imap4_summary_flush_updates (CamelFolderSummary *summary, CamelException *
imap4_fetch_all_free (ic->user_data);
camel_exception_xfer (ex, &ic->ex);
camel_imap4_command_unref (ic);
+ camel_operation_end (NULL);
return -1;
}
@@ -1215,6 +1232,7 @@ camel_imap4_summary_flush_updates (CamelFolderSummary *summary, CamelException *
first = scount + 1;
camel_imap4_command_unref (ic);
+ camel_operation_end (NULL);
} else {
first = scount + 1;
}
@@ -1222,6 +1240,7 @@ camel_imap4_summary_flush_updates (CamelFolderSummary *summary, CamelException *
if (first != 0 && first <= imap4_summary->exists) {
ic = imap4_summary_fetch_all (summary, first, 0);
+ camel_operation_start (NULL, _("Fetching envelopes for new messages"));
while ((id = camel_imap4_engine_iterate (engine)) < ic->id && id != -1)
;
@@ -1229,11 +1248,13 @@ camel_imap4_summary_flush_updates (CamelFolderSummary *summary, CamelException *
imap4_fetch_all_free (ic->user_data);
camel_exception_xfer (ex, &ic->ex);
camel_imap4_command_unref (ic);
+ camel_operation_end (NULL);
return -1;
}
imap4_fetch_all_add (ic->user_data);
camel_imap4_command_unref (ic);
+ camel_operation_end (NULL);
#if 0
/* Note: this should not be needed - the code that adds envelopes to the summary