diff options
Diffstat (limited to 'mail/mail-config.c')
-rw-r--r-- | mail/mail-config.c | 146 |
1 files changed, 104 insertions, 42 deletions
diff --git a/mail/mail-config.c b/mail/mail-config.c index 3c39791dfa..1e0bfd2a70 100644 --- a/mail/mail-config.c +++ b/mail/mail-config.c @@ -210,6 +210,22 @@ gconf_outlook_filenames_changed (GConfClient *client, guint cnxn_id, } static void +gconf_outlook_filenames_changed (GConfClient *client, guint cnxn_id, + GConfEntry *entry, gpointer user_data) +{ + extern int camel_header_param_encode_filenames_in_rfc_2047; + + g_return_if_fail (client != NULL); + + /* pass option to the camel */ + if (gconf_client_get_bool (client, "/apps/evolution/mail/composer/outlook_filenames", NULL)) { + camel_header_param_encode_filenames_in_rfc_2047 = 1; + } else { + camel_header_param_encode_filenames_in_rfc_2047 = 0; + } +} + +static void gconf_jh_check_changed (GConfClient *client, guint cnxn_id, GConfEntry *entry, gpointer user_data) { @@ -676,41 +692,46 @@ mail_config_account_url_equal (const CamelURL *u1, return (u1->port == u2->port); } -EAccount * -mail_config_get_account_by_source_url (const char *source_url) +static EAccount * +mc_get_account_by (const char *given_url, const char * (get_url_string)(EAccount *account)) { - EAccountList *account_list; EAccount *account = NULL; EIterator *iter; CamelURL *url; + CamelProvider *provider; - g_return_val_if_fail (source_url != NULL, NULL); + g_return_val_if_fail (given_url != NULL, NULL); + g_return_val_if_fail (get_url_string != NULL, NULL); - url = camel_url_new (source_url, NULL); + url = camel_url_new (given_url, NULL); g_return_val_if_fail (url != NULL, NULL); - account_list = e_get_account_list (); - iter = e_list_get_iterator ((EList *) account_list); + provider = camel_provider_get (given_url, NULL); + g_return_val_if_fail (provider != NULL && provider->url_equal != NULL, NULL); + + iter = e_list_get_iterator ((EList *) config->accounts); while (account == NULL && e_iterator_is_valid (iter)) { CamelURL *account_url; + const char *account_url_string; account = (EAccount *) e_iterator_get (iter); e_iterator_next (iter); - if ( !account || (account->source == NULL) || - (account->source->url == NULL) || (*account->source->url == '\0')) { + account_url_string = get_url_string (account); + + if ( !account_url_string || !*account_url_string) { account = NULL; continue; } - account_url = camel_url_new (account->source->url, NULL); + account_url = camel_url_new (account_url_string, NULL); if (account_url == NULL) { account = NULL; continue; } - if (!mail_config_account_url_equal (url, account_url)) + if (!provider->url_equal (url, account_url)) account = NULL; /* not a match */ camel_url_free (account_url); @@ -722,50 +743,91 @@ mail_config_get_account_by_source_url (const char *source_url) return account; } +static const char * +get_source_url_string (EAccount *account) +{ + if (account && account->source && account->source->url && *account->source->url) + return account->source->url; + return NULL; +} + +static const char * +get_transport_url_string (EAccount *account) +{ + if (account && account->transport && account->transport->url && *account->transport->url) + return account->transport->url; + return NULL; +} + EAccount * -mail_config_get_account_by_transport_url (const char *transport_url) +mail_config_get_account_by_source_url (const char *source_url) { - EAccountList *account_list; - EAccount *account = NULL; - EIterator *iter; - CamelURL *url; + return mc_get_account_by (source_url, get_source_url_string); +} - g_return_val_if_fail (transport_url != NULL, NULL); +EAccount * +mail_config_get_account_by_transport_url (const char *transport_url) +{ + return mc_get_account_by (transport_url, get_transport_url_string); +} - url = camel_url_new (transport_url, NULL); - g_return_val_if_fail (url != NULL, NULL); +int +mail_config_has_proxies (EAccount *account) +{ + return e_account_list_account_has_proxies (config->accounts, account); +} - account_list = e_get_account_list (); - iter = e_list_get_iterator ((EList *) account_list); - while (account == NULL && e_iterator_is_valid (iter)) { - CamelURL *account_url; +void +mail_config_remove_account_proxies (EAccount *account) +{ + e_account_list_remove_account_proxies (config->accounts, account); +} - account = (EAccount *) e_iterator_get (iter); +void +mail_config_prune_proxies (void) +{ + e_account_list_prune_proxies (config->accounts); +} - e_iterator_next (iter); +EAccountList * +mail_config_get_accounts (void) +{ + if (config == NULL) + mail_config_init (); - if ( !account || (account->transport == NULL) || - (account->transport->url == NULL) || (*account->transport->url == '\0')) { - account = NULL; - continue; - } + return config->accounts; +} - account_url = camel_url_new (account->transport->url, NULL); - if (account_url == NULL) { - account = NULL; - continue; - } +void +mail_config_add_account (EAccount *account) +{ + e_account_list_add(config->accounts, account); + mail_config_save_accounts (); +} - if (!mail_config_account_url_equal (url, account_url)) - account = NULL; /* not a match */ +void +mail_config_remove_account (EAccount *account) +{ + e_account_list_remove(config->accounts, account); + mail_config_save_accounts (); +} - camel_url_free (account_url); - } +void +mail_config_set_default_account (EAccount *account) +{ + e_account_list_set_default(config->accounts, account); +} - g_object_unref (iter); - camel_url_free (url); +EAccountIdentity * +mail_config_get_default_identity (void) +{ + EAccount *account; - return account; + account = mail_config_get_default_account (); + if (account) + return account->id; + else + return NULL; } EAccountService * |