[nautilus] search: factor out a common helper function and use it



commit 302fb4d24b12744cc9cbe91c6135974e63995301
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Wed Sep 26 23:12:46 2012 -0400

    search: factor out a common helper function and use it

 libnautilus-private/nautilus-search-engine-model.c |   17 ++-----------
 .../nautilus-search-engine-simple.c                |   25 ++++++++-----------
 libnautilus-private/nautilus-ui-utilities.c        |   12 +++++++++
 libnautilus-private/nautilus-ui-utilities.h        |    2 +
 src/nautilus-shell-search-provider.c               |   17 ++-----------
 5 files changed, 31 insertions(+), 42 deletions(-)
---
diff --git a/libnautilus-private/nautilus-search-engine-model.c b/libnautilus-private/nautilus-search-engine-model.c
index 7f44ecb..73fc629 100644
--- a/libnautilus-private/nautilus-search-engine-model.c
+++ b/libnautilus-private/nautilus-search-engine-model.c
@@ -28,6 +28,7 @@
 #include "nautilus-directory.h"
 #include "nautilus-directory-private.h"
 #include "nautilus-file.h"
+#include "nautilus-ui-utilities.h"
 
 #include <string.h>
 #include <glib.h>
@@ -88,24 +89,12 @@ emit_finished_idle_cb (gpointer user_data)
 }
 
 static gchar *
