[evolution-data-server/openismus-work: 64/122] Revert "EDataBookView: Adding direct access APIs and GSignals for notifications"



commit 61d0d97189e233e60248d312ebf6696de7add9ab
Author: Tristan Van Berkom <tristanvb openismus com>
Date:   Tue Nov 27 13:13:34 2012 +0900

    Revert "EDataBookView: Adding direct access APIs and GSignals for notifications"
    
    This reverts commit eed5c11fee407491fdb81d7043f423f87f4b470f.

 addressbook/libedata-book/e-data-book-view.c |  578 +++++---------------------
 addressbook/libedata-book/e-data-book-view.h |   18 -
 2 files changed, 96 insertions(+), 500 deletions(-)
---
diff --git a/addressbook/libedata-book/e-data-book-view.c b/addressbook/libedata-book/e-data-book-view.c
index 3703d58..ce78805 100644
--- a/addressbook/libedata-book/e-data-book-view.c
+++ b/addressbook/libedata-book/e-data-book-view.c
@@ -38,7 +38,6 @@
 	((obj), E_TYPE_DATA_BOOK_VIEW, EDataBookViewPrivate))
 
 static void reset_array (GArray *array);
-static gchar **steal_array_data (GArray **array);
 static void ensure_pending_flush_timeout (EDataBookView *view);
 
 G_DEFINE_TYPE (EDataBookView, e_data_book_view, G_TYPE_OBJECT);
