* Fixes NB#79905, show the proper message when the msg is not available on server
authorSergio Villar Senin <svillar@igalia.com>
Mon, 28 Jan 2008 11:47:03 +0000 (11:47 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Mon, 28 Jan 2008 11:47:03 +0000 (11:47 +0000)
pmo-trunk-r4096

src/modest-ui-actions.c
src/modest-ui-actions.h
src/modest-ui-dimming-rules.c
src/widgets/modest-header-view.c

index 816e9be..eaa9bc5 100644 (file)
@@ -5428,3 +5428,54 @@ modest_ui_actions_on_account_connection_error (GtkWindow *parent_window,
                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;
+}
index 8404866..7702b10 100644 (file)
@@ -508,5 +508,8 @@ void modest_ui_actions_compose_msg (ModestWindow *win,
 void modest_ui_actions_on_account_connection_error (GtkWindow *parent_window,
                                                    TnyAccount *account);
 
+gchar *modest_ui_actions_get_msg_already_deleted_error_msg (ModestWindow *win);
+
+
 G_END_DECLS
 #endif /* __MODEST_UI_ACTIONS_H__ */
index 4050548..5229f5c 100644 (file)
@@ -33,6 +33,7 @@
 
 #include <string.h>
 #include "modest-ui-dimming-rules.h"
+#include "modest-ui-actions.h"
 #include "modest-dimming-rule.h"
 #include "modest-debug.h"
 #include "modest-tny-folder.h"
@@ -599,8 +600,11 @@ modest_ui_dimming_rules_on_open_msg (ModestWindow *win, gpointer user_data)
        }
        if (!dimmed) {
                dimmed = state->any_marked_as_deleted;
-               if (dimmed)
-                       modest_dimming_rule_set_notification (rule, _("mcen_ib_message_already_deleted"));
+               if (dimmed) {
+                       gchar *msg = modest_ui_actions_get_msg_already_deleted_error_msg (win);
+                       modest_dimming_rule_set_notification (rule, msg);
+                       g_free (msg);
+               }
        }
        if (!dimmed) {
                dimmed = _selected_msg_sent_in_progress (win);
@@ -736,7 +740,9 @@ modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data)
                if (!dimmed) {
                        dimmed = state->any_marked_as_deleted;
                        if (dimmed) {
-                               modest_dimming_rule_set_notification (rule, _("mcen_ib_message_already_deleted"));
+                               gchar *msg = modest_ui_actions_get_msg_already_deleted_error_msg (win);
+                               modest_dimming_rule_set_notification (rule, msg);
+                               g_free (msg);
                        }
                }
                if (!dimmed) {
@@ -753,8 +759,11 @@ modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data)
                }
                if (!dimmed) {
                        dimmed = state->any_marked_as_deleted;
-                       if (dimmed)
-                               modest_dimming_rule_set_notification (rule, _("mcen_ib_message_already_deleted"));
+                       if (dimmed) {
+                               gchar *msg = modest_ui_actions_get_msg_already_deleted_error_msg (win);
+                               modest_dimming_rule_set_notification (rule, msg);
+                               g_free (msg);
+                       }
                }
                if (!dimmed) {
                        dimmed = state->sent_in_progress;
index ea189e2..4499008 100644 (file)
@@ -40,7 +40,7 @@
 #include <modest-tny-folder.h>
 #include <modest-debug.h>
 #include <modest-main-window.h>
-
+#include <modest-ui-actions.h>
 #include <modest-marshal.h>
 #include <modest-text-utils.h>
 #include <modest-icon-names.h>
@@ -1300,7 +1300,12 @@ on_header_row_activated (GtkTreeView *treeview, GtkTreePath *path,
 
        /* Dont open DELETED messages */
        if (flags & TNY_HEADER_FLAG_DELETED) {
-               modest_platform_information_banner (NULL, NULL, _("mcen_ib_message_already_deleted"));
+               GtkWidget *win;
+               gchar *msg;
+               win = gtk_widget_get_ancestor (GTK_WIDGET (treeview), GTK_TYPE_WINDOW);
+               msg = modest_ui_actions_get_msg_already_deleted_error_msg (MODEST_WINDOW (win));
+               modest_platform_information_banner (NULL, NULL, msg);
+               g_free (msg);
                goto frees;
        }