nautilus r14294 - in branches/multiview: . src



Author: cneumair
Date: Sat Jun 28 18:37:27 2008
New Revision: 14294
URL: http://svn.gnome.org/viewvc/nautilus?rev=14294&view=rev

Log:
2008-06-28  Christian Neumair  <cneumair gnome org>

	* src/nautilus-navigation-window-menus.c (action_new_tab_callback):
	* src/nautilus-navigation-window.c (hide_temporary_bars),
	(real_sync_search_widgets),
	(nautilus_navigation_window_class_init):
	* src/nautilus-spatial-window.c (nautilus_spatial_window_show),
	(nautilus_spatial_window_class_init):
	* src/nautilus-window-manage-views.c (found_mount_cb),
	(update_for_new_location):
	* src/nautilus-window-slot.h:
	* src/nautilus-window.c (nautilus_window_sync_search_widgets):
	* src/nautilus-window.h:
	Rename nautilus_window_set_search_mode() to
	nautilus_window_sync_search_widgets(), which just updates the widgets
	from the slot state. Minor code refactorizations.


Modified:
   branches/multiview/ChangeLog
   branches/multiview/src/nautilus-navigation-window-menus.c
   branches/multiview/src/nautilus-navigation-window.c
   branches/multiview/src/nautilus-spatial-window.c
   branches/multiview/src/nautilus-window-manage-views.c
   branches/multiview/src/nautilus-window-slot.c
   branches/multiview/src/nautilus-window-slot.h
   branches/multiview/src/nautilus-window.c
   branches/multiview/src/nautilus-window.h

Modified: branches/multiview/src/nautilus-navigation-window-menus.c
==============================================================================
--- branches/multiview/src/nautilus-navigation-window-menus.c	(original)
+++ branches/multiview/src/nautilus-navigation-window-menus.c	Sat Jun 28 18:37:27 2008
@@ -666,8 +666,9 @@
 	NautilusWindowSlot *current_slot;
 	NautilusWindowSlot *new_slot;
 	NautilusWindowOpenFlags flags;
-	GFile *current_location;
+	GFile *location;
 	int new_slot_position;
+	char *scheme;
 
 	if (!eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TABS)) {
 		return;
@@ -675,11 +676,11 @@
 
 	window = NAUTILUS_WINDOW (user_data);
 	current_slot = window->details->active_slot;
-	current_location = nautilus_window_slot_get_location (current_slot);
+	location = nautilus_window_slot_get_location (current_slot);
 
 	window = NAUTILUS_WINDOW (current_slot->window);
 
-	if (current_location != NULL) {
+	if (location != NULL) {
 		flags = 0;
 
 		new_slot_position = eel_preferences_get_enum (NAUTILUS_PREFERENCES_NEW_TAB_POSITION);
@@ -687,11 +688,17 @@
 			flags = NAUTILUS_WINDOW_OPEN_SLOT_APPEND;
 		}
 
+		scheme = g_file_get_uri_scheme (location);
+		if (!strcmp (scheme, "x-nautilus-search")) {
+			g_object_unref (location);
+			location = g_file_new_for_path (g_get_home_dir ());
+		}
+		g_free (scheme);
 
 		new_slot = nautilus_window_open_slot (window, flags);
 		nautilus_window_set_active_slot (window, new_slot);
-		nautilus_window_slot_go_to (new_slot, current_location, FALSE);
-		g_object_unref (current_location);
+		nautilus_window_slot_go_to (new_slot, location, FALSE);
+		g_object_unref (location);
 	}
 }
 

