X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-account-mgr-helpers.c;h=8930c357dd5981019cdfaa7979334702d379ca33;hb=bc9bbede5d63979b331c72fbc291379be01df0ad;hp=593de5b6e273bc452dd62a0d8ca5b18571ef9016;hpb=5024de84b7959b0b3373176d8c1f91a73427ff88;p=modest diff --git a/src/modest-account-mgr-helpers.c b/src/modest-account-mgr-helpers.c index 593de5b..8930c35 100644 --- a/src/modest-account-mgr-helpers.c +++ b/src/modest-account-mgr-helpers.c @@ -29,24 +29,22 @@ #include #include - +#include +#include +#include gboolean -modest_account_mgr_account_set_enabled (ModestAccountMgr *self, const gchar* name, +modest_account_mgr_set_enabled (ModestAccountMgr *self, const gchar* name, gboolean enabled) { - return modest_account_mgr_set_bool (self, name, - MODEST_ACCOUNT_ENABLED, enabled, - FALSE, NULL); + return modest_account_mgr_set_bool (self, name, MODEST_ACCOUNT_ENABLED, enabled,FALSE); } gboolean -modest_account_mgr_account_get_enabled (ModestAccountMgr *self, const gchar* name) +modest_account_mgr_get_enabled (ModestAccountMgr *self, const gchar* name) { - return modest_account_mgr_get_bool (self, name, - MODEST_ACCOUNT_ENABLED, FALSE, - NULL); + return modest_account_mgr_get_bool (self, name, MODEST_ACCOUNT_ENABLED, FALSE); } @@ -56,26 +54,22 @@ modest_account_mgr_get_server_account_data (ModestAccountMgr *self, const gchar* ModestServerAccountData *data; gchar *proto; - g_return_val_if_fail (modest_account_mgr_account_exists (self, name, - TRUE, NULL), NULL); - data = g_new0 (ModestServerAccountData, 1); - - data->account_name = g_strdup (name); - data->hostname = modest_account_mgr_get_string (self, name, - MODEST_ACCOUNT_HOSTNAME, - TRUE, NULL); - data->username = modest_account_mgr_get_string (self, name, - MODEST_ACCOUNT_USERNAME, - TRUE, NULL); + g_return_val_if_fail (modest_account_mgr_account_exists (self, name, TRUE), NULL); + data = g_slice_new0 (ModestServerAccountData); - proto = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_PROTO, - TRUE, NULL); - data->proto = modest_protocol_info_get_protocol (proto); + data->account_name = g_strdup (name); + data->hostname = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_HOSTNAME,TRUE); + data->username = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_USERNAME,TRUE); + proto = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_PROTO, TRUE); + data->proto = modest_protocol_info_get_protocol (proto); g_free (proto); + + data->last_updated = modest_account_mgr_get_int (self, name, MODEST_ACCOUNT_LAST_UPDATED,TRUE); - data->password = modest_account_mgr_get_string (self, name, - MODEST_ACCOUNT_PASSWORD, - TRUE, NULL); + data->password = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_PASSWORD, TRUE); + data->uri = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_URI,TRUE); + data->options = modest_account_mgr_get_list (self, name, MODEST_ACCOUNT_OPTIONS, + MODEST_CONF_VALUE_STRING, TRUE); return data; } @@ -101,7 +95,16 @@ modest_account_mgr_free_server_account_data (ModestAccountMgr *self, g_free (data->password); data->password = NULL; - g_free (data); + if (data->options) { + GSList *tmp = data->options; + while (tmp) { + g_free (tmp->data); + tmp = g_slist_next (tmp); + } + g_slist_free (data->options); + } + + g_slice_free (ModestServerAccountData, data); } ModestAccountData* @@ -109,45 +112,47 @@ modest_account_mgr_get_account_data (ModestAccountMgr *self, const gchar* na { ModestAccountData *data; gchar *server_account; + gchar *default_account; g_return_val_if_fail (self, NULL); g_return_val_if_fail (name, NULL); - g_return_val_if_fail (modest_account_mgr_account_exists (self, name, - FALSE, NULL), NULL); - data = g_new0 (ModestAccountData, 1); - + g_return_val_if_fail (modest_account_mgr_account_exists (self, name,FALSE), NULL); + data = g_slice_new0 (ModestAccountData); + data->account_name = g_strdup (name); data->display_name = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_DISPLAY_NAME, - FALSE, NULL); - data->fullname = modest_account_mgr_get_string (self, name, + FALSE); + data->fullname = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_FULLNAME, - FALSE, NULL); + FALSE); data->email = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_EMAIL, - FALSE, NULL); - data->enabled = modest_account_mgr_account_get_enabled (self, name); + FALSE); + data->is_enabled = modest_account_mgr_get_enabled (self, name); + + default_account = modest_account_mgr_get_default_account (self); + data->is_default = (default_account && strcmp (default_account, name) == 0); + g_free (default_account); /* store */ server_account = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_STORE_ACCOUNT, - FALSE, NULL); + FALSE); if (server_account) { data->store_account = - modest_account_mgr_get_server_account_data (self, - server_account); + modest_account_mgr_get_server_account_data (self, server_account); g_free (server_account); } /* transport */ server_account = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_TRANSPORT_ACCOUNT, - FALSE, NULL); + FALSE); if (server_account) { data->transport_account = - modest_account_mgr_get_server_account_data (self, - server_account); + modest_account_mgr_get_server_account_data (self, server_account); g_free (server_account); } @@ -171,7 +176,79 @@ modest_account_mgr_free_account_data (ModestAccountMgr *self, ModestAccountData modest_account_mgr_free_server_account_data (self, data->store_account); modest_account_mgr_free_server_account_data (self, data->transport_account); - g_free (data); + g_slice_free (ModestAccountData, data); } +gchar* +modest_account_mgr_get_default_account (ModestAccountMgr *self) +{ + gchar *account; + ModestConf *conf; + GError *err = NULL; + + g_return_val_if_fail (self, NULL); + + conf = MODEST_ACCOUNT_MGR_GET_PRIVATE (self)->modest_conf; + account = modest_conf_get_string (conf, MODEST_CONF_DEFAULT_ACCOUNT, &err); + + if (err) { + g_printerr ("modest: failed to get '%s': %s\n", + MODEST_CONF_DEFAULT_ACCOUNT, err->message); + g_error_free (err); + g_free (account); + return NULL; + } + + /* it's not really an error if there is no default account */ + if (!account) + return NULL; + + /* sanity check */ + if (!modest_account_mgr_account_exists (self, account, FALSE)) { + g_printerr ("modest: default account does not exist\n"); + g_free (account); + return NULL; + } + + return account; +} + + +gboolean +modest_account_mgr_set_default_account (ModestAccountMgr *self, const gchar* account) +{ + ModestConf *conf; + + g_return_val_if_fail (self, FALSE); + g_return_val_if_fail (account, FALSE); + g_return_val_if_fail (modest_account_mgr_account_exists (self, account, FALSE), + FALSE); + + conf = MODEST_ACCOUNT_MGR_GET_PRIVATE (self)->modest_conf; + + return modest_conf_set_string (conf, MODEST_CONF_DEFAULT_ACCOUNT, + account, NULL); + +} + +gchar* +modest_account_mgr_get_from_string (ModestAccountMgr *self, const gchar* name) +{ + gchar *fullname, *email, *from; + + g_return_val_if_fail (self, NULL); + g_return_val_if_fail (name, NULL); + + fullname = modest_account_mgr_get_string (self, name,MODEST_ACCOUNT_FULLNAME, + FALSE); + email = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_EMAIL, + FALSE); + from = g_strdup_printf ("%s <%s>", + fullname ? fullname : "", + email ? email : ""); + g_free (fullname); + g_free (email); + + return from; +}