- 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);
-
- data->account_name = g_strdup (name);
- data->full_name = modest_account_mgr_get_string (self, name,
- MODEST_ACCOUNT_FULLNAME,
- FALSE, NULL);
- data->email = modest_account_mgr_get_string (self, name,
- MODEST_ACCOUNT_EMAIL,
- FALSE, NULL);
- data->enabled = modest_account_mgr_account_get_enabled (self, name);
-
- /* store */
- server_account = modest_account_mgr_get_string (self, name,
- MODEST_ACCOUNT_STORE_ACCOUNT,
- FALSE, NULL);
- if (server_account) {
- data->store_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);
- if (server_account) {
- data->transport_account =
- modest_account_mgr_get_server_account_data (self,
- server_account);
- g_free (server_account);
- }
-
- return data;
-}
-
-
-void
-modest_account_mgr_free_account_data (ModestAccountMgr *self,
- ModestAccountData *data)
-{
- g_return_if_fail (self);
-
- if (!data)
- return;
-
- g_free (data->account_name);
- g_free (data->full_name);
- g_free (data->email);
-
- modest_account_mgr_free_server_account_data (self, data->store_account);
- modest_account_mgr_free_server_account_data (self, data->transport_account);
+ /* Unescape the keys to get the account names: */
+ GSList *iter = accounts;
+ while (iter) {
+ if (!(iter->data))
+ continue;
+
+ const gchar* account_name_key = (const gchar*)iter->data;
+ /* printf ("DEBUG: %s: account_name_key=%s\n", __FUNCTION__, account_name_key); */
+ gchar* unescaped_name = account_name_key ?
+ modest_conf_key_unescape (account_name_key)
+ : NULL;
+ /* printf (" DEBUG: %s: unescaped name=%s\n", __FUNCTION__, unescaped_name); */
+
+ gboolean add = TRUE;
+ if (only_enabled) {
+ if (unescaped_name &&
+ !modest_account_mgr_get_enabled (self, unescaped_name)) {
+ add = FALSE;
+ }
+ }
+
+ if (add) {
+ result = g_slist_append (result, unescaped_name);
+ }
+ else {
+ g_free (unescaped_name);
+ }
+
+ iter = g_slist_next (iter);
+ }