diff options
-rw-r--r-- | mail/ChangeLog | 8 | ||||
-rw-r--r-- | mail/component-factory.c | 53 | ||||
-rw-r--r-- | mail/mail-callbacks.c | 15 |
3 files changed, 41 insertions, 35 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index 87901893bb..1d96a3f937 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,11 @@ +2001-03-26 Dan Winship <danw@ximian.com> + + * component-factory.c (mail_load_storages): Simplify a bit using + camel_session_get_provider. + + * mail-callbacks.c (empty_trash): Ditto, and fix up use of + CamelException. + 2001-03-26 Radek Doulik <rodo@ximian.com> * mail-format.c (write_address): clear name and email data after diff --git a/mail/component-factory.c b/mail/component-factory.c index d3a88ca197..5e3ece1f61 100644 --- a/mail/component-factory.c +++ b/mail/component-factory.c @@ -414,7 +414,8 @@ mail_load_storages (GNOME_Evolution_Shell shell, const GSList *sources, gboolean const MailConfigService *service = NULL; CamelService *store; CamelProvider *prov; - + char *name; + if (is_account_data) { account = iter->data; service = account->source; @@ -425,9 +426,8 @@ mail_load_storages (GNOME_Evolution_Shell shell, const GSList *sources, gboolean if (service->url == NULL || service->url[0] == '\0') continue; - store = camel_session_get_service (session, service->url, - CAMEL_PROVIDER_STORE, &ex); - if (store == NULL) { + prov = camel_session_get_provider (session, service->url, &ex); + if (prov == NULL) { /* FIXME: real error dialog */ g_warning ("couldn't get service %s: %s\n", service->url, camel_exception_get_description (&ex)); @@ -435,31 +435,38 @@ mail_load_storages (GNOME_Evolution_Shell shell, const GSList *sources, gboolean continue; } - prov = camel_service_get_provider (store); - /* FIXME: this case is ambiguous for things like the * mbox provider, which can really be a spool * (/var/spool/mail/user) or a storage (~/mail/, eg). * That issue can't be resolved on the provider level * -- it's a per-URL problem. */ - if (prov->flags & CAMEL_PROVIDER_IS_STORAGE && prov->flags & CAMEL_PROVIDER_IS_REMOTE) { - char *name; - - if (is_account_data) { - name = g_strdup (account->name); - } else { - name = camel_service_get_name (store, TRUE); - } - add_storage (name, service->url, store, shell, &ex); - g_free (name); - - if (camel_exception_is_set (&ex)) { - /* FIXME: real error dialog */ - g_warning ("Cannot load storage: %s", - camel_exception_get_description (&ex)); - camel_exception_clear (&ex); - } + if (!(prov->flags & (CAMEL_PROVIDER_IS_STORAGE | CAMEL_PROVIDER_IS_REMOTE))) + continue; + + store = camel_session_get_service (session, service->url, + CAMEL_PROVIDER_STORE, &ex); + if (store == NULL) { + /* FIXME: real error dialog */ + g_warning ("couldn't get service %s: %s\n", service->url, + camel_exception_get_description (&ex)); + camel_exception_clear (&ex); + continue; + } + + if (is_account_data) + name = g_strdup (account->name); + else + name = camel_service_get_name (store, TRUE); + + add_storage (name, service->url, store, shell, &ex); + g_free (name); + + if (camel_exception_is_set (&ex)) { + /* FIXME: real error dialog */ + g_warning ("Cannot load storage: %s", + camel_exception_get_description (&ex)); + camel_exception_clear (&ex); } camel_object_unref (CAMEL_OBJECT (store)); diff --git a/mail/mail-callbacks.c b/mail/mail-callbacks.c index 9ee434d16c..8d6a5aa57e 100644 --- a/mail/mail-callbacks.c +++ b/mail/mail-callbacks.c @@ -1459,7 +1459,6 @@ empty_trash (BonoboUIComponent *uih, void *user_data, const char *path) { MailConfigAccount *account; CamelProvider *provider; - CamelService *service; CamelFolder *vtrash; const GSList *accounts; CamelException *ex; @@ -1473,30 +1472,22 @@ empty_trash (BonoboUIComponent *uih, void *user_data, const char *path) /* make sure this is a valid source */ if (account->source && account->source->url) { - service = camel_session_get_service (session, account->source->url, - CAMEL_PROVIDER_STORE, ex); - - if (service) { - provider = camel_service_get_provider (service); - + provider = camel_session_get_provider (session, account->source->url, NULL); + if (provider) { /* make sure this store is a remote store */ if (provider->flags & CAMEL_PROVIDER_IS_STORAGE && provider->flags & CAMEL_PROVIDER_IS_REMOTE) { char *url; url = g_strdup_printf ("vtrash:%s", account->source->url); - vtrash = mail_tool_uri_to_folder (url, ex); + vtrash = mail_tool_uri_to_folder (url, NULL); g_free (url); if (vtrash) mail_expunge_folder (vtrash, empty_trash_expunged_cb, NULL); } - - camel_object_unref (CAMEL_OBJECT (service)); } } - - camel_exception_clear (ex); accounts = accounts->next; } |