diff options
author | JP Rosevear <jpr@src.gnome.org> | 2003-11-07 13:52:24 +0800 |
---|---|---|
committer | JP Rosevear <jpr@src.gnome.org> | 2003-11-07 13:52:24 +0800 |
commit | 200606f92810d3de322e5ee96f8326e1a656f8bb (patch) | |
tree | da0dc27f5311128dcb6e7eb6400931e45743372e /addressbook/backend/ebook/e-book-view-listener.c | |
parent | e5472b4cc9a4bb80b89437a16f8b77943ea35555 (diff) | |
download | gsoc2013-evolution-200606f92810d3de322e5ee96f8326e1a656f8bb.tar gsoc2013-evolution-200606f92810d3de322e5ee96f8326e1a656f8bb.tar.gz gsoc2013-evolution-200606f92810d3de322e5ee96f8326e1a656f8bb.tar.bz2 gsoc2013-evolution-200606f92810d3de322e5ee96f8326e1a656f8bb.tar.lz gsoc2013-evolution-200606f92810d3de322e5ee96f8326e1a656f8bb.tar.xz gsoc2013-evolution-200606f92810d3de322e5ee96f8326e1a656f8bb.tar.zst gsoc2013-evolution-200606f92810d3de322e5ee96f8326e1a656f8bb.zip |
Various changes to merge in evolution-data-server reliance.
svn path=/trunk/; revision=23206
Diffstat (limited to 'addressbook/backend/ebook/e-book-view-listener.c')
-rw-r--r-- | addressbook/backend/ebook/e-book-view-listener.c | 314 |
1 files changed, 0 insertions, 314 deletions
diff --git a/addressbook/backend/ebook/e-book-view-listener.c b/addressbook/backend/ebook/e-book-view-listener.c deleted file mode 100644 index 3ab2ff2708..0000000000 --- a/addressbook/backend/ebook/e-book-view-listener.c +++ /dev/null @@ -1,314 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * Exports the BookViewListener interface. Maintains a queue of messages - * which come in on the interface. - * - * Author: - * Nat Friedman (nat@ximian.com) - * - * Copyright 2000, Ximian, Inc. - */ - -#include <config.h> -#include <bonobo/bonobo-main.h> -#include "e-book-view-listener.h" -#include "e-book-view.h" -#include "e-contact.h" -#include "e-book-marshal.h" - -static EBookViewStatus e_book_view_listener_convert_status (GNOME_Evolution_Addressbook_CallStatus status); - -enum { - RESPONSE, - LAST_SIGNAL -}; - -static guint e_book_view_listener_signals [LAST_SIGNAL]; - -static BonoboObjectClass *parent_class; - -struct _EBookViewListenerPrivate { - guint stopped : 1; -}; - -static void -e_book_view_listener_queue_response (EBookViewListener *listener, - EBookViewListenerResponse *response) -{ - if (response == NULL) - return; - - if (listener->priv->stopped) { - /* Free response and return */ - g_list_foreach (response->ids, (GFunc)g_free, NULL); - g_list_free (response->ids); - g_list_foreach (response->contacts, (GFunc) g_object_unref, NULL); - g_list_free (response->contacts); - g_free (response->message); - g_free (response); - return; - } - - g_signal_emit (listener, e_book_view_listener_signals [RESPONSE], 0, response); -} - -/* Add, Remove, Modify */ -static void -e_book_view_listener_queue_status_event (EBookViewListener *listener, - EBookViewListenerOperation op, - EBookViewStatus status) -{ - EBookViewListenerResponse *resp; - - if (listener->priv->stopped) - return; - - resp = g_new0 (EBookViewListenerResponse, 1); - - resp->op = op; - resp->status = status; - - e_book_view_listener_queue_response (listener, resp); -} - -/* Add, Remove, Modify */ -static void -e_book_view_listener_queue_idlist_event (EBookViewListener *listener, - EBookViewListenerOperation op, - const GNOME_Evolution_Addressbook_ContactIdList *ids) -{ - EBookViewListenerResponse *resp; - int i; - - if (listener->priv->stopped) - return; - - resp = g_new0 (EBookViewListenerResponse, 1); - - resp->op = op; - resp->status = E_BOOK_VIEW_STATUS_OK; - - for (i = 0; i < ids->_length; i ++) { - resp->ids = g_list_prepend (resp->ids, g_strdup (ids->_buffer[i])); - } - - e_book_view_listener_queue_response (listener, resp); -} - -/* Add, Remove, Modify */ -static void -e_book_view_listener_queue_sequence_event (EBookViewListener *listener, - EBookViewListenerOperation op, - const GNOME_Evolution_Addressbook_VCardList *vcards) -{ - EBookViewListenerResponse *resp; - int i; - - if (listener->priv->stopped) - return; - - resp = g_new0 (EBookViewListenerResponse, 1); - - resp->op = op; - resp->status = E_BOOK_VIEW_STATUS_OK; - - for ( i = 0; i < vcards->_length; i++ ) { - resp->contacts = g_list_append(resp->contacts, e_contact_new_from_vcard (vcards->_buffer[i])); - } - - e_book_view_listener_queue_response (listener, resp); -} - -/* Status Message */ -static void -e_book_view_listener_queue_message_event (EBookViewListener *listener, - EBookViewListenerOperation op, - const char *message) -{ - EBookViewListenerResponse *resp; - - if (listener->priv->stopped) - return; - - resp = g_new0 (EBookViewListenerResponse, 1); - - resp->op = op; - resp->status = E_BOOK_VIEW_STATUS_OK; - resp->message = g_strdup(message); - - e_book_view_listener_queue_response (listener, resp); -} - -static void -impl_BookViewListener_notify_contacts_added (PortableServer_Servant servant, - const GNOME_Evolution_Addressbook_VCardList *vcards, - CORBA_Environment *ev) -{ - EBookViewListener *listener = E_BOOK_VIEW_LISTENER (bonobo_object (servant)); - - printf ("impl_BookViewListener_notify_contacts_added\n"); - - e_book_view_listener_queue_sequence_event ( - listener, ContactsAddedEvent, vcards); -} - -static void -impl_BookViewListener_notify_contacts_removed (PortableServer_Servant servant, - const GNOME_Evolution_Addressbook_ContactIdList *ids, - CORBA_Environment *ev) -{ - EBookViewListener *listener = E_BOOK_VIEW_LISTENER (bonobo_object (servant)); - - printf ("impl_BookViewListener_notify_contacts_removed\n"); - - e_book_view_listener_queue_idlist_event (listener, ContactsRemovedEvent, ids); -} - -static void -impl_BookViewListener_notify_contacts_changed (PortableServer_Servant servant, - const GNOME_Evolution_Addressbook_VCardList *vcards, - CORBA_Environment *ev) -{ - EBookViewListener *listener = E_BOOK_VIEW_LISTENER (bonobo_object (servant)); - - printf ("impl_BookViewListener_notify_contacts_changed\n"); - - e_book_view_listener_queue_sequence_event ( - listener, ContactsModifiedEvent, vcards); -} - -static void -impl_BookViewListener_notify_sequence_complete (PortableServer_Servant servant, - const GNOME_Evolution_Addressbook_CallStatus status, - CORBA_Environment *ev) -{ - EBookViewListener *listener = E_BOOK_VIEW_LISTENER (bonobo_object (servant)); - - printf ("impl_BookViewListener_notify_sequence_complete\n"); - - e_book_view_listener_queue_status_event (listener, SequenceCompleteEvent, - e_book_view_listener_convert_status (status)); -} - -static void -impl_BookViewListener_notify_progress (PortableServer_Servant servant, - const char *message, - const CORBA_short percent, - CORBA_Environment *ev) -{ - EBookViewListener *listener = E_BOOK_VIEW_LISTENER (bonobo_object (servant)); - - printf ("impl_BookViewListener_notify_progress\n"); - - e_book_view_listener_queue_message_event (listener, StatusMessageEvent, message); -} - -static EBookViewStatus -e_book_view_listener_convert_status (const GNOME_Evolution_Addressbook_CallStatus status) -{ - switch (status) { - case GNOME_Evolution_Addressbook_Success: - return E_BOOK_VIEW_STATUS_OK; - case GNOME_Evolution_Addressbook_SearchTimeLimitExceeded: - return E_BOOK_VIEW_STATUS_TIME_LIMIT_EXCEEDED; - case GNOME_Evolution_Addressbook_SearchSizeLimitExceeded: - return E_BOOK_VIEW_STATUS_SIZE_LIMIT_EXCEEDED; - case GNOME_Evolution_Addressbook_InvalidQuery: - return E_BOOK_VIEW_ERROR_INVALID_QUERY; - case GNOME_Evolution_Addressbook_QueryRefused: - return E_BOOK_VIEW_ERROR_QUERY_REFUSED; - case GNOME_Evolution_Addressbook_OtherError: - default: - return E_BOOK_VIEW_ERROR_OTHER_ERROR; - } -} - -static void -e_book_view_listener_construct (EBookViewListener *listener) -{ - /* nothing needed here */ -} - -/** - * e_book_view_listener_new: - * @book: the #EBookView for which the listener is to be bound - * - * Creates and returns a new #EBookViewListener for the book. - * - * Returns: a new #EBookViewListener - */ -EBookViewListener * -e_book_view_listener_new () -{ - EBookViewListener *listener; - - listener = g_object_new (E_TYPE_BOOK_VIEW_LISTENER, - "poa", bonobo_poa_get_threaded (ORBIT_THREAD_HINT_ALL_AT_IDLE, NULL), - NULL); - - e_book_view_listener_construct (listener); - - return listener; -} - -static void -e_book_view_listener_init (EBookViewListener *listener) -{ - listener->priv = g_new0 (EBookViewListenerPrivate, 1); - listener->priv->stopped = FALSE; -} - -void -e_book_view_listener_stop (EBookViewListener *listener) -{ - g_return_if_fail (E_IS_BOOK_VIEW_LISTENER (listener)); - listener->priv->stopped = TRUE; -} - -static void -e_book_view_listener_dispose (GObject *object) -{ - EBookViewListener *listener = E_BOOK_VIEW_LISTENER (object); - - if (listener->priv) { - g_free (listener->priv); - listener->priv = NULL; - } - - if (G_OBJECT_CLASS (parent_class)->dispose) - G_OBJECT_CLASS (parent_class)->dispose (object); -} - -static void -e_book_view_listener_class_init (EBookViewListenerClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - POA_GNOME_Evolution_Addressbook_BookViewListener__epv *epv; - - parent_class = g_type_class_ref (BONOBO_TYPE_OBJECT); - - e_book_view_listener_signals [RESPONSE] = - g_signal_new ("response", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (EBookViewListenerClass, response), - NULL, NULL, - e_book_marshal_NONE__POINTER, - G_TYPE_NONE, - 1, G_TYPE_POINTER); - - object_class->dispose = e_book_view_listener_dispose; - - epv = &klass->epv; - epv->notifyContactsChanged = impl_BookViewListener_notify_contacts_changed; - epv->notifyContactsRemoved = impl_BookViewListener_notify_contacts_removed; - epv->notifyContactsAdded = impl_BookViewListener_notify_contacts_added; - epv->notifySequenceComplete = impl_BookViewListener_notify_sequence_complete; - epv->notifyProgress = impl_BookViewListener_notify_progress; -} - -BONOBO_TYPE_FUNC_FULL ( - EBookViewListener, - GNOME_Evolution_Addressbook_BookViewListener, - BONOBO_TYPE_OBJECT, - e_book_view_listener); |