Modified: branches/multiview/src/nautilus-navigation-window.c
==============================================================================
--- branches/multiview/src/nautilus-navigation-window.c	(original)
+++ branches/multiview/src/nautilus-navigation-window.c	Sat Jun 28 18:37:27 2008
@@ -606,6 +606,7 @@
 hide_temporary_bars (NautilusNavigationWindow *window)
 {
 	NautilusWindowSlot *slot;
+	NautilusDirectory *directory;
 
 	g_assert (NAUTILUS_IS_NAVIGATION_WINDOW (window));
 
@@ -618,7 +619,9 @@
 		window->details->temporary_location_bar = FALSE;
 	}
 	if (window->details->temporary_navigation_bar) {
-		if (slot->search_mode) {
+		directory = nautilus_directory_get (slot->location);
+
+		if (NAUTILUS_IS_SEARCH_DIRECTORY (directory)) {
 			nautilus_navigation_window_set_bar_mode (window, NAUTILUS_BAR_SEARCH);
 		} else {
 			if (!eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ALWAYS_USE_LOCATION_ENTRY)) {
@@ -626,6 +629,8 @@
 			}
 		}
 		window->details->temporary_navigation_bar = FALSE;
+
+		nautilus_directory_unref (directory);
 	}
 	if (window->details->temporary_search_bar) {
 		if (!eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ALWAYS_USE_LOCATION_ENTRY)) {
@@ -1314,75 +1319,36 @@
 	nautilus_search_bar_grab_focus (NAUTILUS_SEARCH_BAR (window->search_bar));
 }
 
+/* either called due to slot change, or due to location change in the current slot. */
 static void
