1 /* Copyright (c) 2006, Nokia Corporation
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * * Neither the name of the Nokia Corporation nor the names of its
14 * contributors may be used to endorse or promote products derived from
15 * this software without specific prior written permission.
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
18 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
20 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
21 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 #include <modest-account-mgr-helpers.h>
31 #include <modest-account-mgr-priv.h>
32 #include <tny-simple-list.h>
33 #include <modest-runtime.h>
37 modest_account_mgr_set_enabled (ModestAccountMgr *self, const gchar* name,
40 return modest_account_mgr_set_bool (self, name, MODEST_ACCOUNT_ENABLED, enabled,FALSE);
45 modest_account_mgr_get_enabled (ModestAccountMgr *self, const gchar* name)
47 return modest_account_mgr_get_bool (self, name, MODEST_ACCOUNT_ENABLED, FALSE);
50 gboolean modest_account_mgr_set_signature (ModestAccountMgr *self, const gchar* name,
51 const gchar* signature, gboolean use_signature)
53 gboolean result = modest_account_mgr_set_bool (self, name, MODEST_ACCOUNT_USE_SIGNATURE,
54 use_signature, FALSE);
55 result = result && modest_account_mgr_set_string (self, name, MODEST_ACCOUNT_SIGNATURE,
60 gchar* modest_account_mgr_get_signature (ModestAccountMgr *self, const gchar* name,
61 gboolean* use_signature)
65 modest_account_mgr_get_bool (self, name, MODEST_ACCOUNT_USE_SIGNATURE, FALSE);
68 return modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_SIGNATURE, FALSE);
72 ModestTransportStoreProtocol modest_account_mgr_get_store_protocol (ModestAccountMgr *self, const gchar* name)
74 ModestTransportStoreProtocol result = MODEST_PROTOCOL_STORE_POP; /* Arbitrary default */
76 gchar *server_account_name = modest_account_mgr_get_string (self, name,
77 MODEST_ACCOUNT_STORE_ACCOUNT,
79 if (server_account_name) {
80 ModestServerAccountData* server_data =
81 modest_account_mgr_get_server_account_data (self, server_account_name);
82 result = server_data->proto;
84 modest_account_mgr_free_server_account_data (self, server_data);
86 g_free (server_account_name);
92 gboolean modest_account_mgr_set_connection_specific_smtp (ModestAccountMgr *self,
93 const gchar* connection_name, const gchar* server_account_name)
95 modest_account_mgr_remove_connection_specific_smtp (self, connection_name);
97 ModestConf *conf = MODEST_ACCOUNT_MGR_GET_PRIVATE (self)->modest_conf;
99 gboolean result = TRUE;
101 GSList *list = modest_conf_get_list (conf, MODEST_CONF_CONNECTION_SPECIFIC_SMTP_LIST,
102 MODEST_CONF_VALUE_STRING, &err);
104 g_printerr ("modest: %s: error getting list: %s.\n", __FUNCTION__, err->message);
109 /* The server account is in the item after the connection name: */
110 GSList *list_connection = g_slist_append (list, (gpointer)connection_name);
111 list_connection = g_slist_append (list_connection, (gpointer)server_account_name);
113 /* Reset the changed list: */
114 modest_conf_set_list (conf, MODEST_CONF_CONNECTION_SPECIFIC_SMTP_LIST, list_connection,
115 MODEST_CONF_VALUE_STRING, &err);
117 g_printerr ("modest: %s: error setting list: %s.\n", __FUNCTION__, err->message);
123 /* TODO: Should we free the items too, or just the list? */
130 * modest_account_mgr_remove_connection_specific_smtp
131 * @self: a ModestAccountMgr instance
132 * @name: the account name
133 * @connection_name: A libconic IAP connection name
135 * Disassacoiate a server account to use with the specific connection for this account.
137 * Returns: TRUE if it worked, FALSE otherwise
139 gboolean modest_account_mgr_remove_connection_specific_smtp (ModestAccountMgr *self,
140 const gchar* connection_name)
142 ModestAccountMgrPrivate *priv = MODEST_ACCOUNT_MGR_GET_PRIVATE (self);
144 gboolean result = TRUE;
146 GSList *list = modest_conf_get_list (priv->modest_conf,
147 MODEST_CONF_CONNECTION_SPECIFIC_SMTP_LIST,
148 MODEST_CONF_VALUE_STRING, &err);
150 g_printerr ("modest: %s: error getting list: %s.\n", __FUNCTION__, err->message);
159 /* The server account is in the item after the connection name: */
160 GSList *list_connection = g_slist_find_custom (list, connection_name, (GCompareFunc)strcmp);
161 if (list_connection) {
162 GSList *account_node = g_slist_next (list_connection);
163 /* remove both items: */
164 list = g_slist_delete_link(list, list_connection);
165 list = g_slist_delete_link(list, account_node);
168 /* Reset the changed list: */
169 modest_conf_set_list (priv->modest_conf, MODEST_CONF_CONNECTION_SPECIFIC_SMTP_LIST, list,
170 MODEST_CONF_VALUE_STRING, &err);
172 g_printerr ("modest: %s: error setting list: %s.\n", __FUNCTION__, err->message);
177 /* TODO: Should we free the items too, or just the list? */
184 gboolean modest_account_mgr_get_use_connection_specific_smtp (ModestAccountMgr *self, const gchar* account_name)
186 return modest_account_mgr_get_bool (self, account_name,
187 MODEST_ACCOUNT_USE_CONNECTION_SPECIFIC_SMTP, FALSE);
190 gboolean modest_account_mgr_set_use_connection_specific_smtp (ModestAccountMgr *self, const gchar* account_name,
193 return modest_account_mgr_set_bool (self, account_name, MODEST_ACCOUNT_USE_CONNECTION_SPECIFIC_SMTP,
198 * modest_account_mgr_get_connection_specific_smtp
199 * @self: a ModestAccountMgr instance
200 * @connection_name: A libconic IAP connection name
202 * Retrieve a server account to use with this specific connection for this account.
204 * Returns: a server account name to use for this connection, or NULL if none is specified.
206 gchar* modest_account_mgr_get_connection_specific_smtp (ModestAccountMgr *self, const gchar* connection_name)
208 gchar *result = NULL;
210 ModestAccountMgrPrivate *priv = MODEST_ACCOUNT_MGR_GET_PRIVATE (self);
213 GSList *list = modest_conf_get_list (priv->modest_conf, MODEST_CONF_CONNECTION_SPECIFIC_SMTP_LIST,
214 MODEST_CONF_VALUE_STRING, &err);
216 g_printerr ("modest: %s: error getting list: %s.\n", __FUNCTION__, err->message);
224 /* The server account is in the item after the connection name: */
227 const gchar* this_connection_name = (const gchar*)(iter->data);
228 if (strcmp (this_connection_name, connection_name) == 0) {
229 iter = g_slist_next (iter);
232 const gchar* account_name = (const gchar*)(iter->data);
234 result = g_strdup (account_name);
240 /* Skip 2 to go to the next connection in the list: */
241 iter = g_slist_next (iter);
243 iter = g_slist_next (iter);
248 printf (" debug: no server found for connection_name=%s.\n", connection_name);
252 /* TODO: Should we free the items too, or just the list? */
259 modest_account_mgr_get_server_account_username (ModestAccountMgr *self, const gchar* account_name)
261 return modest_account_mgr_get_string (self, account_name, MODEST_ACCOUNT_USERNAME,
262 TRUE /* server account */);
266 modest_account_mgr_set_server_account_username (ModestAccountMgr *self, const gchar* account_name,
267 const gchar* username)
269 /* Note that this won't work properly as long as the gconf cache is broken
271 gchar *existing_username = modest_account_mgr_get_server_account_username(self,
274 modest_account_mgr_set_string (self, account_name, MODEST_ACCOUNT_USERNAME,
275 username, TRUE /* server account */);
277 /* We don't know anything about new usernames: */
278 if (strcmp (existing_username, username) != 0)
279 modest_account_mgr_get_server_account_username_has_succeeded (self, account_name);
281 g_free (existing_username);
285 modest_account_mgr_get_server_account_username_has_succeeded (ModestAccountMgr *self, const gchar* account_name)
287 return modest_account_mgr_get_bool (self, account_name, MODEST_ACCOUNT_USERNAME_HAS_SUCCEEDED,
288 TRUE /* server account */);
292 modest_account_mgr_set_server_account_username_has_succeeded (ModestAccountMgr *self,
293 const gchar* account_name,
296 modest_account_mgr_set_bool (self, account_name, MODEST_ACCOUNT_USERNAME_HAS_SUCCEEDED,
297 succeeded, TRUE /* server account */);
301 modest_account_mgr_set_server_account_password (ModestAccountMgr *self, const gchar* account_name,
302 const gchar* password)
304 modest_account_mgr_set_string (self, account_name, MODEST_ACCOUNT_PASSWORD,
305 password, TRUE /* server account */);
310 modest_account_mgr_get_server_account_password (ModestAccountMgr *self, const gchar* account_name)
312 return modest_account_mgr_get_string (self, account_name, MODEST_ACCOUNT_PASSWORD,
313 TRUE /* server account */);
317 modest_account_mgr_get_server_account_has_password (ModestAccountMgr *self, const gchar* account_name)
319 gboolean result = FALSE;
320 gchar *password = modest_account_mgr_get_string (self, account_name, MODEST_ACCOUNT_PASSWORD,
321 TRUE /* server account */);
322 if (password && strlen (password)) {
332 modest_account_mgr_get_server_account_hostname (ModestAccountMgr *self,
333 const gchar* account_name)
335 return modest_account_mgr_get_string (self,
337 MODEST_ACCOUNT_HOSTNAME,
338 TRUE /* server account */);
342 modest_account_mgr_set_server_account_hostname (ModestAccountMgr *self,
343 const gchar *server_account_name,
344 const gchar *hostname)
346 modest_account_mgr_set_string (self,
348 MODEST_ACCOUNT_HOSTNAME,
350 TRUE /* server account */);
354 static ModestAuthProtocol
355 get_secure_auth_for_conf_string(const gchar* value)
357 ModestAuthProtocol result = MODEST_PROTOCOL_AUTH_NONE;
359 if (strcmp(value, MODEST_ACCOUNT_AUTH_MECH_VALUE_NONE) == 0)
360 result = MODEST_PROTOCOL_AUTH_NONE;
361 else if (strcmp(value, MODEST_ACCOUNT_AUTH_MECH_VALUE_PASSWORD) == 0)
362 result = MODEST_PROTOCOL_AUTH_PASSWORD;
363 else if (strcmp(value, MODEST_ACCOUNT_AUTH_MECH_VALUE_CRAMMD5) == 0)
364 result = MODEST_PROTOCOL_AUTH_CRAMMD5;
371 modest_account_mgr_get_server_account_secure_auth (ModestAccountMgr *self,
372 const gchar* account_name)
374 ModestAuthProtocol result = MODEST_PROTOCOL_AUTH_NONE;
375 gchar* value = modest_account_mgr_get_string (self, account_name, MODEST_ACCOUNT_AUTH_MECH,
376 TRUE /* server account */);
378 result = get_secure_auth_for_conf_string (value);
388 modest_account_mgr_set_server_account_secure_auth (ModestAccountMgr *self,
389 const gchar* account_name, ModestAuthProtocol secure_auth)
391 /* Get the conf string for the enum value: */
392 const gchar* str_value = NULL;
393 if (secure_auth == MODEST_PROTOCOL_AUTH_NONE)
394 str_value = MODEST_ACCOUNT_AUTH_MECH_VALUE_NONE;
395 else if (secure_auth == MODEST_PROTOCOL_AUTH_PASSWORD)
396 str_value = MODEST_ACCOUNT_AUTH_MECH_VALUE_PASSWORD;
397 else if (secure_auth == MODEST_PROTOCOL_AUTH_CRAMMD5)
398 str_value = MODEST_ACCOUNT_AUTH_MECH_VALUE_CRAMMD5;
400 /* Set it in the configuration: */
401 modest_account_mgr_set_string (self, account_name, MODEST_ACCOUNT_AUTH_MECH, str_value, TRUE);
404 static ModestConnectionProtocol
405 get_security_for_conf_string(const gchar* value)
407 ModestConnectionProtocol result = MODEST_PROTOCOL_CONNECTION_NORMAL;
409 if (strcmp(value, MODEST_ACCOUNT_SECURITY_VALUE_NONE) == 0)
410 result = MODEST_PROTOCOL_CONNECTION_NORMAL;
411 else if (strcmp(value, MODEST_ACCOUNT_SECURITY_VALUE_NORMAL) == 0) {
412 /* The UI has "Normal (TLS)": */
413 result = MODEST_PROTOCOL_CONNECTION_TLS;
414 } else if (strcmp(value, MODEST_ACCOUNT_SECURITY_VALUE_SSL) == 0)
415 result = MODEST_PROTOCOL_CONNECTION_SSL;
421 ModestConnectionProtocol
422 modest_account_mgr_get_server_account_security (ModestAccountMgr *self,
423 const gchar* account_name)
425 ModestConnectionProtocol result = MODEST_PROTOCOL_CONNECTION_NORMAL;
426 gchar* value = modest_account_mgr_get_string (self, account_name, MODEST_ACCOUNT_SECURITY,
427 TRUE /* server account */);
429 result = get_security_for_conf_string (value);
438 modest_account_mgr_set_server_account_security (ModestAccountMgr *self,
439 const gchar* account_name, ModestConnectionProtocol security)
441 /* Get the conf string for the enum value: */
442 const gchar* str_value = NULL;
443 if (security == MODEST_PROTOCOL_CONNECTION_NORMAL)
444 str_value = MODEST_ACCOUNT_SECURITY_VALUE_NONE;
445 else if (security == MODEST_PROTOCOL_CONNECTION_TLS) {
446 /* The UI has "Normal (TLS)": */
447 str_value = MODEST_ACCOUNT_SECURITY_VALUE_NORMAL;
448 } else if (security == MODEST_PROTOCOL_CONNECTION_SSL)
449 str_value = MODEST_ACCOUNT_SECURITY_VALUE_SSL;
451 /* Set it in the configuration: */
452 modest_account_mgr_set_string (self, account_name, MODEST_ACCOUNT_SECURITY, str_value, TRUE);
455 ModestServerAccountData*
456 modest_account_mgr_get_server_account_data (ModestAccountMgr *self, const gchar* name)
458 ModestServerAccountData *data;
461 g_return_val_if_fail (modest_account_mgr_account_exists (self, name, TRUE), NULL);
462 data = g_slice_new0 (ModestServerAccountData);
464 data->account_name = g_strdup (name);
465 data->hostname = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_HOSTNAME,TRUE);
466 data->username = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_USERNAME,TRUE);
467 proto = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_PROTO, TRUE);
468 data->proto = modest_protocol_info_get_transport_store_protocol (proto);
471 data->port = modest_account_mgr_get_int (self, name, MODEST_ACCOUNT_PORT, TRUE);
473 gchar *secure_auth_str = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_AUTH_MECH, TRUE);
474 data->secure_auth = get_secure_auth_for_conf_string(secure_auth_str);
475 g_free (secure_auth_str);
477 gchar *security_str = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_SECURITY, TRUE);
478 data->security = get_security_for_conf_string(security_str);
479 g_free (security_str);
481 data->last_updated = modest_account_mgr_get_int (self, name, MODEST_ACCOUNT_LAST_UPDATED,TRUE);
483 data->password = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_PASSWORD, TRUE);
490 modest_account_mgr_free_server_account_data (ModestAccountMgr *self,
491 ModestServerAccountData* data)
493 g_return_if_fail (self);
496 return; /* not an error */
498 g_free (data->account_name);
499 data->account_name = NULL;
501 g_free (data->hostname);
502 data->hostname = NULL;
504 g_free (data->username);
505 data->username = NULL;
507 g_free (data->password);
508 data->password = NULL;
510 g_slice_free (ModestServerAccountData, data);
513 /** You must use modest_account_mgr_free_account_data() on the result.
516 modest_account_mgr_get_account_data (ModestAccountMgr *self,
519 ModestAccountData *data;
520 gchar *server_account;
521 gchar *default_account;
523 g_return_val_if_fail (self, NULL);
524 g_return_val_if_fail (name, NULL);
526 if (!modest_account_mgr_account_exists (self, name, FALSE)) {
527 /* For instance, maybe you are mistakenly checking for a server account name? */
528 g_warning ("%s: Account %s does not exist.", __FUNCTION__, name);
532 data = g_slice_new0 (ModestAccountData);
534 data->account_name = g_strdup (name);
536 data->display_name = modest_account_mgr_get_string (self, name,
537 MODEST_ACCOUNT_DISPLAY_NAME,
539 data->fullname = modest_account_mgr_get_string (self, name,
540 MODEST_ACCOUNT_FULLNAME,
542 data->email = modest_account_mgr_get_string (self, name,
543 MODEST_ACCOUNT_EMAIL,
545 data->is_enabled = modest_account_mgr_get_enabled (self, name);
547 default_account = modest_account_mgr_get_default_account (self);
548 data->is_default = (default_account && strcmp (default_account, name) == 0);
549 g_free (default_account);
552 server_account = modest_account_mgr_get_string (self, name,
553 MODEST_ACCOUNT_STORE_ACCOUNT,
555 if (server_account) {
556 data->store_account =
557 modest_account_mgr_get_server_account_data (self, server_account);
558 g_free (server_account);
562 server_account = modest_account_mgr_get_string (self, name,
563 MODEST_ACCOUNT_TRANSPORT_ACCOUNT,
565 if (server_account) {
566 data->transport_account =
567 modest_account_mgr_get_server_account_data (self, server_account);
568 g_free (server_account);
576 modest_account_mgr_free_account_data (ModestAccountMgr *self, ModestAccountData *data)
578 g_return_if_fail (self);
580 if (!data) /* not an error */
583 g_free (data->account_name);
584 g_free (data->display_name);
585 g_free (data->fullname);
586 g_free (data->email);
588 modest_account_mgr_free_server_account_data (self, data->store_account);
589 modest_account_mgr_free_server_account_data (self, data->transport_account);
591 g_slice_free (ModestAccountData, data);
595 on_accounts_list_sort_by_title(gconstpointer a, gconstpointer b)
597 return g_utf8_collate((const gchar*)a, (const gchar*)b);
600 /** Get the first one, alphabetically, by title. */
602 modest_account_mgr_get_first_account_name (ModestAccountMgr *self)
604 const gchar* account_name = NULL;
605 GSList *account_names = modest_account_mgr_account_names (self, TRUE /* only enabled */);
607 /* Return TRUE if there is no account */
611 /* Get the first one, alphabetically, by title: */
612 /* gchar *old_default = modest_account_mgr_get_default_account (self); */
613 GSList* list_sorted = g_slist_sort (account_names, on_accounts_list_sort_by_title);
615 GSList* iter = list_sorted;
616 gboolean found = FALSE;
617 while (iter && !found) {
618 account_name = (const gchar*)list_sorted->data;
624 iter = g_slist_next (iter);
627 gchar* result = NULL;
629 result = g_strdup (account_name);
631 modest_account_mgr_free_account_names (account_names);
632 account_names = NULL;
638 modest_account_mgr_set_first_account_as_default (ModestAccountMgr *self)
640 gboolean result = FALSE;
642 gchar* account_name = modest_account_mgr_get_first_account_name(self);
644 result = modest_account_mgr_set_default_account (self, account_name);
645 g_free (account_name);
648 result = TRUE; /* If there are no accounts then it's not a failure. */
654 modest_account_mgr_get_from_string (ModestAccountMgr *self, const gchar* name)
656 gchar *fullname, *email, *from;
658 g_return_val_if_fail (self, NULL);
659 g_return_val_if_fail (name, NULL);
661 fullname = modest_account_mgr_get_string (self, name,MODEST_ACCOUNT_FULLNAME,
663 email = modest_account_mgr_get_string (self, name, MODEST_ACCOUNT_EMAIL,
665 from = g_strdup_printf ("%s <%s>",
666 fullname ? fullname : "",
674 /* Add a number to the end of the text, or increment a number that is already there.
677 util_increment_name (const gchar* text)
679 /* Get the end character,
680 * also doing a UTF-8 validation which is required for using g_utf8_prev_char().
682 const gchar* end = NULL;
683 if (!g_utf8_validate (text, -1, &end))
689 --end; /* Go to before the null-termination. */
691 /* Look at each UTF-8 characer, starting at the end: */
692 const gchar* p = end;
693 const gchar* alpha_end = NULL;
696 /* Stop when we reach the first character that is not a numeric digit: */
697 const gunichar ch = g_utf8_get_char (p);
698 if (!g_unichar_isdigit (ch)) {
703 p = g_utf8_prev_char (p);
707 /* The text must consist completely of numeric digits. */
713 /* Intepret and increment the number, if any: */
714 gint num = atol (alpha_end);
717 /* Get the name part: */
718 gint name_len = alpha_end - text;
719 gchar *name_without_number = g_malloc(name_len + 1);
720 memcpy (name_without_number, text, name_len);
721 name_without_number[name_len] = 0;\
723 /* Concatenate the text part and the new number: */
724 gchar *result = g_strdup_printf("%s%d", name_without_number, num);
725 g_free (name_without_number);
731 modest_account_mgr_get_unused_account_name (ModestAccountMgr *self, const gchar* starting_name,
732 gboolean server_account)
734 gchar *account_name = g_strdup (starting_name);
736 while (modest_account_mgr_account_exists (self,
737 account_name, server_account /* server_account */)) {
739 gchar * account_name2 = util_increment_name (account_name);
740 g_free (account_name);
741 account_name = account_name2;
748 modest_account_mgr_get_unused_account_display_name (ModestAccountMgr *self, const gchar* starting_name)
750 gchar *account_name = g_strdup (starting_name);
752 while (modest_account_mgr_account_with_display_name_exists (self, account_name)) {
754 gchar * account_name2 = util_increment_name (account_name);
755 g_free (account_name);
756 account_name = account_name2;
763 modest_account_mgr_set_leave_on_server (ModestAccountMgr *self,
764 const gchar *account_name,
765 gboolean leave_on_server)
767 modest_account_mgr_set_bool (self,
769 MODEST_ACCOUNT_LEAVE_ON_SERVER,
775 modest_account_mgr_get_leave_on_server (ModestAccountMgr *self,
776 const gchar* account_name)
778 return modest_account_mgr_get_bool (self,
780 MODEST_ACCOUNT_LEAVE_ON_SERVER,
785 modest_account_mgr_get_last_updated (ModestAccountMgr *self,
786 const gchar* account_name)
788 return modest_account_mgr_get_int (modest_runtime_get_account_mgr (),
790 MODEST_ACCOUNT_LAST_UPDATED,
795 modest_account_mgr_set_last_updated (ModestAccountMgr *self,
796 const gchar* account_name,
799 modest_account_mgr_set_int (self,
801 MODEST_ACCOUNT_LAST_UPDATED,
805 /* TODO: notify about changes */
809 modest_account_mgr_get_retrieve_limit (ModestAccountMgr *self,
810 const gchar* account_name)
812 return modest_account_mgr_get_int (self,
814 MODEST_ACCOUNT_LIMIT_RETRIEVE,
819 modest_account_mgr_set_retrieve_limit (ModestAccountMgr *self,
820 const gchar* account_name,
823 modest_account_mgr_set_int (self,
825 MODEST_ACCOUNT_LIMIT_RETRIEVE,
827 FALSE /* not server account */);
831 modest_account_mgr_get_server_account_port (ModestAccountMgr *self,
832 const gchar* account_name)
834 return modest_account_mgr_get_int (self,
841 modest_account_mgr_set_server_account_port (ModestAccountMgr *self,
842 const gchar *account_name,
845 modest_account_mgr_set_int (self,
848 port_num, TRUE /* server account */);
852 modest_account_mgr_get_server_account_name (ModestAccountMgr *self,
853 const gchar *account_name,
854 TnyAccountType account_type)
856 return modest_account_mgr_get_string (self,
858 (account_type == TNY_ACCOUNT_TYPE_STORE) ?
859 MODEST_ACCOUNT_STORE_ACCOUNT :
860 MODEST_ACCOUNT_TRANSPORT_ACCOUNT,
865 modest_account_mgr_get_retrieve_type (ModestAccountMgr *self,
866 const gchar *account_name)
868 return modest_account_mgr_get_string (self,
870 MODEST_ACCOUNT_RETRIEVE,
871 FALSE /* not server account */);
875 modest_account_mgr_set_retrieve_type (ModestAccountMgr *self,
876 const gchar *account_name,
877 const gchar *retrieve_type)
879 modest_account_mgr_set_string (self,
881 MODEST_ACCOUNT_RETRIEVE,
883 FALSE /* not server account */);
888 modest_account_mgr_set_user_fullname (ModestAccountMgr *self,
889 const gchar *account_name,
890 const gchar *fullname)
892 modest_account_mgr_set_string (self,
894 MODEST_ACCOUNT_FULLNAME,
896 FALSE /* not server account */);
900 modest_account_mgr_set_user_email (ModestAccountMgr *self,
901 const gchar *account_name,
904 modest_account_mgr_set_string (self,
906 MODEST_ACCOUNT_EMAIL,
908 FALSE /* not server account */);