aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers/imap
diff options
context:
space:
mode:
authorDan Winship <danw@src.gnome.org>2000-10-25 23:27:17 +0800
committerDan Winship <danw@src.gnome.org>2000-10-25 23:27:17 +0800
commit82185d7faa88274eccd75e495d2de2a3f8f4237c (patch)
treee6669af593c145764b36408f2bfe283a69f585b5 /camel/providers/imap
parent945c7db44f9faab6e12411c82c8459cba30c60fe (diff)
downloadgsoc2013-evolution-82185d7faa88274eccd75e495d2de2a3f8f4237c.tar.gz
gsoc2013-evolution-82185d7faa88274eccd75e495d2de2a3f8f4237c.tar.zst
gsoc2013-evolution-82185d7faa88274eccd75e495d2de2a3f8f4237c.zip
Add a "parent" field to CamelFolderInfo.
* camel-store.h: Add a "parent" field to CamelFolderInfo. * camel-store.c (camel_folder_info_build): Deal with "parent" (camel_store_folder_subscribed, camel_store_subscribe_folder, camel_store_unsubscribe_folder): Add g_return_if_fails checking that the folder supports subscriptions. * providers/imap/camel-imap-store.c (folder_subscribed, subscribe_folder, unsubscribe_folder): Remove "+ 1"s since the mail subscribe UI won't prepend / to the folder names now. (get_folder_info): Clear the "parent" field of the folderinfos when removing an empty top level. * providers/nntp/camel-nntp-store.c (nntp_store_folder_subscribed, nntp_store_subscribe_folder, nntp_store_unsubscribe_folder): Remove "+ 1"s since the mail subscribe UI won't prepend / to the folder names now. svn path=/trunk/; revision=6167
Diffstat (limited to 'camel/providers/imap')
-rw-r--r--camel/providers/imap/camel-imap-store.c31
1 files changed, 18 insertions, 13 deletions
diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c
index 8e3816088d..f0ea3c0aec 100644
--- a/camel/providers/imap/camel-imap-store.c
+++ b/camel/providers/imap/camel-imap-store.c
@@ -675,6 +675,8 @@ get_folder_info (CamelStore *store, const char *top, gboolean fast,
topfi = topfi->child;
fi->child = NULL;
camel_folder_info_free (fi);
+ for (fi = topfi; fi; fi->sibling)
+ fi->parent = NULL;
}
g_free (namespace);
@@ -688,9 +690,10 @@ folder_subscribed (CamelStore *store, const char *folder_name)
CamelImapStore *imap_store = CAMEL_IMAP_STORE (store);
char *folder_path;
- folder_path = camel_imap_store_folder_path (imap_store, folder_name + 1 /* bump past the '/' */);
+ folder_path = camel_imap_store_folder_path (imap_store, folder_name);
- return (g_hash_table_lookup (imap_store->subscribed_folders, folder_path) != NULL);
+ return g_hash_table_lookup (imap_store->subscribed_folders,
+ folder_path) != NULL;
}
static void
@@ -701,14 +704,16 @@ subscribe_folder (CamelStore *store, const char *folder_name,
CamelImapResponse *response;
char *folder_path;
- folder_path = camel_imap_store_folder_path (imap_store, folder_name + 1 /* bump past the '/' */);
+ folder_path = camel_imap_store_folder_path (imap_store, folder_name);
response = camel_imap_command (imap_store, NULL, ex,
"SUBSCRIBE \"%s\"",
folder_path);
-
- if (response)
- g_hash_table_insert (imap_store->subscribed_folders, folder_path, folder_path);
+ if (response) {
+ g_hash_table_insert (imap_store->subscribed_folders,
+ folder_path, folder_path);
+ } else
+ g_free (folder_path);
camel_imap_response_free (response);
}
@@ -719,22 +724,22 @@ unsubscribe_folder (CamelStore *store, const char *folder_name,
CamelImapStore *imap_store = CAMEL_IMAP_STORE (store);
CamelImapResponse *response;
char *folder_path;
- char *key, *value;
+ gpointer key, value;
- folder_path = camel_imap_store_folder_path (imap_store, folder_name + 1 /* bump past the '/' */);
+ folder_path = camel_imap_store_folder_path (imap_store, folder_name);
response = camel_imap_command (imap_store, NULL, ex,
"UNSUBSCRIBE \"%s\"",
folder_path);
-
if (response) {
- g_hash_table_lookup_extended (imap_store->subscribed_folders, folder_path,
- (gpointer)&key, (gpointer)&value);
- g_hash_table_remove (imap_store->subscribed_folders, folder_path);
+ g_hash_table_lookup_extended (imap_store->subscribed_folders,
+ folder_path, key, value);
+ g_hash_table_remove (imap_store->subscribed_folders,
+ folder_path);
+ g_free (key);
}
camel_imap_response_free (response);
g_free (folder_path);
- g_free (key);
}
static void