@@ -57,7 +56,7 @@ struct _EDataBookViewPrivate {
 
 	gboolean running;
 	gboolean complete;
-	GMutex pending_mutex;
+	GMutex *pending_mutex;
 
 	GArray *adds;
 	GArray *changes;
@@ -69,178 +68,11 @@ struct _EDataBookViewPrivate {
 
 	/* which fields is listener interested in */
 	GHashTable *fields_of_interest;
-
-	GMutex        context_mutex;
-	GMainContext *context;
-	GSource      *idle_source;
-
-	GAsyncQueue  *signal_queue;
 };
 
-enum {
-	VCARDS_ADDED,
-	VCARDS_MODIFIED,
-	UIDS_REMOVED,
-	PROGRESS,
-	COMPLETE,
-	LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL];
-
-/* GObjectClass */
 static void e_data_book_view_dispose (GObject *object);
 static void e_data_book_view_finalize (GObject *object);
 
-/* EDataBookViewClass */
-static void e_data_book_view_vcards_added (EDataBookView *view, const gchar * const *vcards);
-static void e_data_book_view_vcards_modified (EDataBookView *view, const gchar * const *vcards);
-static void e_data_book_view_uids_removed (EDataBookView *view, const gchar * const *uids);
-static void e_data_book_view_progress (EDataBookView *view, guint percent, const gchar *message);
-static void e_data_book_view_complete (EDataBookView *view, const GError *error);
-
-
-/* Signal Data helpers */
-typedef struct {
-	guint   signum;
-
-	gchar **strv;
-	guint   percent;
-	gchar  *message;
-	GError *error;
-} SignalData;
-
-static void
-signal_data_free (SignalData *data)
-{
-	if (data->strv)
-		g_strfreev (data->strv);
-
-	if (data->message)
-		g_free (data->message);
-
-	if (data->error)
-		g_error_free (data->error);
-
-	g_slice_free (SignalData, data);
-}
-
-static void
-signal_data_emit (EDataBookView *view,
-		  SignalData    *data)
-{
-	switch (data->signum) {
-	case VCARDS_ADDED:
-	case VCARDS_MODIFIED:
-	case UIDS_REMOVED:
-		g_signal_emit (view, signals[data->signum], 0, data->strv);
-		break;
-	case PROGRESS:
-		g_signal_emit (view, signals[PROGRESS], 0, data->percent, data->message);
-		break;
-	case COMPLETE:
-		g_signal_emit (view, signals[COMPLETE], 0, data->error);
-		break;
-	default:
-		g_warn_if_reached ();
-		break;
-	}
-}
-
-static gboolean
-signal_in_idle (EDataBookView *view)
-{
-	EDataBookViewPrivate *priv = view->priv;
-	SignalData *data;
-
-	/* First safely remove the idle source from the calling context */
-	g_mutex_lock (&priv->context_mutex);
-
-	g_source_destroy (priv->idle_source);
-	priv->idle_source = NULL;
-
-	g_mutex_unlock (&priv->context_mutex);
-
-	/* Now asynchronously emit the signals, it's possible that additional
-	 * signals are accumulated while emitting these, in which case an
-	 * additional idle will be queued. If we catch the additional signals
-	 * in this round then the next idle might be a no-op
-	 */
-	while ((data = g_async_queue_try_pop (priv->signal_queue)) != NULL) {
-
-		signal_data_emit (view, data);
-		signal_data_free (data);
-	}
-
-	return FALSE;
-}
-
-static void
-push_signal_data (EDataBookView *view,
-		  SignalData    *data)
-{
-	EDataBookViewPrivate *priv = view->priv;
-
-	/* First push the data on the queue */
-	g_async_queue_push (priv->signal_queue, data);
-
-	/* Then ensure the idle source is up */
-	g_mutex_lock (&priv->context_mutex);
-
-	if (priv->idle_source == NULL) {
-		priv->idle_source = g_idle_source_new ();
-
-		g_source_set_callback (priv->idle_source,
-				       (GSourceFunc)signal_in_idle,
-				       view, NULL);
-
-		g_source_attach (priv->idle_source, priv->context);
-		g_source_unref (priv->idle_source);
-	}
-
-	g_mutex_unlock (&priv->context_mutex);
-}
-
-static void
-push_strv_signal_data (EDataBookView *view,
-		       guint          signum,
-		       gchar        **strv)
-{
-	SignalData *data = g_slice_new0 (SignalData);
-
-	data->signum = signum;
-	data->strv = strv;
-
-	push_signal_data (view, data);
-}
-
-static void
-push_progress_signal_data (EDataBookView *view,
-			   guint          percent,
-			   const gchar   *message)
-{
-	SignalData *data = g_slice_new0 (SignalData);
-
-	data->signum = PROGRESS;
-	data->percent = percent;
-	data->message = g_strdup (message);
-
-	push_signal_data (view, data);
-}
-
-static void
-push_complete_signal_data (EDataBookView *view,
-			   const GError  *error)
-{
-	SignalData *data = g_slice_new0 (SignalData);
-	
-	data->signum = COMPLETE;
-	data->error = error ? g_error_copy (error) : NULL;
-
-	push_signal_data (view, data);
-}
-
-
 static void
 e_data_book_view_class_init (EDataBookViewClass *class)
 {
@@ -250,57 +82,6 @@ e_data_book_view_class_init (EDataBookViewClass *class)
 
 	object_class->dispose = e_data_book_view_dispose;
 	object_class->finalize = e_data_book_view_finalize;
-
-	class->vcards_added = e_data_book_view_vcards_added;
-	class->vcards_modified = e_data_book_view_vcards_modified;
-	class->uids_removed = e_data_book_view_uids_removed;
-	class->progress = e_data_book_view_progress;
-	class->complete = e_data_book_view_complete;
-
-	signals[VCARDS_ADDED] = g_signal_new (
-		"vcards-added",
-		G_OBJECT_CLASS_TYPE (object_class),
-		G_SIGNAL_RUN_LAST,
-		G_STRUCT_OFFSET (EDataBookViewClass, vcards_added),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__BOXED,
-		G_TYPE_NONE, 1, G_TYPE_STRV | G_SIGNAL_TYPE_STATIC_SCOPE);
-
-	signals[VCARDS_MODIFIED] = g_signal_new (
-		"vcards-modified",
-		G_OBJECT_CLASS_TYPE (object_class),
-		G_SIGNAL_RUN_LAST,
-		G_STRUCT_OFFSET (EDataBookViewClass, vcards_modified),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__BOXED,
-		G_TYPE_NONE, 1, G_TYPE_STRV | G_SIGNAL_TYPE_STATIC_SCOPE);
-
-	signals[UIDS_REMOVED] = g_signal_new (
-		"uids-removed",
-		G_OBJECT_CLASS_TYPE (object_class),
-		G_SIGNAL_RUN_LAST,
-		G_STRUCT_OFFSET (EDataBookViewClass, uids_removed),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__BOXED,
-		G_TYPE_NONE, 1, G_TYPE_STRV | G_SIGNAL_TYPE_STATIC_SCOPE);
-
-	signals[PROGRESS] = g_signal_new (
-		"progress",
-		G_OBJECT_CLASS_TYPE (object_class),
-		G_SIGNAL_RUN_LAST,
-		G_STRUCT_OFFSET (EDataBookViewClass, progress),
-		NULL, NULL,
-		e_gdbus_marshallers_VOID__UINT_STRING,
-		G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_STRING | G_SIGNAL_TYPE_STATIC_SCOPE);
-
-	signals[COMPLETE] = g_signal_new (
-		"complete",
-		G_OBJECT_CLASS_TYPE (object_class),
-		G_SIGNAL_RUN_LAST,
-		G_STRUCT_OFFSET (EDataBookViewClass, complete),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__BOXED,
-		G_TYPE_NONE, 1, G_TYPE_ERROR | G_SIGNAL_TYPE_STATIC_SCOPE);
 }
 
 static guint
@@ -380,96 +161,38 @@ book_destroyed_cb (gpointer data,
 }
 
 static void
-e_data_book_view_vcards_added (EDataBookView *view,
-			       const gchar * const *vcards)
-{
-	if (view->priv->gdbus_object)
-		e_gdbus_book_view_emit_objects_added (view->priv->gdbus_object, vcards);
-}
-
-static void
-e_data_book_view_vcards_modified (EDataBookView *view,
-				  const gchar * const *vcards)
-{
-	if (view->priv->gdbus_object)
-		e_gdbus_book_view_emit_objects_modified (view->priv->gdbus_object, vcards);
-}
-
-static void
-e_data_book_view_uids_removed (EDataBookView *view,
-			       const gchar * const *uids)
-{
-	if (view->priv->gdbus_object)
-		e_gdbus_book_view_emit_objects_removed (view->priv->gdbus_object, uids);
-}
-
-static void
-e_data_book_view_progress (EDataBookView *view,
-			   guint percent,
-			   const gchar *message)
-{
-	if (view->priv->gdbus_object) {
-		gchar *gdbus_message = NULL;
-
-	        e_gdbus_book_view_emit_progress (
-		        view->priv->gdbus_object, percent,
-			e_util_ensure_gdbus_string (message, &gdbus_message));
-
-		g_free (gdbus_message);
-	}
-}
-
-static void
-e_data_book_view_complete (EDataBookView *view,
-			   const GError *error)
-{
-	gchar **strv_error;
-
-	if (view->priv->gdbus_object) {
-		strv_error = e_gdbus_templates_encode_error (error);
-		e_gdbus_book_view_emit_complete (view->priv->gdbus_object, (const gchar * const *) strv_error);
-		g_strfreev (strv_error);
-	}
-}
-
-static void
 send_pending_adds (EDataBookView *view)
 {
 	EDataBookViewPrivate *priv = view->priv;
-	gchar **strv;
 
 	if (priv->adds->len == 0)
 		return;
 
-	strv = steal_array_data (&priv->adds);
-	push_strv_signal_data (view, VCARDS_ADDED, strv);
+	e_gdbus_book_view_emit_objects_added (view->priv->gdbus_object, (const gchar * const *) priv->adds->data);
+	reset_array (priv->adds);
 }
 
 static void
 send_pending_changes (EDataBookView *view)
 {
 	EDataBookViewPrivate *priv = view->priv;
-	gchar **strv;
 
 	if (priv->changes->len == 0)
 		return;
 
-	strv = steal_array_data (&priv->changes);
-	push_strv_signal_data (view, VCARDS_MODIFIED, strv);
+	e_gdbus_book_view_emit_objects_modified (view->priv->gdbus_object, (const gchar * const *) priv->changes->data);
+	reset_array (priv->changes);
 }
 
 static void
 send_pending_removes (EDataBookView *view)
 {
 	EDataBookViewPrivate *priv = view->priv;
-	gchar **strv;
 
 	if (priv->removes->len == 0)
 		return;
 
-	strv = steal_array_data (&priv->removes);
-	push_strv_signal_data (view, UIDS_REMOVED, strv);
-
+	e_gdbus_book_view_emit_objects_removed (view->priv->gdbus_object, (const gchar * const *) priv->removes->data);
 	reset_array (priv->removes);
 }
 
@@ -479,7 +202,7 @@ pending_flush_timeout_cb (gpointer data)
 	EDataBookView *view = data;
 	EDataBookViewPrivate *priv = view->priv;
 
-	g_mutex_lock (&priv->pending_mutex);
+	g_mutex_lock (priv->pending_mutex);
 
 	priv->flush_id = 0;
 
@@ -487,7 +210,7 @@ pending_flush_timeout_cb (gpointer data)
 	send_pending_changes (view);
 	send_pending_removes (view);
 
-	g_mutex_unlock (&priv->pending_mutex);
+	g_mutex_unlock (priv->pending_mutex);
 
 	return FALSE;
 }
