+void
+modest_ui_actions_on_send_queue_error_happened (TnySendQueue *self,
+ TnyHeader *header,
+ TnyMsg *msg,
+ GError *err,
+ gpointer user_data)
+{
+ const gchar* server_name = NULL;
+ TnyTransportAccount *server_account;
+ gchar *message = NULL;
+
+ /* Don't show anything if the user cancelled something */
+ if (err->code == TNY_SYSTEM_ERROR_CANCEL)
+ 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));
+
+ g_object_unref (server_account);
+ server_account = NULL;
+ }
+
+ g_return_if_fail (server_name);
+
+ /* 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);
+ break;
+ case TNY_SERVICE_ERROR_AUTHENTICATE:
+ message = g_strdup_printf (_("emev_ni_ui_smtp_authentication_fail_error"), server_name);
+ break;
+ case TNY_SERVICE_ERROR_SEND:
+ message = g_strdup (_("emev_ib_ui_smtp_send_error"));
+ break;
+ case TNY_SERVICE_ERROR_UNAVAILABLE:
+ message = g_strdup_printf (_("emev_ib_ui_smtp_server_invalid"), server_name);
+ break;
+ default:
+ g_warning ("%s: unexpected ERROR %d",
+ __FUNCTION__, err->code);
+ message = g_strdup (_("emev_ib_ui_smtp_send_error"));
+ break;
+ }
+
+ /* TODO if the username or the password where not defined we
+ should show the Accounts Settings dialog or the Connection
+ specific SMTP server window */
+
+ modest_platform_run_information_dialog (NULL, message);
+ g_free (message);
+}
+
+void
+modest_ui_actions_on_send_queue_status_changed (ModestTnySendQueue *send_queue,
+ gchar *msg_id,
+ guint status,
+ gpointer user_data)
+{
+ ModestMainWindow *main_window = NULL;
+ ModestWindowMgr *mgr = NULL;
+ GtkWidget *folder_view = NULL, *header_view = NULL;
+ TnyFolderStore *selected_folder = NULL;
+ TnyFolderType folder_type;
+
+ mgr = modest_runtime_get_window_mgr ();
+ main_window = MODEST_MAIN_WINDOW (modest_window_mgr_get_main_window (mgr,
+ FALSE));/* don't create */
+ if (!main_window)
+ return;
+
+ /* Check if selected folder is OUTBOX */
+ folder_view = modest_main_window_get_child_widget (main_window,
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
+ header_view = modest_main_window_get_child_widget (main_window,
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
+
+ selected_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view));
+ if (!TNY_IS_FOLDER (selected_folder))
+ goto frees;
+
+ /* gtk_tree_view_column_queue_resize is only available in GTK+ 2.8 */
+#if GTK_CHECK_VERSION(2, 8, 0)
+ folder_type = modest_tny_folder_guess_folder_type (TNY_FOLDER (selected_folder));
+ if (folder_type == TNY_FOLDER_TYPE_OUTBOX) {
+ GtkTreeViewColumn *tree_column;
+
+ tree_column = gtk_tree_view_get_column (GTK_TREE_VIEW (header_view),
+ TNY_GTK_HEADER_LIST_MODEL_FROM_COLUMN);
+ gtk_tree_view_column_queue_resize (tree_column);
+ }
+#else
+ gtk_widget_queue_draw (header_view);
+#endif
+
+ /* Rerun dimming rules, because the message could become deletable for example */
+ modest_window_check_dimming_rules_group (MODEST_WINDOW (main_window),
+ MODEST_DIMMING_RULES_TOOLBAR);
+
+ /* Free */
+ frees:
+ if (selected_folder != NULL)
+ g_object_unref (selected_folder);
+}
+
+void
+modest_ui_actions_on_account_connection_error (GtkWindow *parent_window,
+ TnyAccount *account)
+{
+ ModestTransportStoreProtocol proto;
+ const gchar *proto_name;
+ gchar *error_note = NULL;
+
+ proto_name = tny_account_get_proto (account);
+ proto = modest_protocol_info_get_transport_store_protocol (proto_name);
+
+ switch (proto) {
+ case MODEST_PROTOCOL_STORE_POP:
+ error_note = g_strdup_printf (_("emev_ni_ui_pop3_msg_connect_error"),
+ tny_account_get_hostname (account));
+ break;
+ case MODEST_PROTOCOL_STORE_IMAP:
+ error_note = g_strdup_printf (_("emev_ni_ui_imap_connect_server_error"),
+ tny_account_get_hostname (account));
+ break;
+ case MODEST_PROTOCOL_STORE_MAILDIR:
+ case MODEST_PROTOCOL_STORE_MBOX:
+ error_note = g_strdup (_("emev_nc_mailbox_notavailable"));
+ break;
+ default:
+ g_warning ("%s: This should not be reached", __FUNCTION__);
+ }
+
+ if (error_note) {
+ modest_platform_run_information_dialog (parent_window, error_note);
+ g_free (error_note);
+ }
+}
+
+gchar *
+modest_ui_actions_get_msg_already_deleted_error_msg (ModestWindow *win)
+{
+ gchar *msg = NULL;
+ TnyFolderStore *folder = NULL;
+ TnyAccount *account = NULL;
+ ModestTransportStoreProtocol proto;
+ TnyHeader *header = NULL;
+
+ if (MODEST_IS_MAIN_WINDOW (win)) {
+ GtkWidget *header_view;
+ TnyList* headers = NULL;
+ TnyIterator *iter;
+ header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW);
+ headers = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW (header_view));
+ if (!headers || tny_list_get_length (headers) == 0) {
+ if (headers)
+ g_object_unref (headers);
+ return NULL;
+ }
+ iter = tny_list_create_iterator (headers);
+ header = TNY_HEADER (tny_iterator_get_current (iter));
+ folder = TNY_FOLDER_STORE (tny_header_get_folder (header));
+ g_object_unref (iter);
+ g_object_unref (headers);
+ } else if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
+ header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW (win));
+ folder = TNY_FOLDER_STORE (tny_header_get_folder (header));
+ }
+
+ /* Get the account type */
+ account = tny_folder_get_account (TNY_FOLDER (folder));
+ proto = modest_protocol_info_get_transport_store_protocol (tny_account_get_proto (account));
+ if (proto == MODEST_PROTOCOL_STORE_POP) {
+ msg = g_strdup (_("emev_ni_ui_pop3_msg_recv_error"));
+ } else if (proto == MODEST_PROTOCOL_STORE_IMAP) {
+ msg = g_strdup_printf (_("emev_ni_ui_imap_message_not_available_in_server"),
+ tny_header_get_subject (header));
+ } else {
+ msg = g_strdup_printf (_("mail_ni_ui_folder_get_msg_folder_error"));
+ }
+
+ /* Frees */
+ g_object_unref (account);
+ g_object_unref (folder);
+ g_object_unref (header);
+
+ return msg;
+}