aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/ebook/e-book.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/backend/ebook/e-book.c')
-rw-r--r--addressbook/backend/ebook/e-book.c21
1 files changed, 21 insertions, 0 deletions
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);