* updates: cleanup, caching accounts, refactoring and work on
[modest] / src / modest-account-mgr-helpers.c
index 539a0d6..72ab530 100644 (file)
 
 #include <modest-account-mgr-helpers.h>
 #include <modest-account-mgr-priv.h>
-
+#include <tny-simple-list.h>
+#include <modest-runtime.h>
+#include <string.h>
 
 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,
@@ -42,7 +44,7 @@ modest_account_mgr_account_set_enabled (ModestAccountMgr *self, const gchar* nam
 
 
 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,
@@ -58,8 +60,8 @@ modest_account_mgr_get_server_account_data (ModestAccountMgr *self, const gchar*
        
        g_return_val_if_fail (modest_account_mgr_account_exists (self, name,
                                                                 TRUE, NULL), NULL);    
-       data = g_new0 (ModestServerAccountData, 1);
-
+       data = g_slice_new0 (ModestServerAccountData);
+       
        data->account_name = g_strdup (name);
        data->hostname     = modest_account_mgr_get_string (self, name,
                                                            MODEST_ACCOUNT_HOSTNAME,
@@ -72,11 +74,19 @@ modest_account_mgr_get_server_account_data (ModestAccountMgr *self, const gchar*
                                                      TRUE, NULL);
        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, NULL);
        
        data->password     = modest_account_mgr_get_string (self, name,
                                                            MODEST_ACCOUNT_PASSWORD,
                                                            TRUE, NULL);
-
+       
+       data->uri          = modest_account_mgr_get_string (self, name,
+                                                           MODEST_ACCOUNT_URI,
+                                                           TRUE, NULL);
        data->options = modest_account_mgr_get_list (self, name,
                                                     MODEST_ACCOUNT_OPTIONS,
                                                     MODEST_CONF_VALUE_STRING,
@@ -115,7 +125,7 @@ modest_account_mgr_free_server_account_data (ModestAccountMgr *self,
                g_slist_free (data->options);
        }
 
-       g_free (data);
+       g_slice_free (ModestServerAccountData, data);
 }
 
 ModestAccountData*
@@ -123,25 +133,30 @@ 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);
+       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,
+       data->fullname     = 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);
+       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,
@@ -185,7 +200,7 @@ 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);
 }
 
 
@@ -233,5 +248,23 @@ modest_account_mgr_set_default_account  (ModestAccountMgr *self, const gchar* ac
 
 }
 
+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, NULL);
+       email         = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_EMAIL,
+                                                      FALSE, NULL);
+       from = g_strdup_printf ("%s <%s>",
+                               fullname ? fullname : "",
+                               email    ? email    : "");
+       g_free (fullname);
+       g_free (email);
+
+       return from;
+}