aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/pas/pas-book.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/backend/pas/pas-book.c')
-rw-r--r--addressbook/backend/pas/pas-book.c44
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;