@@ -599,9 +322,29 @@ impl_DataBookView_set_fields_of_interest (EGdbusBookView *object,
                                           const gchar * const *in_fields_of_interest,
                                           EDataBookView *view)
 {
+	EDataBookViewPrivate *priv;
+	gint ii;
+
 	g_return_val_if_fail (in_fields_of_interest != NULL, TRUE);
 
-	e_data_book_view_set_fields_of_interest (view, in_fields_of_interest);
+	priv = view->priv;
+
+	if (priv->fields_of_interest)
+		g_hash_table_destroy (priv->fields_of_interest);
+	priv->fields_of_interest = NULL;
+
+	for (ii = 0; in_fields_of_interest[ii]; ii++) {
+		const gchar *field = in_fields_of_interest[ii];
+
+		if (!*field)
+			continue;
+
+		if (!priv->fields_of_interest)
+			priv->fields_of_interest = g_hash_table_new_full (str_ic_hash, str_ic_equal, g_free, NULL);
+
+		g_hash_table_insert (priv->fields_of_interest, g_strdup (field), GINT_TO_POINTER (1));
+	}
+
 	e_gdbus_book_view_complete_set_fields_of_interest (object, invocation, NULL);
 
 	return TRUE;
@@ -623,16 +366,6 @@ reset_array (GArray *array)
 	g_array_set_size (array, 0);
 }
 
