X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fhildon2%2Fmodest-msg-view-window.c;h=f81ce01634fa438b0b989ec2a1b08bd7fb8aad14;hb=ba4f63e1dede973582a3fa6add4cc390925ffea3;hp=b78350d7b51bdbb78e13c150ed54c05fdb67a6d9;hpb=152f4251f888731828540651e6bba61929ee7c7e;p=modest diff --git a/src/hildon2/modest-msg-view-window.c b/src/hildon2/modest-msg-view-window.c index b78350d..f81ce01 100644 --- a/src/hildon2/modest-msg-view-window.c +++ b/src/hildon2/modest-msg-view-window.c @@ -505,6 +505,10 @@ init_window (ModestMsgViewWindow *obj) modest_msg_view_set_shadow_type (MODEST_MSG_VIEW (priv->msg_view), GTK_SHADOW_NONE); main_vbox = gtk_vbox_new (FALSE, 6); priv->main_scroll = hildon_pannable_area_new (); + g_object_set (G_OBJECT (priv->main_scroll), + "mov-mode", HILDON_MOVEMENT_MODE_BOTH, + "hovershoot-max", 0, + NULL); gtk_container_add (GTK_CONTAINER (priv->main_scroll), priv->msg_view); gtk_box_pack_start (GTK_BOX(main_vbox), priv->main_scroll, TRUE, TRUE, 0); gtk_container_add (GTK_CONTAINER(obj), main_vbox); @@ -1946,13 +1950,16 @@ message_reader (ModestMsgViewWindow *window, GtkTreeRowReference *row_reference) { ModestWindowMgr *mgr; - TnyAccount *account; + TnyAccount *account = NULL; MsgReaderInfo *info; /* 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")); + if (header) + folder = NULL; + if (folder) g_object_ref (folder); @@ -1997,7 +2004,8 @@ message_reader (ModestMsgViewWindow *window, TNY_FOLDER_STORE (folder), message_reader_performer, info); - g_object_unref (folder); + if (folder) + g_object_unref (folder); return TRUE; } } @@ -2005,7 +2013,9 @@ message_reader (ModestMsgViewWindow *window, if (header) { folder = tny_header_get_folder (header); } - account = tny_folder_get_account (folder); + if (folder) + account = tny_folder_get_account (folder); + info = g_slice_new (MsgReaderInfo); info->msg_uid = g_strdup (msg_uid); if (folder) @@ -2022,13 +2032,15 @@ message_reader (ModestMsgViewWindow *window, info->row_reference = NULL; message_reader_performer (FALSE, NULL, (GtkWindow *) window, account, info); - g_object_unref (account); - g_object_unref (folder); + if (account) + g_object_unref (account); + if (folder) + g_object_unref (folder); return TRUE; } -gboolean +gboolean modest_msg_view_window_select_next_message (ModestMsgViewWindow *window) { ModestMsgViewWindowPrivate *priv; @@ -2176,12 +2188,16 @@ view_msg_cb (ModestMailOperation *mail_op, /* Update the row reference */ if (priv->row_reference != NULL) { gtk_tree_row_reference_free (priv->row_reference); - priv->row_reference = gtk_tree_row_reference_copy (row_reference); + priv->row_reference = row_reference?gtk_tree_row_reference_copy (row_reference):NULL; if (priv->next_row_reference != NULL) { gtk_tree_row_reference_free (priv->next_row_reference); } - priv->next_row_reference = gtk_tree_row_reference_copy (priv->row_reference); - select_next_valid_row (priv->header_model, &(priv->next_row_reference), TRUE, priv->is_outbox); + if (row_reference) { + priv->next_row_reference = gtk_tree_row_reference_copy (priv->row_reference); + select_next_valid_row (priv->header_model, &(priv->next_row_reference), TRUE, priv->is_outbox); + } else { + priv->next_row_reference = NULL; + } } /* Mark header as read */ @@ -2874,11 +2890,14 @@ save_mime_parts_to_file_with_checks (GtkWindow *parent, for (iter = files; (iter != NULL) && (replaced_files < 2); iter = g_list_next(iter)) { SaveMimePartPair *pair = iter->data; - if (modest_utils_file_exists (pair->filename)) { + gchar *unescaped = g_uri_unescape_string (pair->filename, NULL); + + if (modest_utils_file_exists (unescaped)) { replaced_files++; if (replaced_files == 1) to_replace = iter; } + g_free (unescaped); } if (replaced_files) { gint response; @@ -2928,9 +2947,9 @@ save_attachments_response (GtkDialog *dialog, chooser_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog)); current_folder = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dialog)); - if (current_folder && current_folder != '\0') { + if (current_folder && *current_folder != '\0') { GError *err = NULL; - modest_conf_set_string (modest_runtime_get_conf (), MODEST_CONF_LATEST_SAVE_ATTACHMENT_PATH, + modest_conf_set_string (modest_runtime_get_conf (), MODEST_CONF_LATEST_SAVE_ATTACHMENT_PATH, current_folder,&err); if (err != NULL) { g_debug ("Error storing latest used folder: %s", err->message); @@ -2940,8 +2959,18 @@ save_attachments_response (GtkDialog *dialog, g_free (current_folder); if (!modest_utils_folder_writable (chooser_uri)) { - hildon_banner_show_information - (NULL, NULL, _FM("sfil_ib_readonly_location")); + const gchar *err_msg; + +#ifdef MODEST_PLATFORM_MAEMO + if (modest_maemo_utils_in_usb_mode ()) { + err_msg = dgettext ("hildon-status-bar-usb", "usbh_ib_mmc_usb_connected"); + } else { + err_msg = _FM("sfil_ib_readonly_location"); + } +#else + err_msg = _FM("sfil_ib_readonly_location"); +#endif + hildon_banner_show_information (NULL, NULL, err_msg); } else { TnyIterator *iter; @@ -2996,6 +3025,7 @@ modest_msg_view_window_save_attachments (ModestMsgViewWindow *window, gchar *conf_folder = NULL; gchar *filename = NULL; gchar *save_multiple_str = NULL; + const gchar *root_folder = "file:///"; g_return_if_fail (MODEST_IS_MSG_VIEW_WINDOW (window)); priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window); @@ -3048,14 +3078,26 @@ modest_msg_view_window_save_attachments (ModestMsgViewWindow *window, save_dialog = hildon_file_chooser_dialog_new (GTK_WINDOW (window), GTK_FILE_CHOOSER_ACTION_SAVE); - /* set folder */ - conf_folder = modest_conf_get_string (modest_runtime_get_conf (), MODEST_CONF_LATEST_SAVE_ATTACHMENT_PATH, NULL); + /* Get last used folder */ + conf_folder = modest_conf_get_string (modest_runtime_get_conf (), + MODEST_CONF_LATEST_SAVE_ATTACHMENT_PATH, NULL); + + /* File chooser stops working if we select "file:///" as current folder */ + if (conf_folder && g_ascii_strcasecmp (root_folder, conf_folder) != 0) { + g_free (conf_folder); + conf_folder = NULL; + } + if (conf_folder && conf_folder[0] != '\0') { gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (save_dialog), conf_folder); } else { gchar *docs_folder; - /* Set the default folder to images folder */ - docs_folder = g_build_filename (g_getenv (MYDOCS_ENV), DOCS_FOLDER, NULL); + /* Set the default folder to documents folder */ + docs_folder = (gchar *) g_strdup(g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS)); + if (!docs_folder) { + /* fallback */ + docs_folder = g_build_filename (g_getenv (MYDOCS_ENV), DOCS_FOLDER, NULL); + } gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (save_dialog), docs_folder); g_free (docs_folder); } @@ -3072,6 +3114,7 @@ modest_msg_view_window_save_attachments (ModestMsgViewWindow *window, if (save_multiple_str) { g_object_set (G_OBJECT (save_dialog), "save-multiple", save_multiple_str, NULL); gtk_window_set_title (GTK_WINDOW (save_dialog), _FM("sfil_ti_save_objects_files")); + g_free (save_multiple_str); } /* We must run this asynchronously, because the hildon dialog @@ -3521,7 +3564,7 @@ modest_msg_view_window_add_to_contacts (ModestMsgViewWindow *self) gtk_widget_destroy (picker_dialog); if (selected) - modest_address_book_add_address (selected); + modest_address_book_add_address (selected, (GtkWindow *) self); g_free (selected); } else { @@ -3570,18 +3613,30 @@ void modest_msg_view_window_reload (ModestMsgViewWindow *self) { ModestMsgViewWindowPrivate *priv; - TnyHeader *header; + const gchar *msg_uid; + TnyHeader *header = NULL; + TnyFolder *folder = NULL; g_return_if_fail (MODEST_IS_MSG_VIEW_WINDOW (self)); priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self); - header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW (self)); - if (!message_reader (self, priv, header, NULL, NULL, priv->row_reference)) { - g_warning ("Shouldn't happen, trying to reload a message failed"); - } + header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW (self)); + if (!header) + return; + folder = tny_header_get_folder (header); g_object_unref (header); + + if (!folder) + return; + + msg_uid = modest_msg_view_window_get_message_uid (self); + if (msg_uid) + if (!message_reader (self, priv, NULL, msg_uid, folder, priv->row_reference)) + g_warning ("Shouldn't happen, trying to reload a message failed"); + + g_object_unref (folder); } static void