X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmaemo%2Fmodest-msg-view-window.c;h=85f1e2acb42ed77eaee353d8c3602d9f7d770988;hp=ebf9b231d2f5e7eb54153a191df84b343c2ed564;hb=175e5926e0194a8211b846a4eec403a5bdb4afd4;hpb=4a4e446d6461811d75e3f6b62f38bda2b9e4e975 diff --git a/src/maemo/modest-msg-view-window.c b/src/maemo/modest-msg-view-window.c index ebf9b23..85f1e2a 100644 --- a/src/maemo/modest-msg-view-window.c +++ b/src/maemo/modest-msg-view-window.c @@ -513,16 +513,17 @@ init_window (ModestMsgViewWindow *obj) hildon_window_set_menu (HILDON_WINDOW(obj), GTK_MENU(parent_priv->menubar)); gtk_widget_show (GTK_WIDGET(parent_priv->menubar)); +#ifdef MODEST_USE_MOZEMBED + priv->main_scroll = priv->msg_view; + gtk_widget_set_size_request (priv->msg_view, -1, 1600); +#else priv->main_scroll = gtk_scrolled_window_new (NULL, NULL); + gtk_container_add (GTK_CONTAINER (priv->main_scroll), priv->msg_view); +#endif gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->main_scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (priv->main_scroll), GTK_SHADOW_NONE); modest_maemo_set_thumbable_scrollbar (GTK_SCROLLED_WINDOW(priv->main_scroll), TRUE); -#ifdef MODEST_USE_MOZEMBED - gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (priv->main_scroll), priv->msg_view); -#else - gtk_container_add (GTK_CONTAINER (priv->main_scroll), priv->msg_view); -#endif gtk_box_pack_start (GTK_BOX(main_vbox), priv->main_scroll, TRUE, TRUE, 0); gtk_container_add (GTK_CONTAINER(obj), main_vbox); @@ -541,9 +542,8 @@ modest_msg_view_window_disconnect_signals (ModestWindow *self) { ModestMsgViewWindowPrivate *priv; ModestHeaderView *header_view = NULL; - ModestMainWindow *main_window = NULL; - ModestWindowMgr *window_mgr = NULL; - + ModestWindow *main_window = NULL; + priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self); if (gtk_clipboard_get (GDK_SELECTION_PRIMARY) && @@ -584,19 +584,15 @@ modest_msg_view_window_disconnect_signals (ModestWindow *self) priv->rows_reordered_handler); } - window_mgr = modest_runtime_get_window_mgr(); - g_assert(window_mgr != NULL); - - main_window = MODEST_MAIN_WINDOW( - modest_window_mgr_get_main_window(window_mgr)); - - if(main_window == NULL) + main_window = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr(), + FALSE); /* don't create */ + if (!main_window) return; - + header_view = MODEST_HEADER_VIEW( modest_main_window_get_child_widget( - main_window, MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW)); - + MODEST_MAIN_WINDOW(main_window), + MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW)); if (header_view == NULL) return; @@ -843,6 +839,7 @@ modest_msg_view_window_construct (ModestMsgViewWindow *self, } +/* FIXME: parameter checks */ ModestWindow * modest_msg_view_window_new_with_header_model (TnyMsg *msg, const gchar *modest_account_name, @@ -854,24 +851,28 @@ modest_msg_view_window_new_with_header_model (TnyMsg *msg, ModestMsgViewWindowPrivate *priv = NULL; TnyFolder *header_folder = NULL; ModestHeaderView *header_view = NULL; - ModestMainWindow *main_window = NULL; - ModestWindowMgr *window_mgr = NULL; - + ModestWindow *main_window = NULL; + window = g_object_new(MODEST_TYPE_MSG_VIEW_WINDOW, NULL); g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (window), NULL); + modest_msg_view_window_construct (window, modest_account_name, msg_uid); priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window); /* Remember the message list's TreeModel so we can detect changes * and change the list selection when necessary: */ - window_mgr = modest_runtime_get_window_mgr(); - g_assert(window_mgr != NULL); - main_window = MODEST_MAIN_WINDOW( - modest_window_mgr_get_main_window(window_mgr)); - g_assert(main_window != NULL); + + main_window = modest_window_mgr_get_main_window( + modest_runtime_get_window_mgr(), FALSE); /* don't create */ + if (!main_window) { + g_warning ("%s: BUG: no main window", __FUNCTION__); + return NULL; + } + header_view = MODEST_HEADER_VIEW(modest_main_window_get_child_widget( - main_window, MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW)); + 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); g_assert(header_folder != NULL); @@ -1838,15 +1839,8 @@ modest_msg_view_window_get_folder_type (ModestMsgViewWindow *window) TnyFolder *folder; folder = tny_msg_get_folder (msg); - if (folder) { folder_type = tny_folder_get_folder_type (folder); - - if (folder_type == TNY_FOLDER_TYPE_NORMAL || folder_type == TNY_FOLDER_TYPE_UNKNOWN) { - const gchar *fname = tny_folder_get_name (folder); - folder_type = modest_tny_folder_guess_folder_type_from_name (fname); - } - g_object_unref (folder); } g_object_unref (msg); @@ -2176,11 +2170,24 @@ void modest_msg_view_window_view_attachment (ModestMsgViewWindow *window, TnyMimePart *mime_part) { ModestMsgViewWindowPrivate *priv; + const gchar *msg_uid; + gchar *attachment_uid = NULL; + gint attachment_index = 0; + GList *attachments; + g_return_if_fail (MODEST_IS_MSG_VIEW_WINDOW (window)); g_return_if_fail (TNY_IS_MIME_PART (mime_part) || (mime_part == NULL)); - priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window); + msg_uid = modest_msg_view_window_get_message_uid (MODEST_MSG_VIEW_WINDOW (window)); + attachments = modest_msg_view_get_attachments (MODEST_MSG_VIEW (priv->msg_view)); + attachment_index = g_list_index (attachments, mime_part); + g_list_free (attachments); + + if (msg_uid && attachment_index >= 0) { + attachment_uid = g_strdup_printf ("%s/%d", msg_uid, attachment_index); + } + if (mime_part == NULL) { gboolean error = FALSE; GList *selected_attachments = modest_msg_view_get_selected_attachments (MODEST_MSG_VIEW (priv->msg_view)); @@ -2211,8 +2218,7 @@ modest_msg_view_window_view_attachment (ModestMsgViewWindow *window, TnyMimePart gchar *filepath = NULL; const gchar *att_filename = tny_mime_part_get_filename (mime_part); TnyFsStream *temp_stream = NULL; - - temp_stream = modest_maemo_utils_create_temp_stream (att_filename, &filepath); + temp_stream = modest_maemo_utils_create_temp_stream (att_filename, attachment_uid, &filepath); if (temp_stream) { const gchar *content_type; @@ -2245,11 +2251,11 @@ modest_msg_view_window_view_attachment (ModestMsgViewWindow *window, TnyMimePart g_warning ("window for is already being created"); } else { /* it's not found, so create a new window for it */ - modest_window_mgr_register_header (mgr, header); /* register the uid before building the window */ + modest_window_mgr_register_header (mgr, header, attachment_uid); /* register the uid before building the window */ gchar *account = g_strdup (modest_window_get_active_account (MODEST_WINDOW (window))); if (!account) account = modest_account_mgr_get_default_account (modest_runtime_get_account_mgr ()); - msg_win = modest_msg_view_window_new_for_attachment (TNY_MSG (mime_part), account, NULL); + msg_win = modest_msg_view_window_new_for_attachment (TNY_MSG (mime_part), account, attachment_uid); modest_window_set_zoom (MODEST_WINDOW (msg_win), modest_window_get_zoom (MODEST_WINDOW (window))); modest_window_mgr_register_window (mgr, msg_win);