-static gchar **
-steal_array_data (GArray **array)
-{
-	gchar **data = (gchar **)g_array_free (*array, FALSE);
-
-	*array = g_array_sized_new (TRUE, TRUE, sizeof (gchar *), THRESHOLD_ITEMS * 2);
-
-	return data;
-}
-
 static gboolean
 id_is_in_view (EDataBookView *book_view,
                const gchar *id)
@@ -673,7 +406,7 @@ e_data_book_view_notify_update (EDataBookView *book_view,
 	if (!priv->running)
 		return;
 
-	g_mutex_lock (&priv->pending_mutex);
+	g_mutex_lock (priv->pending_mutex);
 
 	id = e_contact_get_const ((EContact *) contact, E_CONTACT_UID);
 
@@ -698,7 +431,7 @@ e_data_book_view_notify_update (EDataBookView *book_view,
 		/* else nothing; we're removing a card that wasn't there */
 	}
 
-	g_mutex_unlock (&priv->pending_mutex);
+	g_mutex_unlock (priv->pending_mutex);
 }
 
 /**
@@ -726,7 +459,7 @@ e_data_book_view_notify_update_vcard (EDataBookView *book_view,
 	if (!priv->running)
 		return;
 
-	g_mutex_lock (&priv->pending_mutex);
+	g_mutex_lock (priv->pending_mutex);
 
 	contact = e_contact_new_from_vcard_with_uid (vcard, id);
 	currently_in_view = id_is_in_view (book_view, id);
@@ -746,7 +479,7 @@ e_data_book_view_notify_update_vcard (EDataBookView *book_view,
 	/* Do this last so that id is still valid when notify_ is called */
 	g_object_unref (contact);
 
