diff options
Diffstat (limited to 'addressbook/backend/pas/pas-book.c')
-rw-r--r-- | addressbook/backend/pas/pas-book.c | 44 |
1 files changed, 41 insertions, 3 deletions
diff --git a/addressbook/backend/pas/pas-book.c b/addressbook/backend/pas/pas-book.c index 2601d3d9d0..55caf1dce7 100644 --- a/addressbook/backend/pas/pas-book.c +++ b/addressbook/backend/pas/pas-book.c @@ -23,6 +23,8 @@ struct _PASBookPrivate { PASBackend *backend; Evolution_BookListener listener; PASBookGetVCardFn get_vcard; + PASBookCanWriteFn can_write; + PASBookCanWriteCardFn can_write_card; GList *request_queue; gint idle_id; @@ -154,6 +156,31 @@ impl_Evolution_Book_get_vcard (PortableServer_Servant servant, return retval; } +static CORBA_boolean +impl_Evolution_Book_can_write (PortableServer_Servant servant, + CORBA_Environment *ev) +{ + PASBook *book = PAS_BOOK (bonobo_object_from_servant (servant)); + CORBA_boolean retval; + + retval = (book->priv->can_write) (book); + + return retval; +} + +static CORBA_boolean +impl_Evolution_Book_can_write_card (PortableServer_Servant servant, + const Evolution_CardId id, + CORBA_Environment *ev) +{ + PASBook *book = PAS_BOOK (bonobo_object_from_servant (servant)); + CORBA_boolean retval; + + retval = (book->priv->can_write_card) (book, (const char *) id); + + return retval; +} + static void impl_Evolution_Book_create_card (PortableServer_Servant servant, const Evolution_VCard vcard, @@ -452,7 +479,9 @@ static gboolean pas_book_construct (PASBook *book, PASBackend *backend, Evolution_BookListener listener, - PASBookGetVCardFn get_vcard) + PASBookGetVCardFn get_vcard, + PASBookCanWriteFn can_write, + PASBookCanWriteCardFn can_write_card) { POA_Evolution_Book *servant; CORBA_Environment ev; @@ -462,6 +491,8 @@ pas_book_construct (PASBook *book, g_assert (PAS_IS_BOOK (book)); g_assert (listener != CORBA_OBJECT_NIL); g_assert (get_vcard != NULL); + g_assert (can_write != NULL); + g_assert (can_write_card != NULL); servant = (POA_Evolution_Book *) g_new0 (BonoboObjectServant, 1); servant->vepv = &pas_book_vepv; @@ -497,6 +528,8 @@ pas_book_construct (PASBook *book, book->priv->listener = listener; book->priv->get_vcard = get_vcard; + book->priv->can_write = can_write; + book->priv->can_write_card = can_write_card; book->priv->backend = backend; return TRUE; @@ -508,7 +541,9 @@ pas_book_construct (PASBook *book, PASBook * pas_book_new (PASBackend *backend, Evolution_BookListener listener, - PASBookGetVCardFn get_vcard) + PASBookGetVCardFn get_vcard, + PASBookCanWriteFn can_write, + PASBookCanWriteCardFn can_write_card) { PASBook *book; @@ -517,7 +552,8 @@ pas_book_new (PASBackend *backend, book = gtk_type_new (pas_book_get_type ()); - if (! pas_book_construct (book, backend, listener, get_vcard)) { + if (! pas_book_construct (book, backend, listener, + get_vcard, can_write, can_write_card)) { gtk_object_unref (GTK_OBJECT (book)); return NULL; @@ -563,6 +599,8 @@ pas_book_get_epv (void) epv = g_new0 (POA_Evolution_Book__epv, 1); epv->get_vcard = impl_Evolution_Book_get_vcard; + epv->can_write = impl_Evolution_Book_can_write; + epv->can_write_card = impl_Evolution_Book_can_write_card; epv->create_card = impl_Evolution_Book_create_card; epv->remove_card = impl_Evolution_Book_remove_card; epv->modify_card = impl_Evolution_Book_modify_card; |