aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog10
-rw-r--r--mail/mail-send-recv.c8
-rw-r--r--mail/mail-vfolder.c72
3 files changed, 59 insertions, 31 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 96fea5fa92..f0d2afe754 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,13 @@
+2001-02-16 Not Zed <NotZed@Ximian.com>
+
+ * mail-send-recv.c (receive_status): Dont do the thaw/freeze set here.
+ (update_folders): "
+
+ * mail-vfolder.c (vfolder_refresh): Setup the virtual
+ 'unmatched' folder by default.
+ (vfolder_uri_to_folder): HAndle UNMATCHED folder specially, it has
+ no explicit sources.
+
2001-02-16 Jeffrey Stedfast <fejj@ximian.com>
* mail-send-recv.c (receive_get_folder): Not sure it makes any
diff --git a/mail/mail-send-recv.c b/mail/mail-send-recv.c
index 6eace378d3..299a07289a 100644
--- a/mail/mail-send-recv.c
+++ b/mail/mail-send-recv.c
@@ -346,8 +346,8 @@ update_folders(char *uri, struct _folder_info *info, void *data)
/* we back off slowly as we progress */
if (now > info->update+10+info->count*5) {
printf("upating a folder: %s\n", info->uri);
- camel_folder_thaw(info->folder);
- camel_folder_freeze(info->folder);
+ /*camel_folder_thaw(info->folder);
+ camel_folder_freeze(info->folder);*/
info->update = now;
info->count++;
}
@@ -417,8 +417,8 @@ receive_status (CamelFilterDriver *driver, enum camel_filter_status_t status, in
if (info->data->inbox && now > info->data->inbox_update+20) {
printf("updating inbox too\n");
/* this doesn't seem to work right :( */
- camel_folder_thaw(info->data->inbox);
- camel_folder_freeze(info->data->inbox);
+ /*camel_folder_thaw(info->data->inbox);
+ camel_folder_freeze(info->data->inbox);*/
info->data->inbox_update = now;
}
diff --git a/mail/mail-vfolder.c b/mail/mail-vfolder.c
index 7f654d2da5..e420a24178 100644
--- a/mail/mail-vfolder.c
+++ b/mail/mail-vfolder.c
@@ -125,6 +125,26 @@ vfolder_refresh(void)
g_free(info->query);
l = g_list_next(l);
}
+
+ /* setup the virtual unmatched folder */
+ info = vfolder_find("UNMATCHED");
+ if (info == NULL) {
+ char *uri, *path;
+
+ info = g_malloc(sizeof(*info));
+ info->name = g_strdup("UNMATCHED");
+ info->query = g_strdup("UNMATCHED");
+ d(printf("Adding new vfolder: %s %s\n", info->name, info->query));
+
+ uri = g_strdup_printf("vfolder:%s", info->name);
+ path = g_strdup_printf("/%s", info->name);
+ evolution_storage_new_folder(vfolder_storage, path, g_basename(path),
+ "mail", uri, info->name, FALSE);
+ g_free(uri);
+ g_free(path);
+ }
+ head = g_list_append(head, info);
+
g_list_free(available_vfolders);
available_vfolders = head;
g_string_free(expr, TRUE);
@@ -203,34 +223,32 @@ vfolder_uri_to_folder(const char *uri, CamelException *ex)
bonobo_object_ref (BONOBO_OBJECT (vfolder_storage));
mail_hash_storage ((CamelService *)folder->parent_store, vfolder_storage);
- sourceuri = NULL;
- sources = 0;
- while ( (sourceuri = vfolder_rule_next_source(rule, sourceuri)) ) {
- d(printf("adding vfolder source: %s\n", sourceuri));
- sourcefolder = mail_tool_uri_to_folder (sourceuri, ex);
- printf("source folder = %p\n", sourcefolder);
- if (sourcefolder) {
- sources++;
- mail_tool_camel_lock_up ();
- camel_vee_folder_add_folder(folder, sourcefolder);
- mail_tool_camel_lock_down ();
- } else {
- /* we'll just silently ignore now-missing sources */
- camel_exception_clear(ex);
+ if (strcmp(uri+8, "UNMATCHED") != 0) {
+ sourceuri = NULL;
+ sources = 0;
+ while ( (sourceuri = vfolder_rule_next_source(rule, sourceuri)) ) {
+ d(printf("adding vfolder source: %s\n", sourceuri));
+ sourcefolder = mail_tool_uri_to_folder (sourceuri, ex);
+ printf("source folder = %p\n", sourcefolder);
+ if (sourcefolder) {
+ sources++;
+ camel_vee_folder_add_folder(folder, sourcefolder);
+ } else {
+ /* we'll just silently ignore now-missing sources */
+ camel_exception_clear(ex);
+ }
}
- }
- /* if we didn't have any sources, just use Inbox as the default */
- if (sources == 0) {
- char *defaulturi;
-
- defaulturi = g_strdup_printf("file://%s/local/Inbox", evolution_dir);
- d(printf("No sources configured/found, using default: %s\n", defaulturi));
- sourcefolder = mail_tool_uri_to_folder (defaulturi, ex);
- g_free(defaulturi);
- if (sourcefolder) {
- mail_tool_camel_lock_up ();
- camel_vee_folder_add_folder(folder, sourcefolder);
- mail_tool_camel_lock_down ();
+ /* if we didn't have any sources, just use Inbox as the default */
+ if (sources == 0) {
+ char *defaulturi;
+
+ defaulturi = g_strdup_printf("file://%s/local/Inbox", evolution_dir);
+ d(printf("No sources configured/found, using default: %s\n", defaulturi));
+ sourcefolder = mail_tool_uri_to_folder (defaulturi, ex);
+ g_free(defaulturi);
+ if (sourcefolder) {
+ camel_vee_folder_add_folder(folder, sourcefolder);
+ }
}
}