-prepare_string_for_compare (const gchar *string)
-{
-	gchar *normalized, *res;
-
-	normalized = g_utf8_normalize (string, -1, G_NORMALIZE_NFD);
-	res = g_utf8_strdown (normalized, -1);
-	g_free (normalized);
-
-	return res;
-}
-
-static gchar *
 prepare_pattern_for_comparison (NautilusSearchEngineModel *model)
 {
 	gchar *text, *prepared, *pattern;
 
 	text = nautilus_query_get_text (model->details->query);
-	prepared = prepare_string_for_compare (text);
+	prepared = nautilus_search_prepare_string_for_compare (text);
 	pattern = g_strdup_printf ("*%s*", prepared);
 
 	g_free (prepared);
@@ -132,7 +121,7 @@ model_directory_ready_cb (NautilusDirectory	*directory,
 	for (l = files; l != NULL; l = l->next) {
 		file = l->data;
 		display_name = nautilus_file_get_display_name (file);
-		prepared = prepare_string_for_compare (display_name);
+		prepared = nautilus_search_prepare_string_for_compare (display_name);
 
 		if (g_pattern_match_simple (pattern, prepared)) {
 			uri = nautilus_file_get_uri (file);
diff --git a/libnautilus-private/nautilus-search-engine-simple.c b/libnautilus-private/nautilus-search-engine-simple.c
index 5571a02..8629a8a 100644
--- a/libnautilus-private/nautilus-search-engine-simple.c
+++ b/libnautilus-private/nautilus-search-engine-simple.c
@@ -25,6 +25,7 @@
 #include "nautilus-search-hit.h"
 #include "nautilus-search-provider.h"
 #include "nautilus-search-engine-simple.h"
+#include "nautilus-ui-utilities.h"
 
 #include <string.h>
 #include <glib.h>
@@ -94,7 +95,7 @@ search_thread_data_new (NautilusSearchEngineSimple *engine,
 			NautilusQuery *query)
 {
 	SearchThreadData *data;
-	char *text, *lower, *normalized, *uri;
+	char *text, *prepared, *uri;
 	GFile *location;
 	
 	data = g_new0 (SearchThreadData, 1);
@@ -114,12 +115,10 @@ search_thread_data_new (NautilusSearchEngineSimple *engine,
 	g_queue_push_tail (data->directories, location);
 	
 	text = nautilus_query_get_text (query);
-	normalized = g_utf8_normalize (text, -1, G_NORMALIZE_NFD);
-	lower = g_utf8_strdown (normalized, -1);
-	data->words = g_strsplit (lower, " ", -1);
+	prepared = nautilus_search_prepare_string_for_compare (text);
+	data->words = g_strsplit (prepared, " ", -1);
 	g_free (text);
-	g_free (lower);
-	g_free (normalized);
+	g_free (prepared);
 
 	data->mime_types = nautilus_query_get_mime_types (query);
 
@@ -214,7 +213,7 @@ visit_directory (GFile *dir, SearchThreadData *data)
 	GFileInfo *info;
 	GFile *child;
 	const char *mime_type, *display_name;
-	char *lower_name, *normalized;
+	char *prepared;
 	gboolean found;
 	int i;
 	GList *l;
@@ -239,19 +238,17 @@ visit_directory (GFile *dir, SearchThreadData *data)
 		if (display_name == NULL) {
 			goto next;
 		}
-		
-		normalized = g_utf8_normalize (display_name, -1, G_NORMALIZE_NFD);
-		lower_name = g_utf8_strdown (normalized, -1);
-		g_free (normalized);
-		
+
+		prepared = nautilus_search_prepare_string_for_compare (display_name);
+
 		found = TRUE;
 		for (i = 0; data->words[i] != NULL; i++) {
-			if (strstr (lower_name, data->words[i]) == NULL) {
+			if (strstr (prepared, data->words[i]) == NULL) {
 				found = FALSE;
 				break;
 			}
 		}
-		g_free (lower_name);
+		g_free (prepared);
 		
 		if (found && data->mime_types) {
 			mime_type = g_file_info_get_content_type (info);
diff --git a/libnautilus-private/nautilus-ui-utilities.c b/libnautilus-private/nautilus-ui-utilities.c
index 539ddca..b70a01f 100644
--- a/libnautilus-private/nautilus-ui-utilities.c
+++ b/libnautilus-private/nautilus-ui-utilities.c
@@ -61,6 +61,18 @@ nautilus_ui_prepare_merge_ui (GtkUIManager *ui_manager,
 	g_object_unref (*action_group); /* owned by ui manager */
 }
 
+gchar *
+nautilus_search_prepare_string_for_compare (const gchar *string)
+{
+	gchar *normalized, *res;
+
+	normalized = g_utf8_normalize (string, -1, G_NORMALIZE_NFD);
+	res = g_utf8_strdown (normalized, -1);
+	g_free (normalized);
+
+	return res;
+}
+
 static void
 extension_action_callback (GtkAction *action,
 			   gpointer callback_data)
diff --git a/libnautilus-private/nautilus-ui-utilities.h b/libnautilus-private/nautilus-ui-utilities.h
index 12e2e5e..9020a12 100644
--- a/libnautilus-private/nautilus-ui-utilities.h
+++ b/libnautilus-private/nautilus-ui-utilities.h
@@ -36,6 +36,8 @@ void        nautilus_ui_prepare_merge_ui           (GtkUIManager      *ui_manage
 						    GtkActionGroup   **action_group);
 GtkAction * nautilus_action_from_menu_item         (NautilusMenuItem  *item);
 
+gchar * nautilus_search_prepare_string_for_compare (const gchar *string);
+
 GdkPixbuf * nautilus_ui_get_menu_icon              (const char        *icon_name);
 
 char * nautilus_escape_action_name                 (const char        *action_name,
diff --git a/src/nautilus-shell-search-provider.c b/src/nautilus-shell-search-provider.c
index 5ee3441..08dc096 100644
--- a/src/nautilus-shell-search-provider.c
+++ b/src/nautilus-shell-search-provider.c
@@ -32,6 +32,7 @@
 #include <libnautilus-private/nautilus-file-utilities.h>
 #include <libnautilus-private/nautilus-search-engine.h>
 #include <libnautilus-private/nautilus-search-provider.h>
+#include <libnautilus-private/nautilus-ui-utilities.h>
 
 #include "nautilus-bookmark-list.h"
 #include "nautilus-shell-search-provider-generated.h"
@@ -129,18 +130,6 @@ get_gicon (NautilusShellSearchProviderApp *self,
     return nautilus_file_get_gicon (file, 0);
 }
 
-static gchar *
-prepare_string_for_compare (const gchar *string)
-{
-  gchar *normalized, *res;
-
-  normalized = g_utf8_normalize (string, -1, G_NORMALIZE_NFD);
-  res = g_utf8_strdown (normalized, -1);
-  g_free (normalized);
-
-  return res;
-}
-
 static void
 pending_search_free (PendingSearch *search)
 {
@@ -308,7 +297,7 @@ search_hit_candidate_new (const gchar *uri,
   SearchHitCandidate *candidate = g_slice_new0 (SearchHitCandidate);
 
   candidate->uri = g_strdup (uri);
-  candidate->string_for_compare = prepare_string_for_compare (name);
+  candidate->string_for_compare = nautilus_search_prepare_string_for_compare (name);
 
   return candidate;
 }
@@ -332,7 +321,7 @@ search_add_volumes_and_bookmarks (NautilusShellSearchProviderApp *self)
 
   candidates = NULL;
   query_text = nautilus_query_get_text (self->current_search->query);
-  string = prepare_string_for_compare (query_text);
+  string = nautilus_search_prepare_string_for_compare (query_text);
   terms = g_strsplit (string, " ", -1);
 
   g_free (string);



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