aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-config.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@src.gnome.org>2009-01-27 06:18:58 +0800
committerMatthew Barnes <mbarnes@src.gnome.org>2009-01-27 06:18:58 +0800
commite0f414941dd4e13ea074996d10606b0dae7e494b (patch)
tree2ebf55cdd625e82547787f92aaddad4132374a02 /mail/mail-config.c
parentbc80332460c353e391cd620f2cc51f7b56eef4de (diff)
downloadgsoc2013-evolution-e0f414941dd4e13ea074996d10606b0dae7e494b.tar
gsoc2013-evolution-e0f414941dd4e13ea074996d10606b0dae7e494b.tar.gz
gsoc2013-evolution-e0f414941dd4e13ea074996d10606b0dae7e494b.tar.bz2
gsoc2013-evolution-e0f414941dd4e13ea074996d10606b0dae7e494b.tar.lz
gsoc2013-evolution-e0f414941dd4e13ea074996d10606b0dae7e494b.tar.xz
gsoc2013-evolution-e0f414941dd4e13ea074996d10606b0dae7e494b.tar.zst
gsoc2013-evolution-e0f414941dd4e13ea074996d10606b0dae7e494b.zip
Split EAccountList and ESignatureList management out of the mail module.
This reduces the dependency of the composer on the mail module, which is currently a circular dependency. svn path=/branches/kill-bonobo/; revision=37135
Diffstat (limited to 'mail/mail-config.c')
-rw-r--r--mail/mail-config.c233
1 files changed, 47 insertions, 186 deletions
diff --git a/mail/mail-config.c b/mail/mail-config.c
index cb36ee6d60..fc97d3d953 100644
--- a/mail/mail-config.c
+++ b/mail/mail-config.c
@@ -53,10 +53,13 @@
#include <e-util/e-util.h>
#include <misc/e-gui-utils.h>
#include "e-util/e-util-labels.h"
+#include "e-util/e-account-utils.h"
-#include <libedataserver/e-account-list.h>
#include <e-util/e-signature-list.h>
+#include "shell/e-shell.h"
+#include "shell/e-shell-settings.h"
+
#include <camel/camel-service.h>
#include <camel/camel-stream-mem.h>
#include <camel/camel-stream-fs.h>
@@ -74,14 +77,12 @@
typedef struct {
GConfClient *gconf;
+ EShellSettings *shell_settings;
gboolean corrupt;
char *gtkrc;
- EAccountList *accounts;
- ESignatureList *signatures;
-
GSList *labels;
gboolean address_compress;
@@ -105,18 +106,6 @@ static MailConfig *config = NULL;
static guint config_write_timeout = 0;
-void
-mail_config_save_accounts (void)
-{
- e_account_list_save (config->accounts);
-}
-
-void
-mail_config_save_signatures (void)
-{
- e_signature_list_save (config->signatures);
-}
-
static void
config_clear_mime_types (void)
{
@@ -351,13 +340,21 @@ void
mail_config_init (void)
{
GConfClientNotifyFunc func;
+ EShellSettings *shell_settings;
+ EShell *shell;
const gchar *key;
+ g_return_if_fail (E_IS_SHELL_SETTINGS (shell_settings));
+
if (config)
return;
+ shell = e_shell_get_default ();
+ shell_settings = e_shell_get_shell_settings (shell);
+
config = g_new0 (MailConfig, 1);
config->gconf = gconf_client_get_default ();
+ config->shell_settings = g_object_ref (shell_settings);
config->mime_types = g_ptr_array_new ();
config->gtkrc = g_build_filename (
e_get_user_data_dir (), "mail",
@@ -365,9 +362,6 @@ mail_config_init (void)
mail_config_clear ();
- config->accounts = e_account_list_new (config->gconf);
- config->signatures = e_signature_list_new (config->gconf);
-
gtk_rc_parse (config->gtkrc);
/* Composer Configuration */
@@ -546,16 +540,6 @@ mail_config_clear (void)
if (!config)
return;
- if (config->accounts) {
- g_object_unref (config->accounts);
- config->accounts = NULL;
- }
-
- if (config->signatures) {
- g_object_unref (config->signatures);
- config->signatures = NULL;
- }
-
config_clear_labels ();
config_clear_mime_types ();
}
@@ -564,18 +548,30 @@ mail_config_clear (void)
void
mail_config_write (void)
{
+ EAccountList *account_list;
+ ESignatureList *signature_list;
+
if (!config)
return;
- e_account_list_save (config->accounts);
- e_signature_list_save (config->signatures);
+ account_list = e_shell_settings_get_object (
+ config->shell_settings, "accounts");
+ signature_list = e_shell_settings_get_object (
+ config->shell_settings, "signatures");
+
+ e_account_list_save (account_list);
+ e_signature_list_save (signature_list);
gconf_client_suggest_sync (config->gconf, NULL);
+
+ g_object_unref (account_list);
+ g_object_unref (signature_list);
}
void
mail_config_write_on_exit (void)
{
+ EAccountList *account_list;
EAccount *account;
EIterator *iter;
@@ -589,7 +585,8 @@ mail_config_write_on_exit (void)
/* then we make sure the ones we want to remember are in the
session cache */
- iter = e_list_get_iterator ((EList *) config->accounts);
+ account_list = e_get_account_list ();
+ iter = e_list_get_iterator ((EList *) account_list);
while (e_iterator_is_valid (iter)) {
char *passwd;
@@ -618,7 +615,7 @@ mail_config_write_on_exit (void)
e_passwords_clear_passwords ("Mail");
/* then we remember them */
- iter = e_list_get_iterator ((EList *) config->accounts);
+ iter = e_list_get_iterator ((EList *) account_list);
while (e_iterator_is_valid (iter)) {
account = (EAccount *) e_iterator_get (iter);
@@ -653,12 +650,6 @@ mail_config_get_gconf_client (void)
}
gboolean
-mail_config_is_configured (void)
-{
- return e_list_length ((EList *) config->accounts) > 0;
-}
-
-gboolean
mail_config_is_corrupt (void)
{
return config->corrupt;
@@ -749,53 +740,6 @@ mail_config_get_allowable_mime_types (void)
return (const char **) config->mime_types->pdata;
}
-gboolean
-mail_config_find_account (EAccount *account)
-{
- EAccount *acnt;
- EIterator *iter;
-
- iter = e_list_get_iterator ((EList *) config->accounts);
- while (e_iterator_is_valid (iter)) {
- acnt = (EAccount *) e_iterator_get (iter);
- if (acnt == account) {
- g_object_unref (iter);
- return TRUE;
- }
-
- e_iterator_next (iter);
- }
-
- g_object_unref (iter);
-
- return FALSE;
-}
-
-EAccount *
-mail_config_get_default_account (void)
-{
- if (config == NULL)
- mail_config_init ();
-
- if (!config->accounts)
- return NULL;
-
- /* should probably return const */
- return (EAccount *)e_account_list_get_default(config->accounts);
-}
-
-EAccount *
-mail_config_get_account_by_name (const char *account_name)
-{
- return (EAccount *)e_account_list_find(config->accounts, E_ACCOUNT_FIND_NAME, account_name);
-}
-
-EAccount *
-mail_config_get_account_by_uid (const char *uid)
-{
- return (EAccount *) e_account_list_find (config->accounts, E_ACCOUNT_FIND_UID, uid);
-}
-
static gboolean
mail_config_account_url_equal (const CamelURL *u1,
const CamelURL *u2)
@@ -818,6 +762,7 @@ mail_config_account_url_equal (const CamelURL *u1,
EAccount *
mail_config_get_account_by_source_url (const char *source_url)
{
+ EAccountList *account_list;
EAccount *account = NULL;
EIterator *iter;
CamelURL *url;
@@ -827,7 +772,8 @@ mail_config_get_account_by_source_url (const char *source_url)
url = camel_url_new (source_url, NULL);
g_return_val_if_fail (url != NULL, NULL);
- iter = e_list_get_iterator ((EList *) config->accounts);
+ 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;
@@ -862,6 +808,7 @@ mail_config_get_account_by_source_url (const char *source_url)
EAccount *
mail_config_get_account_by_transport_url (const char *transport_url)
{
+ EAccountList *account_list;
EAccount *account = NULL;
EIterator *iter;
CamelURL *url;
@@ -871,7 +818,8 @@ mail_config_get_account_by_transport_url (const char *transport_url)
url = camel_url_new (transport_url, NULL);
g_return_val_if_fail (url != NULL, NULL);
- iter = e_list_get_iterator ((EList *) config->accounts);
+ 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;
@@ -903,77 +851,21 @@ mail_config_get_account_by_transport_url (const char *transport_url)
return account;
}
-int
-mail_config_has_proxies (EAccount *account)
-{
- return e_account_list_account_has_proxies (config->accounts, account);
-}
-
-void
-mail_config_remove_account_proxies (EAccount *account)
-{
- e_account_list_remove_account_proxies (config->accounts, account);
-}
-
-void
-mail_config_prune_proxies (void)
-{
- e_account_list_prune_proxies (config->accounts);
-}
-
-EAccountList *
-mail_config_get_accounts (void)
-{
- if (config == NULL)
- mail_config_init ();
-
- return config->accounts;
-}
-
-void
-mail_config_add_account (EAccount *account)
-{
- e_account_list_add(config->accounts, account);
- mail_config_save_accounts ();
-}
-
-void
-mail_config_remove_account (EAccount *account)
-{
- e_account_list_remove(config->accounts, account);
- mail_config_save_accounts ();
-}
-
-void
-mail_config_set_default_account (EAccount *account)
-{
- e_account_list_set_default(config->accounts, account);
-}
-
-EAccountIdentity *
-mail_config_get_default_identity (void)
-{
- EAccount *account;
-
- account = mail_config_get_default_account ();
- if (account)
- return account->id;
- else
- return NULL;
-}
-
EAccountService *
mail_config_get_default_transport (void)
{
+ EAccountList *account_list;
EAccount *account;
EIterator *iter;
- account = mail_config_get_default_account ();
+ account_list = e_get_account_list ();
+ account = e_get_default_account ();
+
if (account && account->enabled && account->transport && account->transport->url && account->transport->url[0])
return account->transport;
/* return the first account with a transport? */
- iter = e_list_get_iterator ((EList *) config->accounts);
+ iter = e_list_get_iterator ((EList *) account_list);
while (e_iterator_is_valid (iter)) {
account = (EAccount *) e_iterator_get (iter);
@@ -1014,6 +906,7 @@ uri_to_evname (const char *uri, const char *prefix)
void
mail_config_uri_renamed (GCompareFunc uri_cmp, const char *old, const char *new)
{
+ EAccountList *account_list;
EAccount *account;
EIterator *iter;
int i, work = 0;
@@ -1025,7 +918,8 @@ mail_config_uri_renamed (GCompareFunc uri_cmp, const char *old, const char *new)
"*views/custom_view-",
NULL };
- iter = e_list_get_iterator ((EList *) config->accounts);
+ account_list = e_get_account_list ();
+ iter = e_list_get_iterator ((EList *) account_list);
while (e_iterator_is_valid (iter)) {
account = (EAccount *) e_iterator_get (iter);
@@ -1066,6 +960,7 @@ mail_config_uri_renamed (GCompareFunc uri_cmp, const char *old, const char *new)
void
mail_config_uri_deleted (GCompareFunc uri_cmp, const char *uri)
{
+ EAccountList *account_list;
EAccount *account;
EIterator *iter;
int work = 0;
@@ -1078,7 +973,8 @@ mail_config_uri_deleted (GCompareFunc uri_cmp, const char *uri)
local_sent_folder_uri = e_mail_shell_module_get_folder_uri (
mail_shell_module, E_MAIL_FOLDER_SENT);
- iter = e_list_get_iterator ((EList *) config->accounts);
+ account_list = e_get_account_list ();
+ iter = e_list_get_iterator ((EList *) account_list);
while (e_iterator_is_valid (iter)) {
account = (EAccount *) e_iterator_get (iter);
@@ -1136,12 +1032,6 @@ mail_config_folder_to_cachename (CamelFolder *folder, const char *prefix)
return filename;
}
-ESignatureList *
-mail_config_get_signatures (void)
-{
- return config->signatures;
-}
-
static char *
get_new_signature_filename (void)
{
@@ -1202,35 +1092,6 @@ mail_config_signature_new (const char *filename, gboolean script, gboolean html)
return sig;
}
-ESignature *
-mail_config_get_signature_by_uid (const char *uid)
-{
- return (ESignature *) e_signature_list_find (config->signatures, E_SIGNATURE_FIND_UID, uid);
-}
-
-ESignature *
-mail_config_get_signature_by_name (const char *name)
-{
- return (ESignature *) e_signature_list_find (config->signatures, E_SIGNATURE_FIND_NAME, name);
-}
-
-void
-mail_config_add_signature (ESignature *signature)
-{
- e_signature_list_add (config->signatures, signature);
- mail_config_save_signatures ();
-}
-
-void
-mail_config_remove_signature (ESignature *signature)
-{
- if (signature->filename && !signature->script)
- g_unlink (signature->filename);
-
- e_signature_list_remove (config->signatures, signature);
- mail_config_save_signatures ();
-}
-
void
mail_config_reload_junk_headers (void)
{