-	g_mutex_unlock (&priv->pending_mutex);
+	g_mutex_unlock (priv->pending_mutex);
 }
 
 /**
@@ -781,7 +514,7 @@ e_data_book_view_notify_update_prefiltered_vcard (EDataBookView *book_view,
 	if (!priv->running)
 		return;
 
-	g_mutex_lock (&priv->pending_mutex);
+	g_mutex_lock (priv->pending_mutex);
 
 	currently_in_view = id_is_in_view (book_view, id);
 
@@ -790,7 +523,7 @@ e_data_book_view_notify_update_prefiltered_vcard (EDataBookView *book_view,
 	else
 		notify_add (book_view, id, vcard);
 
-	g_mutex_unlock (&priv->pending_mutex);
+	g_mutex_unlock (priv->pending_mutex);
 }
 
 /**
@@ -808,12 +541,12 @@ e_data_book_view_notify_remove (EDataBookView *book_view,
 	if (!book_view->priv->running)
 		return;
 
-	g_mutex_lock (&book_view->priv->pending_mutex);
+	g_mutex_lock (book_view->priv->pending_mutex);
 
 	if (id_is_in_view (book_view, id))
 		notify_remove (book_view, id);
 
-	g_mutex_unlock (&book_view->priv->pending_mutex);
+	g_mutex_unlock (book_view->priv->pending_mutex);
 }
 
 /**
@@ -830,21 +563,24 @@ e_data_book_view_notify_complete (EDataBookView *book_view,
                                   const GError *error)
 {
 	EDataBookViewPrivate *priv = book_view->priv;
+	gchar **strv_error;
 
 	if (!priv->running)
 		return;
 	/* View is complete */
 	priv->complete = TRUE;
 
-	g_mutex_lock (&priv->pending_mutex);
+	g_mutex_lock (priv->pending_mutex);
 
 	send_pending_adds (book_view);
 	send_pending_changes (book_view);
 	send_pending_removes (book_view);
 
-	g_mutex_unlock (&priv->pending_mutex);
+	g_mutex_unlock (priv->pending_mutex);
 