-query_editor_changed_callback (NautilusSearchBar *bar,
-			       NautilusQuery *query,
-			       gboolean reload,
-			       NautilusWindowSlot *slot)
-{
-	NautilusDirectory *directory;
-
-	g_assert (NAUTILUS_IS_FILE (slot->viewed_file));
-
-	directory = nautilus_directory_get_for_file (slot->viewed_file);
-	g_assert (NAUTILUS_IS_SEARCH_DIRECTORY (directory));
-
-	nautilus_search_directory_set_query (NAUTILUS_SEARCH_DIRECTORY (directory),
-					     query);
-	if (reload) {
-		nautilus_window_slot_reload (slot);
-	}
-
-	nautilus_directory_unref (directory);
-}
-
-static void
-real_set_search_mode (NautilusWindow *window, gboolean search_mode,
-		      NautilusSearchDirectory *search_directory)
+real_sync_search_widgets (NautilusWindow *window)
 {
+	NautilusNavigationWindow *navigation_window;
 	NautilusWindowSlot *slot;
-	NautilusNavigationWindow *nav_window;
-	GtkWidget *query_editor;
-	NautilusQuery *query;
+	NautilusDirectory *directory;
+	NautilusSearchDirectory *search_directory;
 
-	nav_window = NAUTILUS_NAVIGATION_WINDOW (window);
+	navigation_window = NAUTILUS_NAVIGATION_WINDOW (window);
 
 	slot = window->details->active_slot;
 
-	if (!search_mode) {
-		nav_window->details->temporary_search_bar = TRUE;
-		hide_temporary_bars (nav_window);
-		return;
+	search_directory = NULL;
+
+	directory = nautilus_directory_get (slot->location);
+	if (NAUTILUS_IS_SEARCH_DIRECTORY (directory)) {
+		search_directory = NAUTILUS_SEARCH_DIRECTORY (directory);
 	}
 
-	if (nautilus_search_directory_is_saved_search (search_directory)) {
-		query_editor = nautilus_query_editor_new (TRUE,
-							  nautilus_search_directory_is_indexed (search_directory));
+	if (search_directory != NULL &&
+	    !nautilus_search_directory_is_saved_search (search_directory)) {
+		nautilus_navigation_window_show_location_bar_temporarily (navigation_window);
+		nautilus_navigation_window_set_bar_mode (navigation_window, NAUTILUS_BAR_SEARCH);
+		navigation_window->details->temporary_search_bar = FALSE;
 	} else {
-		nautilus_navigation_window_show_location_bar_temporarily (nav_window);
-		nautilus_navigation_window_set_bar_mode (nav_window, NAUTILUS_BAR_SEARCH);
-		nav_window->details->temporary_search_bar = FALSE;
-
-		query_editor = nautilus_query_editor_new_with_bar (FALSE,
-								   nautilus_search_directory_is_indexed (search_directory),
-								   NAUTILUS_SEARCH_BAR (nav_window->search_bar));
+		navigation_window->details->temporary_search_bar = TRUE;
+		hide_temporary_bars (navigation_window);
 	}
 
-	g_signal_connect_object (query_editor, "changed",
-				 G_CALLBACK (query_editor_changed_callback), slot, 0);
-	
-	query = nautilus_search_directory_get_query (search_directory);
-	if (query != NULL) {
-		nautilus_query_editor_set_query (NAUTILUS_QUERY_EDITOR (query_editor),
-						 query);
-		g_object_unref (query);
-	}else {
-		nautilus_query_editor_set_default_query (NAUTILUS_QUERY_EDITOR (query_editor));
-	}
-	
-	nautilus_window_slot_add_extra_location_widget (slot, query_editor);
-	gtk_widget_show (query_editor);
-	nautilus_query_editor_grab_focus (NAUTILUS_QUERY_EDITOR (query_editor));
 }
 
 static void
@@ -1844,7 +1810,7 @@
 	NAUTILUS_WINDOW_CLASS (class)->disconnect_content_view = real_disconnect_content_view;
 	NAUTILUS_WINDOW_CLASS (class)->sync_allow_stop = real_sync_allow_stop;
 	NAUTILUS_WINDOW_CLASS (class)->prompt_for_location = real_prompt_for_location;
-	NAUTILUS_WINDOW_CLASS (class)->set_search_mode = real_set_search_mode;
+	NAUTILUS_WINDOW_CLASS (class)->sync_search_widgets = real_sync_search_widgets;
 	NAUTILUS_WINDOW_CLASS (class)->sync_title = real_sync_title;
 	NAUTILUS_WINDOW_CLASS (class)->get_icon = real_get_icon;
 	NAUTILUS_WINDOW_CLASS (class)->get_default_size = real_get_default_size;

Modified: branches/multiview/src/nautilus-spatial-window.c
==============================================================================
--- branches/multiview/src/nautilus-spatial-window.c	(original)
+++ branches/multiview/src/nautilus-spatial-window.c	Sat Jun 28 18:37:27 2008
@@ -88,8 +88,6 @@
 	GtkWidget *location_button;
 	GtkWidget *location_label;
 	GtkWidget *location_icon;
-
-	GtkWidget *query_editor;
 };
 
 static const GtkTargetEntry location_button_drag_types[] = {
@@ -328,15 +326,15 @@
 static void
 nautilus_spatial_window_show (GtkWidget *widget)
 {	
-	NautilusSpatialWindow *window;
+	NautilusWindow *window;
 
-	window = NAUTILUS_SPATIAL_WINDOW (widget);
+	window = NAUTILUS_WINDOW (widget);
 	
 	GTK_WIDGET_CLASS (nautilus_spatial_window_parent_class)->show (widget);
 
-	if (NAUTILUS_WINDOW (window)->details->active_slot->search_mode &&
-	    window->details->query_editor != NULL) {
-		nautilus_query_editor_grab_focus (NAUTILUS_QUERY_EDITOR (window->details->query_editor));
+	if (window->details->active_slot != NULL &&
+	    window->details->active_slot->query_editor != NULL) {
+		nautilus_query_editor_grab_focus (NAUTILUS_QUERY_EDITOR (window->details->active_slot->query_editor));
 	}
 }
 
@@ -369,66 +367,6 @@
 	gtk_widget_show (dialog);
 }
 
-static void
-query_editor_changed_callback (NautilusSearchBar *bar,
-			       NautilusQuery *query,
-			       gboolean reload,
-			       NautilusWindow *window)
-{
-	NautilusDirectory *directory;
-	NautilusWindowSlot *slot;
-
-	slot = window->details->active_slot;
-
-	directory = nautilus_directory_get_for_file (slot->viewed_file);
-	g_assert (NAUTILUS_IS_SEARCH_DIRECTORY (directory));
-
-	nautilus_search_directory_set_query (NAUTILUS_SEARCH_DIRECTORY (directory),
-					     query);
-	if (reload) {
-		nautilus_window_reload (window);
-	}
-
-	nautilus_directory_unref (directory);
-}
-
-static void
-real_set_search_mode (NautilusWindow *window, gboolean search_mode,
-		      NautilusSearchDirectory *search_directory)
-{
-	NautilusWindowSlot *slot;
-	NautilusSpatialWindow *spatial_window;
-	GtkWidget *query_editor;
-	NautilusQuery *query;
-
-	spatial_window = NAUTILUS_SPATIAL_WINDOW (window);
-
-	spatial_window->details->query_editor = NULL;
-
-	slot = window->details->active_slot;
-
-	if (search_mode) {
-		query_editor = nautilus_query_editor_new (nautilus_search_directory_is_saved_search (search_directory),
-							  nautilus_search_directory_is_indexed (search_directory));
-		spatial_window->details->query_editor = query_editor;
-		
-		nautilus_window_slot_add_extra_location_widget (slot, query_editor);
-		gtk_widget_show (query_editor);
-		nautilus_query_editor_grab_focus (NAUTILUS_QUERY_EDITOR (query_editor));
-		g_signal_connect_object (query_editor, "changed",
-					 G_CALLBACK (query_editor_changed_callback), window, 0);
-		
-		query = nautilus_search_directory_get_query (search_directory);
-		if (query != NULL) {
-			nautilus_query_editor_set_query (NAUTILUS_QUERY_EDITOR (query_editor),
-							 query);
-			g_object_unref (query);
-		} else {
-			nautilus_query_editor_set_default_query (NAUTILUS_QUERY_EDITOR (query_editor));
-		}
-	} 
-}
-
 static NautilusIconInfo *
 real_get_icon (NautilusWindow *window,
 	       NautilusWindowSlot *slot)
@@ -1086,8 +1024,6 @@
 
 	NAUTILUS_WINDOW_CLASS (class)->prompt_for_location = 
 		real_prompt_for_location;
-	NAUTILUS_WINDOW_CLASS (class)->set_search_mode = 
-		real_set_search_mode;
 	NAUTILUS_WINDOW_CLASS (class)->get_icon =
 		real_get_icon;
 	NAUTILUS_WINDOW_CLASS (class)->sync_title = 

Modified: branches/multiview/src/nautilus-window-manage-views.c
==============================================================================
--- branches/multiview/src/nautilus-window-manage-views.c	(original)
+++ branches/multiview/src/nautilus-window-manage-views.c	Sat Jun 28 18:37:27 2008
@@ -45,6 +45,7 @@
 #include <eel/eel-gdk-extensions.h>
 #include <eel/eel-glib-extensions.h>
 #include <eel/eel-gtk-extensions.h>
+#include <eel/eel-gtk-macros.h>
 #include <eel/eel-stock-dialogs.h>
 #include <eel/eel-string.h>
 #include <eel/eel-mount-operation.h>
@@ -1510,7 +1511,6 @@
 {
 	FindMountData *data = user_data;
 	GMount *mount;
-	NautilusWindow *window;	
 	NautilusWindowSlot *slot;
 
 	if (g_cancellable_is_cancelled (data->cancellable)) {
@@ -1518,7 +1518,6 @@
 	}
 
 	slot = data->slot;
-	window = slot->window;
 	
 	mount = g_file_find_enclosing_mount_finish (G_FILE (source_object),
 						    res,
@@ -1579,23 +1578,6 @@
 	}
 }
 
-static void
-nautilus_window_sync_search_mode (NautilusWindow *window)
-{
-	NautilusWindowSlot *slot;
-	NautilusDirectory *directory;
-
-	slot = window->details->active_slot;
-
-	directory = nautilus_directory_get (slot->location);
-	if (NAUTILUS_IS_SEARCH_DIRECTORY (directory)) {
-		nautilus_window_set_search_mode (window, TRUE, NAUTILUS_SEARCH_DIRECTORY (directory));
-	} else {
-		nautilus_window_set_search_mode (window, FALSE, NULL);
-	}
-	nautilus_directory_unref (directory);
-}
-
 /* Handle the changes for the NautilusWindow itself. */
 static void
 update_for_new_location (NautilusWindowSlot *slot)
@@ -1661,10 +1643,7 @@
 		
 		directory = nautilus_directory_get (slot->location);
 
-		slot->search_mode = NAUTILUS_IS_SEARCH_DIRECTORY (directory);
-		if (slot == window->details->active_slot) {
-			nautilus_window_sync_search_mode (window);
-		}
+		nautilus_window_slot_update_query_editor (slot);
 
 		if (nautilus_directory_is_in_trash (directory)) {
 			nautilus_window_slot_show_trash_bar (slot);
@@ -1695,6 +1674,11 @@
 
 	if (slot == window->details->active_slot) {
 		nautilus_window_sync_location_widgets (window);
+
+		if (location_really_changed) {
+			nautilus_window_sync_search_widgets (window);
+		}
+
 		if (NAUTILUS_IS_NAVIGATION_WINDOW (window)) {
 			nautilus_navigation_window_load_extension_toolbar_items (NAUTILUS_NAVIGATION_WINDOW (window));
 		}

Modified: branches/multiview/src/nautilus-window-slot.c
==============================================================================
--- branches/multiview/src/nautilus-window-slot.c	(original)
+++ branches/multiview/src/nautilus-window-slot.c	Sat Jun 28 18:37:27 2008
@@ -115,6 +115,7 @@
 	nautilus_window_sync_allow_stop (window, slot);
 	nautilus_window_sync_title (window, slot);
 	nautilus_window_sync_location_widgets (window);
+	nautilus_window_sync_search_widgets (window);
 
 	if (slot->viewed_file != NULL) {
 		nautilus_window_load_view_as_menus (window);
@@ -144,8 +145,6 @@
 
 	window = NAUTILUS_WINDOW (slot->window);
 	g_assert (slot == window->details->active_slot);
-
-	/* multiview-TODO write back locaton widget state */
 }
 
 static void

Modified: branches/multiview/src/nautilus-window-slot.h
==============================================================================
--- branches/multiview/src/nautilus-window-slot.h	(original)
+++ branches/multiview/src/nautilus-window-slot.h	Sat Jun 28 18:37:27 2008
@@ -92,7 +92,6 @@
 
 	gboolean allow_stop;
 
-	gboolean search_mode;
 	NautilusQueryEditor *query_editor;
 
 	/* New location. */

Modified: branches/multiview/src/nautilus-window.c
==============================================================================
--- branches/multiview/src/nautilus-window.c	(original)
+++ branches/multiview/src/nautilus-window.c	Sat Jun 28 18:37:27 2008
@@ -449,22 +449,14 @@
 }
 
 void
-nautilus_window_set_search_mode (NautilusWindow *window,
-				 gboolean search_mode,
-				 NautilusSearchDirectory *search_directory)
+nautilus_window_sync_search_widgets (NautilusWindow *window)
 {
-	NautilusWindowSlot *slot;
-
 	g_assert (NAUTILUS_IS_WINDOW (window));
 
-	slot = window->details->active_slot;
-	slot->search_mode = search_mode;
-
 	EEL_CALL_METHOD (NAUTILUS_WINDOW_CLASS, window,
-			 set_search_mode, (window, search_mode, search_directory));
+			 sync_search_widgets, (window));
 }
 
-
 void
 nautilus_window_zoom_in (NautilusWindow *window)
 {

Modified: branches/multiview/src/nautilus-window.h
==============================================================================
--- branches/multiview/src/nautilus-window.h	(original)
+++ branches/multiview/src/nautilus-window.h	Sat Jun 28 18:37:27 2008
@@ -91,7 +91,7 @@
 	void   (* set_allow_up) (NautilusWindow *window, gboolean allow);
 	void   (* reload)              (NautilusWindow *window);
         void   (* prompt_for_location) (NautilusWindow *window, const char *initial);
-        void   (* set_search_mode) (NautilusWindow *window, gboolean search_enabled, NautilusSearchDirectory *search_directory);
+        void   (* sync_search_widgets) (NautilusWindow *window);
         void   (* get_default_size) (NautilusWindow *window, guint *default_width, guint *default_height);
         void   (* show_window)  (NautilusWindow *window);
         void   (* close) (NautilusWindow *window);
@@ -149,9 +149,7 @@
 						       gboolean           new_tab);
 void             nautilus_window_prompt_for_location  (NautilusWindow    *window,
                                                        const char        *initial);
-void		 nautilus_window_set_search_mode      (NautilusWindow    *window,
-                                                       gboolean           search_mode,
-                                                       NautilusSearchDirectory *search_directory);
+void		 nautilus_window_sync_search_widgets  (NautilusWindow    *window);
 void             nautilus_window_launch_cd_burner     (NautilusWindow    *window);
 void             nautilus_window_display_error        (NautilusWindow    *window,
                                                        const char        *error_msg);



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