diff options
author | Not Zed <NotZed@Ximian.com> | 2002-07-24 15:21:15 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2002-07-24 15:21:15 +0800 |
commit | 0c43bcb20b82f8da6e6ffb71f85d27b251537e79 (patch) | |
tree | 2f3cbb1b59a87a5d0c03da7adb596d3906d8c788 /mail/mail-config.c | |
parent | 1080bf46a19e63965b11a93b4fe0ea2035fbd8a9 (diff) | |
download | gsoc2013-evolution-0c43bcb20b82f8da6e6ffb71f85d27b251537e79.tar.gz gsoc2013-evolution-0c43bcb20b82f8da6e6ffb71f85d27b251537e79.tar.zst gsoc2013-evolution-0c43bcb20b82f8da6e6ffb71f85d27b251537e79.zip |
Propagate name changes or removes to the mail config. #15951. Doesn't
2002-07-24 Not Zed <NotZed@Ximian.com>
* mail-folder-cache.c (real_flush_updates): Propagate name changes
or removes to the mail config. #15951. Doesn't enitrely work for
local folders, because they are never renamed only removed and
added thanks to the shell's api.
* mail-config.c (mail_config_uri_renamed): If a store folder is
renamed, this checks for any config that needs updating, so far
sent and drafts folders.
(mail_config_uri_deleted): Same, for deleted folders.
svn path=/trunk/; revision=17568
Diffstat (limited to 'mail/mail-config.c')
-rw-r--r-- | mail/mail-config.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/mail/mail-config.c b/mail/mail-config.c index 9e639ee2a5..a6b47e92ad 100644 --- a/mail/mail-config.c +++ b/mail/mail-config.c @@ -2420,6 +2420,64 @@ mail_config_get_default_transport (void) return NULL; } +void +mail_config_uri_renamed(GCompareFunc uri_cmp, const char *old, const char *new) +{ + MailConfigAccount *ac; + const GSList *l; + int work = 0; + + l = mail_config_get_accounts(); + while (l) { + ac = l->data; + if (ac->sent_folder_uri && uri_cmp(ac->sent_folder_uri, old)) { + g_free(ac->sent_folder_uri); + ac->sent_folder_uri = g_strdup(new); + work = 1; + } + if (ac->drafts_folder_uri && uri_cmp(ac->drafts_folder_uri, old)) { + g_free(ac->drafts_folder_uri); + ac->drafts_folder_uri = g_strdup(new); + work = 1; + } + l = l->next; + } + + /* nasty ... */ + if (work) + mail_config_write(); +} + +void +mail_config_uri_deleted(GCompareFunc uri_cmp, const char *uri) +{ + MailConfigAccount *ac; + const GSList *l; + int work = 0; + /* assumes these can't be removed ... */ + extern char *default_sent_folder_uri, *default_drafts_folder_uri; + + l = mail_config_get_accounts(); + while (l) { + ac = l->data; + if (ac->sent_folder_uri && uri_cmp(ac->sent_folder_uri, uri)) { + g_free(ac->sent_folder_uri); + ac->sent_folder_uri = g_strdup(default_sent_folder_uri); + work = 1; + } + if (ac->drafts_folder_uri && uri_cmp(ac->drafts_folder_uri, uri)) { + g_free(ac->drafts_folder_uri); + ac->drafts_folder_uri = g_strdup(default_drafts_folder_uri); + work = 1; + } + l = l->next; + } + + /* nasty again */ + if (work) + mail_config_write(); +} + GSList * mail_config_get_sources (void) { |