aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--camel/ChangeLog14
-rw-r--r--camel/camel-store.c11
-rw-r--r--camel/providers/imap/camel-imap-store.c24
3 files changed, 41 insertions, 8 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog
index ab80c0cf0c..d6cf01ed49 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -1,3 +1,17 @@
+2001-10-05 <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-store.c (subscribe_folder): Use a
+ folder_subscribed event rather than a folder_created one.
+ (unsubscribe_folder): Similarly for unsubscribed/deleted.
+ (create_folder): Emit a folder_created event on the folders we
+ added. Not sure hsould probably check which ones are new and
+ which ones are just existing ones?
+ (delete_folder): Emit a folder_deletd event when we've deleted the
+ folder. Part of fix for #11831.
+
+ * camel-store.c (camel_store_class_init): Added
+ folder_subscribed/unsubscribed events.
+
2001-10-05 Jeffrey Stedfast <fejj@ximian.com>
* camel-service.c (camel_service_finalize): Turn off warnings.
diff --git a/camel/camel-store.c b/camel/camel-store.c
index 779c900edd..4bc5de3f83 100644
--- a/camel/camel-store.c
+++ b/camel/camel-store.c
@@ -77,8 +77,7 @@ static void construct (CamelService *service, CamelSession *session,
static void
camel_store_class_init (CamelStoreClass *camel_store_class)
{
- CamelObjectClass *camel_object_class =
- CAMEL_OBJECT_CLASS (camel_store_class);
+ CamelObjectClass *camel_object_class = CAMEL_OBJECT_CLASS (camel_store_class);
CamelServiceClass *camel_service_class = CAMEL_SERVICE_CLASS(camel_store_class);
parent_class = CAMEL_SERVICE_CLASS (camel_type_get_global_classfuncs (camel_service_get_type ()));
@@ -103,10 +102,10 @@ camel_store_class_init (CamelStoreClass *camel_store_class)
/* virtual method overload */
camel_service_class->construct = construct;
- camel_object_class_declare_event (camel_object_class,
- "folder_created", NULL);
- camel_object_class_declare_event (camel_object_class,
- "folder_deleted", NULL);
+ camel_object_class_declare_event(camel_object_class, "folder_created", NULL);
+ camel_object_class_declare_event(camel_object_class, "folder_deleted", NULL);
+ camel_object_class_declare_event(camel_object_class, "folder_subscribed", NULL);
+ camel_object_class_declare_event(camel_object_class, "folder_unsubscribed", NULL);
}
static void
diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c
index 1ab13d9a47..efe60cfba7 100644
--- a/camel/providers/imap/camel-imap-store.c
+++ b/camel/providers/imap/camel-imap-store.c
@@ -1043,6 +1043,8 @@ delete_folder (CamelStore *store, const char *folder_name, CamelException *ex)
char *summary_file;
char *journal_file;
char *folder_dir;
+ CamelFolderInfo *fi;
+ char *name;
folder_dir = e_path_to_physical (imap_store->storage_path, folder_name);
if (access (folder_dir, F_OK) != 0) {
@@ -1074,6 +1076,21 @@ delete_folder (CamelStore *store, const char *folder_name, CamelException *ex)
rmdir (folder_dir);
g_free (folder_dir);
+
+ name = strrchr (folder_name, imap_store->dir_sep);
+ if (name)
+ name++;
+ else
+ name = folder_name;
+
+ fi = g_new0 (CamelFolderInfo, 1);
+ fi->full_name = g_strdup (folder_name);
+ fi->name = g_strdup (name);
+ fi->url = g_strdup_printf ("%s/%s", imap_store->base_url, folder_name);
+ fi->unread_message_count = -1;
+ camel_folder_info_build_path (fi, imap_store->dir_sep);
+ camel_object_trigger_event (CAMEL_OBJECT (store), "folder_deleted", fi);
+ camel_folder_info_free (fi);
}
}
@@ -1202,6 +1219,9 @@ create_folder (CamelStore *store, const char *parent_name,
parent = fi;
}
+ camel_folder_info_build_path(root, imap_store->dir_sep);
+ camel_object_trigger_event (CAMEL_OBJECT (store), "folder_created", root);
+
g_free (pathnames);
g_ptr_array_free (folders, TRUE);
@@ -1606,7 +1626,7 @@ subscribe_folder (CamelStore *store, const char *folder_name,
camel_url_free (url);
- camel_object_trigger_event (CAMEL_OBJECT (store), "folder_created", fi);
+ camel_object_trigger_event (CAMEL_OBJECT (store), "folder_subscribed", fi);
camel_folder_info_free (fi);
}
@@ -1647,7 +1667,7 @@ unsubscribe_folder (CamelStore *store, const char *folder_name,
fi->unread_message_count = -1;
camel_folder_info_build_path (fi, imap_store->dir_sep);
- camel_object_trigger_event (CAMEL_OBJECT (store), "folder_deleted", fi);
+ camel_object_trigger_event (CAMEL_OBJECT (store), "folder_unsubscribed", fi);
camel_folder_info_free (fi);
}