-	push_complete_signal_data (book_view, error);
+	strv_error = e_gdbus_templates_encode_error (error);
+	e_gdbus_book_view_emit_complete (priv->gdbus_object, (const gchar * const *) strv_error);
+	g_strfreev (strv_error);
 }
 
 /**
@@ -864,11 +600,16 @@ e_data_book_view_notify_progress (EDataBookView *book_view,
                                   guint percent,
                                   const gchar *message)
 {
+	gchar *gdbus_message = NULL;
 
 	if (!book_view->priv->running)
 		return;
 
-	push_progress_signal_data (book_view, percent, message);
+	e_gdbus_book_view_emit_progress (
+		book_view->priv->gdbus_object, percent,
+		e_util_ensure_gdbus_string (message, &gdbus_message));
+
+	g_free (gdbus_message);
 }
 
 /**
@@ -897,30 +638,64 @@ e_data_book_view_new (EDataBook *book,
 	priv->backend = g_object_ref (e_data_book_get_backend (book));
 	priv->card_query = e_util_utf8_make_valid (card_query);
 	priv->card_sexp = card_sexp;
-	priv->context = g_main_context_ref_thread_default ();
-	g_mutex_init (&priv->context_mutex);
 
 	return view;
 }
 
+static gpointer
+bookview_start_thread (gpointer data)
+{
+	EDataBookView *book_view = data;
+
+	if (book_view->priv->running)
+		e_book_backend_start_book_view (book_view->priv->backend, book_view);
+	g_object_unref (book_view);
+
+	return NULL;
+}
+
 static gboolean
 impl_DataBookView_start (EGdbusBookView *object,
                          GDBusMethodInvocation *invocation,
                          EDataBookView *book_view)
 {
-	e_data_book_view_start (book_view);
+	GThread *thread;
+
+	book_view->priv->running = TRUE;
+	book_view->priv->complete = FALSE;
+
+	thread = g_thread_new (NULL, bookview_start_thread, g_object_ref (book_view));
+	g_thread_unref (thread);
 
 	e_gdbus_book_view_complete_start (object, invocation, NULL);
 
 	return TRUE;
 }
 
+static gpointer
+bookview_stop_thread (gpointer data)
+{
+	EDataBookView *book_view = data;
+
+	if (!book_view->priv->running)
+		e_book_backend_stop_book_view (book_view->priv->backend, book_view);
+	g_object_unref (book_view);
+
+	return NULL;
+}
+
 static gboolean
 impl_DataBookView_stop (EGdbusBookView *object,
                         GDBusMethodInvocation *invocation,
                         EDataBookView *book_view)
 {
-	e_data_book_view_stop (book_view);
+	GThread *thread;
+
+	book_view->priv->running = FALSE;
+	book_view->priv->complete = FALSE;
+
+	thread = g_thread_new (NULL, bookview_stop_thread, g_object_ref (book_view));
+	g_thread_unref (thread);
 
 	e_gdbus_book_view_complete_stop (object, invocation, NULL);
 
@@ -933,7 +708,7 @@ impl_DataBookView_setFlags (EGdbusBookView *object,
                             EBookClientViewFlags flags,
                             EDataBookView *book_view)
 {
-	e_data_book_view_set_flags (book_view, flags);
+	book_view->priv->flags = flags;
 
 	e_gdbus_book_view_complete_set_flags (object, invocation, NULL);
 
@@ -947,7 +722,9 @@ impl_DataBookView_dispose (EGdbusBookView *object,
 {
 	e_gdbus_book_view_complete_dispose (object, invocation, NULL);
 
-	e_data_book_view_delete (book_view);
+	e_book_backend_stop_book_view (book_view->priv->backend, book_view);
+	book_view->priv->running = FALSE;
+	e_book_backend_remove_book_view (book_view->priv->backend, book_view);
 
 	g_object_unref (book_view);
 
@@ -981,8 +758,7 @@ e_data_book_view_init (EDataBookView *book_view)
 	book_view->priv->fields_of_interest = NULL;
 	book_view->priv->running = FALSE;
 	book_view->priv->complete = FALSE;
-
-	g_mutex_init (&book_view->priv->pending_mutex);
+	book_view->priv->pending_mutex = g_mutex_new ();
 
 	/* THRESHOLD_ITEMS * 2 because we store UID and vcard */
 	book_view->priv->adds = g_array_sized_new (
@@ -999,8 +775,6 @@ e_data_book_view_init (EDataBookView *book_view)
 		(GDestroyNotify) NULL);
 
 	book_view->priv->flush_id = 0;
-
-	book_view->priv->signal_queue = g_async_queue_new ();
 }
 
 static void
