static void modest_msg_view_window_class_init (ModestMsgViewWindowClass *klass);
static void modest_msg_view_window_init (ModestMsgViewWindow *obj);
-static void modest_header_view_observer_init(
- ModestHeaderViewObserverIface *iface_class);
+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_toggle_find_toolbar (GtkToggleAction *obj,
- gpointer data);
-static void modest_msg_view_window_find_toolbar_close (GtkWidget *widget,
- ModestMsgViewWindow *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);
-
+ ModestMsgViewWindow *obj);
+static void modest_msg_view_window_toggle_find_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);
-static void modest_msg_view_window_set_zoom (ModestWindow *window,
- gdouble zoom);
+static gdouble modest_msg_view_window_get_zoom (ModestWindow *window);
+static void modest_msg_view_window_set_zoom (ModestWindow *window,
+ gdouble zoom);
static gboolean modest_msg_view_window_zoom_minus (ModestWindow *window);
-static gboolean modest_msg_view_window_zoom_plus (ModestWindow *window);
-static gboolean modest_msg_view_window_key_event (GtkWidget *window,
- GdkEventKey *event,
- gpointer userdata);
+static gboolean modest_msg_view_window_zoom_plus (ModestWindow *window);
+static gboolean modest_msg_view_window_key_event (GtkWidget *window,
+ GdkEventKey *event,
+ gpointer userdata);
static void modest_msg_view_window_update_priority (ModestMsgViewWindow *window);
static void modest_msg_view_window_show_toolbar (ModestWindow *window,
static void update_window_title (ModestMsgViewWindow *window);
-static gboolean set_toolbar_transfer_mode (ModestMsgViewWindow *self);
static void init_window (ModestMsgViewWindow *obj);
static gboolean msg_is_visible (TnyHeader *header, gboolean check_outbox);
ModestWindowPrivate *parent_priv = NULL;
GtkActionGroup *action_group = NULL;
GError *error = NULL;
- GdkPixbuf *window_icon;
priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(obj);
parent_priv = MODEST_WINDOW_GET_PRIVATE(obj);
/* Init window */
init_window (MODEST_MSG_VIEW_WINDOW(obj));
- /* Set window icon */
- window_icon = modest_platform_get_icon (MODEST_APP_MSG_VIEW_ICON, MODEST_ICON_SIZE_BIG);
- if (window_icon) {
- gtk_window_set_icon (GTK_WINDOW (obj), window_icon);
- g_object_unref (window_icon);
- }
-
hildon_program_add_window (hildon_program_get_instance(),
HILDON_WINDOW(obj));
}
-
-static gboolean
-set_toolbar_transfer_mode (ModestMsgViewWindow *self)
-{
- ModestMsgViewWindowPrivate *priv = NULL;
-
- g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (self), FALSE);
-
- priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(self);
-
- set_progress_hint (self, TRUE);
-
- return FALSE;
-}
-
static void
update_progress_hint (ModestMsgViewWindow *self)
{
gpointer arg3,
ModestMsgViewWindow *window)
{
- ModestMsgViewWindowPrivate *priv = NULL;
+ ModestMsgViewWindowPrivate *priv = NULL;
gboolean already_changed = FALSE;
priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(window);
/* If the current row was reordered select the proper next
valid row. The same if the next row reference changes */
- if (priv->row_reference &&
- gtk_tree_row_reference_valid (priv->row_reference)) {
- GtkTreePath *path;
- path = gtk_tree_row_reference_get_path (priv->row_reference);
- if (gtk_tree_path_compare (path, arg1) == 0) {
- if (priv->next_row_reference) {
- 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 (header_model, &(priv->next_row_reference), FALSE, priv->is_outbox);
- already_changed = TRUE;
- }
- gtk_tree_path_free (path);
- }
- if (!already_changed &&
- priv->next_row_reference &&
+ if (!priv->row_reference ||
+ !gtk_tree_row_reference_valid (priv->row_reference))
+ return;
+
+ if (priv->next_row_reference &&
gtk_tree_row_reference_valid (priv->next_row_reference)) {
- GtkTreePath *path;
- path = gtk_tree_row_reference_get_path (priv->next_row_reference);
- if (gtk_tree_path_compare (path, arg1) == 0) {
- if (priv->next_row_reference) {
- gtk_tree_row_reference_free (priv->next_row_reference);
- }
+ GtkTreePath *cur, *next;
+ /* Check that the order is still the correct one */
+ cur = gtk_tree_row_reference_get_path (priv->row_reference);
+ next = gtk_tree_row_reference_get_path (priv->next_row_reference);
+ gtk_tree_path_next (cur);
+ if (gtk_tree_path_compare (cur, next) != 0) {
+ 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 (header_model, &(priv->next_row_reference), FALSE, priv->is_outbox);
+ already_changed = TRUE;
}
- gtk_tree_path_free (path);
+ gtk_tree_path_free (cur);
+ gtk_tree_path_free (next);
+ } else {
+ if (priv->next_row_reference)
+ gtk_tree_row_reference_free (priv->next_row_reference);
+ /* Update next row reference */
+ priv->next_row_reference = gtk_tree_row_reference_copy (priv->row_reference);
+ select_next_valid_row (header_model, &(priv->next_row_reference), FALSE, priv->is_outbox);
+ already_changed = TRUE;
}
+
check_dimming_rules_after_change (window);
}
return (const gchar*) priv->msg_uid;
}
-static void
-modest_msg_view_window_toggle_find_toolbar (GtkToggleAction *toggle,
+/* Used for the Ctrl+F accelerator */
+static void
+modest_msg_view_window_toggle_find_toolbar (GtkWidget *obj,
gpointer data)
{
ModestMsgViewWindow *window = MODEST_MSG_VIEW_WINDOW (data);
ModestMsgViewWindowPrivate *priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
- ModestWindowPrivate *parent_priv = MODEST_WINDOW_GET_PRIVATE (window);
- gboolean is_active;
- GtkAction *action;
-
- is_active = gtk_toggle_action_get_active (toggle);
- if (is_active) {
- gtk_widget_show (priv->find_toolbar);
- hildon_find_toolbar_highlight_entry (HILDON_FIND_TOOLBAR (priv->find_toolbar), TRUE);
- } else {
- gtk_widget_hide (priv->find_toolbar);
- modest_msg_view_grab_focus (MODEST_MSG_VIEW (priv->msg_view));
- }
+ if (GTK_WIDGET_VISIBLE (priv->find_toolbar)) {
+ modest_msg_view_window_find_toolbar_close (obj, data);
+ } else {
+ modest_msg_view_window_show_find_toolbar (obj, data);
+ }
+}
- /* update the toggle buttons status */
- action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/ToolBar/FindInMessage");
- if (action)
- modest_utils_toggle_action_set_active_block_notify (GTK_TOGGLE_ACTION (action), is_active);
+/* Handler for menu option */
+static void
+modest_msg_view_window_show_find_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);
+ hildon_find_toolbar_highlight_entry (HILDON_FIND_TOOLBAR (priv->find_toolbar), TRUE);
}
+/* Handler for click on the "X" close button in find toolbar */
static void
modest_msg_view_window_find_toolbar_close (GtkWidget *widget,
ModestMsgViewWindow *obj)
{
- GtkToggleAction *toggle;
- ModestWindowPrivate *parent_priv;
ModestMsgViewWindowPrivate *priv;
priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (obj);
- parent_priv = MODEST_WINDOW_GET_PRIVATE (obj);
- toggle = GTK_TOGGLE_ACTION (gtk_ui_manager_get_action (parent_priv->ui_manager, "/ToolBar/FindInMessage"));
- gtk_toggle_action_set_active (toggle, FALSE);
+ /* Hide toolbar */
+ gtk_widget_hide (priv->find_toolbar);
modest_msg_view_grab_focus (MODEST_MSG_VIEW (priv->msg_view));
}
gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), FALSE);
gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE);
gtk_widget_set_size_request (GTK_WIDGET (widget), static_button_size, -1);
- widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageMoveTo");
+ widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageReplyAll");
gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), FALSE);
gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE);
gtk_widget_set_size_request (GTK_WIDGET (widget), static_button_size, -1);
gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), FALSE);
gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE);
gtk_widget_set_size_request (GTK_WIDGET (widget), static_button_size, -1);
- widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/FindInMessage");
+ widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarDownloadExternalImages");
gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), FALSE);
gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), FALSE);
gtk_widget_set_size_request (GTK_WIDGET (widget), static_button_size, -1);
tmp = priv->progress_widgets;
source = modest_mail_operation_get_source(mail_op);
if (G_OBJECT (self) == source) {
- if (op_type == MODEST_MAIL_OPERATION_TYPE_RECEIVE) {
- set_toolbar_transfer_mode(self);
+ if (op_type == MODEST_MAIL_OPERATION_TYPE_RECEIVE ||
+ op_type == MODEST_MAIL_OPERATION_TYPE_OPEN ||
+ op_type == MODEST_MAIL_OPERATION_TYPE_DELETE) {
+ set_progress_hint (self, TRUE);
while (tmp) {
modest_progress_object_add_operation (
MODEST_PROGRESS_OBJECT (tmp->data),
}
}
g_object_unref (source);
+
+ /* Update dimming rules */
+ check_dimming_rules_after_change (self);
}
-static void
+static void
on_mail_operation_finished (ModestMailOperation *mail_op,
gpointer user_data)
{
ModestMailOperationTypeOperation op_type;
GSList *tmp;
ModestMsgViewWindowPrivate *priv;
-
+
self = MODEST_MSG_VIEW_WINDOW (user_data);
priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self);
op_type = modest_mail_operation_get_type_operation (mail_op);
tmp = priv->progress_widgets;
-
- if (op_type == MODEST_MAIL_OPERATION_TYPE_RECEIVE) {
+
+ if (op_type == MODEST_MAIL_OPERATION_TYPE_RECEIVE ||
+ op_type == MODEST_MAIL_OPERATION_TYPE_OPEN ||
+ op_type == MODEST_MAIL_OPERATION_TYPE_DELETE) {
while (tmp) {
modest_progress_object_remove_operation (MODEST_PROGRESS_OBJECT (tmp->data),
mail_op);
won't let the user delete the message that has been
readed for example */
check_dimming_rules_after_change (self);
-
}
static void
g_return_if_fail (MODEST_IS_MSG_VIEW_WINDOW(self));
/* Settings menu buttons */
- modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_inbox_replytoall"), NULL,
- APP_MENU_CALLBACK (modest_ui_actions_on_reply_all),
- MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_reply_msg));
+ 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), _("mcen_me_move_messages"), 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_forward"), "<Control>d",
APP_MENU_CALLBACK (modest_ui_actions_on_forward),
MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_reply_msg));
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));
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), _("mail_bd_external_images"), NULL,
- APP_MENU_CALLBACK (modest_ui_actions_on_fetch_images),
- MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_fetch_images));
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));
mailbox = modest_window_get_active_mailbox (MODEST_WINDOW (self));
mgr = modest_runtime_get_account_mgr ();
-
+
if (modest_account_mgr_account_is_multimailbox (mgr, account, &protocol)) {
if (MODEST_IS_ACCOUNT_PROTOCOL (protocol)) {
service_name = modest_account_protocol_get_service_name (MODEST_ACCOUNT_PROTOCOL (protocol),