X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-tny-account.c;h=679884a896c3821e35828403dcc501ca9ec180af;hp=90c4433ca262124be6c6c7b13add8ec914786e7f;hb=4e787e46e4580814fd5450730b4f976ea6b927a5;hpb=e61fe85209b2820d2b3a60b38fdc30faf68e46f8 diff --git a/src/modest-tny-account.c b/src/modest-tny-account.c index 90c4433..679884a 100644 --- a/src/modest-tny-account.c +++ b/src/modest-tny-account.c @@ -78,7 +78,8 @@ modest_tny_account_get_special_folder (TnyAccount *account, */ /* Per-account outbox folders are each in their own on-disk directory: */ - if (special_type == TNY_FOLDER_TYPE_OUTBOX) { + if ((special_type == TNY_FOLDER_TYPE_OUTBOX) && + (!modest_tny_account_is_virtual_local_folders (account))) { gchar *account_id; const gchar *modest_account_name; @@ -457,24 +458,34 @@ forget_pass_dummy (TnyAccount *account) static void set_online_callback (TnyCamelAccount *account, gboolean canceled, GError *err, gpointer user_data) { - /* MODEST TODO: Show a real error message here, this is a significant error! - * Perhaps show the account's settings dialog again?! Reconnecting after - * changing the settings of an account failed in this situation. */ + TnyAccountStore *account_store; - if (err && !canceled) - g_warning ("err: %s", err->message); + account_store = TNY_ACCOUNT_STORE(g_object_get_data (G_OBJECT(account), + "account_store")); + if (err && !canceled) { + /* It seems err is forgotten here ... if the disk is full ! */ + if (account_store) { + tny_account_store_alert ( + account_store, + TNY_ACCOUNT (account), TNY_ALERT_TYPE_ERROR, FALSE, + err); + } + g_warning ("err: %s", err->message); + } } gboolean -modest_tny_account_update_from_account (TnyAccount *tny_account) +modest_tny_account_update_from_account (TnyAccount *tny_account, + TnyGetPassFunc get_pass_func, + TnyForgetPassFunc forget_pass_func) { ModestAccountSettings *settings = NULL; ModestServerAccountSettings *server_settings = NULL; - TnyConnectionStatus conn_status; ModestAccountMgr *account_mgr; const gchar *account_name; TnyAccountType type; const gchar *display_name; + TnyConnectionStatus conn_status; g_return_val_if_fail (tny_account, FALSE); @@ -515,26 +526,32 @@ modest_tny_account_update_from_account (TnyAccount *tny_account) g_object_unref (server_settings); g_object_unref (settings); - /* If the account was online, reconnect to apply the changes */ + tny_account_set_forget_pass_func (tny_account, NULL); + tny_account_set_pass_func (tny_account, NULL); + tny_account_set_forget_pass_func (tny_account, + forget_pass_func ? forget_pass_func : forget_pass_dummy); + tny_account_set_pass_func (tny_account, + get_pass_func ? get_pass_func: get_pass_dummy); + + /* The callback will have an error for you if the reconnect + * failed. Please handle it (this is TODO). */ + conn_status = tny_account_get_connection_status (tny_account); if (conn_status != TNY_CONNECTION_STATUS_DISCONNECTED) { TnyAccountStore *account_store = NULL; - - /* The callback will have an error for you if the reconnect - * failed. Please handle it (this is TODO). */ - + account_store = TNY_ACCOUNT_STORE(g_object_get_data (G_OBJECT(tny_account), - "account_store")); - + "account_store")); + if (account_store) { modest_tny_account_store_forget_already_asked (MODEST_TNY_ACCOUNT_STORE (account_store), - tny_account); + tny_account); } - + tny_camel_account_set_online (TNY_CAMEL_ACCOUNT(tny_account), TRUE, - set_online_callback, "online"); + set_online_callback, "online"); } - + return TRUE; }