diff options
Diffstat (limited to 'addressbook/backend/ebook/e-book-view.c')
-rw-r--r-- | addressbook/backend/ebook/e-book-view.c | 101 |
1 files changed, 47 insertions, 54 deletions
diff --git a/addressbook/backend/ebook/e-book-view.c b/addressbook/backend/ebook/e-book-view.c index e1f4b1623c..e8468e35de 100644 --- a/addressbook/backend/ebook/e-book-view.c +++ b/addressbook/backend/ebook/e-book-view.c @@ -11,7 +11,6 @@ #include <config.h> #include "addressbook.h" -#include "e-card-cursor.h" #include "e-book-view-listener.h" #include "e-book-view.h" #include "e-book.h" @@ -26,13 +25,13 @@ struct _EBookViewPrivate { EBookViewListener *listener; - int responses_queued_id; + int response_id; }; enum { - CARD_CHANGED, - CARD_REMOVED, - CARD_ADDED, + CONTACTS_CHANGED, + CONTACTS_REMOVED, + CONTACTS_ADDED, SEQUENCE_COMPLETE, STATUS_MESSAGE, LAST_SIGNAL @@ -41,47 +40,32 @@ enum { static guint e_book_view_signals [LAST_SIGNAL]; static void -add_book_iterator (gpointer data, gpointer closure) -{ - ECard *card = E_CARD (data); - EBook *book = E_BOOK (closure); - - e_card_set_book (card, book); -} - -static void e_book_view_do_added_event (EBookView *book_view, EBookViewListenerResponse *resp) { - if (book_view->priv->book) - g_list_foreach (resp->cards, add_book_iterator, book_view->priv->book); - - g_signal_emit (book_view, e_book_view_signals [CARD_ADDED], 0, - resp->cards); + g_signal_emit (book_view, e_book_view_signals [CONTACTS_ADDED], 0, + resp->contacts); - g_list_foreach (resp->cards, (GFunc) g_object_unref, NULL); - g_list_free (resp->cards); + g_list_foreach (resp->contacts, (GFunc) g_object_unref, NULL); + g_list_free (resp->contacts); } static void e_book_view_do_modified_event (EBookView *book_view, EBookViewListenerResponse *resp) { - if (book_view->priv->book) - g_list_foreach (resp->cards, add_book_iterator, book_view->priv->book); + g_signal_emit (book_view, e_book_view_signals [CONTACTS_CHANGED], 0, + resp->contacts); - g_signal_emit (book_view, e_book_view_signals [CARD_CHANGED], 0, - resp->cards); - - g_list_foreach (resp->cards, (GFunc) g_object_unref, NULL); - g_list_free (resp->cards); + g_list_foreach (resp->contacts, (GFunc) g_object_unref, NULL); + g_list_free (resp->contacts); } static void e_book_view_do_removed_event (EBookView *book_view, EBookViewListenerResponse *resp) { - g_signal_emit (book_view, e_book_view_signals [CARD_REMOVED], 0, + g_signal_emit (book_view, e_book_view_signals [CONTACTS_REMOVED], 0, resp->ids); g_list_foreach (resp->ids, (GFunc) g_free, NULL); @@ -106,27 +90,20 @@ e_book_view_do_status_message_event (EBookView *book_view, } -/* - * Reading notices out of the EBookViewListener's queue. - */ static void -e_book_view_check_listener_queue (EBookViewListener *listener, EBookView *book_view) +e_book_view_handle_response (EBookViewListener *listener, EBookViewListenerResponse *resp, EBookView *book_view) { - EBookViewListenerResponse *resp; - - resp = e_book_view_listener_pop_response (listener); - if (resp == NULL) return; switch (resp->op) { - case CardAddedEvent: + case ContactsAddedEvent: e_book_view_do_added_event (book_view, resp); break; - case CardModifiedEvent: + case ContactsModifiedEvent: e_book_view_do_modified_event (book_view, resp); break; - case CardsRemovedEvent: + case ContactsRemovedEvent: e_book_view_do_removed_event (book_view, resp); break; case SequenceCompleteEvent: @@ -171,8 +148,8 @@ e_book_view_construct (EBookView *book_view, GNOME_Evolution_Addressbook_BookVie * Create our local BookListener interface. */ book_view->priv->listener = listener; - book_view->priv->responses_queued_id = g_signal_connect (book_view->priv->listener, "responses_queued", - G_CALLBACK (e_book_view_check_listener_queue), book_view); + book_view->priv->response_id = g_signal_connect (book_view->priv->listener, "response", + G_CALLBACK (e_book_view_handle_response), book_view); bonobo_object_ref(BONOBO_OBJECT(book_view->priv->listener)); @@ -209,6 +186,22 @@ e_book_view_set_book (EBookView *book_view, EBook *book) } void +e_book_view_start (EBookView *book_view) +{ + CORBA_Environment ev; + + g_return_if_fail (book_view && E_IS_BOOK_VIEW (book_view)); + + CORBA_exception_init (&ev); + + GNOME_Evolution_Addressbook_BookView_start (book_view->priv->corba_book_view, &ev); + + if (ev._major != CORBA_NO_EXCEPTION) { + g_warning ("corba exception._major = %d\n", ev._major); + } +} + +void e_book_view_stop (EBookView *book_view) { g_return_if_fail (book_view && E_IS_BOOK_VIEW (book_view)); @@ -223,7 +216,7 @@ e_book_view_init (EBookView *book_view) book_view->priv->book = NULL; book_view->priv->corba_book_view = CORBA_OBJECT_NIL; book_view->priv->listener = NULL; - book_view->priv->responses_queued_id = 0; + book_view->priv->response_id = 0; } static void @@ -250,9 +243,9 @@ e_book_view_dispose (GObject *object) } if (book_view->priv->listener) { - if (book_view->priv->responses_queued_id) + if (book_view->priv->response_id) g_signal_handler_disconnect(book_view->priv->listener, - book_view->priv->responses_queued_id); + book_view->priv->response_id); e_book_view_listener_stop (book_view->priv->listener); bonobo_object_unref (BONOBO_OBJECT(book_view->priv->listener)); } @@ -271,31 +264,31 @@ e_book_view_class_init (EBookViewClass *klass) parent_class = g_type_class_ref (G_TYPE_OBJECT); - e_book_view_signals [CARD_CHANGED] = - g_signal_new ("card_changed", + e_book_view_signals [CONTACTS_CHANGED] = + g_signal_new ("contacts_changed", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (EBookViewClass, card_changed), + G_STRUCT_OFFSET (EBookViewClass, contacts_changed), NULL, NULL, e_book_marshal_NONE__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER); - e_book_view_signals [CARD_ADDED] = - g_signal_new ("card_added", + e_book_view_signals [CONTACTS_ADDED] = + g_signal_new ("contacts_added", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (EBookViewClass, card_added), + G_STRUCT_OFFSET (EBookViewClass, contacts_added), NULL, NULL, e_book_marshal_NONE__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER); - e_book_view_signals [CARD_REMOVED] = - g_signal_new ("card_removed", + e_book_view_signals [CONTACTS_REMOVED] = + g_signal_new ("contacts_removed", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (EBookViewClass, card_removed), + G_STRUCT_OFFSET (EBookViewClass, contacts_removed), NULL, NULL, e_book_marshal_NONE__POINTER, G_TYPE_NONE, 1, |