From a81f184b70513685045b2b3e0748132c93ce57e7 Mon Sep 17 00:00:00 2001 From: Peter Csaszar Date: Tue, 28 Aug 2007 11:28:30 +0000 Subject: [PATCH] optimized dimming rule for select all pmo-trunk-r3106 --- src/modest-ui-dimming-rules.c | 38 +++++++++++++++----------------------- src/widgets/modest-window.h | 1 + 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/src/modest-ui-dimming-rules.c b/src/modest-ui-dimming-rules.c index 33380e5..be4879e 100644 --- a/src/modest-ui-dimming-rules.c +++ b/src/modest-ui-dimming-rules.c @@ -80,6 +80,7 @@ _define_main_window_dimming_state (ModestMainWindow *window) DimmedState *state = NULL; GtkWidget *focused_widget = NULL; GtkWidget *header_view = NULL; + GtkTreeModel *model = NULL; TnyList *selected_headers = NULL; TnyIterator *iter = NULL; TnyHeader *header = NULL; @@ -111,6 +112,7 @@ _define_main_window_dimming_state (ModestMainWindow *window) state->any_has_attachments = FALSE; state->all_has_attachments = FALSE; state->sent_in_progress = FALSE; + state->all_selected = FALSE; /* Get focused widget */ focused_widget = gtk_window_get_focus (GTK_WINDOW (window)); @@ -189,6 +191,15 @@ _define_main_window_dimming_state (ModestMainWindow *window) g_object_unref (header); } + /* check if all the headers are selected or not */ + model = gtk_tree_view_get_model(GTK_TREE_VIEW(header_view)); + if (model != NULL){ + gint count; + count = gtk_tree_model_iter_n_children(model, NULL); + if(state->n_selected == count != 0) + state->all_selected = TRUE; + } + /* Free */ g_free(msg_uid); g_object_unref(selected_headers); @@ -1576,32 +1587,13 @@ _selected_folder_is_MMC_or_POP_root (ModestMainWindow *win) static gboolean _header_view_is_all_selected (ModestMainWindow *win) { - GtkTreeSelection *sel = NULL; - GtkTreeModel *model = NULL; - GtkTreeView *header_view = NULL; - gint count_sel, count_model; - - header_view = GTK_TREE_VIEW(modest_main_window_get_child_widget( - win, MODEST_WIDGET_TYPE_HEADER_VIEW)); - if(header_view == NULL) - return FALSE; - - model = gtk_tree_view_get_model(header_view); - if (model == NULL) - return FALSE; + const DimmedState *state = NULL; - sel = gtk_tree_view_get_selection(header_view); - if (sel == NULL) - return FALSE; + g_return_val_if_fail (MODEST_IS_WINDOW(win), FALSE); - /* check if all the headers are selected or not */ - count_sel = gtk_tree_selection_count_selected_rows (sel); - count_model = gtk_tree_model_iter_n_children(model, NULL); - if(count_sel == count_model != 0) - /*all header is selected*/ - return TRUE; + state = modest_window_get_dimming_state (MODEST_WINDOW(win)); - return FALSE; + return state->all_selected; } static gboolean diff --git a/src/widgets/modest-window.h b/src/widgets/modest-window.h index 63bd1bd..b44e518 100644 --- a/src/widgets/modest-window.h +++ b/src/widgets/modest-window.h @@ -79,6 +79,7 @@ typedef struct _DimmedState { gboolean any_has_attachments; gboolean all_has_attachments; gboolean sent_in_progress; + gboolean all_selected; } DimmedState; /* convenience macros */ -- 1.7.9.5