X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmaemo%2Fmodest-msg-view-window.c;h=08c65d5bfc0f3b35bdc38e3c6f123db1bbdaf915;hp=96cb18053ed1236f09d8c40af239984895fbed35;hb=0157fe7291bed654b46a5efeff4b9231b6b8a916;hpb=a018028fe65794265523c1c93b15a43c104e0e2c diff --git a/src/maemo/modest-msg-view-window.c b/src/maemo/modest-msg-view-window.c index 96cb180..08c65d5 100644 --- a/src/maemo/modest-msg-view-window.c +++ b/src/maemo/modest-msg-view-window.c @@ -39,7 +39,6 @@ #include #include #include -#include #include #include "modest-msg-view-window-ui-dimming.h" #include @@ -48,7 +47,7 @@ #include #include #include -#include "modest-progress-bar-widget.h" +#include "modest-progress-bar.h" #include "modest-defs.h" #include "modest-hildon-includes.h" #include "modest-ui-dimming-manager.h" @@ -473,8 +472,8 @@ set_toolbar_mode (ModestMsgViewWindow *self, /* Sets current toolbar mode */ priv->current_toolbar_mode = mode; - /* Update window dimming state */ - modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (self)); + /* Update toolbar dimming state */ + modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (self)); switch (mode) { case TOOLBAR_MODE_NORMAL: @@ -539,10 +538,8 @@ init_window (ModestMsgViewWindow *obj) { GtkWidget *main_vbox; ModestMsgViewWindowPrivate *priv; - ModestWindowPrivate *parent_priv; priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(obj); - parent_priv = MODEST_WINDOW_GET_PRIVATE(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); @@ -691,7 +688,8 @@ select_next_valid_row (GtkTreeModel *model, gboolean cycle) { GtkTreeIter tmp_iter; - GtkTreePath *path, *next; + GtkTreePath *path; + GtkTreePath *next = NULL; gboolean retval = FALSE; g_return_val_if_fail (gtk_tree_row_reference_valid (*row_reference), FALSE); @@ -717,6 +715,8 @@ select_next_valid_row (GtkTreeModel *model, /* Free */ gtk_tree_path_free (path); + if (next) + gtk_tree_path_free (next); return retval; } @@ -730,7 +730,8 @@ modest_msg_view_window_construct (ModestMsgViewWindow *self, GObject *obj = NULL; ModestMsgViewWindowPrivate *priv = NULL; ModestWindowPrivate *parent_priv = NULL; - ModestDimmingRulesGroup *window_rules_group = NULL; + ModestDimmingRulesGroup *menu_rules_group = NULL; + ModestDimmingRulesGroup *toolbar_rules_group = NULL; ModestDimmingRulesGroup *clipboard_rules_group = NULL; obj = G_OBJECT (self); @@ -745,27 +746,30 @@ modest_msg_view_window_construct (ModestMsgViewWindow *self, gtk_widget_show (parent_priv->menubar); parent_priv->ui_dimming_manager = modest_ui_dimming_manager_new(); - window_rules_group = modest_dimming_rules_group_new ("ModestWindowDimmingRules", TRUE); - clipboard_rules_group = modest_dimming_rules_group_new ("ModestClipboardDimmingRules", FALSE); + menu_rules_group = modest_dimming_rules_group_new (MODEST_DIMMING_RULES_MENU, FALSE); + toolbar_rules_group = modest_dimming_rules_group_new (MODEST_DIMMING_RULES_TOOLBAR, TRUE); + clipboard_rules_group = modest_dimming_rules_group_new (MODEST_DIMMING_RULES_CLIPBOARD, FALSE); /* Add common dimming rules */ - modest_dimming_rules_group_add_rules (window_rules_group, - modest_msg_view_toolbar_dimming_entries, - G_N_ELEMENTS (modest_msg_view_toolbar_dimming_entries), - MODEST_WINDOW (self)); - modest_dimming_rules_group_add_rules (window_rules_group, + modest_dimming_rules_group_add_rules (menu_rules_group, modest_msg_view_menu_dimming_entries, G_N_ELEMENTS (modest_msg_view_menu_dimming_entries), MODEST_WINDOW (self)); + modest_dimming_rules_group_add_rules (toolbar_rules_group, + modest_msg_view_toolbar_dimming_entries, + G_N_ELEMENTS (modest_msg_view_toolbar_dimming_entries), + MODEST_WINDOW (self)); modest_dimming_rules_group_add_rules (clipboard_rules_group, modest_msg_view_clipboard_dimming_entries, G_N_ELEMENTS (modest_msg_view_clipboard_dimming_entries), MODEST_WINDOW (self)); /* Insert dimming rules group for this window */ - modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, window_rules_group); + modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, menu_rules_group); + modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, toolbar_rules_group); modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, clipboard_rules_group); - g_object_unref (window_rules_group); + g_object_unref (menu_rules_group); + g_object_unref (toolbar_rules_group); g_object_unref (clipboard_rules_group); restore_settings (MODEST_MSG_VIEW_WINDOW(obj)); @@ -905,9 +909,10 @@ modest_msg_view_window_new_with_header_model (TnyMsg *msg, gtk_widget_show_all (GTK_WIDGET (window)); modest_msg_view_window_update_priority (window); - /* Check window dimming rules */ - modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (window)); - modest_window_check_dimming_rules_group (MODEST_WINDOW (window), "ModestClipboardDimmingRules"); + /* Check dimming rules */ + modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window)); + modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (window)); + modest_window_check_dimming_rules_group (MODEST_WINDOW (window), MODEST_DIMMING_RULES_CLIPBOARD); return MODEST_WINDOW(window); } @@ -960,9 +965,10 @@ modest_msg_view_window_new_for_attachment (TnyMsg *msg, tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), msg); update_window_title (MODEST_MSG_VIEW_WINDOW (obj)); - /* Check window dimming rules */ - modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (obj)); - modest_window_check_dimming_rules_group (MODEST_WINDOW (obj), "ModestClipboardDimmingRules"); + /* Check dimming rules */ + modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (obj)); + modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (obj)); + modest_window_check_dimming_rules_group (MODEST_WINDOW (obj), MODEST_DIMMING_RULES_CLIPBOARD); return MODEST_WINDOW(obj); } @@ -972,14 +978,14 @@ void modest_msg_view_window_on_row_changed( GtkTreePath *arg1, GtkTreeIter *arg2, ModestMsgViewWindow *window){ - modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (window)); + modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window)); } void modest_msg_view_window_on_row_deleted( GtkTreeModel *header_model, GtkTreePath *arg1, ModestMsgViewWindow *window){ - modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (window)); + modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window)); } /* On insertions we check if the folder still has the message we are @@ -1017,7 +1023,7 @@ void modest_msg_view_window_on_row_inserted( select_next_valid_row (priv->header_model, &(priv->next_row_reference), FALSE); } - modest_ui_actions_check_window_dimming_rules ( + modest_ui_actions_check_toolbar_dimming_rules ( MODEST_WINDOW (window)); return; } @@ -1067,7 +1073,7 @@ void modest_msg_view_window_on_row_inserted( select_next_valid_row (priv->header_model, &(priv->next_row_reference), FALSE); - modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (window)); + modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window)); } void modest_msg_view_window_on_row_reordered( @@ -1076,7 +1082,7 @@ void modest_msg_view_window_on_row_reordered( GtkTreeIter *arg2, gpointer arg3, ModestMsgViewWindow *window){ - modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (window)); + modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window)); } /* The modest_msg_view_window_update_model_replaced implements update @@ -1141,7 +1147,7 @@ void modest_msg_view_window_update_model_replaced( g_object_unref(priv->next_row_reference); priv->next_row_reference = NULL; - modest_ui_actions_check_window_dimming_rules(MODEST_WINDOW(window)); + modest_ui_actions_check_toolbar_dimming_rules(MODEST_WINDOW(window)); g_assert(model != NULL); @@ -1597,7 +1603,7 @@ modest_msg_view_window_first_message_selected (ModestMsgViewWindow *window) * * If the message was not previously downloaded then ask the user * before downloading. If there is no connection launch the connection - * dialog. Update window dimming rules. + * dialog. Update toolbar dimming rules. * * Returns: TRUE if the mail operation was started, otherwise if the * user do not want to download the message, or if the user do not @@ -1661,8 +1667,9 @@ message_reader (ModestMsgViewWindow *window, modest_mail_operation_get_msg (mail_op, header, view_msg_cb, row_reference); g_object_unref (mail_op); - /* Update window dimming rules */ - modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (window)); + /* Update dimming rules */ + modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window)); + modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (window)); return TRUE; } @@ -1723,52 +1730,13 @@ modest_msg_view_window_select_next_message (ModestMsgViewWindow *window) return retval; } -gboolean -modest_msg_view_window_select_first_message (ModestMsgViewWindow *self) -{ - ModestMsgViewWindowPrivate *priv = NULL; - TnyHeader *header = NULL; - GtkTreeIter iter; - GtkTreePath *path = NULL; - GtkTreeRowReference *row_reference = NULL; - - g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (self), FALSE); - priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self); - - /* Check that the model is not empty */ - if (!gtk_tree_model_get_iter_first (priv->header_model, &iter)) - return FALSE; - - /* Get the header */ - gtk_tree_model_get (priv->header_model, - &iter, - TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, - &header, -1); - g_return_val_if_fail (TNY_IS_HEADER (header), FALSE); - if (!msg_is_visible (header, priv->is_outbox)) { - g_object_unref (header); - return modest_msg_view_window_select_next_message (self); - } - - path = gtk_tree_model_get_path (priv->header_model, &iter); - row_reference = gtk_tree_row_reference_new (priv->header_model, path); - gtk_tree_path_free (path); - - /* Read the message & show it */ - message_reader (self, priv, header, row_reference); - - /* Free */ - g_object_unref (header); - - return TRUE; -} - gboolean modest_msg_view_window_select_previous_message (ModestMsgViewWindow *window) { ModestMsgViewWindowPrivate *priv = NULL; GtkTreePath *path; - GtkTreeRowReference *row_reference = NULL; + gboolean finished = FALSE; + gboolean retval = FALSE; g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (window), FALSE); priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window); @@ -1778,7 +1746,7 @@ modest_msg_view_window_select_previous_message (ModestMsgViewWindow *window) return FALSE; path = gtk_tree_row_reference_get_path (priv->row_reference); - while (gtk_tree_path_prev (path)) { + while (!finished && gtk_tree_path_prev (path)) { TnyHeader *header; GtkTreeIter iter; @@ -1786,29 +1754,24 @@ modest_msg_view_window_select_previous_message (ModestMsgViewWindow *window) gtk_tree_model_get (priv->header_model, &iter, TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &header, -1); - if (!header) - break; - if (!msg_is_visible (header, priv->is_outbox)) { - g_object_unref (header); - continue; - } - - row_reference = gtk_tree_row_reference_new (priv->header_model, path); - /* Read the message & show it */ - if (!message_reader (window, priv, header, row_reference)) { - gtk_tree_row_reference_free (row_reference); + finished = TRUE; + if (header) { + if (msg_is_visible (header, priv->is_outbox)) { + GtkTreeRowReference *row_reference; + row_reference = gtk_tree_row_reference_new (priv->header_model, path); + /* Read the message & show it */ + retval = message_reader (window, priv, header, row_reference); + if (!retval) + gtk_tree_row_reference_free (row_reference); + } else { + finished = FALSE; + } g_object_unref (header); - break; } - - gtk_tree_path_free (path); - g_object_unref (header); - - return TRUE; } gtk_tree_path_free (path); - return FALSE; + return retval; } static void @@ -1844,6 +1807,9 @@ view_msg_cb (ModestMailOperation *mail_op, if (priv->row_reference != NULL) { gtk_tree_row_reference_free (priv->row_reference); priv->row_reference = gtk_tree_row_reference_copy (row_reference); + 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); gtk_tree_row_reference_free (row_reference); @@ -2046,7 +2012,7 @@ modest_msg_view_window_show_toolbar (ModestWindow *self, toolbar_resize (MODEST_MSG_VIEW_WINDOW (self)); /* Add ProgressBar (Transfer toolbar) */ - priv->progress_bar = modest_progress_bar_widget_new (); + priv->progress_bar = modest_progress_bar_new (); gtk_widget_set_no_show_all (priv->progress_bar, TRUE); placeholder = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ProgressbarView"); insert_index = gtk_toolbar_get_item_index(GTK_TOOLBAR (parent_priv->toolbar), GTK_TOOL_ITEM(placeholder)); @@ -2112,7 +2078,7 @@ modest_msg_view_window_clipboard_owner_change (GtkClipboard *clipboard, if (!GTK_WIDGET_VISIBLE (window)) return; - modest_window_check_dimming_rules_group (MODEST_WINDOW (window), "ModestClipboardDimmingRules"); + modest_window_check_dimming_rules_group (MODEST_WINDOW (window), MODEST_DIMMING_RULES_CLIPBOARD); } gboolean