From: Sergio Villar Senin Date: Fri, 13 Mar 2009 16:18:52 +0000 (+0000) Subject: Fixes NB#105818, show the proper message when sending fails X-Git-Tag: git_migration_finished~331 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=b69345f02a040bdf9148f53f81f1e2d16c7379f3 Fixes NB#105818, show the proper message when sending fails Moved the error message from send queue to ui actions Use protocol error messages pmo-trunk-r8016 --- diff --git a/src/modest-protocol-registry.c b/src/modest-protocol-registry.c index 9e1b290..75ff369 100644 --- a/src/modest-protocol-registry.c +++ b/src/modest-protocol-registry.c @@ -441,6 +441,7 @@ modest_protocol_registry_set_to_default (ModestProtocolRegistry *self) MODEST_TYPE_TRANSPORT_ACCOUNT_DECORATOR); smtp_protocol_type_id = modest_protocol_get_type_id (protocol); modest_protocol_set_translation (protocol, MODEST_PROTOCOL_TRANSLATION_CONNECT_ERROR, translation_is_userdata, "emev_ib_ui_smtp_server_invalid", NULL); + modest_protocol_set_translation (protocol, MODEST_PROTOCOL_TRANSLATION_ACCOUNT_CONNECTION_ERROR, translation_is_userdata, "emev_ib_ui_smtp_server_invalid", NULL); modest_protocol_set_translation (protocol, MODEST_PROTOCOL_TRANSLATION_AUTH_ERROR, translation_is_userdata, "emev_ni_ui_smtp_authentication_fail_error", NULL); modest_protocol_registry_add (self, protocol, 2, MODEST_PROTOCOL_REGISTRY_TRANSPORT_STORE_PROTOCOLS, diff --git a/src/modest-tny-send-queue.c b/src/modest-tny-send-queue.c index 62c75c6..5100ca2 100644 --- a/src/modest-tny-send-queue.c +++ b/src/modest-tny-send-queue.c @@ -703,7 +703,7 @@ _on_msg_error_happened (TnySendQueue *self, g_free(msg_uid); return; } - + info = item->data; /* Keep in queue so that we remember that the opertion has failed */ @@ -711,37 +711,10 @@ _on_msg_error_happened (TnySendQueue *self, if (err->code == TNY_SYSTEM_ERROR_CANCEL) { info->status = MODEST_TNY_SEND_QUEUE_SUSPENDED; } else { - if (err->code == TNY_SERVICE_ERROR_CONNECT) { - TnyCamelTransportAccount* transport; - TnyTransportAccount *conn_specific; - - transport = tny_camel_send_queue_get_transport_account (TNY_CAMEL_SEND_QUEUE (self)); - if (transport) { - gchar *message; - ModestTnyAccountStore *acc_store; - const gchar *acc_name; - - acc_store = modest_runtime_get_account_store(); - acc_name = modest_tny_account_get_parent_modest_account_name_for_server_account (TNY_ACCOUNT (transport)); - conn_specific = (TnyTransportAccount *) - modest_tny_account_store_get_transport_account_for_open_connection (acc_store, acc_name); - if (conn_specific) { - message = g_strdup_printf (_("emev_ib_ui_smtp_server_invalid"), - tny_account_get_hostname (TNY_ACCOUNT (conn_specific))); - g_object_unref (conn_specific); - } else { - message = g_strdup_printf (_("emev_ib_ui_smtp_server_invalid"), - tny_account_get_hostname (TNY_ACCOUNT (transport))); - } - modest_platform_run_alert_dialog (message, FALSE); - g_free (message); - g_object_unref (transport); - } - } info->status = MODEST_TNY_SEND_QUEUE_FAILED; } priv->current = NULL; - + /* Notify status has changed */ g_signal_emit (self, signals[STATUS_CHANGED_SIGNAL], 0, info->msg_id, info->status); diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index a1f80f4..cef5ff7 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -6397,8 +6397,9 @@ modest_ui_actions_on_send_queue_error_happened (TnySendQueue *self, gpointer user_data) { const gchar* server_name = NULL; - TnyTransportAccount *server_account; + TnyTransportAccount *transport; gchar *message = NULL; + ModestProtocol *protocol; /* Don't show anything if the user cancelled something or the * send receive request is not interactive. Authentication @@ -6410,24 +6411,51 @@ modest_ui_actions_on_send_queue_error_happened (TnySendQueue *self, return; - /* Get the server name: */ - server_account = - TNY_TRANSPORT_ACCOUNT (tny_camel_send_queue_get_transport_account (TNY_CAMEL_SEND_QUEUE (self))); - if (server_account) - server_name = tny_account_get_hostname (TNY_ACCOUNT (server_account)); - else - g_return_if_reached (); + /* Get the server name. Note that we could be using a + connection specific transport account */ + transport = (TnyTransportAccount *) + tny_camel_send_queue_get_transport_account (TNY_CAMEL_SEND_QUEUE (self)); + if (transport) { + ModestTnyAccountStore *acc_store; + const gchar *acc_name; + TnyTransportAccount *conn_specific; + + acc_store = modest_runtime_get_account_store(); + acc_name = modest_tny_account_get_parent_modest_account_name_for_server_account (TNY_ACCOUNT (transport)); + conn_specific = (TnyTransportAccount *) + modest_tny_account_store_get_transport_account_for_open_connection (acc_store, acc_name); + if (conn_specific) { + server_name = tny_account_get_hostname (TNY_ACCOUNT (conn_specific)); + g_object_unref (conn_specific); + } else { + server_name = tny_account_get_hostname (TNY_ACCOUNT (transport)); + } + g_object_unref (transport); + } + + /* Get protocol */ + protocol = modest_protocol_registry_get_protocol_by_name (modest_runtime_get_protocol_registry (), + MODEST_PROTOCOL_REGISTRY_TRANSPORT_STORE_PROTOCOLS, + tny_account_get_proto (TNY_ACCOUNT (transport))); + if (!protocol) { + g_warning ("%s: Account with no proto", __FUNCTION__); + return; + } /* Show the appropriate message text for the GError: */ switch (err->code) { case TNY_SERVICE_ERROR_CONNECT: - message = g_strdup_printf (_("emev_ib_ui_smtp_server_invalid"), server_name); + message = modest_protocol_get_translation (protocol, + MODEST_PROTOCOL_TRANSLATION_ACCOUNT_CONNECTION_ERROR, + server_name); break; case TNY_SERVICE_ERROR_SEND: message = g_strdup (_CS("sfil_ib_unable_to_send")); break; case TNY_SERVICE_ERROR_UNAVAILABLE: - message = g_strdup_printf (_("emev_ib_ui_smtp_server_invalid"), server_name); + message = modest_protocol_get_translation (protocol, + MODEST_PROTOCOL_TRANSLATION_CONNECT_ERROR, + server_name); break; default: g_warning ("%s: unexpected ERROR %d", @@ -6438,7 +6466,6 @@ modest_ui_actions_on_send_queue_error_happened (TnySendQueue *self, modest_platform_run_information_dialog (NULL, message, FALSE); g_free (message); - g_object_unref (server_account); } void