@@ -1008,7 +782,6 @@ e_data_book_view_dispose (GObject *object)
 {
 	EDataBookView *book_view = E_DATA_BOOK_VIEW (object);
 	EDataBookViewPrivate *priv = book_view->priv;
-	SignalData *data;
 
 	if (priv->book) {
 		/* Remove the weak reference */
@@ -1026,27 +799,14 @@ e_data_book_view_dispose (GObject *object)
 		priv->card_sexp = NULL;
 	}
 
-	g_mutex_lock (&priv->pending_mutex);
+	g_mutex_lock (priv->pending_mutex);
+
 	if (priv->flush_id) {
 		g_source_remove (priv->flush_id);
 		priv->flush_id = 0;
 	}
-	g_mutex_unlock (&priv->pending_mutex);
 
-	g_mutex_lock (&priv->context_mutex);
-	if (priv->idle_source) {
-		g_source_destroy (priv->idle_source);
-		priv->idle_source = NULL;
-	}
-	g_mutex_unlock (&priv->context_mutex);
-
-	if (priv->context) {
-		g_main_context_unref (priv->context);
-		priv->context = NULL;
-	}
-
-	while ((data = g_async_queue_try_pop (priv->signal_queue)) != NULL)
-		signal_data_free (data);
+	g_mutex_unlock (priv->pending_mutex);
 
 	G_OBJECT_CLASS (e_data_book_view_parent_class)->dispose (object);
 }
@@ -1068,13 +828,10 @@ e_data_book_view_finalize (GObject *object)
 	if (priv->fields_of_interest)
 		g_hash_table_destroy (priv->fields_of_interest);
 
-	g_mutex_clear (&priv->context_mutex);
-	g_mutex_clear (&priv->pending_mutex);
+	g_mutex_free (priv->pending_mutex);
 
 	g_hash_table_destroy (priv->ids);
 
-	g_async_queue_unref (priv->signal_queue);
-
 	G_OBJECT_CLASS (e_data_book_view_parent_class)->finalize (object);
 }
 
@@ -1195,146 +952,3 @@ e_data_book_view_unref (EDataBookView *book_view)
 {
 	g_object_unref (book_view);
 }
