[nautilus/gnome-3-6] directory: simplify directory creation in a single place



commit eb24dfed83b3fa37aff7f2fade1d1de3729592a3
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Tue Oct 2 13:04:05 2012 -0400

    directory: simplify directory creation in a single place
    
    nautilus_directory_new() is now the only place that calls g_object_new()
    to create a new directory. Replace the _from_saved_search() constructor
    with a setter.

 libnautilus-private/nautilus-directory.c        |   22 ++++++++++++++--------
 libnautilus-private/nautilus-search-directory.c |   16 +++++-----------
 libnautilus-private/nautilus-search-directory.h |    4 ++--
 3 files changed, 21 insertions(+), 21 deletions(-)
---
diff --git a/libnautilus-private/nautilus-directory.c b/libnautilus-private/nautilus-directory.c
index c35f842..1e8df6d 100644
--- a/libnautilus-private/nautilus-directory.c
+++ b/libnautilus-private/nautilus-directory.c
@@ -554,22 +554,28 @@ static NautilusDirectory *
 nautilus_directory_new (GFile *location)
 {
 	NautilusDirectory *directory;
+	GType type;
 	char *uri;
+	gboolean is_saved_search;
 
 	uri = g_file_get_uri (location);
-	
+	is_saved_search = g_str_has_suffix (uri, NAUTILUS_SAVED_SEARCH_EXTENSION);
+
 	if (eel_uri_is_desktop (uri)) {
-		directory = NAUTILUS_DIRECTORY (g_object_new (NAUTILUS_TYPE_DESKTOP_DIRECTORY, "location", location, NULL));
-	} else if (eel_uri_is_search (uri)) {
-		directory = NAUTILUS_DIRECTORY (g_object_new (NAUTILUS_TYPE_SEARCH_DIRECTORY, "location", location, NULL));
-	} else if (g_str_has_suffix (uri, NAUTILUS_SAVED_SEARCH_EXTENSION)) {
-		directory = NAUTILUS_DIRECTORY (nautilus_search_directory_new_from_saved_search (uri));
+		type = NAUTILUS_TYPE_DESKTOP_DIRECTORY;
+	} else if (eel_uri_is_search (uri) || is_saved_search) {
+		type = NAUTILUS_TYPE_SEARCH_DIRECTORY;
 	} else {
-		directory = NAUTILUS_DIRECTORY (g_object_new (NAUTILUS_TYPE_VFS_DIRECTORY, "location", location, NULL));
+		type = NAUTILUS_TYPE_VFS_DIRECTORY;
 	}
 
 	g_free (uri);
-	
+
+	directory = g_object_new (type, "location", location, NULL);
+	if (is_saved_search) {
+		nautilus_search_directory_set_saved_search (NAUTILUS_SEARCH_DIRECTORY (directory), location);
+	}
+
 	return directory;
 }
 
diff --git a/libnautilus-private/nautilus-search-directory.c b/libnautilus-private/nautilus-search-directory.c
index 96b53b4..ff56e5b 100644
--- a/libnautilus-private/nautilus-search-directory.c
+++ b/libnautilus-private/nautilus-search-directory.c
@@ -925,20 +925,15 @@ nautilus_search_directory_get_query (NautilusSearchDirectory *search)
 	return NULL;
 }
 
-NautilusSearchDirectory *
-nautilus_search_directory_new_from_saved_search (const char *uri)
+void
+nautilus_search_directory_set_saved_search (NautilusSearchDirectory *search,
+					    GFile *saved_search)
 {
-	NautilusSearchDirectory *search;
 	NautilusQuery *query;
 	char *file;
-	GFile *location;
-
-	location = g_file_new_for_uri (uri);
-	search = NAUTILUS_SEARCH_DIRECTORY (g_object_new (NAUTILUS_TYPE_SEARCH_DIRECTORY, "location", location, NULL));
 
-	search->details->saved_search_uri = g_strdup (uri);
-	file = g_file_get_path (location);
-	g_object_unref (location);
+	search->details->saved_search_uri = g_file_get_uri (saved_search);
+	file = g_file_get_path (saved_search);
 
 	if (file != NULL) {
 		query = nautilus_query_load (file);
@@ -952,7 +947,6 @@ nautilus_search_directory_new_from_saved_search (const char *uri)
 	}
 
 	search->details->modified = FALSE;
-	return search;
 }
 
 gboolean
diff --git a/libnautilus-private/nautilus-search-directory.h b/libnautilus-private/nautilus-search-directory.h
index 9f734d1..e8b0c67 100644
--- a/libnautilus-private/nautilus-search-directory.h
+++ b/libnautilus-private/nautilus-search-directory.h
@@ -55,8 +55,8 @@ GType   nautilus_search_directory_get_type             (void);
 
 char   *nautilus_search_directory_generate_new_uri     (void);
 
-NautilusSearchDirectory *nautilus_search_directory_new_from_saved_search (const char *uri);
-
+void           nautilus_search_directory_set_saved_search (NautilusSearchDirectory *search,
+							   GFile                   *saved_search);
 gboolean       nautilus_search_directory_is_saved_search (NautilusSearchDirectory *search);
 gboolean       nautilus_search_directory_is_modified     (NautilusSearchDirectory *search);
 void           nautilus_search_directory_save_search     (NautilusSearchDirectory *search);



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