diff options
author | Jason Leach <jleach@ximian.com> | 2001-07-07 06:33:07 +0800 |
---|---|---|
committer | Jacob Leach <jleach@src.gnome.org> | 2001-07-07 06:33:07 +0800 |
commit | b1279f80c667fd2304fee2a8ed66c3e038722dfd (patch) | |
tree | 616ea336c61a69bc570c798a9b9cdbad4186cf69 /mail/mail-config.c | |
parent | 2caec09b47fe3d60677c8e4439b78abd6cf7888e (diff) | |
download | gsoc2013-evolution-b1279f80c667fd2304fee2a8ed66c3e038722dfd.tar gsoc2013-evolution-b1279f80c667fd2304fee2a8ed66c3e038722dfd.tar.gz gsoc2013-evolution-b1279f80c667fd2304fee2a8ed66c3e038722dfd.tar.bz2 gsoc2013-evolution-b1279f80c667fd2304fee2a8ed66c3e038722dfd.tar.lz gsoc2013-evolution-b1279f80c667fd2304fee2a8ed66c3e038722dfd.tar.xz gsoc2013-evolution-b1279f80c667fd2304fee2a8ed66c3e038722dfd.tar.zst gsoc2013-evolution-b1279f80c667fd2304fee2a8ed66c3e038722dfd.zip |
[Fix bug #1100, default account is stored strangely]
2001-07-06 Jason Leach <jleach@ximian.com>
[Fix bug #1100, default account is stored strangely]
* mail-config.c (mail_config_get_default_account_num): New
function, returns the integer of the position of the default
account, used to save which account is the default to the config
db.
(mail_config_write): Save the default account number here in
"/Mail/Accounts/default_account".
(config_read): Load in which is the default here.
svn path=/trunk/; revision=10873
Diffstat (limited to 'mail/mail-config.c')
-rw-r--r-- | mail/mail-config.c | 55 |
1 files changed, 38 insertions, 17 deletions
diff --git a/mail/mail-config.c b/mail/mail-config.c index d0b473172f..0596cf23f6 100644 --- a/mail/mail-config.c +++ b/mail/mail-config.c @@ -89,6 +89,7 @@ static MailConfig *config = NULL; /* Prototypes */ static void config_read (void); +static gint mail_config_get_default_account_num (void); /* Identity */ MailConfigIdentity * @@ -270,14 +271,16 @@ mail_config_clear (void) static void config_read (void) { - gint len, i; - gboolean have_default = FALSE; - + gint len, i, default_num; + mail_config_clear (); len = bonobo_config_get_long_with_default (config->db, "/Mail/Accounts/num", 0, NULL); + default_num = bonobo_config_get_long_with_default (config->db, + "/Mail/Accounts/default_account", 0, NULL); + for (i = 0; i < len; i++) { MailConfigAccount *account; MailConfigIdentity *id; @@ -289,13 +292,11 @@ config_read (void) path = g_strdup_printf ("/Mail/Accounts/account_name_%d", i); account->name = bonobo_config_get_string (config->db, path, NULL); g_free (path); - path = g_strdup_printf ("/Mail/Accounts/account_is_default_%d", i); - account->default_account = bonobo_config_get_boolean - (config->db, path, NULL) && !have_default; - - if (account->default_account) - have_default = TRUE; - g_free (path); + + if (default_num == i) + account->default_account = TRUE; + else + account->default_account = FALSE; path = g_strdup_printf ("/Mail/Accounts/account_drafts_folder_name_%d", i); val = bonobo_config_get_string (config->db, path, NULL); @@ -548,7 +549,7 @@ void mail_config_write (void) { CORBA_Environment ev; - gint len, i; + gint len, i, default_num; /* Accounts */ @@ -563,7 +564,13 @@ mail_config_write (void) Bonobo_ConfigDatabase_sync (config->db, &ev); len = g_slist_length (config->accounts); - bonobo_config_set_long (config->db, "/Mail/Accounts/num", len, NULL); + bonobo_config_set_long (config->db, + "/Mail/Accounts/num", len, NULL); + + default_num = mail_config_get_default_account_num (); + bonobo_config_set_long (config->db, + "/Mail/Accounts/default_account", default_num, NULL); + for (i = 0; i < len; i++) { MailConfigAccount *account; gchar *path; @@ -575,11 +582,6 @@ mail_config_write (void) bonobo_config_set_string (config->db, path, account->name, NULL); g_free (path); - path = g_strdup_printf ("/Mail/Accounts/account_is_default_%d", i); - bonobo_config_set_boolean (config->db, path, - account->default_account, NULL); - g_free (path); - path = g_strdup_printf ("/Mail/Accounts/account_drafts_folder_name_%d", i); bonobo_config_set_string (config->db, path, account->drafts_folder_name, NULL); @@ -1341,6 +1343,25 @@ mail_config_remove_account (MailConfigAccount *account) return config->accounts; } +static gint +mail_config_get_default_account_num (void) +{ + int i = 0; + GSList *node = config->accounts; + + while (node) { + MailConfigAccount *account = node->data; + + if (account->default_account) + return i; + + i++; + node = node->next; + } + + return 0; +} + void mail_config_set_default_account (const MailConfigAccount *account) { |