-
-/**
- * e_data_book_view_set_fields_of_interest:
- * @book_view: an #EDataBookView
- * @fields_of_interest: A %NULL terminated array of contact field names
- *
- * Set's the fields of interest for @book_view
- *
- * Since: 3.8
- */
-void
-e_data_book_view_set_fields_of_interest (EDataBookView *book_view,
-					 const gchar * const *fields_of_interest)
-{
-	EDataBookViewPrivate *priv;
-	gint ii;
-
-	g_return_if_fail (E_IS_DATA_BOOK_VIEW (book_view));
-	g_return_if_fail (fields_of_interest != NULL);
-
-	priv = book_view->priv;
-
-	if (priv->fields_of_interest)
-		g_hash_table_destroy (priv->fields_of_interest);
-	priv->fields_of_interest = NULL;
-
-	for (ii = 0; fields_of_interest[ii]; ii++) {
-		const gchar *field = fields_of_interest[ii];
-
-		if (!*field)
-			continue;
-
-		if (!priv->fields_of_interest)
-			priv->fields_of_interest = g_hash_table_new_full (str_ic_hash, str_ic_equal, g_free, NULL);
-
-		g_hash_table_insert (priv->fields_of_interest, g_strdup (field), GINT_TO_POINTER (1));
-	}
-}
-
-/**
- * e_data_book_view_set_flags:
- * @book_view: an #EDataBookView
- * @flags: the #EBookClientViewFlags to set
- *
- * Set's the @flags on @book_view
- *
- * Since: 3.8
- */
-void
-e_data_book_view_set_flags (EDataBookView *book_view,
-			    EBookClientViewFlags flags)
-{
-	g_return_if_fail (E_IS_DATA_BOOK_VIEW (book_view));
-
-	book_view->priv->flags = flags;
-}
-
-static gpointer
-bookview_start_thread (gpointer data)
-{
-	EDataBookView *book_view = data;
-
-	if (book_view->priv->running)
-		e_book_backend_start_book_view (book_view->priv->backend, book_view);
-	g_object_unref (book_view);
-
-	return NULL;
-}
-
-/**
- * e_data_book_view_start:
- * @book_view: an #EDataBookView
- *
- * Starts the @book_view thread.
- *
- * Since: 3.8
- */
-void
-e_data_book_view_start (EDataBookView *book_view)
-{
-	GThread *thread;
-
-	g_return_if_fail (E_IS_DATA_BOOK_VIEW (book_view));
-
-	book_view->priv->running = TRUE;
-	book_view->priv->complete = FALSE;
-
-	thread = g_thread_new (NULL, bookview_start_thread, g_object_ref (book_view));
-	g_thread_unref (thread);
-}
-
-static gpointer
-bookview_stop_thread (gpointer data)
-{
-	EDataBookView *book_view = data;
-
-	if (!book_view->priv->running)
-		e_book_backend_stop_book_view (book_view->priv->backend, book_view);
-	g_object_unref (book_view);
-
-	return NULL;
-}
-
-/**
- * e_data_book_view_stop:
- * @book_view: an #EDataBookView
- *
- * Stops the @book_view thread.
- *
- * Since: 3.8
- */
-void
-e_data_book_view_stop (EDataBookView *book_view)
-{
-	GThread *thread;
-
-	g_return_if_fail (E_IS_DATA_BOOK_VIEW (book_view));
-
-	book_view->priv->running = FALSE;
-	book_view->priv->complete = FALSE;
-
-	thread = g_thread_new (NULL, bookview_stop_thread, g_object_ref (book_view));
-	g_thread_unref (thread);
-}
-
-/**
- * e_data_book_view_delete:
- * @book_view: an #EDataBookView
- *
- * Delete's the book view, this causes the view to stop
- * and for it to be removed from it's owning backend.
- *
- * Since: 3.8
- */
-void
-e_data_book_view_delete (EDataBookView *book_view)
-{
-	g_return_if_fail (E_IS_DATA_BOOK_VIEW (book_view));
-
-	e_book_backend_stop_book_view (book_view->priv->backend, book_view);
-	book_view->priv->running = FALSE;
-	e_book_backend_remove_book_view (book_view->priv->backend, book_view);
-}
diff --git a/addressbook/libedata-book/e-data-book-view.h b/addressbook/libedata-book/e-data-book-view.h
index 39fe621..63e9dfc 100644
--- a/addressbook/libedata-book/e-data-book-view.h
+++ b/addressbook/libedata-book/e-data-book-view.h
@@ -55,16 +55,6 @@ struct _EDataBookView {
 
 struct _EDataBookViewClass {
 	GObjectClass parent;
-
-	/*
-	 * Signals.
-	 */
-	void (* vcards_added)		(EDataBookView *view, const gchar * const *vcards);
-	void (* vcards_modified)	(EDataBookView *view, const gchar * const *vcards);
-	void (* uids_removed)		(EDataBookView *view, const gchar * const *uids);
-
-	void (* progress)		(EDataBookView *view, guint percent, const gchar *message);
-	void (* complete)		(EDataBookView *view, const GError *error);
 };
 
 GType			e_data_book_view_get_type		(void);
@@ -86,14 +76,6 @@ void			e_data_book_view_notify_progress        (EDataBookView *book_view, guint
 void			e_data_book_view_ref			(EDataBookView *book_view);
 void			e_data_book_view_unref			(EDataBookView *book_view);
 
-void                    e_data_book_view_set_fields_of_interest (EDataBookView *book_view,
-								 const gchar * const *fields_of_interest);
-void                    e_data_book_view_set_flags              (EDataBookView *book_view,
-								 EBookClientViewFlags flags);
-void                    e_data_book_view_start                  (EDataBookView *book_view);
-void                    e_data_book_view_stop                   (EDataBookView *book_view);
-void                    e_data_book_view_delete                 (EDataBookView *book_view);
-
 /* const */ GHashTable *e_data_book_view_get_fields_of_interest	(EDataBookView *view);
 
 G_END_DECLS



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