[gtk+/filesystemmodel: 10/28] clean up more code to use the model directly



commit bb64df6c1b08903fa9dc26a233d79d1a7d280ec7
Author: Benjamin Otte <otte gnome org>
Date:   Fri Jun 19 22:36:26 2009 +0200

    clean up more code to use the model directly

 gtk/gtkfilechooserdefault.c |  248 +++++++-----------------------------------
 1 files changed, 42 insertions(+), 206 deletions(-)
---
diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c
index 3231d14..8ee66da 100644
--- a/gtk/gtkfilechooserdefault.c
+++ b/gtk/gtkfilechooserdefault.c
@@ -396,9 +396,6 @@ static void save_folder_combo_changed_cb      (GtkComboBox           *combo,
 
 static void update_cell_renderer_attributes (GtkFileChooserDefault *impl);
 
-static GFileInfo       *get_list_file_info (GtkFileChooserDefault *impl,
-					    GtkTreeIter           *iter);
-
 static void load_remove_timer (GtkFileChooserDefault *impl);
 static void browse_files_center_selected_row (GtkFileChooserDefault *impl);
 
@@ -2732,35 +2729,14 @@ selection_check_foreach_cb (GtkTreeModel *model,
 			    gpointer      data)
 {
   struct selection_check_closure *closure;
-  GtkTreeIter child_iter;
-  GFileInfo *info;
   gboolean is_folder;
 
   closure = data;
   closure->num_selected++;
 
-  switch (closure->impl->operation_mode)
-    {
-    case OPERATION_MODE_BROWSE:
-      gtk_tree_model_sort_convert_iter_to_child_iter (closure->impl->sort_model, &child_iter, iter);
-      info = _gtk_file_system_model_get_info (closure->impl->browse_files_model, &child_iter);
-      is_folder = info ? (_gtk_file_info_consider_as_directory (info)) : FALSE;
-      break;
-
-    case OPERATION_MODE_SEARCH:
-      search_get_valid_child_iter (closure->impl, &child_iter, iter);
-      gtk_tree_model_get (GTK_TREE_MODEL (closure->impl->search_model), &child_iter,
-                          MODEL_COL_IS_FOLDER, &is_folder,
-                          -1);
-      break;
-
-    case OPERATION_MODE_RECENT:
-      recent_get_valid_child_iter (closure->impl, &child_iter, iter);
-      gtk_tree_model_get (GTK_TREE_MODEL (closure->impl->recent_model), &child_iter,
-                          MODEL_COL_IS_FOLDER, &is_folder,
-                          -1);
-      break;
-    }
+  gtk_tree_model_get (model, iter,
+                      MODEL_COL_IS_FOLDER, &is_folder,
+                      -1);
 
   closure->all_folders = closure->all_folders && is_folder;
   closure->all_files = closure->all_files && !is_folder;
@@ -2809,32 +2785,13 @@ get_selected_file_foreach_cb (GtkTreeModel *model,
 			      GtkTreeIter  *iter,
 			      gpointer      data)
 {
-  struct get_selected_file_closure *closure;
-  GtkTreeIter child_iter;
-
-  closure = data;
-
-  switch (closure->impl->operation_mode)
-    {
-    case OPERATION_MODE_BROWSE:
-      gtk_tree_model_sort_convert_iter_to_child_iter (closure->impl->sort_model, &child_iter, iter);
-      closure->file = _gtk_file_system_model_get_file (closure->impl->browse_files_model, &child_iter);
-      break;
+  struct get_selected_file_closure *closure = data;
 
-    case OPERATION_MODE_SEARCH:
-      search_get_valid_child_iter (closure->impl, &child_iter, iter);
-      gtk_tree_model_get (GTK_TREE_MODEL (closure->impl->search_model), &child_iter,
-                          MODEL_COL_FILE, &closure->file,
-                          -1);
-      break;
-
-    case OPERATION_MODE_RECENT:
-      recent_get_valid_child_iter (closure->impl, &child_iter, iter);
-      gtk_tree_model_get (GTK_TREE_MODEL (closure->impl->recent_model), &child_iter,
-                          MODEL_COL_FILE, &closure->file,
-                          -1);
-      break;
-    }
+  gtk_tree_model_get (model, iter,
+                      MODEL_COL_FILE, &closure->file,
+                      -1);
+  if (closure->file)
+    g_object_unref (closure->file);
 }
 
 /* Returns a selected path from the file list */
@@ -2867,40 +2824,18 @@ update_tooltip (GtkTreeModel      *model,
 		gpointer           data)
 {
   UpdateTooltipData *udata = data;
-  GtkTreeIter child_iter;
-  GFileInfo *info;
 
   if (udata->tip == NULL)
     {
-      const gchar *display_name;
-
-      switch (udata->impl->operation_mode)
-        {
-        case OPERATION_MODE_BROWSE:
-          gtk_tree_model_sort_convert_iter_to_child_iter (udata->impl->sort_model,
-                                                          &child_iter,
-                                                          iter);
-          info = _gtk_file_system_model_get_info (udata->impl->browse_files_model, &child_iter);
-          display_name = g_file_info_get_display_name (info);
-          break;
+      gchar *display_name;
 
-        case OPERATION_MODE_SEARCH:
-          search_get_valid_child_iter (udata->impl, &child_iter, iter);
-          gtk_tree_model_get (GTK_TREE_MODEL (udata->impl->search_model), &child_iter,
-                              MODEL_COL_NAME, &display_name,
-                              -1);
-          break;
-
-        case OPERATION_MODE_RECENT:
-          recent_get_valid_child_iter (udata->impl, &child_iter, iter);
-          gtk_tree_model_get (GTK_TREE_MODEL (udata->impl->recent_model), &child_iter,
-                              MODEL_COL_NAME, &display_name,
-                              -1);
-          break;
-        }
+      gtk_tree_model_get (model, iter,
+                          MODEL_COL_NAME, &display_name,
+                          -1);
 
       udata->tip = g_strdup_printf (_("Add the folder '%s' to the bookmarks"),
                                     display_name);
+      g_free (display_name);
     }
 }
 
@@ -4441,8 +4376,9 @@ file_list_query_tooltip_cb (GtkWidget  *widget,
                             gpointer    user_data)
 {
   GtkFileChooserDefault *impl = user_data;
-  GtkTreeIter iter, child_iter;
-  GtkTreePath *path = NULL;
+  GtkTreeModel *model;
+  GtkTreePath *path;
+  GtkTreeIter iter;
   GFile *file;
   gchar *filename;
 
@@ -4450,48 +4386,17 @@ file_list_query_tooltip_cb (GtkWidget  *widget,
     return FALSE;
 
 
-  gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (impl->browse_files_tree_view),
-                                     &x, &y,
-                                     keyboard_tip,
-                                     NULL, &path, NULL);
-                                       
-  if (!path)
+  if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (impl->browse_files_tree_view),
+                                          &x, &y,
+                                          keyboard_tip,
+                                          &model, &path, &iter))
     return FALSE;
+                                       
+  gtk_tree_model_get (model, &iter,
+                      MODEL_COL_FILE, &file,
+                      -1);
 
-  switch (impl->operation_mode)
-    {
-    case OPERATION_MODE_SEARCH:
-      if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (impl->search_model_sort), &iter, path))
-        {
-          gtk_tree_path_free (path);
-          return FALSE;
-        }
-
-      search_get_valid_child_iter (impl, &child_iter, &iter);
-      gtk_tree_model_get (GTK_TREE_MODEL (impl->search_model), &child_iter,
-                          MODEL_COL_FILE, &file,
-                          -1);
-      break;
-    
-    case OPERATION_MODE_RECENT:
-      if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (impl->recent_model_sort), &iter, path))
-        {
-          gtk_tree_path_free (path);
-          return FALSE;
-        }
-
-      recent_get_valid_child_iter (impl, &child_iter, &iter);
-      gtk_tree_model_get (GTK_TREE_MODEL (impl->recent_model), &child_iter,
-                          MODEL_COL_FILE, &file,
-                          -1);
-      break;
-
-    case OPERATION_MODE_BROWSE:
-      g_assert_not_reached ();
-      return FALSE;
-    }
-
-  if (!file)
+  if (file == NULL)
     {
       gtk_tree_path_free (path);
       return FALSE;
@@ -4504,6 +4409,7 @@ file_list_query_tooltip_cb (GtkWidget  *widget,
                                  path);
 
   g_free (filename);
+  g_object_unref (file);
   gtk_tree_path_free (path);
 
   return TRUE;
@@ -5968,28 +5874,11 @@ set_sort_column (GtkFileChooserDefault *impl)
 {
   GtkTreeSortable *sortable;
 
-  switch (impl->operation_mode)
-    {
-    case OPERATION_MODE_BROWSE:
-      sortable = GTK_TREE_SORTABLE (impl->sort_model);
-      break;
-
-    case OPERATION_MODE_SEARCH:
-      sortable = GTK_TREE_SORTABLE (impl->search_model_sort);
-      break;
-
-    case OPERATION_MODE_RECENT:
-      sortable = GTK_TREE_SORTABLE (impl->recent_model_sort);
-      break;
-
-    default:
-      g_assert_not_reached ();
-      return;
-    }
+  sortable = GTK_TREE_SORTABLE (gtk_tree_view_get_model (GTK_TREE_VIEW (impl->browse_files_tree_view)));
 
   gtk_tree_sortable_set_sort_column_id (sortable,
-					impl->sort_column,
-					impl->sort_order);
+                                        impl->sort_column,
+                                        impl->sort_order);
 }
 
 static void
