X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-tny-account-store.c;h=3b82d2fb0f30ced0f6128bcad9518b46d6ff2996;hp=2dfa781f4be4a2db62434e1e272a25ad4732276a;hb=fd067def87340f018ddaa4a10a81ce2d717906d3;hpb=50febec782f963624b1ddca59fb3b1c3d7713151 diff --git a/src/modest-tny-account-store.c b/src/modest-tny-account-store.c index 2dfa781..3b82d2f 100644 --- a/src/modest-tny-account-store.c +++ b/src/modest-tny-account-store.c @@ -62,6 +62,8 @@ #include #include "modest-ui-actions.h" #include +#include +#include #ifdef MODEST_PLATFORM_MAEMO #include @@ -457,11 +459,29 @@ on_account_changed (ModestAccountMgr *acc_mgr, } static void -show_wrong_password_dialog (TnyAccount *account, +show_wrong_password_dialog (TnyAccountStore *self, + TnyAccount *account, gboolean show_banner) { + TnyDevice *device; + gboolean is_online; + g_debug ("%s: %s", __FUNCTION__, tny_account_get_id (account)); + device = tny_account_store_get_device (self); + is_online = tny_device_is_online (device); + g_object_unref (device); + + if (!is_online) { + g_debug ("%s: not showing the acc settings dialog. Device OFFLINE", __FUNCTION__); + return; + } + + if (modest_window_mgr_get_num_windows (modest_runtime_get_window_mgr ()) == 0) { + g_debug ("%s: not showing the account settings dialog. NO windows", __FUNCTION__); + return; + } + if (g_object_get_data (G_OBJECT (account), "connection_specific") != NULL) { modest_ui_actions_on_smtp_servers (NULL, NULL); } else { @@ -479,17 +499,18 @@ 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); - parent = modest_window_mgr_get_modal (mgr); - if (!parent) - parent = (GtkWindow *) modest_window_mgr_get_current_top (mgr); + if (dialog) { + ModestWindowMgr *mgr = modest_runtime_get_window_mgr (); + GtkWindow *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)); + modest_window_mgr_set_modal (mgr, GTK_WINDOW (dialog), parent); + gtk_widget_show (GTK_WIDGET (dialog)); + } } } /* Show an explanatory temporary banner: */ @@ -650,16 +671,11 @@ get_password (TnyAccount *account, const gchar * prompt_not_used, gboolean *canc if (settings_have_password) { if (pwd) { - - /* Never show it if the UI is not launched */ - if (modest_window_mgr_get_num_windows (modest_runtime_get_window_mgr ())) { - g_debug ("%s: going to show the dialog (%d windows)", __FUNCTION__, - modest_window_mgr_get_num_windows (modest_runtime_get_window_mgr ())); - /* The password must be wrong, so show the account settings dialog so it can be corrected: */ - show_wrong_password_dialog (account, TRUE); - } else { - g_debug ("%s: not showing the dialog (no windows)", __FUNCTION__); - } + /* The password must be wrong, so show + the account settings dialog so it + can be corrected: */ + g_debug ("%s: going to show the settings dialog", __FUNCTION__); + show_wrong_password_dialog ((TnyAccountStore *) self, account, TRUE); if (cancel) *cancel = TRUE; @@ -667,7 +683,8 @@ get_password (TnyAccount *account, const gchar * prompt_not_used, gboolean *canc return NULL; } else { /* Get the password from the account settings */ - return modest_account_mgr_get_server_account_password (priv->account_mgr, server_account_name); + return modest_account_mgr_get_server_account_password (priv->account_mgr, + server_account_name); } } @@ -865,6 +882,36 @@ volume_path_is_mounted (const gchar* path) return result; } +static void _bodies_filter (TnyMsg *msg, TnyList *list) +{ + TnyMimePart *html_part, *text_part, *calendar_part; + + html_part = modest_tny_msg_find_body_part (msg, TRUE); + text_part = modest_tny_msg_find_body_part (msg, FALSE); + calendar_part = modest_tny_msg_find_calendar (msg); + + if (text_part && TNY_IS_MIME_PART (text_part) && html_part == text_part) { + g_object_unref (text_part); + text_part = NULL; + } + + if (html_part && TNY_IS_MIME_PART (html_part)) { + tny_list_prepend (list, G_OBJECT (html_part)); + g_object_unref (html_part); + } + + if (text_part && TNY_IS_MIME_PART (text_part)) { + tny_list_prepend (list, G_OBJECT (text_part)); + g_object_unref (text_part); + } + + if (calendar_part && TNY_IS_MIME_PART (calendar_part)) { + tny_list_prepend (list, G_OBJECT (calendar_part)); + g_object_unref (calendar_part); + } +} + + ModestTnyAccountStore* modest_tny_account_store_new (ModestAccountMgr *account_mgr, TnyDevice *device) @@ -879,6 +926,9 @@ modest_tny_account_store_new (ModestAccountMgr *account_mgr, g_return_val_if_fail (account_mgr, NULL); g_return_val_if_fail (device, NULL); + tny_camel_bs_msg_receive_strategy_set_global_bodies_filter ( + (TnyCamelBsMsgReceiveStrategyBodiesFilter) _bodies_filter); + obj = G_OBJECT(g_object_new(MODEST_TYPE_TNY_ACCOUNT_STORE, NULL)); priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE(obj); @@ -1131,27 +1181,20 @@ modest_tny_account_store_alert (TnyAccountStore *self, tny_account_get_id (account)); if (!success) { + gboolean show_banner; + 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. Also do not show it if the UI - is not launched */ if (tny_device_is_online (device) && - modest_window_mgr_get_num_windows (modest_runtime_get_window_mgr ())) { - show_wrong_password_dialog (account, - (error->code == TNY_SERVICE_ERROR_CONNECT) ? FALSE : TRUE); - } else { - if (tny_device_is_online (device)) - g_debug ("%s: not showing the dialog (no windows)", __FUNCTION__); - else - g_debug ("%s: not showing the dialog (no connection)", __FUNCTION__); - } + modest_window_mgr_get_num_windows (modest_runtime_get_window_mgr ())) + modest_platform_run_information_dialog (NULL, prompt, TRUE); + + /* Show the account dialog */ + show_banner = (error->code == TNY_SERVICE_ERROR_CONNECT) ? FALSE : TRUE; + g_debug ("%s: going to show settings dialog", __FUNCTION__); + show_wrong_password_dialog (self, account, show_banner); retval = TRUE; } }