diff options
Diffstat (limited to 'addressbook/backend/ebook')
-rw-r--r-- | addressbook/backend/ebook/e-book-listener.c | 25 | ||||
-rw-r--r-- | addressbook/backend/ebook/e-book-listener.h | 4 | ||||
-rw-r--r-- | addressbook/backend/ebook/e-book.c | 21 | ||||
-rw-r--r-- | addressbook/backend/ebook/e-book.h | 5 |
4 files changed, 53 insertions, 2 deletions
diff --git a/addressbook/backend/ebook/e-book-listener.c b/addressbook/backend/ebook/e-book-listener.c index 0aaf5483a5..e1d47d70d2 100644 --- a/addressbook/backend/ebook/e-book-listener.c +++ b/addressbook/backend/ebook/e-book-listener.c @@ -188,6 +188,20 @@ e_book_listener_queue_link_status (EBookListener *listener, } static void +e_book_listener_queue_writable_status (EBookListener *listener, + gboolean writable) +{ + EBookListenerResponse *resp; + + resp = g_new0 (EBookListenerResponse, 1); + + resp->op = WritableStatusEvent; + resp->writable = writable; + + e_book_listener_queue_response (listener, resp); +} + +static void e_book_listener_queue_authentication_response (EBookListener *listener, EBookStatus status) { @@ -394,6 +408,16 @@ impl_BookListener_report_connection_status (PortableServer_Servant servant, listener, connected); } +static void +impl_BookListener_report_writable (PortableServer_Servant servant, + const CORBA_boolean writable, + CORBA_Environment *ev) +{ + EBookListener *listener = E_BOOK_LISTENER (bonobo_object_from_servant (servant)); + + e_book_listener_queue_writable_status (listener, writable); +} + /** * e_book_listener_check_pending: * @listener: the #EBookListener @@ -627,6 +651,7 @@ e_book_listener_get_epv (void) epv->notifyChangesRequested = impl_BookListener_respond_get_changes; epv->notifyConnectionStatus = impl_BookListener_report_connection_status; + epv->notifyWritable = impl_BookListener_report_writable; return epv; } diff --git a/addressbook/backend/ebook/e-book-listener.h b/addressbook/backend/ebook/e-book-listener.h index 0390f7fcb2..84cdfecced 100644 --- a/addressbook/backend/ebook/e-book-listener.h +++ b/addressbook/backend/ebook/e-book-listener.h @@ -52,6 +52,7 @@ typedef enum { /* Async events */ LinkStatusEvent, + WritableStatusEvent, OpenProgressEvent, } EBookListenerOperation; @@ -80,6 +81,9 @@ typedef struct { /* For LinkStatusEvent */ gboolean connected; + /* For WritableStatusEvent */ + gboolean writable; + /* For Card[Added|Removed|Modified]Event */ char *id; } EBookListenerResponse; diff --git a/addressbook/backend/ebook/e-book.c b/addressbook/backend/ebook/e-book.c index 2a02b78fbf..25fb42a37b 100644 --- a/addressbook/backend/ebook/e-book.c +++ b/addressbook/backend/ebook/e-book.c @@ -50,6 +50,7 @@ struct _EBookPrivate { enum { OPEN_PROGRESS, + WRITABLE_STATUS, LINK_STATUS, LAST_SIGNAL }; @@ -336,6 +337,14 @@ e_book_do_link_event (EBook *book, } static void +e_book_do_writable_event (EBook *book, + EBookListenerResponse *resp) +{ + gtk_signal_emit (GTK_OBJECT (book), e_book_signals [WRITABLE_STATUS], + resp->writable); +} + +static void e_book_do_response_get_supported_fields (EBook *book, EBookListenerResponse *resp) { @@ -398,6 +407,9 @@ e_book_check_listener_queue (EBookListener *listener, EBook *book) case LinkStatusEvent: e_book_do_link_event (book, resp); break; + case WritableStatusEvent: + e_book_do_writable_event (book, resp); + break; default: g_error ("EBook: Unknown operation %d in listener queue!\n", resp->op); @@ -1184,6 +1196,15 @@ e_book_class_init (EBookClass *klass) GTK_TYPE_NONE, 1, GTK_TYPE_BOOL); + e_book_signals [WRITABLE_STATUS] = + gtk_signal_new ("writable_status", + GTK_RUN_LAST, + object_class->type, + GTK_SIGNAL_OFFSET (EBookClass, writable_status), + gtk_marshal_NONE__BOOL, + GTK_TYPE_NONE, 1, + GTK_TYPE_BOOL); + gtk_object_class_add_signals (object_class, e_book_signals, LAST_SIGNAL); diff --git a/addressbook/backend/ebook/e-book.h b/addressbook/backend/ebook/e-book.h index 0713bc6bdb..9e25c9d9a5 100644 --- a/addressbook/backend/ebook/e-book.h +++ b/addressbook/backend/ebook/e-book.h @@ -35,8 +35,9 @@ struct _EBookClass { /* * Signals. */ - void (* open_progress) (EBook *book, const char *msg, short percent); - void (* link_status) (EBook *book, gboolean connected); + void (* open_progress) (EBook *book, const char *msg, short percent); + void (* link_status) (EBook *book, gboolean connected); + void (* writable_status) (EBook *book, gboolean writable); }; /* Callbacks for asynchronous functions. */ |