[libgd] main-view: add methods to select/unselect all



commit c46b9f8d0d64f325409ff304e1adacfa5a085eb6
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Mon Aug 27 22:12:17 2012 -0400

    main-view: add methods to select/unselect all
    
    https://bugzilla.gnome.org/show_bug.cgi?id=677050

 libgd/gd-main-view.c |   57 +++++++++++++++++++++++++++++++++----------------
 libgd/gd-main-view.h |    3 ++
 2 files changed, 41 insertions(+), 19 deletions(-)
---
diff --git a/libgd/gd-main-view.c b/libgd/gd-main-view.c
index b009a9f..b6eef8a 100644
--- a/libgd/gd-main-view.c
+++ b/libgd/gd-main-view.c
@@ -533,19 +533,6 @@ gd_main_view_apply_model (GdMainView *self)
   gd_main_view_generic_set_model (generic, self->priv->model);
 }
 
-static gboolean
-clear_selection_list_foreach (GtkTreeModel *model,
-                              GtkTreePath *path,
-                              GtkTreeIter *iter,
-                              gpointer user_data)
-{
-  gtk_list_store_set (GTK_LIST_STORE (model), iter,
-                      GD_MAIN_COLUMN_SELECTED, FALSE,
-                      -1);
-
-  return FALSE;
-}
-
 static void
 gd_main_view_apply_selection_mode (GdMainView *self)
 {
@@ -555,12 +542,7 @@ gd_main_view_apply_selection_mode (GdMainView *self)
 
   if (!self->priv->selection_mode &&
       self->priv->model != NULL)
-    {
-      gtk_tree_model_foreach (self->priv->model,
-                              clear_selection_list_foreach,
-                              self);
-      g_signal_emit (self, signals[VIEW_SELECTION_CHANGED], 0);
-    }
+    gd_main_view_unselect_all (self);
 }
 
 static void
@@ -723,3 +705,40 @@ gd_main_view_get_selection (GdMainView *self)
 
   return g_list_reverse (retval);
 }
+
+static gboolean
+set_selection_foreach (GtkTreeModel *model,
+                       GtkTreePath *path,
+                       GtkTreeIter *iter,
+                       gpointer user_data)
+{
+  gboolean selection = GPOINTER_TO_INT (user_data);
+
+  gtk_list_store_set (GTK_LIST_STORE (model), iter,
+                      GD_MAIN_COLUMN_SELECTED, selection,
+                      -1);
+
+  return FALSE;
+}
+
+void
+gd_main_view_select_all (GdMainView *self)
+{
+  gboolean selection = TRUE;
+
+  gtk_tree_model_foreach (self->priv->model,
+                          set_selection_foreach,
+                          GINT_TO_POINTER (selection));
+  g_signal_emit (self, signals[VIEW_SELECTION_CHANGED], 0);
+}
+
+void
+gd_main_view_unselect_all (GdMainView *self)
+{
+  gboolean selection = FALSE;
+
+  gtk_tree_model_foreach (self->priv->model,
+                          set_selection_foreach,
+                          GINT_TO_POINTER (selection));
+  g_signal_emit (self, signals[VIEW_SELECTION_CHANGED], 0);
+}
diff --git a/libgd/gd-main-view.h b/libgd/gd-main-view.h
index aec13f3..6f3038f 100644
--- a/libgd/gd-main-view.h
+++ b/libgd/gd-main-view.h
@@ -82,6 +82,9 @@ GdMainViewType gd_main_view_get_selection_mode (GdMainView *self);
 
 GList * gd_main_view_get_selection (GdMainView *self);
 
+void gd_main_view_select_all (GdMainView *self);
+void gd_main_view_unselect_all (GdMainView *self);
+
 GtkTreeModel * gd_main_view_get_model (GdMainView *self);
 void gd_main_view_set_model (GdMainView *self,
                              GtkTreeModel *model);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]