From 7fa696c137c50ed73d72f3f34892bcdd71ca6cd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erick=20P=C3=A9rez=20Castellanos?= Date: Wed, 26 Nov 2014 13:51:50 -0500 Subject: [PATCH] manager: added ECalDataModel for search alone --- src/gcal-manager.c | 26 +++++++++++++++++++++++++- src/gcal-manager.h | 5 +++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/gcal-manager.c b/src/gcal-manager.c index 2795e400..03e8a52b 100644 --- a/src/gcal-manager.c +++ b/src/gcal-manager.c @@ -42,6 +42,7 @@ typedef struct ESourceRegistry *source_registry; ECalDataModel *e_data_model; + ECalDataModel *search_data_model; GCancellable *async_ops; @@ -269,6 +270,7 @@ on_client_connected (GObject *source_object, e_source_get_uid (source)); e_cal_data_model_add_client (priv->e_data_model, client); + e_cal_data_model_add_client (priv->search_data_model, client); g_clear_object (&client); } else @@ -348,6 +350,8 @@ remove_source (GcalManager *manager, e_cal_data_model_remove_client (priv->e_data_model, e_source_get_uid (source)); + e_cal_data_model_remove_client (priv->search_data_model, + e_source_get_uid (source)); g_hash_table_remove (priv->clients, source); } @@ -418,10 +422,14 @@ gcal_manager_init (GcalManager *self) /* create data model */ priv->e_data_model = e_cal_data_model_new (submit_thread_job); + priv->search_data_model = e_cal_data_model_new (submit_thread_job); e_cal_data_model_set_expand_recurrences (priv->e_data_model, TRUE); e_cal_data_model_set_timezone (priv->e_data_model, priv->system_timezone); + e_cal_data_model_set_expand_recurrences (priv->search_data_model, TRUE); + e_cal_data_model_set_timezone (priv->search_data_model, + priv->system_timezone); } static void @@ -433,6 +441,8 @@ gcal_manager_finalize (GObject *object) if (priv->e_data_model != NULL) g_object_unref (priv->e_data_model); + if (priv->search_data_model != NULL) + g_object_unref (priv->search_data_model); g_hash_table_destroy (priv->clients); } @@ -531,6 +541,20 @@ gcal_manager_set_subscriber (GcalManager *manager, range_start, range_end); } +void +gcal_manager_set_search_subscriber (GcalManager *manager, + ECalDataModelSubscriber *subscriber, + time_t range_start, + time_t range_end) +{ + GcalManagerPrivate *priv; + + priv = gcal_manager_get_instance_private (manager); + e_cal_data_model_subscribe (priv->search_data_model, + subscriber, + range_start, range_end); +} + /** * gcal_manager_set_query: * @manager: A #GcalManager instance @@ -547,7 +571,7 @@ gcal_manager_set_query (GcalManager *manager, GcalManagerPrivate *priv; priv = gcal_manager_get_instance_private (manager); - e_cal_data_model_set_filter (priv->e_data_model, + e_cal_data_model_set_filter (priv->search_data_model, query != NULL ? query : "#t"); } diff --git a/src/gcal-manager.h b/src/gcal-manager.h index 030755c5..f89a462f 100644 --- a/src/gcal-manager.h +++ b/src/gcal-manager.h @@ -71,6 +71,11 @@ void gcal_manager_set_subscriber (GcalManager *manager time_t range_start, time_t range_end); +void gcal_manager_set_search_subscriber (GcalManager *manager, + ECalDataModelSubscriber *subscriber, + time_t range_start, + time_t range_end); + void gcal_manager_set_query (GcalManager *manager, const gchar *query);