diff options
author | Jeffrey Stedfast <fejj@ximian.com> | 2001-02-16 07:54:16 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2001-02-16 07:54:16 +0800 |
commit | 7ac8a9c5e8bc272a75bed0c2509b525b907753ba (patch) | |
tree | 46e44dc67e27ad504ed94f4a148d4c9c8489b266 /mail/mail-callbacks.c | |
parent | f89ca302d1bc8cdd0a988121523928b80366441a (diff) | |
download | gsoc2013-evolution-7ac8a9c5e8bc272a75bed0c2509b525b907753ba.tar.gz gsoc2013-evolution-7ac8a9c5e8bc272a75bed0c2509b525b907753ba.tar.zst gsoc2013-evolution-7ac8a9c5e8bc272a75bed0c2509b525b907753ba.zip |
Use mail_storage_create_folder
2001-02-15 Jeffrey Stedfast <fejj@ximian.com>
* mail-ops.c (do_scan_subfolders): Use mail_storage_create_folder
* mail-callbacks.c (mail_storage_create_folder): Convenience
function so we can keep all the evolution_storage_add_new_folder()
code in one place as much as possible.
* subscribe-dialog.c (recursive_add_folder): Use 'name' rather
than the no-description bs since that's what all the other places
do.
* mail-callbacks.c (folder_created): New callback to handle the
"folder_created" signal - handles CamelFolderInfo's recursively.
(folder_deleted): Same but for "folder_deleted".
* component-factory.c (storage_create_folder): Instead of doing
the evolution_storage_new_folder() stuff by hand, pass it off to
the new callback: folder_created(). At some point this will be
unecessary as we'll attach this callback to the "folder_created"
signal.
svn path=/trunk/; revision=8247
Diffstat (limited to 'mail/mail-callbacks.c')
-rw-r--r-- | mail/mail-callbacks.c | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/mail/mail-callbacks.c b/mail/mail-callbacks.c index e166871550..f4fa4f06cd 100644 --- a/mail/mail-callbacks.c +++ b/mail/mail-callbacks.c @@ -1334,3 +1334,90 @@ stop_threads(BonoboUIComponent *uih, void *user_data, const char *path) camel_operation_cancel(NULL); } + +static void +create_folders (EvolutionStorage *storage, CamelFolderInfo *fi) +{ + char *name, *path; + + if (fi->unread_message_count > 0) + name = g_strdup_printf ("%s (%d)", fi->name, + fi->unread_message_count); + else + name = g_strdup (fi->name); + + path = g_strdup_printf ("/%s", fi->full_name); + evolution_storage_new_folder (storage, path, name, + "mail", fi->url ? fi->url : "", + fi->name, /* description */ + fi->unread_message_count > 0); + g_free (name); + g_free (path); + + if (fi->child) + create_folders (storage, fi->child); + + if (fi->sibling) + create_folders (storage, fi->sibling); +} + +void +folder_created (CamelStore *store, CamelFolderInfo *fi) +{ + EvolutionStorage *storage; + + if ((storage = mail_lookup_storage (store))) { + if (fi) + create_folders (storage, fi); + + gtk_object_unref (GTK_OBJECT (storage)); + } +} + +void +mail_storage_create_folder (EvolutionStorage *storage, CamelStore *store, CamelFolderInfo *fi) +{ + gboolean unref = FALSE; + + if (!storage && store) { + storage = mail_lookup_storage (store); + unref = TRUE; + } + + if (storage) { + if (fi) + create_folders (storage, fi); + + if (unref) + gtk_object_unref (GTK_OBJECT (storage)); + } +} + +static void +delete_folders (EvolutionStorage *storage, CamelFolderInfo *fi) +{ + char *path; + + if (fi->child) + delete_folders (storage, fi->child); + + path = g_strdup_printf ("/%s", fi->full_name); + evolution_storage_removed_folder (storage, path); + g_free (path); + + if (fi->sibling) + delete_folders (storage, fi->sibling); +} + +void +folder_deleted (CamelStore *store, CamelFolderInfo *fi) +{ + EvolutionStorage *storage; + + if ((storage = mail_lookup_storage (store))) { + if (fi) + delete_folders (storage, fi); + + gtk_object_unref (GTK_OBJECT (storage)); + } +} |