diff options
author | Alexander Larsson <alexl@redhat.com> | 2005-12-01 17:18:50 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2005-12-01 17:18:50 +0000 |
commit | e4e2cdf4782bc92df7600657873c6656c4830679 (patch) | |
tree | 7ce4d963651ee944fe6518b83f65d0636403f26f | |
parent | 82bbde2ca357227c0d9d662bd6676f292c03cc93 (diff) | |
download | nautilus-e4e2cdf4782bc92df7600657873c6656c4830679.tar.gz |
Further refactor the query loading, and remove all traces of the old
2005-12-01 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-directory.c:
* libnautilus-private/nautilus-search-directory.[ch]:
* src/nautilus-bookmark-list.c:
Further refactor the query loading, and remove all traces
of the old load/save mechanism.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | libnautilus-private/nautilus-directory.c | 22 | ||||
-rw-r--r-- | libnautilus-private/nautilus-search-directory.c | 55 | ||||
-rw-r--r-- | libnautilus-private/nautilus-search-directory.h | 4 | ||||
-rw-r--r-- | src/nautilus-bookmark-list.c | 35 |
5 files changed, 37 insertions, 87 deletions
@@ -1,6 +1,14 @@ 2005-12-01 Alexander Larsson <alexl@redhat.com> * libnautilus-private/nautilus-directory.c: + * libnautilus-private/nautilus-search-directory.[ch]: + * src/nautilus-bookmark-list.c: + Further refactor the query loading, and remove all traces + of the old load/save mechanism. + +2005-12-01 Alexander Larsson <alexl@redhat.com> + + * libnautilus-private/nautilus-directory.c: * libnautilus-private/nautilus-query.[ch]: * libnautilus-private/nautilus-search-directory.[ch]: Refactor query loading into NautilusQuery object. diff --git a/libnautilus-private/nautilus-directory.c b/libnautilus-private/nautilus-directory.c index 5c280ac49..c31b345ca 100644 --- a/libnautilus-private/nautilus-directory.c +++ b/libnautilus-private/nautilus-directory.c @@ -513,8 +513,6 @@ static NautilusDirectory * nautilus_directory_new (const char *uri) { NautilusDirectory *directory; - NautilusQuery *query; - char *file; g_assert (uri != NULL); @@ -522,30 +520,16 @@ nautilus_directory_new (const char *uri) directory = NAUTILUS_DIRECTORY (g_object_new (NAUTILUS_TYPE_TRASH_DIRECTORY, NULL)); } else if (eel_uri_is_desktop (uri)) { directory = NAUTILUS_DIRECTORY (g_object_new (NAUTILUS_TYPE_DESKTOP_DIRECTORY, NULL)); - } else if (eel_uri_is_search (uri) || - g_str_has_suffix (uri, NAUTILUS_SAVED_SEARCH_EXTENSION)) { + } else if (eel_uri_is_search (uri)) { directory = NAUTILUS_DIRECTORY (g_object_new (NAUTILUS_TYPE_SEARCH_DIRECTORY, NULL)); + } else if (g_str_has_suffix (uri, NAUTILUS_SAVED_SEARCH_EXTENSION)) { + directory = NAUTILUS_DIRECTORY (nautilus_search_directory_new_from_saved_search (uri)); } else { directory = NAUTILUS_DIRECTORY (g_object_new (NAUTILUS_TYPE_VFS_DIRECTORY, NULL)); } set_directory_uri (directory, uri); - if (eel_uri_is_search (uri)) - nautilus_search_directory_load_search (NAUTILUS_SEARCH_DIRECTORY (directory)); - if (g_str_has_suffix (uri, NAUTILUS_SAVED_SEARCH_EXTENSION)) { - file = gnome_vfs_get_local_path_from_uri (uri); - if (file != NULL) { - query = nautilus_query_load (file); - if (query != NULL) { - nautilus_search_directory_set_query (NAUTILUS_SEARCH_DIRECTORY (directory), - query); - g_object_unref (query); - } - g_free (file); - } - } - return directory; } diff --git a/libnautilus-private/nautilus-search-directory.c b/libnautilus-private/nautilus-search-directory.c index 08a10c8fb..acfb5aa8d 100644 --- a/libnautilus-private/nautilus-search-directory.c +++ b/libnautilus-private/nautilus-search-directory.c @@ -37,6 +37,7 @@ struct NautilusSearchDirectoryDetails { NautilusQuery *query; + char *saved_search_uri; NautilusSearchEngine *engine; @@ -742,7 +743,6 @@ nautilus_search_directory_generate_new_uri (void) gettimeofday (&tv, NULL); uri = g_strdup_printf (EEL_SEARCH_URI"///%ld-%ld-%d/", tv.tv_sec, tv.tv_usec, counter++); - printf ("generated uri: %s\n", uri); return uri; } @@ -767,43 +767,28 @@ nautilus_search_directory_get_query (NautilusSearchDirectory *search) return search->details->query; } -/* Move past the "x-nautilus-search:///" portion of the URI */ -#define SEARCH_URI_OFFSET 21 - -void -nautilus_search_directory_save_search (NautilusSearchDirectory *search) -{ - char *search_uri; - char *search_dir, *search_file; - - if (search->details->query == NULL) - return; - - search_uri = nautilus_directory_get_uri (NAUTILUS_DIRECTORY (search)); - - search_dir = nautilus_get_searches_directory (); - search_file = g_build_path ("/", search_dir, search_uri + SEARCH_URI_OFFSET, NULL); - g_free (search_dir); - - nautilus_query_save (search->details->query, search_file); -} - -void -nautilus_search_directory_load_search (NautilusSearchDirectory *search) +NautilusSearchDirectory * +nautilus_search_directory_new_from_saved_search (const char *uri) { - char *search_uri; - char *search_dir, *search_file; + NautilusSearchDirectory *directory; NautilusQuery *query; + char *file; - search_uri = nautilus_directory_get_uri (NAUTILUS_DIRECTORY (search)); - - search_dir = nautilus_get_searches_directory (); - search_file = g_build_path ("/", search_dir, search_uri + SEARCH_URI_OFFSET, NULL); - g_free (search_dir); + directory = NAUTILUS_SEARCH_DIRECTORY (g_object_new (NAUTILUS_TYPE_SEARCH_DIRECTORY, NULL)); - query = nautilus_query_load (search_file); - if (query != NULL) { - nautilus_search_directory_set_query (search, query); - g_object_unref (query); + directory->details->saved_search_uri = g_strdup (uri); + + file = gnome_vfs_get_local_path_from_uri (uri); + if (file != NULL) { + query = nautilus_query_load (file); + if (query != NULL) { + nautilus_search_directory_set_query (directory, query); + g_object_unref (query); + } + g_free (file); + } else { + g_warning ("Non-local saved searches not supported"); } + + return directory; } diff --git a/libnautilus-private/nautilus-search-directory.h b/libnautilus-private/nautilus-search-directory.h index 4d9df29e6..d0cec316e 100644 --- a/libnautilus-private/nautilus-search-directory.h +++ b/libnautilus-private/nautilus-search-directory.h @@ -61,7 +61,7 @@ NautilusQuery *nautilus_search_directory_get_query (NautilusSearchDirectory *sea void nautilus_search_directory_set_query (NautilusSearchDirectory *search, NautilusQuery *query); -void nautilus_search_directory_save_search (NautilusSearchDirectory *search); -void nautilus_search_directory_load_search (NautilusSearchDirectory *search); +NautilusSearchDirectory *nautilus_search_directory_new_from_saved_search (const char *uri); + #endif /* NAUTILUS_SEARCH_DIRECTORY_H */ diff --git a/src/nautilus-bookmark-list.c b/src/nautilus-bookmark-list.c index 608c8a319..6958a5535 100644 --- a/src/nautilus-bookmark-list.c +++ b/src/nautilus-bookmark-list.c @@ -31,12 +31,10 @@ #include <eel/eel-glib-extensions.h> #include <eel/eel-gtk-macros.h> #include <eel/eel-string.h> -#include <eel/eel-vfs-extensions.h> #include <eel/eel-xml-extensions.h> #include <gtk/gtksignal.h> #include <libnautilus-private/nautilus-file-utilities.h> #include <libnautilus-private/nautilus-icon-factory.h> -#include <libnautilus-private/nautilus-search-directory.h> #include <libgnome/gnome-macros.h> #include <libgnome/gnome-util.h> #include <libgnomevfs/gnome-vfs-types.h> @@ -515,21 +513,6 @@ nautilus_bookmark_list_new (void) return list; } -static void -save_search_for_uri (const char *uri) -{ - NautilusDirectory *directory; - NautilusSearchDirectory *search; - - directory = nautilus_directory_get (uri); - - g_assert (NAUTILUS_IS_SEARCH_DIRECTORY (directory)); - - search = NAUTILUS_SEARCH_DIRECTORY (directory); - - nautilus_search_directory_save_search (search); -} - /** * nautilus_bookmark_list_save_file: * @@ -560,20 +543,19 @@ nautilus_bookmark_list_save_file (NautilusBookmarkList *bookmarks) GList *l; for (l = bookmarks->list; l; l = l->next) { - char *uri; char *bookmark_string; bookmark = NAUTILUS_BOOKMARK (l->data); - - uri = nautilus_bookmark_get_uri (bookmark); /* make sure we save label if it has one for compatibility with GTK 2.7 and 2.8 */ if (nautilus_bookmark_get_has_custom_name (bookmark)) { - char *label; + char *label, *uri; label = nautilus_bookmark_get_name (bookmark); + uri = nautilus_bookmark_get_uri (bookmark); bookmark_string = g_strconcat (uri, " ", label, NULL); + g_free (uri); g_free (label); } else { - bookmark_string = g_strdup (uri); + bookmark_string = nautilus_bookmark_get_uri (bookmark); } if (fputs (bookmark_string, file) == EOF || fputs ("\n", file) == EOF) { saved_errno = errno; @@ -582,15 +564,6 @@ nautilus_bookmark_list_save_file (NautilusBookmarkList *bookmarks) goto io_error; } g_free (bookmark_string); - - /* - * Rather gross hack to save out searches at the same - * time as the bookmarks. - */ - if (eel_uri_is_search (uri)) - save_search_for_uri (uri); - - g_free (uri); } if (fclose (file) == EOF) { |