[nautilus] engine: make the model and simple engines mutually exclusive
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] engine: make the model and simple engines mutually exclusive
- Date: Thu, 6 Sep 2012 19:24:18 +0000 (UTC)
commit 841c043ce47c801747bc575363d3ceb7aeaba230
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Thu Sep 6 15:13:59 2012 -0400
engine: make the model and simple engines mutually exclusive
Until we can enable recursive search for the simple engine, it only
makes sense to use it when we don't have any cached model to fetch data
from, as otherwise it will return the same results.
libnautilus-private/nautilus-search-engine.c | 48 ++++++++++----------------
1 files changed, 18 insertions(+), 30 deletions(-)
---
diff --git a/libnautilus-private/nautilus-search-engine.c b/libnautilus-private/nautilus-search-engine.c
index 459cc0c..2a8b9e7 100644
--- a/libnautilus-private/nautilus-search-engine.c
+++ b/libnautilus-private/nautilus-search-engine.c
@@ -31,26 +31,22 @@
#define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH
#include "nautilus-debug.h"
-#undef ENABLE_TRACKER
-
#ifdef ENABLE_TRACKER
#include "nautilus-search-engine-tracker.h"
#endif
struct NautilusSearchEngineDetails
{
-#if USE_MODEL
- NautilusSearchEngineModel *model;
-#else
- NautilusSearchEngineSimple *simple;
-#endif
#ifdef ENABLE_TRACKER
NautilusSearchEngineTracker *tracker;
#endif
+ NautilusSearchEngineSimple *simple;
+
+ NautilusSearchEngineModel *model;
NautilusDirectory *base_model;
GHashTable *uris;
- guint num_providers;
+ guint providers_running;
guint providers_finished;
guint providers_error;
};
@@ -71,27 +67,30 @@ nautilus_search_engine_set_query (NautilusSearchProvider *provider,
#ifdef ENABLE_TRACKER
nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (engine->details->tracker), query);
#endif
-#if USE_MODEL
nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (engine->details->model), query);
-#else
nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (engine->details->simple), query);
-#endif
}
static void
nautilus_search_engine_start (NautilusSearchProvider *provider)
{
NautilusSearchEngine *engine = NAUTILUS_SEARCH_ENGINE (provider);
+
+ engine->details->providers_running = 0;
engine->details->providers_finished = 0;
engine->details->providers_error = 0;
+
#ifdef ENABLE_TRACKER
nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (engine->details->tracker));
+ engine->details->providers_running++;
#endif
-#if USE_MODEL
- nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (engine->details->model));
-#else
- nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (engine->details->simple));
-#endif
+ if (nautilus_search_engine_model_get_model (engine->details->model)) {
+ nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (engine->details->model));
+ engine->details->providers_running++;
+ } else {
+ nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (engine->details->simple));
+ engine->details->providers_running++;
+ }
}
static void
@@ -101,11 +100,8 @@ nautilus_search_engine_stop (NautilusSearchProvider *provider)
#ifdef ENABLE_TRACKER
nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (engine->details->tracker));
#endif
-#if USE_MODEL
nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (engine->details->model));
-#else
nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (engine->details->simple));
-#endif
}
static void
@@ -171,7 +167,7 @@ search_provider_error (NautilusSearchProvider *provider,
{
DEBUG ("Search provider error: %s", error_message);
engine->details->providers_error++;
- if (engine->details->providers_error == engine->details->num_providers) {
+ if (engine->details->providers_error == engine->details->providers_running) {
g_object_ref (engine);
nautilus_search_provider_error (NAUTILUS_SEARCH_PROVIDER (engine),
_("Unable to complete the requested search"));
@@ -186,7 +182,7 @@ search_provider_finished (NautilusSearchProvider *provider,
{
engine->details->providers_finished++;
- if (engine->details->providers_finished == engine->details->num_providers) {
+ if (engine->details->providers_finished == engine->details->providers_running) {
g_object_ref (engine);
nautilus_search_provider_finished (NAUTILUS_SEARCH_PROVIDER (engine));
g_hash_table_remove_all (engine->details->uris);
@@ -230,11 +226,8 @@ nautilus_search_engine_finalize (GObject *object)
#ifdef ENABLE_TRACKER
g_clear_object (&engine->details->tracker);
#endif
-#if USE_MODEL
g_clear_object (&engine->details->model);
-#else
g_clear_object (&engine->details->simple);
-#endif
G_OBJECT_CLASS (nautilus_search_engine_parent_class)->finalize (object);
}
@@ -263,17 +256,12 @@ nautilus_search_engine_init (NautilusSearchEngine *engine)
#ifdef ENABLE_TRACKER
engine->details->tracker = nautilus_search_engine_tracker_new ();
connect_provider_signals (engine, NAUTILUS_SEARCH_PROVIDER (engine->details->tracker));
- engine->details->num_providers++;
#endif
-#if USE_MODEL
engine->details->model = nautilus_search_engine_model_new ();
connect_provider_signals (engine, NAUTILUS_SEARCH_PROVIDER (engine->details->model));
- engine->details->num_providers++;
-#else
+
engine->details->simple = nautilus_search_engine_simple_new ();
connect_provider_signals (engine, NAUTILUS_SEARCH_PROVIDER (engine->details->simple));
- engine->details->num_providers++;
-#endif
}
NautilusSearchEngine *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]