Use the proper translation for fetching country names and improve mcc detection.
[modest] / src / hildon2 / modest-msg-view-window.c
index acf889c..a920277 100644 (file)
@@ -837,7 +837,6 @@ modest_msg_view_window_new_with_header_model (TnyMsg *msg,
        ModestMsgViewWindowPrivate *priv = NULL;
        TnyFolder *header_folder = NULL;
        ModestHeaderView *header_view = NULL;
-       ModestWindow *main_window = NULL;
        ModestWindowMgr *mgr = NULL;
 
        MODEST_DEBUG_BLOCK (
@@ -852,28 +851,14 @@ modest_msg_view_window_new_with_header_model (TnyMsg *msg,
 
        priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
 
-       /* Remember the message list's TreeModel so we can detect changes 
+       /* Remember the message list's TreeModel so we can detect changes
         * and change the list selection when necessary: */
-
-       main_window = modest_window_mgr_get_main_window(mgr, FALSE); /* don't create */
-       if (main_window) {
-               header_view = MODEST_HEADER_VIEW(modest_main_window_get_child_widget(
-                                                        MODEST_MAIN_WINDOW(main_window),
-                                                        MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW));
-       }
-       
-       if (header_view != NULL){
-               header_folder = modest_header_view_get_folder(header_view);
-               /* This could happen if the header folder was
-                  unseleted before opening this msg window (for
-                  example if the user selects an account in the
-                  folder view of the main window */
-               if (header_folder) {
-                       priv->is_outbox = (modest_tny_folder_guess_folder_type (header_folder) == TNY_FOLDER_TYPE_OUTBOX);
-                       priv->header_folder_id = tny_folder_get_id(header_folder);
-                       g_assert(priv->header_folder_id != NULL);
-                       g_object_unref(header_folder);
-               }
+       header_folder = modest_header_view_get_folder (header_view);
+       if (header_folder) {
+               priv->is_outbox = (modest_tny_folder_guess_folder_type (header_folder) ==
+                                  TNY_FOLDER_TYPE_OUTBOX);
+               priv->header_folder_id = tny_folder_get_id (header_folder);
+               g_object_unref(header_folder);
        }
 
        /* Setup row references and connect signals */
@@ -925,11 +910,11 @@ modest_msg_view_window_new_with_header_model (TnyMsg *msg,
 }
 
 ModestWindow *
-modest_msg_view_window_new_from_header_view (ModestHeaderView *header_view, 
-                                             const gchar *modest_account_name,
+modest_msg_view_window_new_from_header_view (ModestHeaderView *header_view,
+                                            const gchar *modest_account_name,
                                             const gchar *mailbox,
-                                             const gchar *msg_uid,
-                                             GtkTreeRowReference *row_reference)
+                                            const gchar *msg_uid,
+                                            GtkTreeRowReference *row_reference)
 {
        ModestMsgViewWindow *window = NULL;
        ModestMsgViewWindowPrivate *priv = NULL;
@@ -956,9 +941,9 @@ modest_msg_view_window_new_from_header_view (ModestHeaderView *header_view,
                   example if the user selects an account in the
                   folder view of the main window */
                if (header_folder) {
-                       priv->is_outbox = (modest_tny_folder_guess_folder_type (header_folder) == TNY_FOLDER_TYPE_OUTBOX);
+                       priv->is_outbox = (modest_tny_folder_guess_folder_type (header_folder) == 
+                                          TNY_FOLDER_TYPE_OUTBOX);
                        priv->header_folder_id = tny_folder_get_id(header_folder);
-                       g_assert(priv->header_folder_id != NULL);
                        g_object_unref(header_folder);
                }
        }
@@ -996,7 +981,7 @@ modest_msg_view_window_new_from_header_view (ModestHeaderView *header_view,
 
        if (header_view != NULL){
                modest_header_view_add_observer(header_view,
-                               MODEST_HEADER_VIEW_OBSERVER(window));
+                                               MODEST_HEADER_VIEW_OBSERVER(window));
        }
 
        tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), NULL);
@@ -1008,6 +993,7 @@ modest_msg_view_window_new_from_header_view (ModestHeaderView *header_view,
                                    TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN,
                                    &header, -1);
                message_reader (window, priv, header, row_reference);
+               g_object_unref (header);
        }
        gtk_tree_path_free (path);
 
@@ -1857,14 +1843,14 @@ message_reader (ModestMsgViewWindow *window,
 
        g_return_val_if_fail (row_reference != NULL, FALSE);
 
+       /* We set the header from model while we're loading */
+       tny_header_view_set_header (TNY_HEADER_VIEW (priv->msg_view), header);
+       gtk_window_set_title (GTK_WINDOW (window), _CS("ckdg_pb_updating"));
+
        mgr = modest_runtime_get_window_mgr ();
        /* Msg download completed */
        if (!(tny_header_get_flags (header) & TNY_HEADER_FLAG_CACHED)) {
 
-               /* We set the header from model while we're loading */
-               tny_header_view_set_header (TNY_HEADER_VIEW (priv->msg_view), header);
-               gtk_window_set_title (GTK_WINDOW (window), _CS("ckdg_pb_updating"));
-
                /* Ask the user if he wants to download the message if
                   we're not online */
                if (!tny_device_is_online (modest_runtime_get_device())) {
@@ -1892,13 +1878,13 @@ message_reader (ModestMsgViewWindow *window,
                        return TRUE;
                }
        }
-       
+
        folder = tny_header_get_folder (header);
        account = tny_folder_get_account (folder);
        info = g_slice_new (MsgReaderInfo);
        info->header = g_object_ref (header);
        info->row_reference = gtk_tree_row_reference_copy (row_reference);
-       
+
        message_reader_performer (FALSE, NULL, (GtkWindow *) window, account, info);
        g_object_unref (account);
        g_object_unref (folder);
@@ -2703,12 +2689,22 @@ save_mime_parts_to_file_with_checks (SaveMimePartInfo *info)
         }
        if (replaced_files) {
                GtkWidget *confirm_overwrite_dialog;
-                const gchar *message = (replaced_files == 1) ?
-                        _FM("docm_nc_replace_file") : _FM("docm_nc_replace_multiple");
-                confirm_overwrite_dialog = hildon_note_new_confirmation (NULL, message);
-               if (gtk_dialog_run (GTK_DIALOG (confirm_overwrite_dialog)) != GTK_RESPONSE_OK) {
-                       is_ok = FALSE;
+
+               if (replaced_files == 1) {
+                       SaveMimePartPair *pair = files->data;
+                       const gchar *filename = tny_mime_part_get_filename (pair->part);
+                       gchar *message = g_strdup_printf ("%s\n%s",
+                                                         _FM("docm_nc_replace_file"),
+                                                         (filename) ? filename : "");
+                       confirm_overwrite_dialog = hildon_note_new_confirmation (NULL, message);
+                       g_free (message);
+               } else {
+                       confirm_overwrite_dialog = hildon_note_new_confirmation (NULL,
+                                                                                _FM("docm_nc_replace_multiple"));
                }
+               if (gtk_dialog_run (GTK_DIALOG (confirm_overwrite_dialog)) != GTK_RESPONSE_OK)
+                       is_ok = FALSE;
+
                gtk_widget_destroy (confirm_overwrite_dialog);
        }
 
@@ -2914,7 +2910,7 @@ void
 modest_msg_view_window_remove_attachments (ModestMsgViewWindow *window, gboolean get_all)
 {
        ModestMsgViewWindowPrivate *priv;
-       TnyList *mime_parts = NULL;
+       TnyList *mime_parts = NULL, *tmp;
        gchar *confirmation_message;
        gint response;
        gint n_attachments;
@@ -2928,17 +2924,20 @@ modest_msg_view_window_remove_attachments (ModestMsgViewWindow *window, gboolean
         * because we don't have selection
         */
        mime_parts = modest_msg_view_get_attachments (MODEST_MSG_VIEW (priv->msg_view));
-               
-       /* Remove already purged messages from mime parts list */
-       iter = tny_list_create_iterator (mime_parts);
+
+       /* Remove already purged messages from mime parts list. We use
+          a copy of the list to remove items in the original one */
+       tmp = tny_list_copy (mime_parts);
+       iter = tny_list_create_iterator (tmp);
        while (!tny_iterator_is_done (iter)) {
                TnyMimePart *part = TNY_MIME_PART (tny_iterator_get_current (iter));
-               tny_iterator_next (iter);
-               if (tny_mime_part_is_purged (part)) {
+               if (tny_mime_part_is_purged (part))
                        tny_list_remove (mime_parts, (GObject *) part);
-               }
+
                g_object_unref (part);
+               tny_iterator_next (iter);
        }
+       g_object_unref (tmp);
        g_object_unref (iter);
 
        if (!modest_maemo_utils_select_attachments (GTK_WINDOW (window), mime_parts, TRUE) ||
@@ -2983,7 +2982,7 @@ modest_msg_view_window_remove_attachments (ModestMsgViewWindow *window, gboolean
        }
 
        priv->purge_timeout = g_timeout_add (2000, show_remove_attachment_information, window);
-       
+
        iter = tny_list_create_iterator (mime_parts);
        while (!tny_iterator_is_done (iter)) {
                TnyMimePart *part;
@@ -3013,8 +3012,6 @@ modest_msg_view_window_remove_attachments (ModestMsgViewWindow *window, gboolean
                g_object_unref (priv->remove_attachment_banner);
                priv->remove_attachment_banner = NULL;
        }
-
-
 }