X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-tny-account-store.c;h=9a610d02cae23f9a4acf8e0cff3bbdb0c4de13c3;hp=f2c597c6c997409ad231691bd4ce36ce4964dcd2;hb=f065ac27e44ca355d02b24513e6695812bcf546c;hpb=65672fc46aa168a161d33f78325245e1ea4f2611 diff --git a/src/modest-tny-account-store.c b/src/modest-tny-account-store.c index f2c597c..9a610d0 100644 --- a/src/modest-tny-account-store.c +++ b/src/modest-tny-account-store.c @@ -489,10 +489,12 @@ on_account_changed (ModestAccountMgr *acc_mgr, g_object_unref (iter); } -static void -show_wrong_password_dialog (TnyAccount *account, +static void +show_wrong_password_dialog (TnyAccount *account, gboolean show_banner) -{ +{ + g_debug ("%s: %s", __FUNCTION__, tny_account_get_id (account)); + if (g_object_get_data (G_OBJECT (account), "connection_specific") != NULL) { modest_ui_actions_on_smtp_servers (NULL, NULL); } else { @@ -510,9 +512,16 @@ show_wrong_password_dialog (TnyAccount *account, /* Create and show the dialog */ if (proto && MODEST_IS_ACCOUNT_PROTOCOL (proto)) { + GtkWindow *parent; + ModestWindowMgr *mgr = modest_runtime_get_window_mgr (); ModestAccountSettingsDialog *dialog = modest_account_protocol_get_account_settings_dialog (proto, modest_account_name); - modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), GTK_WINDOW (dialog), NULL); + + parent = modest_window_mgr_get_modal (mgr); + if (!parent) + parent = (GtkWindow *) modest_window_mgr_get_current_top (mgr); + + modest_window_mgr_set_modal (mgr, GTK_WINDOW (dialog), parent); gtk_widget_show (GTK_WIDGET (dialog)); } } @@ -541,9 +550,7 @@ get_password (TnyAccount *account, const gchar * prompt_not_used, gboolean *canc g_return_val_if_fail (account, NULL); - MODEST_DEBUG_BLOCK( - g_debug ("%s: prompt (not shown) = %s\n", __FUNCTION__, prompt_not_used); - ); + g_debug ("%s: %s", __FUNCTION__, prompt_not_used); /* Get a reference to myself */ self = MODEST_TNY_ACCOUNT_STORE (g_object_get_data (G_OBJECT(account), "account_store")); @@ -587,7 +594,7 @@ get_password (TnyAccount *account, const gchar * prompt_not_used, gboolean *canc already_asked = priv->password_hash && g_hash_table_lookup_extended (priv->password_hash, server_account_name, NULL, - &attempt_ptr); + attempt_ptr); /* If the password is not already there, try ModestConf */ if (!already_asked) { @@ -690,6 +697,7 @@ get_password (TnyAccount *account, const gchar * prompt_not_used, gboolean *canc if (settings_have_password) { if (pwd) { + g_debug ("%s: going to show the dialog. Attempt count is %d", __FUNCTION__, attempt->count); /* The password must be wrong, so show the account settings dialog so it can be corrected: */ show_wrong_password_dialog (account, TRUE); @@ -1082,7 +1090,8 @@ modest_tny_account_store_alert (TnyAccountStore *self, gboolean retval = TRUE; /* NOTE: account may be NULL in some cases */ - g_return_val_if_fail (error, FALSE); + if (!error) + return FALSE; /* Get the server name: */ if (account) { @@ -1154,27 +1163,34 @@ modest_tny_account_store_alert (TnyAccountStore *self, else if (error->code == TNY_SERVICE_ERROR_AUTHENTICATE || error->code == TNY_SERVICE_ERROR_CONNECT) { TnyDevice *device = modest_runtime_get_device (); - - if (error->code == TNY_SERVICE_ERROR_CONNECT) { - gboolean success; - success = modest_account_mgr_get_server_account_username_has_succeeded (modest_runtime_get_account_mgr (), - tny_account_get_id (account)); - if (success) - goto end; + gboolean success; + + /* If we get the connection error after establishing a + proper connection then do not show the dialog as we + are probably behind a firewall, or in a network + with connection issues. We just keep this code to + detect situations were the user does not enter the + server info properly */ + success = modest_account_mgr_get_server_account_username_has_succeeded (modest_runtime_get_account_mgr (), + tny_account_get_id (account)); + + if (!success) { + g_debug ("%s: %s alert received (%s)", __FUNCTION__, + (error->code == TNY_SERVICE_ERROR_CONNECT) ? "connect" : "aunthenticate", + error->message); + + modest_platform_run_information_dialog (NULL, prompt, TRUE); + + /* Show the account dialog. Checking the online status + allows us to minimize the number of times that we + incorrectly show the dialog */ + if (tny_device_is_online (device)) + show_wrong_password_dialog (account, + (error->code == TNY_SERVICE_ERROR_CONNECT) ? FALSE : TRUE); + retval = TRUE; } - - modest_platform_run_information_dialog (NULL, prompt, TRUE); - - /* Show the account dialog. Checking the online status - allows us to minimize the number of times that we - incorrectly show the dialog */ - if (tny_device_is_online (device)) - show_wrong_password_dialog (account, - (error->code == TNY_SERVICE_ERROR_CONNECT) ? FALSE : TRUE); - - retval = TRUE; } - end: + g_debug ("%s: error code %d (%s", __FUNCTION__, error->code, error->message); if (prompt)