@@ -7499,13 +7388,13 @@ maybe_select (GtkTreeModel *model,
 {
   GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (data);
   GtkTreeSelection *selection;
-  GFileInfo *info;
   gboolean is_folder;
   
   selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
   
-  info = get_list_file_info (impl, iter);
-  is_folder = _gtk_file_info_consider_as_directory (info);
+  gtk_tree_model_get (model, iter,
+                      MODEL_COL_IS_FOLDER, &is_folder,
+                      -1);
 
   if ((is_folder && impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER) ||
       (!is_folder && impl->action == GTK_FILE_CHOOSER_ACTION_OPEN))
@@ -10605,56 +10494,16 @@ list_select_func  (GtkTreeSelection  *selection,
   if (impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER ||
       impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
     {
-      GtkTreeIter iter, child_iter;
-
-      switch (impl->operation_mode)
-        {
-        case OPERATION_MODE_SEARCH:
-          {
-            gboolean is_folder;
-
-            if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (impl->search_model_sort), &iter, path))
-              return FALSE;
-
-            search_get_valid_child_iter (impl, &child_iter, &iter);
-            gtk_tree_model_get (GTK_TREE_MODEL (impl->search_model), &child_iter,
-                                MODEL_COL_IS_FOLDER, &is_folder,
-                                -1);
-            if (!is_folder)
-              return FALSE;
-          }
-          break;
-
-        case OPERATION_MODE_RECENT:
-          {
-            gboolean is_folder;
-
-            if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (impl->recent_model_sort), &iter, path))
-              return FALSE;
-
-            recent_get_valid_child_iter (impl, &child_iter, &iter);
-            gtk_tree_model_get (GTK_TREE_MODEL (impl->recent_model), &child_iter,
-                                MODEL_COL_IS_FOLDER, &is_folder,
-                                -1);
-            if (!is_folder)
-              return FALSE;
-          }
-          break;
-
-        case OPERATION_MODE_BROWSE:
-          {
-	    GFileInfo *info;
-
-            if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (impl->sort_model), &iter, path))
-              return FALSE;
+      GtkTreeIter iter;
+      gboolean is_folder;
 
-            gtk_tree_model_sort_convert_iter_to_child_iter (impl->sort_model, &child_iter, &iter);
-            info = _gtk_file_system_model_get_info (impl->browse_files_model, &child_iter);
-            if (info && (! _gtk_file_info_consider_as_directory (info)))
-              return FALSE;
-          }
-          break;
-        }
+      if (!gtk_tree_model_get_iter (model, &iter, path))
+        return FALSE;
+      gtk_tree_model_get (model, &iter,
+                          MODEL_COL_IS_FOLDER, &is_folder,
+                          -1);
+      if (!is_folder)
+        return FALSE;
     }
     
   return TRUE;
@@ -10747,19 +10596,6 @@ path_bar_clicked (GtkPathBar            *path_bar,
     g_object_set (impl, "show-hidden", TRUE, NULL);
 }
 
-static GFileInfo *
-get_list_file_info (GtkFileChooserDefault *impl,
-		    GtkTreeIter           *iter)
-{
-  GtkTreeIter child_iter;
-
-  gtk_tree_model_sort_convert_iter_to_child_iter (impl->sort_model,
-						  &child_iter,
-						  iter);
-
-  return _gtk_file_system_model_get_info (impl->browse_files_model, &child_iter);
-}
-
 static void
 update_cell_renderer_attributes (GtkFileChooserDefault *impl)
 {



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