X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-msg-view-window.c;h=cae371e38988a4c35d6432cb1d4916e4970f8b6d;hb=06bb4741c58b5ca7634c9a07b052bd0a57d9cc37;hp=bd2a5d9bb785207bf43bc1ef0db6fc133d6e0bba;hpb=9f9852e82f71535a6d35519a65e27b6bd825874c;p=modest diff --git a/src/widgets/modest-msg-view-window.c b/src/widgets/modest-msg-view-window.c index bd2a5d9..cae371e 100644 --- a/src/widgets/modest-msg-view-window.c +++ b/src/widgets/modest-msg-view-window.c @@ -37,7 +37,7 @@ #include "modest-marshal.h" #include "modest-platform.h" #include -#include +#include #include #include #include "modest-msg-view-window-ui-dimming.h" @@ -48,11 +48,10 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include "modest-defs.h" -#include "modest-hildon-includes.h" #include "modest-ui-dimming-manager.h" #include #include @@ -68,7 +67,17 @@ #include #include #include +#include #include +#include + +#ifdef MODEST_PLATFORM_MAEMO +#include +#endif + +#ifdef MODEST_TOOLKIT_HILDON2 +#include +#endif #define MYDOCS_ENV "MYDOCSDIR" #define DOCS_FOLDER ".documents" @@ -78,7 +87,7 @@ struct _ModestMsgViewWindowPrivate { GtkWidget *msg_view; GtkWidget *main_scroll; - GtkWidget *find_toolbar; + GtkWidget *isearch_toolbar; gchar *last_search; /* Progress observers */ @@ -129,13 +138,13 @@ static void modest_msg_view_window_class_init (ModestMsgViewWindowClass *klas static void modest_msg_view_window_init (ModestMsgViewWindow *obj); static void modest_header_view_observer_init (ModestHeaderViewObserverIface *iface_class); static void modest_msg_view_window_finalize (GObject *obj); -static void modest_msg_view_window_show_find_toolbar (GtkWidget *obj, gpointer data); -static void modest_msg_view_window_find_toolbar_close (GtkWidget *widget, - ModestMsgViewWindow *obj); -static void modest_msg_view_window_find_toolbar_search (GtkWidget *widget, - ModestMsgViewWindow *obj); -static void modest_msg_view_window_toggle_find_toolbar (GtkWidget *obj, - gpointer data); +static void modest_msg_view_window_show_isearch_toolbar (GtkWidget *obj, gpointer data); +static void modest_msg_view_window_isearch_toolbar_close (GtkWidget *widget, + ModestMsgViewWindow *obj); +static void modest_msg_view_window_isearch_toolbar_search (GtkWidget *widget, + ModestMsgViewWindow *obj); +static void modest_msg_view_window_toggle_isearch_toolbar (GtkWidget *obj, + gpointer data); static void modest_msg_view_window_disconnect_signals (ModestWindow *self); static gdouble modest_msg_view_window_get_zoom (ModestWindow *window); @@ -253,7 +262,7 @@ static const GtkActionEntry msg_view_toolbar_action_entries [] = { }; static const GtkToggleActionEntry msg_view_toggle_action_entries [] = { - { "FindInMessage", MODEST_TOOLBAR_ICON_FIND, N_("qgn_toolb_gene_find"), "F", NULL, G_CALLBACK (modest_msg_view_window_toggle_find_toolbar), FALSE }, + { "FindInMessage", MODEST_TOOLBAR_ICON_FIND, N_("qgn_toolb_gene_find"), "F", NULL, G_CALLBACK (modest_msg_view_window_toggle_isearch_toolbar), FALSE }, }; #define MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ @@ -282,8 +291,8 @@ modest_msg_view_window_get_type (void) (GInstanceInitFunc) modest_msg_view_window_init, NULL }; -#ifdef MODEST_TOOLKIT_GTK - my_type = g_type_register_static (MODEST_TYPE_WINDOW, +#ifndef MODEST_TOOLKIT_HILDON2 + my_type = g_type_register_static (MODEST_TYPE_SHELL_WINDOW, "ModestMsgViewWindow", &my_info, 0); #else @@ -349,7 +358,7 @@ modest_msg_view_window_scroll_child (ModestMsgViewWindow *self, } if (step) - modest_maemo_utils_scroll_pannable((HildonPannableArea *) priv->main_scroll, 0, step); + modest_scrollable_scroll ((ModestScrollable *) priv->main_scroll, 0, step); return (gboolean) step; } @@ -375,12 +384,10 @@ static void modest_msg_view_window_class_init (ModestMsgViewWindowClass *klass) { GObjectClass *gobject_class; - HildonWindowClass *hildon_window_class; ModestWindowClass *modest_window_class; GtkBindingSet *binding_set; gobject_class = (GObjectClass*) klass; - hildon_window_class = (HildonWindowClass *) klass; modest_window_class = (ModestWindowClass *) klass; parent_class = g_type_class_peek_parent (klass); @@ -469,11 +476,6 @@ modest_msg_view_window_init (ModestMsgViewWindow *obj) g_error_free (error); error = NULL; } - /* ****** */ - - /* Add accelerators */ - gtk_window_add_accel_group (GTK_WINDOW (obj), - gtk_ui_manager_get_accel_group (parent_priv->ui_manager)); priv->is_search_result = FALSE; priv->is_outbox = FALSE; @@ -547,17 +549,15 @@ init_window (ModestMsgViewWindow *obj) priv->msg_view = GTK_WIDGET (tny_platform_factory_new_msg_view (modest_tny_platform_factory_get_instance ())); modest_msg_view_set_shadow_type (MODEST_MSG_VIEW (priv->msg_view), GTK_SHADOW_NONE); main_vbox = gtk_vbox_new (FALSE, 6); - /****** HILDON2:START - * create panning widget, and set parameters - */ - priv->main_scroll = hildon_pannable_area_new (); + + priv->main_scroll = modest_toolkit_factory_create_scrollable (modest_runtime_get_toolkit_factory ()); + modest_scrollable_set_horizontal_policy (MODEST_SCROLLABLE (priv->main_scroll), GTK_POLICY_AUTOMATIC); g_object_set (G_OBJECT (priv->main_scroll), - "mov-mode", HILDON_MOVEMENT_MODE_BOTH, - "hovershoot-max", 0, + "movement-mode", MODEST_MOVEMENT_MODE_BOTH, + "horizontal-max-overshoot", 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); - /****** HILDON2:END */ gtk_container_add (GTK_CONTAINER(obj), main_vbox); /* NULL-ize fields if the window is destroyed */ @@ -847,20 +847,15 @@ modest_msg_view_window_construct (ModestMsgViewWindow *self, /* First add out toolbar ... */ modest_msg_view_window_show_toolbar (MODEST_WINDOW (obj), TRUE); - /****** HILDON2:START - * adds the toolbar - */ - /* ... and later the find toolbar. This way find toolbar will - be shown over the other */ - priv->find_toolbar = hildon_find_toolbar_new (NULL); - hildon_window_add_toolbar (HILDON_WINDOW (obj), GTK_TOOLBAR (priv->find_toolbar)); - gtk_widget_set_no_show_all (priv->find_toolbar, TRUE); - g_signal_connect (G_OBJECT (priv->find_toolbar), "close", - G_CALLBACK (modest_msg_view_window_find_toolbar_close), obj); - g_signal_connect (G_OBJECT (priv->find_toolbar), "search", - G_CALLBACK (modest_msg_view_window_find_toolbar_search), obj); + priv->isearch_toolbar = modest_toolkit_factory_create_isearch_toolbar (modest_runtime_get_toolkit_factory (), + NULL); + modest_window_add_toolbar (MODEST_WINDOW (obj), GTK_TOOLBAR (priv->isearch_toolbar)); + gtk_widget_set_no_show_all (priv->isearch_toolbar, TRUE); + g_signal_connect (G_OBJECT (priv->isearch_toolbar), "isearch-close", + G_CALLBACK (modest_msg_view_window_isearch_toolbar_close), obj); + g_signal_connect (G_OBJECT (priv->isearch_toolbar), "isearch-search", + G_CALLBACK (modest_msg_view_window_isearch_toolbar_search), obj); priv->last_search = NULL; - /****** HILDON2:END */ /* Init the clipboard actions dim status */ modest_msg_view_grab_focus(MODEST_MSG_VIEW (priv->msg_view)); @@ -1542,52 +1537,50 @@ modest_msg_view_window_get_message_uid (ModestMsgViewWindow *self) /* Used for the Ctrl+F accelerator */ static void -modest_msg_view_window_toggle_find_toolbar (GtkWidget *obj, - gpointer data) +modest_msg_view_window_toggle_isearch_toolbar (GtkWidget *obj, + gpointer data) { ModestMsgViewWindow *window = MODEST_MSG_VIEW_WINDOW (data); ModestMsgViewWindowPrivate *priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window); - if (GTK_WIDGET_VISIBLE (priv->find_toolbar)) { - modest_msg_view_window_find_toolbar_close (obj, data); + if (GTK_WIDGET_VISIBLE (priv->isearch_toolbar)) { + modest_msg_view_window_isearch_toolbar_close (obj, data); } else { - modest_msg_view_window_show_find_toolbar (obj, data); + modest_msg_view_window_show_isearch_toolbar (obj, data); } } /* Handler for menu option */ static void -modest_msg_view_window_show_find_toolbar (GtkWidget *obj, - gpointer data) +modest_msg_view_window_show_isearch_toolbar (GtkWidget *obj, + gpointer data) { ModestMsgViewWindow *window = MODEST_MSG_VIEW_WINDOW (data); ModestMsgViewWindowPrivate *priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window); - gtk_widget_show (priv->find_toolbar); - /****** HILDON2:START */ - hildon_find_toolbar_highlight_entry (HILDON_FIND_TOOLBAR (priv->find_toolbar), TRUE); - /****** HILDON2:END */ + gtk_widget_show (priv->isearch_toolbar); + modest_isearch_toolbar_highlight_entry (MODEST_ISEARCH_TOOLBAR (priv->isearch_toolbar), TRUE); } -/* Handler for click on the "X" close button in find toolbar */ +/* Handler for click on the "X" close button in isearch toolbar */ static void -modest_msg_view_window_find_toolbar_close (GtkWidget *widget, - ModestMsgViewWindow *obj) +modest_msg_view_window_isearch_toolbar_close (GtkWidget *widget, + ModestMsgViewWindow *obj) { ModestMsgViewWindowPrivate *priv; priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (obj); /* Hide toolbar */ - gtk_widget_hide (priv->find_toolbar); + gtk_widget_hide (priv->isearch_toolbar); modest_msg_view_grab_focus (MODEST_MSG_VIEW (priv->msg_view)); } static void -modest_msg_view_window_find_toolbar_search (GtkWidget *widget, - ModestMsgViewWindow *obj) +modest_msg_view_window_isearch_toolbar_search (GtkWidget *widget, + ModestMsgViewWindow *obj) { - gchar *current_search; + const gchar *current_search; ModestMsgViewWindowPrivate *priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (obj); if (modest_mime_part_view_is_empty (MODEST_MIME_PART_VIEW (priv->msg_view))) { @@ -1595,10 +1588,9 @@ modest_msg_view_window_find_toolbar_search (GtkWidget *widget, return; } - g_object_get (G_OBJECT (widget), "prefix", ¤t_search, NULL); + current_search = modest_isearch_toolbar_get_search (MODEST_ISEARCH_TOOLBAR (widget)); if ((current_search == NULL) || (strcmp (current_search, "") == 0)) { - g_free (current_search); modest_platform_system_banner (NULL, NULL, _CS("ecdg_ib_find_rep_enter_text")); return; } @@ -1611,29 +1603,23 @@ modest_msg_view_window_find_toolbar_search (GtkWidget *widget, priv->last_search); if (!result) { modest_platform_system_banner (NULL, NULL, - _HL("ckct_ib_find_no_matches")); + _HL_IB_FIND_NO_MATCHES); g_free (priv->last_search); priv->last_search = NULL; } else { - /****** HILDON2:START */ - hildon_find_toolbar_highlight_entry (HILDON_FIND_TOOLBAR (priv->find_toolbar), TRUE); - /****** HILDON2:END */ + modest_isearch_toolbar_highlight_entry (MODEST_ISEARCH_TOOLBAR (priv->isearch_toolbar), TRUE); } } else { if (!modest_isearch_view_search_next (MODEST_ISEARCH_VIEW (priv->msg_view))) { modest_platform_system_banner (NULL, NULL, - _HL("ckct_ib_find_search_complete")); + _HL_IB_FIND_COMPLETE); g_free (priv->last_search); priv->last_search = NULL; } else { - /****** HILDON2:START */ - hildon_find_toolbar_highlight_entry (HILDON_FIND_TOOLBAR (priv->find_toolbar), TRUE); - /****** HILDON2:END */ + modest_isearch_toolbar_highlight_entry (MODEST_ISEARCH_TOOLBAR (priv->isearch_toolbar), TRUE); } } - g_free (current_search); - } static void @@ -1695,7 +1681,7 @@ modest_msg_view_window_zoom_plus (ModestWindow *window) /* set zoom level */ int_zoom = (gint) rint (zoom_level*100.0+0.1); - banner_text = g_strdup_printf (_HL("wdgt_ib_zoom"), int_zoom); + banner_text = g_strdup_printf (_HL_IB_ZOOM, int_zoom); modest_platform_information_banner (GTK_WIDGET (window), NULL, banner_text); g_free (banner_text); modest_zoomable_set_zoom (MODEST_ZOOMABLE (priv->msg_view), zoom_level); @@ -1736,7 +1722,7 @@ modest_msg_view_window_zoom_minus (ModestWindow *window) /* set zoom level */ int_zoom = (gint) rint (zoom_level*100.0+0.1); - banner_text = g_strdup_printf (_HL("wdgt_ib_zoom"), int_zoom); + banner_text = g_strdup_printf (_HL_IB_ZOOM, int_zoom); modest_platform_information_banner (GTK_WIDGET (window), NULL, banner_text); g_free (banner_text); modest_zoomable_set_zoom (MODEST_ZOOMABLE (priv->msg_view), zoom_level); @@ -1753,7 +1739,7 @@ modest_msg_view_window_key_event (GtkWidget *window, focus = gtk_window_get_focus (GTK_WINDOW (window)); - /* for the find toolbar case */ + /* for the isearch toolbar case */ if (focus && GTK_IS_ENTRY (focus)) { if (event->keyval == GDK_BackSpace) { GdkEvent *copy; @@ -1910,6 +1896,7 @@ message_reader_performer (gboolean canceled, info = (MsgReaderInfo *) user_data; if (canceled || err) { update_window_title (MODEST_MSG_VIEW_WINDOW (parent_window)); + modest_ui_actions_on_close_window (NULL, MODEST_WINDOW (parent_window)); goto frees; } @@ -1970,7 +1957,7 @@ message_reader (ModestMsgViewWindow *window, /* 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")); + modest_window_set_title (MODEST_WINDOW (window), _CS("ckdg_pb_updating")); if (header) folder = NULL; @@ -2199,6 +2186,59 @@ view_msg_cb (ModestMailOperation *mail_op, gtk_tree_row_reference_free (row_reference); self = (ModestMsgViewWindow *) modest_mail_operation_get_source (mail_op); if (self) { + priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self); + /* First we check if the parent is a folder window */ + if (priv->msg_uid && !modest_window_mgr_get_folder_window (MODEST_WINDOW_MGR (modest_runtime_get_window_mgr ()))) { + gboolean is_merge; + TnyAccount *account = NULL; + GtkWidget *header_window = NULL; + + is_merge = g_str_has_prefix (priv->msg_uid, "merge:"); + + /* Get the account */ + if (!is_merge) + account = tny_account_store_find_account (TNY_ACCOUNT_STORE (modest_runtime_get_account_store ()), + priv->msg_uid); + + if (is_merge || account) { + TnyFolder *folder = NULL; + + /* Try to get the message, if it's already downloaded + we don't need to connect */ + if (account) { + folder = modest_tny_folder_store_find_folder_from_uri (TNY_FOLDER_STORE (account), + priv->msg_uid); + } else { + ModestTnyAccountStore *account_store; + ModestTnyLocalFoldersAccount *local_folders_account; + + account_store = modest_runtime_get_account_store (); + local_folders_account = MODEST_TNY_LOCAL_FOLDERS_ACCOUNT ( + modest_tny_account_store_get_local_folders_account (account_store)); + folder = modest_tny_local_folders_account_get_merged_outbox (local_folders_account); + g_object_unref (local_folders_account); + } + if (account) g_object_unref (account); + + if (folder) { + header_window = (GtkWidget *) + modest_header_window_new ( + folder, + modest_window_get_active_account (MODEST_WINDOW (self)), + modest_window_get_active_mailbox (MODEST_WINDOW (self))); + if (!modest_window_mgr_register_window (modest_runtime_get_window_mgr (), + MODEST_WINDOW (header_window), + NULL)) { + gtk_widget_destroy (GTK_WIDGET (header_window)); + } else { + gtk_widget_show_all (GTK_WIDGET (header_window)); + } + g_object_unref (folder); + } + } + } + + /* Restore window title */ update_window_title (self); modest_ui_actions_on_close_window (NULL, MODEST_WINDOW (self)); @@ -2384,20 +2424,20 @@ modest_msg_view_window_show_toolbar (ModestWindow *self, if (!parent_priv->toolbar) { parent_priv->toolbar = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar"); + +#ifdef MODEST_TOOLKIT_HILDON2 gtk_toolbar_set_icon_size (GTK_TOOLBAR (parent_priv->toolbar), HILDON_ICON_SIZE_FINGER); +#else + gtk_toolbar_set_icon_size (GTK_TOOLBAR (parent_priv->toolbar), GTK_ICON_SIZE_LARGE_TOOLBAR); +#endif gtk_widget_set_no_show_all (parent_priv->toolbar, TRUE); priv->next_toolitem = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageNext"); priv->prev_toolitem = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageBack"); toolbar_resize (MODEST_MSG_VIEW_WINDOW (self)); - /****** HILDON2:START - * attach toolbar to window - */ - /* Add to window */ - hildon_window_add_toolbar (HILDON_WINDOW (self), + modest_window_add_toolbar (MODEST_WINDOW (self), GTK_TOOLBAR (parent_priv->toolbar)); - /****** HILDON2:END */ } @@ -3185,7 +3225,7 @@ modest_msg_view_window_save_attachments (ModestMsgViewWindow *window, /* In Hildon 2.2 save and delete operate over all the attachments as there's no * selection available */ mime_parts = modest_msg_view_get_attachments (MODEST_MSG_VIEW (priv->msg_view)); - if (mime_parts && !modest_maemo_utils_select_attachments (GTK_WINDOW (window), mime_parts, FALSE)) { + if (mime_parts && !modest_toolkit_utils_select_attachments (GTK_WINDOW (window), mime_parts, FALSE)) { g_object_unref (mime_parts); return; } @@ -3226,12 +3266,11 @@ modest_msg_view_window_save_attachments (ModestMsgViewWindow *window, num), num); } - /****** HILDON2:START - * creation of hildon file chooser dialog for saving - */ - save_dialog = hildon_file_chooser_dialog_new (GTK_WINDOW (window), - GTK_FILE_CHOOSER_ACTION_SAVE); - /****** HILDON2:END */ + /* Creation of hildon file chooser dialog for saving */ + save_dialog = modest_toolkit_factory_create_file_chooser_dialog (modest_runtime_get_toolkit_factory (), + "", + (GtkWindow *) window, + GTK_FILE_CHOOSER_ACTION_SAVE); /* Get last used folder */ conf_folder = modest_conf_get_string (modest_runtime_get_conf (), @@ -3341,7 +3380,7 @@ modest_msg_view_window_remove_attachments (ModestMsgViewWindow *window, gboolean g_object_unref (tmp); g_object_unref (iter); - if (!modest_maemo_utils_select_attachments (GTK_WINDOW (window), mime_parts, TRUE) || + if (!modest_toolkit_utils_select_attachments (GTK_WINDOW (window), mime_parts, TRUE) || tny_list_get_length (mime_parts) == 0) { g_object_unref (mime_parts); return; @@ -3454,7 +3493,7 @@ update_window_title (ModestMsgViewWindow *window) subject = g_strdup (_("mail_va_no_subject")); } - gtk_window_set_title (GTK_WINDOW (window), subject); + modest_window_set_title (MODEST_WINDOW (window), subject); } @@ -3621,51 +3660,45 @@ setup_menu (ModestMsgViewWindow *self) { g_return_if_fail (MODEST_IS_MSG_VIEW_WINDOW(self)); - /****** HILDON2:START - * add actions to hildon window menu - */ - /* Settings menu buttons */ - modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_viewer_find"), NULL, - APP_MENU_CALLBACK (modest_msg_view_window_show_find_toolbar), - MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_find_in_msg)); - - modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), - dngettext(GETTEXT_PACKAGE, - "mcen_me_move_message", - "mcen_me_move_messages", - 1), - NULL, - APP_MENU_CALLBACK (modest_ui_actions_on_move_to), - MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_move_to)); - - modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_inbox_mark_as_read"), NULL, - APP_MENU_CALLBACK (modest_ui_actions_on_mark_as_read), - MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_mark_as_read_msg_in_view)); - - modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_inbox_mark_as_unread"), NULL, - APP_MENU_CALLBACK (modest_ui_actions_on_mark_as_unread), - MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_mark_as_unread_msg_in_view)); - - modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_viewer_save_attachments"), NULL, - APP_MENU_CALLBACK (modest_ui_actions_save_attachments), - MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_save_attachments)); - modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_inbox_remove_attachments"), NULL, - APP_MENU_CALLBACK (modest_ui_actions_remove_attachments), - MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_remove_attachments)); - - modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_new_message"), "n", - APP_MENU_CALLBACK (modest_ui_actions_on_new_msg), - MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_new_msg)); - modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_viewer_addtocontacts"), NULL, - APP_MENU_CALLBACK (modest_ui_actions_add_to_contacts), - MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_add_to_contacts)); - - modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_ti_message_properties"), NULL, - APP_MENU_CALLBACK (modest_ui_actions_on_details), - MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_details)); - - /****** HILDON2:END */ + modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_viewer_find"), NULL, + MODEST_WINDOW_MENU_CALLBACK (modest_msg_view_window_show_isearch_toolbar), + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_find_in_msg)); + + modest_window_add_to_menu (MODEST_WINDOW (self), + dngettext(GETTEXT_PACKAGE, + "mcen_me_move_message", + "mcen_me_move_messages", + 1), + NULL, + MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_move_to), + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_move_to)); + + modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_inbox_mark_as_read"), NULL, + MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_mark_as_read), + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_mark_as_read_msg_in_view)); + + modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_inbox_mark_as_unread"), NULL, + MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_mark_as_unread), + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_mark_as_unread_msg_in_view)); + + modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_viewer_save_attachments"), NULL, + MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_save_attachments), + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_save_attachments)); + modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_inbox_remove_attachments"), NULL, + MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_remove_attachments), + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_remove_attachments)); + + modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_new_message"), "n", + MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_new_msg), + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_new_msg)); + modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_viewer_addtocontacts"), NULL, + MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_add_to_contacts), + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_add_to_contacts)); + + modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_ti_message_properties"), NULL, + MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_details), + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_details)); } void @@ -3675,7 +3708,6 @@ modest_msg_view_window_add_to_contacts (ModestMsgViewWindow *self) priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self); GSList *recipients = NULL; TnyMsg *msg = NULL; - gboolean contacts_to_add = FALSE; msg = tny_msg_view_get_msg (TNY_MSG_VIEW (priv->msg_view)); if (msg == NULL) { @@ -3691,56 +3723,11 @@ modest_msg_view_window_add_to_contacts (ModestMsgViewWindow *self) g_object_unref (msg); } - if (recipients != NULL) { - /****** HILDON2:START - * shows dialog with addresses not present in addressbook. User can choose one to - * add it to addressbook. - * */ - GtkWidget *picker_dialog; - GtkWidget *selector; - GSList *node; - gchar *selected = NULL; - - selector = hildon_touch_selector_new_text (); - g_object_ref (selector); - - for (node = recipients; node != NULL; node = g_slist_next (node)) { - if (!modest_address_book_has_address ((const gchar *) node->data)) { - hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (selector), - (const gchar *) node->data); - contacts_to_add = TRUE; - } - } - - if (contacts_to_add) { - gint picker_result; - - picker_dialog = hildon_picker_dialog_new (GTK_WINDOW (self)); - gtk_window_set_title (GTK_WINDOW (picker_dialog), _("mcen_me_viewer_addtocontacts")); - - hildon_picker_dialog_set_selector (HILDON_PICKER_DIALOG (picker_dialog), - HILDON_TOUCH_SELECTOR (selector)); - - picker_result = gtk_dialog_run (GTK_DIALOG (picker_dialog)); - - if (picker_result == GTK_RESPONSE_OK) { - selected = hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (selector)); - } - gtk_widget_destroy (picker_dialog); - - if (selected) - modest_address_book_add_address (selected, (GtkWindow *) self); - g_free (selected); - - } else { - - g_object_unref (selector); - - } - /****** HILDON2:END */ + if (recipients) { + /* Offer the user to add recipients to the address book */ + modest_address_book_add_address_list_with_selector (recipients, (GtkWindow *) self); + g_slist_foreach (recipients, (GFunc) g_free, NULL); g_slist_free (recipients); } - - if (recipients) {g_slist_foreach (recipients, (GFunc) g_free, NULL); g_slist_free (recipients);} } static gboolean