summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2005-12-01 17:18:50 +0000
committerAlexander Larsson <alexl@src.gnome.org>2005-12-01 17:18:50 +0000
commite4e2cdf4782bc92df7600657873c6656c4830679 (patch)
tree7ce4d963651ee944fe6518b83f65d0636403f26f
parent82bbde2ca357227c0d9d662bd6676f292c03cc93 (diff)
downloadnautilus-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--ChangeLog8
-rw-r--r--libnautilus-private/nautilus-directory.c22
-rw-r--r--libnautilus-private/nautilus-search-directory.c55
-rw-r--r--libnautilus-private/nautilus-search-directory.h4
-rw-r--r--src/nautilus-bookmark-list.c35
5 files changed, 37 insertions, 87 deletions
diff --git a/ChangeLog b/ChangeLog
index 84cee832d..b7c38ad3c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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) {