[evolution-data-server] Bug #622884 - Migrate from dbus-glib to glib's GDBus
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Bug #622884 - Migrate from dbus-glib to glib's GDBus
- Date: Wed, 28 Jul 2010 11:50:30 +0000 (UTC)
commit 7924f705ec597b77963d2d225c0a30fbbd227fe6
Author: Milan Crha <mcrha redhat com>
Date: Wed Jul 28 13:49:04 2010 +0200
Bug #622884 - Migrate from dbus-glib to glib's GDBus
addressbook/Makefile.am | 2 +-
addressbook/libebook/Makefile.am | 11 +-
addressbook/libebook/e-book-view-private.h | 4 +-
addressbook/libebook/e-book-view.c | 104 +-
addressbook/libebook/e-book.c | 850 ++--
addressbook/libedata-book/Makefile.am | 20 +-
addressbook/libedata-book/e-data-book-factory.c | 331 +-
addressbook/libedata-book/e-data-book-marshal.list | 1 -
addressbook/libedata-book/e-data-book-view.c | 235 +-
addressbook/libedata-book/e-data-book-view.h | 8 +-
addressbook/libedata-book/e-data-book.c | 556 +-
addressbook/libedata-book/e-data-book.h | 11 +-
addressbook/libegdbus/Makefile.am | 38 +
addressbook/libegdbus/e-gdbus-egdbusbook.c | 4525 ++++++++++++
addressbook/libegdbus/e-gdbus-egdbusbook.h | 681 ++
addressbook/libegdbus/e-gdbus-egdbusbookfactory.c | 1120 +++
addressbook/libegdbus/e-gdbus-egdbusbookfactory.h | 209 +
addressbook/libegdbus/e-gdbus-egdbusbookview.c | 2043 ++++++
addressbook/libegdbus/e-gdbus-egdbusbookview.h | 302 +
addressbook/libegdbus/e-gdbus-marshallers.c | 345 +
addressbook/libegdbus/e-gdbus-marshallers.h | 77 +
addressbook/libegdbus/e-gdbus-marshallers.list | 10 +
addressbook/libegdbus/e-gdbus-typemappers.h | 12 +
addressbook/tests/ebook/ebook-test-utils.c | 6 +-
calendar/Makefile.am | 2 +-
calendar/libecal/Makefile.am | 49 +-
calendar/libecal/e-cal-view-private.h | 6 +-
calendar/libecal/e-cal-view.c | 139 +-
calendar/libecal/e-cal.c | 554 +-
calendar/libedata-cal/Makefile.am | 52 +-
calendar/libedata-cal/e-data-cal-factory.c | 284 +-
calendar/libedata-cal/e-data-cal-marshal.list | 2 -
calendar/libedata-cal/e-data-cal-view.c | 177 +-
calendar/libedata-cal/e-data-cal-view.h | 6 +-
calendar/libedata-cal/e-data-cal.c | 814 ++--
calendar/libedata-cal/e-data-cal.h | 4 +-
calendar/libegdbus/Makefile.am | 38 +
calendar/libegdbus/e-gdbus-egdbuscal.c | 7289 ++++++++++++++++++++
calendar/libegdbus/e-gdbus-egdbuscal.h | 1077 +++
calendar/libegdbus/e-gdbus-egdbuscalfactory.c | 1138 +++
calendar/libegdbus/e-gdbus-egdbuscalfactory.h | 212 +
calendar/libegdbus/e-gdbus-egdbuscalview.c | 1890 +++++
calendar/libegdbus/e-gdbus-egdbuscalview.h | 278 +
calendar/libegdbus/e-gdbus-marshallers.c | 476 ++
calendar/libegdbus/e-gdbus-marshallers.h | 104 +
calendar/libegdbus/e-gdbus-marshallers.list | 14 +
calendar/libegdbus/e-gdbus-typemappers.h | 12 +
calendar/tests/ecal/ecal-test-utils.c | 6 +-
camel/Makefile.am | 6 +-
camel/camel-sasl-gssapi.c | 68 +-
configure.ac | 24 +-
51 files changed, 23978 insertions(+), 2244 deletions(-)
---
diff --git a/addressbook/Makefile.am b/addressbook/Makefile.am
index 0c226fe..95a652b 100644
--- a/addressbook/Makefile.am
+++ b/addressbook/Makefile.am
@@ -1,3 +1,3 @@
-SUBDIRS = libebook libedata-book backends tests
+SUBDIRS = libegdbus libebook libedata-book backends tests
-include $(top_srcdir)/git.mk
diff --git a/addressbook/libebook/Makefile.am b/addressbook/libebook/Makefile.am
index 0827043..07b3475 100644
--- a/addressbook/libebook/Makefile.am
+++ b/addressbook/libebook/Makefile.am
@@ -10,8 +10,9 @@ libebook_1_2_la_CPPFLAGS = \
-DLOCALEDIR=\""$(localedir)"\" \
-DG_LOG_DOMAIN=\"libebook\" \
-I$(top_srcdir) \
- -I$(top_builddir) \
-I$(top_srcdir)/addressbook \
+ -I$(top_srcdir)/addressbook/libegdbus \
+ -I$(top_builddir) \
-I$(top_builddir)/addressbook \
-I$(top_builddir)/addressbook/libebook \
$(EVOLUTION_ADDRESSBOOK_CFLAGS) \
@@ -19,7 +20,6 @@ libebook_1_2_la_CPPFLAGS = \
libebook_1_2_la_SOURCES = \
$(MARSHAL_GENERATED) \
- $(DBUS_GENERATED_H) \
e-address-western.c \
e-book-query.c \
e-book-view-private.h \
@@ -33,6 +33,7 @@ libebook_1_2_la_SOURCES = \
e-error.h
libebook_1_2_la_LIBADD = \
+ $(top_builddir)/addressbook/libegdbus/libegdbus-book.la \
$(top_builddir)/camel/libcamel-1.2.la \
$(top_builddir)/libedataserver/libedataserver-1.2.la \
$(EVOLUTION_ADDRESSBOOK_LIBS) \
@@ -63,11 +64,7 @@ e-name-western-tables.h: e-name-western-tables.h.in
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libebook-$(API_VERSION).pc
-DBUS_GENERATED_H = e-data-book-factory-bindings.h e-data-book-bindings.h e-data-book-view-bindings.h
-%-bindings.h: $(top_srcdir)/addressbook/libedata-book/%.xml
- @DBUS_BINDING_TOOL@ --mode=glib-client --output=$@ --prefix=$(subst -,_,$*) $^
-
-BUILT_SOURCES = $(DBUS_GENERATED_H) $(MARSHAL_GENERATED)
+BUILT_SOURCES = $(MARSHAL_GENERATED)
CLEANFILES = $(BUILT_SOURCES)
DISTCLEANFILES = $(pkgconfig_DATA)
diff --git a/addressbook/libebook/e-book-view-private.h b/addressbook/libebook/e-book-view-private.h
index 776eb94..16a6461 100644
--- a/addressbook/libebook/e-book-view-private.h
+++ b/addressbook/libebook/e-book-view-private.h
@@ -25,7 +25,9 @@
#include "e-book.h"
#include "e-book-view.h"
-EBookView *_e_book_view_new (EBook *book, DBusGProxy *view_proxy, GStaticRecMutex *connection_lock);
+struct _EGdbusBookView;
+
+EBookView *_e_book_view_new (EBook *book, struct _EGdbusBookView *gdbus_bookview);
G_END_DECLS
diff --git a/addressbook/libebook/e-book-view.c b/addressbook/libebook/e-book-view.c
index c628c55..d8ef2fb 100644
--- a/addressbook/libebook/e-book-view.c
+++ b/addressbook/libebook/e-book-view.c
@@ -21,13 +21,12 @@
*/
#include <glib-object.h>
-#include <dbus/dbus-glib.h>
#include "e-book.h"
#include "e-book-view.h"
#include "e-book-view-private.h"
-#include "e-data-book-view-bindings.h"
#include "e-book-marshal.h"
#include "libedata-book/e-data-book-types.h"
+#include "e-gdbus-egdbusbookview.h"
G_DEFINE_TYPE(EBookView, e_book_view, G_TYPE_OBJECT);
@@ -35,9 +34,8 @@ G_DEFINE_TYPE(EBookView, e_book_view, G_TYPE_OBJECT);
(G_TYPE_INSTANCE_GET_PRIVATE ((o), E_TYPE_BOOK_VIEW, EBookViewPrivate))
struct _EBookViewPrivate {
+ EGdbusBookView *gdbus_bookview;
EBook *book;
- DBusGProxy *view_proxy;
- GStaticRecMutex *view_proxy_lock;
gboolean running;
};
@@ -56,18 +54,9 @@ enum {
static guint signals [LAST_SIGNAL];
static void
-status_message_cb (DBusGProxy *proxy, const gchar *message, EBookView *book_view)
+contacts_added_cb (EGdbusBookView *object, const gchar * const *vcards, EBookView *book_view)
{
- if (!book_view->priv->running)
- return;
-
- g_signal_emit (book_view, signals[STATUS_MESSAGE], 0, message);
-}
-
-static void
-contacts_added_cb (DBusGProxy *proxy, const gchar **vcards, EBookView *book_view)
-{
- const gchar **p;
+ const gchar * const *p;
GList *contacts = NULL;
if (!book_view->priv->running)
@@ -76,6 +65,7 @@ contacts_added_cb (DBusGProxy *proxy, const gchar **vcards, EBookView *book_view
for (p = vcards; *p; p++) {
contacts = g_list_prepend (contacts, e_contact_new_from_vcard (*p));
}
+
contacts = g_list_reverse (contacts);
g_signal_emit (book_view, signals[CONTACTS_ADDED], 0, contacts);
@@ -85,9 +75,9 @@ contacts_added_cb (DBusGProxy *proxy, const gchar **vcards, EBookView *book_view
}
static void
-contacts_changed_cb (DBusGProxy *proxy, const gchar **vcards, EBookView *book_view)
+contacts_changed_cb (EGdbusBookView *object, const gchar * const *vcards, EBookView *book_view)
{
- const gchar **p;
+ const gchar * const *p;
GList *contacts = NULL;
if (!book_view->priv->running)
@@ -105,9 +95,9 @@ contacts_changed_cb (DBusGProxy *proxy, const gchar **vcards, EBookView *book_vi
}
static void
-contacts_removed_cb (DBusGProxy *proxy, const gchar **ids, EBookView *book_view)
+contacts_removed_cb (EGdbusBookView *object, const gchar * const *ids, EBookView *book_view)
{
- const gchar **p;
+ const gchar * const *p;
GList *list = NULL;
if (!book_view->priv->running)
@@ -125,7 +115,16 @@ contacts_removed_cb (DBusGProxy *proxy, const gchar **ids, EBookView *book_view)
}
static void
-complete_cb (DBusGProxy *proxy, EDataBookStatus status, const gchar *message, EBookView *book_view)
+status_message_cb (EGdbusBookView *object, const gchar *message, EBookView *book_view)
+{
+ if (!book_view->priv->running)
+ return;
+
+ g_signal_emit (book_view, signals[STATUS_MESSAGE], 0, message);
+}
+
+static void
+complete_cb (EGdbusBookView *object, /* EDataBookStatus */ guint status, const gchar *message, EBookView *book_view)
{
EBookViewStatus bv_status = E_BOOK_VIEW_ERROR_OTHER_ERROR;
@@ -158,22 +157,19 @@ complete_cb (DBusGProxy *proxy, EDataBookStatus status, const gchar *message, EB
g_signal_emit (book_view, signals[VIEW_COMPLETE], 0, bv_status, message);
}
-#define LOCK_CONN() g_static_rec_mutex_lock (book_view->priv->view_proxy_lock)
-#define UNLOCK_CONN() g_static_rec_mutex_unlock (book_view->priv->view_proxy_lock)
-
/*
* e_book_view_new:
* @book: an #EBook
- * @view_proxy: The #DBusGProxy to get signals from
+ * @gdbus_bookview: The #EGdbusBookView to get signals from
*
- * Creates a new #EBookView based on #EBook and listening to @view_proxy. This
+ * Creates a new #EBookView based on #EBook and listening to @gdbus_bookview. This
* is a private function, applications should call #e_book_get_book_view or
* #e_book_async_get_book_view.
*
* Returns: A new #EBookView.
**/
EBookView *
-_e_book_view_new (EBook *book, DBusGProxy *view_proxy, GStaticRecMutex *view_proxy_lock)
+_e_book_view_new (EBook *book, EGdbusBookView *gdbus_bookview)
{
EBookView *view;
EBookViewPrivate *priv;
@@ -183,23 +179,15 @@ _e_book_view_new (EBook *book, DBusGProxy *view_proxy, GStaticRecMutex *view_pro
priv->book = g_object_ref (book);
- /* Take ownership of the view_proxy object */
- priv->view_proxy = view_proxy;
- priv->view_proxy_lock = view_proxy_lock;
- g_object_add_weak_pointer (G_OBJECT (view_proxy), (gpointer)&priv->view_proxy);
+ /* Take ownership of the gdbus_bookview object */
+ priv->gdbus_bookview = gdbus_bookview;
- dbus_g_object_register_marshaller (e_book_marshal_VOID__UINT_STRING, G_TYPE_NONE, G_TYPE_UINT, G_TYPE_STRING, G_TYPE_INVALID);
-
- dbus_g_proxy_add_signal (view_proxy, "StatusMessage", G_TYPE_STRING, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (view_proxy, "StatusMessage", G_CALLBACK (status_message_cb), view, NULL);
- dbus_g_proxy_add_signal (view_proxy, "ContactsAdded", G_TYPE_STRV, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (view_proxy, "ContactsAdded", G_CALLBACK (contacts_added_cb), view, NULL);
- dbus_g_proxy_add_signal (view_proxy, "ContactsChanged", G_TYPE_STRV, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (view_proxy, "ContactsChanged", G_CALLBACK (contacts_changed_cb), view, NULL);
- dbus_g_proxy_add_signal (view_proxy, "ContactsRemoved", G_TYPE_STRV, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (view_proxy, "ContactsRemoved", G_CALLBACK (contacts_removed_cb), view, NULL);
- dbus_g_proxy_add_signal (view_proxy, "Complete", G_TYPE_UINT, G_TYPE_STRING, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (view_proxy, "Complete", G_CALLBACK (complete_cb), view, NULL);
+ g_object_add_weak_pointer (G_OBJECT (gdbus_bookview), (gpointer) &priv->gdbus_bookview);
+ g_signal_connect (priv->gdbus_bookview, "contacts-added", G_CALLBACK (contacts_added_cb), view);
+ g_signal_connect (priv->gdbus_bookview, "contacts-changed", G_CALLBACK (contacts_changed_cb), view);
+ g_signal_connect (priv->gdbus_bookview, "contacts-removed", G_CALLBACK (contacts_removed_cb), view);
+ g_signal_connect (priv->gdbus_bookview, "status-message", G_CALLBACK (status_message_cb), view);
+ g_signal_connect (priv->gdbus_bookview, "complete", G_CALLBACK (complete_cb), view);
return view;
}
@@ -237,10 +225,8 @@ e_book_view_start (EBookView *book_view)
book_view->priv->running = TRUE;
- if (book_view->priv->view_proxy) {
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_BookView_start (book_view->priv->view_proxy, &error);
- UNLOCK_CONN ();
+ if (book_view->priv->gdbus_bookview) {
+ e_gdbus_book_view_call_start_sync (book_view->priv->gdbus_bookview, NULL, &error);
if (error) {
g_warning ("Cannot start book view: %s\n", error->message);
@@ -271,10 +257,8 @@ e_book_view_stop (EBookView *book_view)
book_view->priv->running = FALSE;
- if (book_view->priv->view_proxy) {
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_BookView_stop (book_view->priv->view_proxy, &error);
- UNLOCK_CONN ();
+ if (book_view->priv->gdbus_bookview) {
+ e_gdbus_book_view_call_stop_sync (book_view->priv->gdbus_bookview, NULL, &error);
if (error) {
g_warning ("Cannot stop book view: %s\n", error->message);
g_error_free (error);
@@ -287,9 +271,8 @@ e_book_view_init (EBookView *book_view)
{
EBookViewPrivate *priv = E_BOOK_VIEW_GET_PRIVATE (book_view);
+ priv->gdbus_bookview = NULL;
priv->book = NULL;
- priv->view_proxy = NULL;
- priv->view_proxy_lock = NULL;
priv->running = FALSE;
book_view->priv = priv;
@@ -300,12 +283,17 @@ e_book_view_dispose (GObject *object)
{
EBookView *book_view = E_BOOK_VIEW (object);
- if (book_view->priv->view_proxy) {
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_BookView_dispose (book_view->priv->view_proxy, NULL);
- g_object_unref (book_view->priv->view_proxy);
- book_view->priv->view_proxy = NULL;
- UNLOCK_CONN ();
+ if (book_view->priv->gdbus_bookview) {
+ GError *error = NULL;
+
+ e_gdbus_book_view_call_dispose_sync (book_view->priv->gdbus_bookview, NULL, &error);
+ g_object_unref (book_view->priv->gdbus_bookview);
+ book_view->priv->gdbus_bookview = NULL;
+
+ if (error) {
+ g_warning ("Failed to dispose book view: %s", error->message);
+ g_error_free (error);
+ }
}
if (book_view->priv->book) {
diff --git a/addressbook/libebook/e-book.c b/addressbook/libebook/e-book.c
index cbb0350..4c6ad56 100644
--- a/addressbook/libebook/e-book.c
+++ b/addressbook/libebook/e-book.c
@@ -35,24 +35,24 @@
#include <string.h>
#include <glib-object.h>
#include <glib/gi18n-lib.h>
-#include <dbus/dbus-glib.h>
-#include <dbus/dbus-glib-lowlevel.h>
#include <libedataserver/e-data-server-util.h>
#include "e-book.h"
#include "e-error.h"
#include "e-contact.h"
#include "e-name-western.h"
#include "e-book-view-private.h"
-#include "e-data-book-factory-bindings.h"
-#include "e-data-book-bindings.h"
-#include "libedata-book/e-data-book-types.h"
#include "e-book-marshal.h"
+#include "e-gdbus-egdbusbookfactory.h"
+#include "e-gdbus-egdbusbook.h"
+#include "e-gdbus-egdbusbookview.h"
+
#define E_DATA_BOOK_FACTORY_SERVICE_NAME "org.gnome.evolution.dataserver.AddressBook"
static gchar ** flatten_stringlist(GList *list);
static GList *array_to_stringlist (gchar **list);
-static gboolean unwrap_gerror(GError *error, GError **client_error);
+static EList *array_to_elist (gchar **list);
+static gboolean unwrap_gerror (GError *error, GError **client_error);
G_DEFINE_TYPE(EBook, e_book, G_TYPE_OBJECT)
#define E_BOOK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), E_TYPE_BOOK, EBookPrivate))
@@ -68,9 +68,10 @@ enum {
static guint e_book_signals [LAST_SIGNAL];
struct _EBookPrivate {
+ EGdbusBook *gdbus_book;
+
ESource *source;
gchar *uri;
- DBusGProxy *proxy;
gboolean loaded;
gboolean writable;
gboolean connected;
@@ -78,13 +79,10 @@ struct _EBookPrivate {
gboolean cap_queried;
};
-static DBusGConnection *connection = NULL;
-static DBusGProxy *factory_proxy = NULL;
-
-/* guards both connection and factory_proxy */
-static GStaticRecMutex connection_lock = G_STATIC_REC_MUTEX_INIT;
-#define LOCK_CONN() g_static_rec_mutex_lock (&connection_lock)
-#define UNLOCK_CONN() g_static_rec_mutex_unlock (&connection_lock)
+static EGdbusBookFactory *book_factory_proxy = NULL;
+static GStaticRecMutex book_factory_proxy_lock = G_STATIC_REC_MUTEX_INIT;
+#define LOCK_FACTORY() g_static_rec_mutex_lock (&book_factory_proxy_lock)
+#define UNLOCK_FACTORY() g_static_rec_mutex_unlock (&book_factory_proxy_lock)
typedef struct {
EBook *book;
@@ -110,19 +108,29 @@ e_book_error_quark (void)
* Called when the addressbook server dies.
*/
static void
-proxy_destroyed (gpointer data, GObject *object)
+gdbus_book_closed_cb (GDBusConnection *connection, gboolean remote_peer_vanished, GError *error, EBook *book)
{
- EBook *book = data;
+ GError *err = NULL;
g_assert (E_IS_BOOK (book));
- g_warning (G_STRLOC ": e-d-s proxy died");
+ if (error)
+ unwrap_gerror (g_error_copy (error), &err);
+
+ if (err) {
+ g_debug (G_STRLOC ": EBook GDBus connection is closed%s: %s", remote_peer_vanished ? ", remote peer vanished" : "", err->message);
+ g_error_free (err);
+ }
/* Ensure that everything relevant is NULL */
- LOCK_CONN ();
- factory_proxy = NULL;
- book->priv->proxy = NULL;
- UNLOCK_CONN ();
+ LOCK_FACTORY ();
+
+ if (book->priv->gdbus_book) {
+ g_object_unref (book->priv->gdbus_book);
+ book->priv->gdbus_book = NULL;
+ }
+
+ UNLOCK_FACTORY ();
g_signal_emit (G_OBJECT (book), e_book_signals [BACKEND_DIED], 0);
}
@@ -134,14 +142,13 @@ e_book_dispose (GObject *object)
book->priv->loaded = FALSE;
- if (book->priv->proxy) {
- g_object_weak_unref (G_OBJECT (book->priv->proxy), proxy_destroyed, book);
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_close (book->priv->proxy, NULL);
- g_object_unref (book->priv->proxy);
- book->priv->proxy = NULL;
- UNLOCK_CONN ();
+ if (book->priv->gdbus_book) {
+ g_signal_handlers_disconnect_by_func (g_dbus_proxy_get_connection (G_DBUS_PROXY (book->priv->gdbus_book)), gdbus_book_closed_cb, book);
+ e_gdbus_book_call_close_sync (book->priv->gdbus_book, NULL, NULL);
+ g_object_unref (book->priv->gdbus_book);
+ book->priv->gdbus_book = NULL;
}
+
if (book->priv->source) {
g_object_unref (book->priv->source);
book->priv->source = NULL;
@@ -219,9 +226,10 @@ static void
e_book_init (EBook *book)
{
EBookPrivate *priv = E_BOOK_GET_PRIVATE (book);
+
+ priv->gdbus_book = NULL;
priv->source = NULL;
priv->uri = NULL;
- priv->proxy = NULL;
priv->loaded = FALSE;
priv->writable = FALSE;
priv->connected = FALSE;
@@ -230,83 +238,60 @@ e_book_init (EBook *book)
book->priv = priv;
}
-static DBusHandlerResult
-filter_dbus_msgs_cb (DBusConnection *pconnection, DBusMessage *message, gpointer user_data)
+static void
+book_factory_proxy_closed_cb (GDBusConnection *connection, gboolean remote_peer_vanished, GError *error, gpointer user_data)
{
- if (dbus_message_is_signal (message, DBUS_INTERFACE_LOCAL, "Disconnected")) {
- DBusGConnection *conn = connection;
+ GError *err = NULL;
- LOCK_CONN ();
- factory_proxy = NULL;
- connection = NULL;
- UNLOCK_CONN ();
- dbus_g_connection_unref (conn);
- return DBUS_HANDLER_RESULT_HANDLED;
+ LOCK_FACTORY ();
+ if (book_factory_proxy) {
+ g_object_unref (book_factory_proxy);
+ book_factory_proxy = NULL;
}
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-}
+ if (error)
+ unwrap_gerror (g_error_copy (error), &err);
-static void
-factory_proxy_destroy_cb (DBusGProxy *proxy, gpointer user_data)
-{
- LOCK_CONN ();
- factory_proxy = NULL;
- UNLOCK_CONN ();
+ if (err) {
+ g_debug ("GDBus connection is closed%s: %s", remote_peer_vanished ? ", remote peer vanished" : "", err->message);
+ g_error_free (err);
+ }
+
+ UNLOCK_FACTORY ();
}
static gboolean
-e_book_activate(GError **error)
+e_book_activate (GError **error)
{
- DBusError derror;
+ LOCK_FACTORY ();
- LOCK_CONN ();
-
- if (G_LIKELY (factory_proxy)) {
- UNLOCK_CONN ();
+ if (G_LIKELY (book_factory_proxy)) {
+ UNLOCK_FACTORY ();
return TRUE;
}
- if (!connection) {
- connection = dbus_g_bus_get (DBUS_BUS_SESSION, error);
- if (!connection) {
- UNLOCK_CONN ();
- return FALSE;
- }
-
- dbus_connection_add_filter (dbus_g_connection_get_connection (connection), filter_dbus_msgs_cb, NULL, NULL);
- }
+ book_factory_proxy = e_gdbus_book_factory_proxy_new_for_bus_sync (
+ G_BUS_TYPE_SESSION,
+ G_DBUS_PROXY_FLAGS_NONE,
+ E_DATA_BOOK_FACTORY_SERVICE_NAME,
+ "/org/gnome/evolution/dataserver/addressbook/BookFactory",
+ NULL,
+ error);
- dbus_error_init (&derror);
- if (!dbus_bus_start_service_by_name (dbus_g_connection_get_connection (connection),
- E_DATA_BOOK_FACTORY_SERVICE_NAME,
- 0, NULL, &derror)) {
- dbus_set_g_error (error, &derror);
- dbus_error_free (&derror);
- UNLOCK_CONN ();
+ if (!book_factory_proxy) {
+ UNLOCK_FACTORY ();
return FALSE;
}
- if (!factory_proxy) {
- factory_proxy = dbus_g_proxy_new_for_name_owner (connection,
- E_DATA_BOOK_FACTORY_SERVICE_NAME,
- "/org/gnome/evolution/dataserver/addressbook/BookFactory",
- "org.gnome.evolution.dataserver.addressbook.BookFactory",
- error);
- if (!factory_proxy) {
- UNLOCK_CONN ();
- return FALSE;
- }
+ g_signal_connect (g_dbus_proxy_get_connection (G_DBUS_PROXY (book_factory_proxy)), "closed", G_CALLBACK (book_factory_proxy_closed_cb), NULL);
- g_signal_connect (factory_proxy, "destroy", G_CALLBACK (factory_proxy_destroy_cb), NULL);
- }
+ UNLOCK_FACTORY ();
- UNLOCK_CONN ();
return TRUE;
}
static void
-writable_cb (DBusGProxy *proxy, gboolean writable, EBook *book)
+writable_cb (EGdbusBook *object, gboolean writable, EBook *book)
{
g_return_if_fail (E_IS_BOOK (book));
@@ -316,7 +301,7 @@ writable_cb (DBusGProxy *proxy, gboolean writable, EBook *book)
}
static void
-connection_cb (DBusGProxy *proxy, gboolean connected, EBook *book)
+connection_cb (EGdbusBook *object, gboolean connected, EBook *book)
{
g_return_if_fail (E_IS_BOOK (book));
@@ -326,7 +311,7 @@ connection_cb (DBusGProxy *proxy, gboolean connected, EBook *book)
}
static void
-auth_required_cb (DBusGProxy *proxy, EBook *book)
+auth_required_cb (EGdbusBook *object, EBook *book)
{
g_return_if_fail (E_IS_BOOK (book));
@@ -352,31 +337,33 @@ e_book_add_contact (EBook *book,
gchar *vcard, *uid = NULL;
e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_error_if_fail (E_IS_CONTACT (contact), E_BOOK_ERROR_INVALID_ARG);
vcard = e_vcard_to_string (E_VCARD (contact), EVC_FORMAT_VCARD_30);
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_add_contact (book->priv->proxy, vcard, &uid, &err);
- UNLOCK_CONN ();
+ e_gdbus_book_call_add_contact_sync (book->priv->gdbus_book, vcard, &uid, NULL, &err);
g_free (vcard);
if (uid) {
e_contact_set (contact, E_CONTACT_UID, uid);
g_free (uid);
}
+
return unwrap_gerror (err, error);
}
static void
-add_contact_reply (DBusGProxy *proxy, gchar *uid, GError *error, gpointer user_data)
+add_contact_reply (GObject *gdbus_book, GAsyncResult *res, gpointer user_data)
{
- GError *err = NULL;
+ GError *err = NULL, *error = NULL;
+ gchar *uid = NULL;
AsyncData *data = user_data;
EBookIdExCallback excb = data->excallback;
#ifndef E_BOOK_DISABLE_DEPRECATED
EBookIdCallback cb = data->callback;
#endif
+ e_gdbus_book_call_add_contact_finish (E_GDBUS_BOOK (gdbus_book), &uid, res, &error);
+
unwrap_gerror (error, &err);
/* If there is an error returned the GLib bindings currently return garbage
@@ -425,7 +412,7 @@ e_book_async_add_contact (EBook *book,
AsyncData *data;
e_return_async_error_val_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_async_error_val_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_async_error_val_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_async_error_val_if_fail (E_IS_CONTACT (contact), E_BOOK_ERROR_INVALID_ARG);
vcard = e_vcard_to_string (E_VCARD (contact), EVC_FORMAT_VCARD_30);
@@ -435,10 +422,10 @@ e_book_async_add_contact (EBook *book,
data->callback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_add_contact_async (book->priv->proxy, vcard, add_contact_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_add_contact (book->priv->gdbus_book, vcard, NULL, add_contact_reply, data);
+
g_free (vcard);
+
return 0;
}
#endif
@@ -466,7 +453,7 @@ e_book_async_add_contact_ex (EBook *book,
AsyncData *data;
e_return_ex_async_error_val_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_ex_async_error_val_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_ex_async_error_val_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_ex_async_error_val_if_fail (E_IS_CONTACT (contact), E_BOOK_ERROR_INVALID_ARG);
vcard = e_vcard_to_string (E_VCARD (contact), EVC_FORMAT_VCARD_30);
@@ -476,9 +463,8 @@ e_book_async_add_contact_ex (EBook *book,
data->excallback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_add_contact_async (book->priv->proxy, vcard, add_contact_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_add_contact (book->priv->gdbus_book, vcard, NULL, add_contact_reply, data);
+
g_free (vcard);
return TRUE;
@@ -504,27 +490,28 @@ e_book_commit_contact (EBook *book,
gchar *vcard;
e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_error_if_fail (E_IS_CONTACT (contact), E_BOOK_ERROR_INVALID_ARG);
vcard = e_vcard_to_string (E_VCARD (contact), EVC_FORMAT_VCARD_30);
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_modify_contact (book->priv->proxy, vcard, &err);
- UNLOCK_CONN ();
+ e_gdbus_book_call_modify_contact_sync (book->priv->gdbus_book, vcard, NULL, &err);
g_free (vcard);
+
return unwrap_gerror (err, error);
}
static void
-modify_contact_reply (DBusGProxy *proxy, GError *error, gpointer user_data)
+modify_contact_reply (GObject *gdbus_book, GAsyncResult *res, gpointer user_data)
{
- GError *err = NULL;
+ GError *err = NULL, *error = NULL;
AsyncData *data = user_data;
EBookExCallback excb = data->excallback;
#ifndef E_BOOK_DISABLE_DEPRECATED
EBookCallback cb = data->callback;
#endif
+ e_gdbus_book_call_modify_contact_finish (E_GDBUS_BOOK (gdbus_book), res, &error);
+
unwrap_gerror (error, &err);
#ifndef E_BOOK_DISABLE_DEPRECATED
@@ -537,6 +524,7 @@ modify_contact_reply (DBusGProxy *proxy, GError *error, gpointer user_data)
if (err)
g_error_free (err);
+
g_object_unref (data->book);
g_slice_free (AsyncData, data);
}
@@ -566,7 +554,7 @@ e_book_async_commit_contact (EBook *book,
AsyncData *data;
e_return_async_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_async_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_async_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_async_error_if_fail (E_IS_CONTACT (contact), E_BOOK_ERROR_INVALID_ARG);
vcard = e_vcard_to_string (E_VCARD (contact), EVC_FORMAT_VCARD_30);
@@ -576,10 +564,10 @@ e_book_async_commit_contact (EBook *book,
data->callback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_modify_contact_async (book->priv->proxy, vcard, modify_contact_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_modify_contact (book->priv->gdbus_book, vcard, NULL, modify_contact_reply, data);
+
g_free (vcard);
+
return 0;
}
#endif
@@ -608,7 +596,7 @@ e_book_async_commit_contact_ex (EBook *book,
AsyncData *data;
e_return_ex_async_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_ex_async_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_ex_async_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_ex_async_error_if_fail (E_IS_CONTACT (contact), E_BOOK_ERROR_INVALID_ARG);
vcard = e_vcard_to_string (E_VCARD (contact), EVC_FORMAT_VCARD_30);
@@ -618,9 +606,8 @@ e_book_async_commit_contact_ex (EBook *book,
data->excallback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_modify_contact_async (book->priv->proxy, vcard, modify_contact_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_modify_contact (book->priv->gdbus_book, vcard, NULL, modify_contact_reply, data);
+
g_free (vcard);
return TRUE;
@@ -648,13 +635,13 @@ e_book_get_required_fields (EBook *book,
gchar **list = NULL;
e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+
+ e_gdbus_book_call_get_required_fields_sync (book->priv->gdbus_book, &list, NULL, &err);
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_required_fields (book->priv->proxy, &list, &err);
- UNLOCK_CONN ();
if (list) {
*fields = array_to_stringlist (list);
+ g_strfreev (list);
return TRUE;
} else {
return unwrap_gerror (err, error);
@@ -662,22 +649,20 @@ e_book_get_required_fields (EBook *book,
}
static void
-get_required_fields_reply(DBusGProxy *proxy, gchar **fields, GError *error, gpointer user_data)
+get_required_fields_reply (GObject *gdbus_book, GAsyncResult *res, gpointer user_data)
{
- GError *err = NULL;
+ gchar **fields = NULL;
+ GError *err = NULL, *error = NULL;
AsyncData *data = user_data;
EBookEListExCallback excb = data->excallback;
#ifndef E_BOOK_DISABLE_DEPRECATED
EBookEListCallback cb = data->callback;
#endif
- gchar **i = fields;
- EList *efields = e_list_new (NULL,
- (EListFreeFunc) g_free,
- NULL);
+ EList *efields = NULL;
- while (*i != NULL) {
- e_list_append (efields, (*i++));
- }
+ e_gdbus_book_call_get_required_fields_finish (E_GDBUS_BOOK (gdbus_book), &fields, res, &error);
+
+ efields = array_to_elist (fields);
unwrap_gerror (error, &err);
@@ -692,7 +677,7 @@ get_required_fields_reply(DBusGProxy *proxy, gchar **fields, GError *error, gpoi
g_error_free (err);
g_object_unref (efields);
- g_free (fields);
+ g_strfreev (fields);
g_object_unref (data->book);
g_slice_free (AsyncData, data);
}
@@ -719,16 +704,15 @@ e_book_async_get_required_fields (EBook *book,
AsyncData *data;
e_return_async_error_val_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_async_error_val_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_async_error_val_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
data = g_slice_new0 (AsyncData);
data->book = g_object_ref (book);
data->callback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_required_fields_async (book->priv->proxy, get_required_fields_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_get_required_fields (book->priv->gdbus_book, NULL, get_required_fields_reply, data);
+
return 0;
}
#endif
@@ -754,16 +738,14 @@ e_book_async_get_required_fields_ex (EBook *book,
AsyncData *data;
e_return_ex_async_error_val_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_ex_async_error_val_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_ex_async_error_val_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
data = g_slice_new0 (AsyncData);
data->book = g_object_ref (book);
data->excallback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_required_fields_async (book->priv->proxy, get_required_fields_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_get_required_fields (book->priv->gdbus_book, NULL, get_required_fields_reply, data);
return TRUE;
}
@@ -790,13 +772,13 @@ e_book_get_supported_fields (EBook *book,
gchar **list = NULL;
e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+
+ e_gdbus_book_call_get_supported_fields_sync (book->priv->gdbus_book, &list, NULL, &err);
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_supported_fields (book->priv->proxy, &list, &err);
- UNLOCK_CONN ();
if (list) {
*fields = array_to_stringlist (list);
+ g_strfreev (list);
return TRUE;
} else {
return unwrap_gerror (err, error);
@@ -804,20 +786,20 @@ e_book_get_supported_fields (EBook *book,
}
static void
-get_supported_fields_reply(DBusGProxy *proxy, gchar **fields, GError *error, gpointer user_data)
+get_supported_fields_reply (GObject *gdbus_book, GAsyncResult *res, gpointer user_data)
{
- GError *err = NULL;
+ gchar **fields = NULL;
+ GError *err = NULL, *error = NULL;
AsyncData *data = user_data;
EBookEListExCallback excb = data->excallback;
#ifndef E_BOOK_DISABLE_DEPRECATED
EBookEListCallback cb = data->callback;
#endif
- gchar **i = fields;
- EList *efields = e_list_new (NULL, (EListFreeFunc) g_free, NULL);
+ EList *efields;
- while (*i != NULL) {
- e_list_append (efields, (*i++));
- }
+ e_gdbus_book_call_get_supported_fields_finish (E_GDBUS_BOOK (gdbus_book), &fields, res, &error);
+
+ efields = array_to_elist (fields);
unwrap_gerror (error, &err);
@@ -832,8 +814,7 @@ get_supported_fields_reply(DBusGProxy *proxy, gchar **fields, GError *error, gpo
g_error_free (err);
g_object_unref (efields);
- g_free (fields);
-
+ g_strfreev (fields);
g_object_unref (data->book);
g_slice_free (AsyncData, data);
}
@@ -861,16 +842,14 @@ e_book_async_get_supported_fields (EBook *book,
AsyncData *data;
e_return_async_error_val_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_async_error_val_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_async_error_val_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
data = g_slice_new0 (AsyncData);
data->book = g_object_ref (book);
data->callback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_supported_fields_async (book->priv->proxy, get_supported_fields_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_get_supported_fields (book->priv->gdbus_book, NULL, get_supported_fields_reply, data);
return 0;
}
@@ -898,16 +877,14 @@ e_book_async_get_supported_fields_ex (EBook *book,
AsyncData *data;
e_return_ex_async_error_val_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_ex_async_error_val_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_ex_async_error_val_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
data = g_slice_new0 (AsyncData);
data->book = g_object_ref (book);
data->excallback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_supported_fields_async (book->priv->proxy, get_supported_fields_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_get_supported_fields (book->priv->gdbus_book, NULL, get_supported_fields_reply, data);
return TRUE;
}
@@ -933,13 +910,13 @@ e_book_get_supported_auth_methods (EBook *book,
gchar **list = NULL;
e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+
+ e_gdbus_book_call_get_supported_auth_methods_sync (book->priv->gdbus_book, &list, NULL, &err);
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_supported_auth_methods (book->priv->proxy, &list, &err);
- UNLOCK_CONN ();
if (list) {
*auth_methods = array_to_stringlist (list);
+ g_strfreev (list);
return TRUE;
} else {
return unwrap_gerror (err, error);
@@ -947,22 +924,20 @@ e_book_get_supported_auth_methods (EBook *book,
}
static void
-get_supported_auth_methods_reply(DBusGProxy *proxy, gchar **methods, GError *error, gpointer user_data)
+get_supported_auth_methods_reply (GObject *gdbus_book, GAsyncResult *res, gpointer user_data)
{
- GError *err = NULL;
+ gchar **methods = NULL;
+ GError *err = NULL, *error = NULL;
AsyncData *data = user_data;
EBookEListExCallback excb = data->excallback;
#ifndef E_BOOK_DISABLE_DEPRECATED
EBookEListCallback cb = data->callback;
#endif
- gchar **i = methods;
- EList *emethods = e_list_new (NULL,
- (EListFreeFunc) g_free,
- NULL);
+ EList *emethods;
- while (*i != NULL) {
- e_list_append (emethods, (*i++));
- }
+ e_gdbus_book_call_get_supported_auth_methods_finish (E_GDBUS_BOOK (gdbus_book), &methods, res, &error);
+
+ emethods = array_to_elist (methods);
unwrap_gerror (error, &err);
@@ -977,8 +952,7 @@ get_supported_auth_methods_reply(DBusGProxy *proxy, gchar **methods, GError *err
g_error_free (err);
g_object_unref (emethods);
- g_free (methods);
-
+ g_strfreev (methods);
g_object_unref (data->book);
g_slice_free (AsyncData, data);
}
@@ -1005,16 +979,14 @@ e_book_async_get_supported_auth_methods (EBook *book,
AsyncData *data;
e_return_async_error_val_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_async_error_val_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_async_error_val_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
data = g_slice_new0 (AsyncData);
data->book = g_object_ref (book);
data->callback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_supported_auth_methods_async (book->priv->proxy, get_supported_auth_methods_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_get_supported_auth_methods (book->priv->gdbus_book, NULL, get_supported_auth_methods_reply, data);
return 0;
}
@@ -1041,16 +1013,14 @@ e_book_async_get_supported_auth_methods_ex (EBook *book,
AsyncData *data;
e_return_ex_async_error_val_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_ex_async_error_val_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_ex_async_error_val_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
data = g_slice_new0 (AsyncData);
data->book = g_object_ref (book);
data->excallback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_supported_auth_methods_async (book->priv->proxy, get_supported_auth_methods_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_get_supported_auth_methods (book->priv->gdbus_book, NULL, get_supported_auth_methods_reply, data);
return TRUE;
}
@@ -1079,25 +1049,25 @@ e_book_authenticate_user (EBook *book,
GError *err = NULL;
e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_authenticate_user (book->priv->proxy, user, passwd, auth_method, &err);
- UNLOCK_CONN ();
+ e_gdbus_book_call_authenticate_user_sync (book->priv->gdbus_book, user, passwd, auth_method, NULL, &err);
return unwrap_gerror (err, error);
}
static void
-authenticate_user_reply(DBusGProxy *proxy, GError *error, gpointer user_data)
+authenticate_user_reply (GObject *gdbus_book, GAsyncResult *res, gpointer user_data)
{
- GError *err = NULL;
+ GError *err = NULL, *error = NULL;
AsyncData *data = user_data;
EBookExCallback excb = data->excallback;
#ifndef E_BOOK_DISABLE_DEPRECATED
EBookCallback cb = data->callback;
#endif
+ e_gdbus_book_call_authenticate_user_finish (E_GDBUS_BOOK (gdbus_book), res, &error);
+
unwrap_gerror (error, &err);
#ifndef E_BOOK_DISABLE_DEPRECATED
@@ -1144,7 +1114,7 @@ e_book_async_authenticate_user (EBook *book,
AsyncData *data;
e_return_async_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_async_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_async_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_async_error_if_fail (user, E_BOOK_ERROR_INVALID_ARG);
e_return_async_error_if_fail (passwd, E_BOOK_ERROR_INVALID_ARG);
e_return_async_error_if_fail (auth_method, E_BOOK_ERROR_INVALID_ARG);
@@ -1154,9 +1124,7 @@ e_book_async_authenticate_user (EBook *book,
data->callback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_authenticate_user_async (book->priv->proxy, user, passwd, auth_method, authenticate_user_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_authenticate_user (book->priv->gdbus_book, user, passwd, auth_method, NULL, authenticate_user_reply, data);
return 0;
}
@@ -1191,7 +1159,7 @@ e_book_async_authenticate_user_ex (EBook *book,
AsyncData *data;
e_return_ex_async_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_ex_async_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_ex_async_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_ex_async_error_if_fail (user, E_BOOK_ERROR_INVALID_ARG);
e_return_ex_async_error_if_fail (passwd, E_BOOK_ERROR_INVALID_ARG);
e_return_ex_async_error_if_fail (auth_method, E_BOOK_ERROR_INVALID_ARG);
@@ -1201,9 +1169,7 @@ e_book_async_authenticate_user_ex (EBook *book,
data->excallback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_authenticate_user_async (book->priv->proxy, user, passwd, auth_method, authenticate_user_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_authenticate_user (book->priv->gdbus_book, user, passwd, auth_method, NULL, authenticate_user_reply, data);
return TRUE;
}
@@ -1230,29 +1196,31 @@ e_book_get_contact (EBook *book,
gchar *vcard = NULL;
e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_contact (book->priv->proxy, id, &vcard, &err);
- UNLOCK_CONN ();
+ e_gdbus_book_call_get_contact_sync (book->priv->gdbus_book, id, &vcard, NULL, &err);
if (vcard) {
*contact = e_contact_new_from_vcard (vcard);
g_free (vcard);
}
+
return unwrap_gerror (err, error);
}
static void
-get_contact_reply(DBusGProxy *proxy, gchar *vcard, GError *error, gpointer user_data)
+get_contact_reply (GObject *gdbus_book, GAsyncResult *res, gpointer user_data)
{
- GError *err = NULL;
+ gchar *vcard = NULL;
+ GError *err = NULL, *error = NULL;
AsyncData *data = user_data;
EBookContactExCallback excb = data->excallback;
#ifndef E_BOOK_DISABLE_DEPRECATED
EBookContactCallback cb = data->callback;
#endif
+ e_gdbus_book_call_get_contact_finish (E_GDBUS_BOOK (gdbus_book), &vcard, res, &error);
+
unwrap_gerror (error, &err);
/* Protect against garbage return values on error */
@@ -1268,6 +1236,7 @@ get_contact_reply(DBusGProxy *proxy, gchar *vcard, GError *error, gpointer user_
if (err)
g_error_free (err);
+
g_free (vcard);
g_object_unref (data->book);
g_slice_free (AsyncData, data);
@@ -1296,7 +1265,7 @@ e_book_async_get_contact (EBook *book,
AsyncData *data;
e_return_async_error_val_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_async_error_val_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_async_error_val_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_async_error_val_if_fail (id, E_BOOK_ERROR_INVALID_ARG);
data = g_slice_new0 (AsyncData);
@@ -1304,9 +1273,7 @@ e_book_async_get_contact (EBook *book,
data->callback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_contact_async (book->priv->proxy, id, get_contact_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_get_contact (book->priv->gdbus_book, id, NULL, get_contact_reply, data);
return 0;
}
@@ -1334,7 +1301,7 @@ e_book_async_get_contact_ex (EBook *book,
AsyncData *data;
e_return_ex_async_error_val_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_ex_async_error_val_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_ex_async_error_val_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_ex_async_error_val_if_fail (id, E_BOOK_ERROR_INVALID_ARG);
data = g_slice_new0 (AsyncData);
@@ -1342,9 +1309,7 @@ e_book_async_get_contact_ex (EBook *book,
data->excallback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_contact_async (book->priv->proxy, id, get_contact_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_get_contact (book->priv->gdbus_book, id, NULL, get_contact_reply, data);
return TRUE;
}
@@ -1368,29 +1333,29 @@ e_book_remove_contact (EBook *book,
const gchar *l[2];
e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_error_if_fail (id, E_BOOK_ERROR_INVALID_ARG);
l[0] = id;
l[1] = NULL;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_remove_contacts (book->priv->proxy, l, &err);
- UNLOCK_CONN ();
+ e_gdbus_book_call_remove_contacts_sync (book->priv->gdbus_book, (const gchar * const *) l, NULL, &err);
return unwrap_gerror (err, error);
}
static void
-remove_contact_reply (DBusGProxy *proxy, GError *error, gpointer user_data)
+remove_contact_reply (GObject *gdbus_book, GAsyncResult *res, gpointer user_data)
{
- GError *err = NULL;
+ GError *err = NULL, *error = NULL;
AsyncData *data = user_data;
EBookExCallback excb = data->excallback;
#ifndef E_BOOK_DISABLE_DEPRECATED
EBookCallback cb = data->callback;
#endif
+ e_gdbus_book_call_remove_contacts_finish (E_GDBUS_BOOK (gdbus_book), res, &error);
+
unwrap_gerror (error, &err);
#ifndef E_BOOK_DISABLE_DEPRECATED
@@ -1429,14 +1394,12 @@ e_book_remove_contacts (EBook *book,
gchar **l;
e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_error_if_fail (ids, E_BOOK_ERROR_INVALID_ARG);
l = flatten_stringlist (ids);
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_remove_contacts (book->priv->proxy, (const gchar **) l, &err);
- UNLOCK_CONN ();
+ e_gdbus_book_call_remove_contacts_sync (book->priv->gdbus_book, (const gchar * const *) l, NULL, &err);
g_free (l);
@@ -1467,7 +1430,7 @@ e_book_async_remove_contact (EBook *book,
const gchar *l[2];
e_return_async_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_async_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_async_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_async_error_if_fail (E_IS_CONTACT (contact), E_BOOK_ERROR_INVALID_ARG);
l[0] = e_contact_get_const (contact, E_CONTACT_UID);
@@ -1478,9 +1441,7 @@ e_book_async_remove_contact (EBook *book,
data->callback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_remove_contacts_async (book->priv->proxy, l, remove_contact_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_remove_contacts (book->priv->gdbus_book, (const gchar * const *) l, NULL, remove_contact_reply, data);
return 0;
}
@@ -1509,7 +1470,7 @@ e_book_async_remove_contact_ex (EBook *book,
const gchar *l[2];
e_return_ex_async_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_ex_async_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_ex_async_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_ex_async_error_if_fail (E_IS_CONTACT (contact), E_BOOK_ERROR_INVALID_ARG);
l[0] = e_contact_get_const (contact, E_CONTACT_UID);
@@ -1520,23 +1481,23 @@ e_book_async_remove_contact_ex (EBook *book,
data->excallback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_remove_contacts_async (book->priv->proxy, l, remove_contact_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_remove_contacts (book->priv->gdbus_book, (const gchar * const *) l, NULL, remove_contact_reply, data);
return TRUE;
}
static void
-remove_contact_by_id_reply (DBusGProxy *proxy, GError *error, gpointer user_data)
+remove_contact_by_id_reply (GObject *gdbus_book, GAsyncResult *res, gpointer user_data)
{
- GError *err = NULL;
+ GError *err = NULL, *error = NULL;
AsyncData *data = user_data;
EBookExCallback excb = data->excallback;
#ifndef E_BOOK_DISABLE_DEPRECATED
EBookCallback cb = data->callback;
#endif
+ e_gdbus_book_call_remove_contacts_finish (E_GDBUS_BOOK (gdbus_book), res, &error);
+
unwrap_gerror (error, &err);
#ifndef E_BOOK_DISABLE_DEPRECATED
@@ -1577,7 +1538,7 @@ e_book_async_remove_contact_by_id (EBook *book,
const gchar *l[2];
e_return_async_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_async_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_async_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_async_error_if_fail (id, E_BOOK_ERROR_INVALID_ARG);
l[0] = id;
@@ -1588,9 +1549,7 @@ e_book_async_remove_contact_by_id (EBook *book,
data->callback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_remove_contacts_async (book->priv->proxy, l, remove_contact_by_id_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_remove_contacts (book->priv->gdbus_book, (const gchar * const *) l, NULL, remove_contact_by_id_reply, data);
return 0;
}
@@ -1619,7 +1578,7 @@ e_book_async_remove_contact_by_id_ex (EBook *book,
const gchar *l[2];
e_return_ex_async_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_ex_async_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_ex_async_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_ex_async_error_if_fail (id, E_BOOK_ERROR_INVALID_ARG);
l[0] = id;
@@ -1630,23 +1589,23 @@ e_book_async_remove_contact_by_id_ex (EBook *book,
data->excallback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_remove_contacts_async (book->priv->proxy, l, remove_contact_by_id_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_remove_contacts (book->priv->gdbus_book, (const gchar * const *) l, NULL, remove_contact_by_id_reply, data);
return TRUE;
}
static void
-remove_contacts_reply (DBusGProxy *proxy, GError *error, gpointer user_data)
+remove_contacts_reply (GObject *gdbus_book, GAsyncResult *res, gpointer user_data)
{
- GError *err = NULL;
+ GError *err = NULL, *error = NULL;
AsyncData *data = user_data;
EBookExCallback excb = data->excallback;
#ifndef E_BOOK_DISABLE_DEPRECATED
EBookCallback cb = data->callback;
#endif
+ e_gdbus_book_call_remove_contacts_finish (E_GDBUS_BOOK (gdbus_book), res, &error);
+
unwrap_gerror (error, &err);
#ifndef E_BOOK_DISABLE_DEPRECATED
@@ -1690,7 +1649,7 @@ e_book_async_remove_contacts (EBook *book,
gchar **l;
e_return_async_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_async_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_async_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
if (ids == NULL) {
if (cb)
@@ -1705,9 +1664,7 @@ e_book_async_remove_contacts (EBook *book,
data->callback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_remove_contacts_async (book->priv->proxy, (const gchar **) l, remove_contacts_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_remove_contacts (book->priv->gdbus_book, (const gchar * const *) l, NULL, remove_contacts_reply, data);
g_free (l);
@@ -1741,7 +1698,7 @@ e_book_async_remove_contacts_ex (EBook *book,
gchar **l;
e_return_ex_async_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_ex_async_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_ex_async_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
if (ids == NULL) {
if (cb)
@@ -1756,9 +1713,7 @@ e_book_async_remove_contacts_ex (EBook *book,
data->excallback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_remove_contacts_async (book->priv->proxy, (const gchar **) l, remove_contacts_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_remove_contacts (book->priv->gdbus_book, (const gchar *const *) l, NULL, remove_contacts_reply, data);
g_free (l);
@@ -1789,29 +1744,31 @@ e_book_get_book_view (EBook *book,
GError **error)
{
GError *err = NULL;
- DBusGProxy *view_proxy;
+ EGdbusBookView *gdbus_bookview;
gchar *sexp, *view_path;
gboolean ret = TRUE;
e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
sexp = e_book_query_to_string (query);
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_addressbook_Book_get_book_view (book->priv->proxy, sexp, max_results, &view_path, &err)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_book_call_get_book_view_sync (book->priv->gdbus_book, sexp, max_results, &view_path, NULL, &err)) {
*book_view = NULL;
g_free (sexp);
+
return unwrap_gerror (err, error);
}
- view_proxy = dbus_g_proxy_new_for_name_owner (connection,
- E_DATA_BOOK_FACTORY_SERVICE_NAME, view_path,
- "org.gnome.evolution.dataserver.addressbook.BookView", error);
- UNLOCK_CONN ();
- if (view_proxy) {
- *book_view = _e_book_view_new (book, view_proxy, &connection_lock);
+ gdbus_bookview = e_gdbus_book_view_proxy_new_sync (g_dbus_proxy_get_connection (G_DBUS_PROXY (book_factory_proxy)),
+ G_DBUS_PROXY_FLAGS_NONE,
+ E_DATA_BOOK_FACTORY_SERVICE_NAME,
+ view_path,
+ NULL,
+ error);
+
+ if (gdbus_bookview) {
+ *book_view = _e_book_view_new (book, gdbus_bookview);
} else {
*book_view = NULL;
g_set_error (error, E_BOOK_ERROR, E_BOOK_ERROR_DBUS_EXCEPTION,
@@ -1826,34 +1783,34 @@ e_book_get_book_view (EBook *book,
}
static void
-get_book_view_reply (DBusGProxy *proxy, gchar *view_path, GError *error, gpointer user_data)
+get_book_view_reply (GObject *gdbus_book, GAsyncResult *res, gpointer user_data)
{
+ gchar *view_path = NULL;
+ GError *err = NULL, *error = NULL;
AsyncData *data = user_data;
- GError *err = NULL;
EBookView *view = NULL;
EBookBookViewExCallback excb = data->excallback;
#ifndef E_BOOK_DISABLE_DEPRECATED
EBookBookViewCallback cb = data->callback;
#endif
- DBusGProxy *view_proxy;
+ EGdbusBookView *gdbus_bookview;
+
+ e_gdbus_book_call_get_book_view_finish (E_GDBUS_BOOK (gdbus_book), &view_path, res, &error);
if (view_path) {
- GError *dbus_error = NULL;
-
- LOCK_CONN ();
- view_proxy = dbus_g_proxy_new_for_name_owner (connection, E_DATA_BOOK_FACTORY_SERVICE_NAME, view_path,
- "org.gnome.evolution.dataserver.addressbook.BookView", &dbus_error);
- UNLOCK_CONN ();
- if (view_proxy) {
- view = _e_book_view_new (data->book, view_proxy, &connection_lock);
- } else {
- unwrap_gerror (dbus_error, &err);
- g_error_free (dbus_error);
+ gdbus_bookview = e_gdbus_book_view_proxy_new_sync (g_dbus_proxy_get_connection (G_DBUS_PROXY (book_factory_proxy)),
+ G_DBUS_PROXY_FLAGS_NONE,
+ E_DATA_BOOK_FACTORY_SERVICE_NAME,
+ view_path,
+ NULL,
+ &error);
+ if (gdbus_bookview) {
+ view = _e_book_view_new (data->book, gdbus_bookview);
}
- } else {
- unwrap_gerror (error, &err);
}
+ unwrap_gerror (error, &err);
+
#ifndef E_BOOK_DISABLE_DEPRECATED
if (cb)
cb (data->book, err ? err->code : E_BOOK_ERROR_OK, view, data->closure);
@@ -1863,6 +1820,7 @@ get_book_view_reply (DBusGProxy *proxy, gchar *view_path, GError *error, gpointe
if (err)
g_error_free (err);
+
g_object_unref (data->book);
g_slice_free (AsyncData, data);
}
@@ -1896,7 +1854,7 @@ e_book_async_get_book_view (EBook *book,
gchar *sexp;
e_return_async_error_val_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_async_error_val_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_async_error_val_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_async_error_val_if_fail (query, E_BOOK_ERROR_INVALID_ARG);
data = g_slice_new0 (AsyncData);
@@ -1906,9 +1864,7 @@ e_book_async_get_book_view (EBook *book,
sexp = e_book_query_to_string (query);
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_book_view_async (book->priv->proxy, sexp, max_results, get_book_view_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_get_book_view (book->priv->gdbus_book, sexp, max_results, NULL, get_book_view_reply, data);
g_free (sexp);
return 0;
@@ -1943,7 +1899,7 @@ e_book_async_get_book_view_ex (EBook *book,
gchar *sexp;
e_return_ex_async_error_val_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_ex_async_error_val_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_ex_async_error_val_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_ex_async_error_val_if_fail (query, E_BOOK_ERROR_INVALID_ARG);
data = g_slice_new0 (AsyncData);
@@ -1953,11 +1909,10 @@ e_book_async_get_book_view_ex (EBook *book,
sexp = e_book_query_to_string (query);
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_book_view_async (book->priv->proxy, sexp, max_results, get_book_view_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_get_book_view (book->priv->gdbus_book, sexp, max_results, NULL, get_book_view_reply, data);
g_free (sexp);
+
return TRUE;
}
@@ -1984,13 +1939,14 @@ e_book_get_contacts (EBook *book,
gchar *sexp;
e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
sexp = e_book_query_to_string (query);
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_contact_list (book->priv->proxy, sexp, &list, &err);
- UNLOCK_CONN ();
+
+ e_gdbus_book_call_get_contact_list_sync (book->priv->gdbus_book, sexp, &list, NULL, &err);
+
g_free (sexp);
+
if (!err) {
GList *l = NULL;
gchar **i = list;
@@ -2006,9 +1962,10 @@ e_book_get_contacts (EBook *book,
}
static void
-get_contacts_reply(DBusGProxy *proxy, gchar **vcards, GError *error, gpointer user_data)
+get_contacts_reply (GObject *gdbus_book, GAsyncResult *res, gpointer user_data)
{
- GError *err = NULL;
+ gchar **vcards = NULL;
+ GError *err = NULL, *error = NULL;
AsyncData *data = user_data;
GList *list = NULL;
EBookListExCallback excb = data->excallback;
@@ -2016,6 +1973,8 @@ get_contacts_reply(DBusGProxy *proxy, gchar **vcards, GError *error, gpointer us
EBookListCallback cb = data->callback;
#endif
+ e_gdbus_book_call_get_contact_list_finish (E_GDBUS_BOOK (gdbus_book), &vcards, res, &error);
+
unwrap_gerror (error, &err);
if (!error && vcards) {
@@ -2069,7 +2028,7 @@ e_book_async_get_contacts (EBook *book,
gchar *sexp;
e_return_async_error_val_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_async_error_val_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_async_error_val_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_async_error_val_if_fail (query, E_BOOK_ERROR_INVALID_ARG);
sexp = e_book_query_to_string (query);
@@ -2079,10 +2038,10 @@ e_book_async_get_contacts (EBook *book,
data->callback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_contact_list_async (book->priv->proxy, sexp, get_contacts_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_get_contact_list (book->priv->gdbus_book, sexp, NULL, get_contacts_reply, data);
+
g_free (sexp);
+
return 0;
}
#endif
@@ -2110,7 +2069,7 @@ e_book_async_get_contacts_ex (EBook *book,
gchar *sexp;
e_return_ex_async_error_val_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_ex_async_error_val_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_ex_async_error_val_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
e_return_ex_async_error_val_if_fail (query, E_BOOK_ERROR_INVALID_ARG);
sexp = e_book_query_to_string (query);
@@ -2120,40 +2079,41 @@ e_book_async_get_contacts_ex (EBook *book,
data->excallback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_contact_list_async (book->priv->proxy, sexp, get_contacts_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_get_contact_list (book->priv->gdbus_book, sexp, NULL, get_contacts_reply, data);
+
g_free (sexp);
return TRUE;
}
static GList *
-parse_changes_array (GPtrArray *array)
+parse_changes_array (GVariant *var_changes)
{
GList *l = NULL;
- gint i;
+ GVariantIter iter;
+ guint32 val_uint;
+ gchar *val_str;
- if (array == NULL)
+ if (var_changes == NULL)
return NULL;
- for (i = 0; i < array->len; i++) {
+ g_variant_iter_init (&iter, var_changes);
+ while (g_variant_iter_next (&iter, "(us)", &val_uint, &val_str)) {
EBookChange *change;
- GValueArray *vals;
- vals = g_ptr_array_index (array, i);
+ if (val_uint == (guint32) -1 || !val_str || !*val_str) {
+ /* skip empty values */
+ } else {
+ change = g_slice_new (EBookChange);
+ change->change_type = val_uint;
+ change->contact = e_contact_new_from_vcard (val_str);
- change = g_slice_new (EBookChange);
- change->change_type = g_value_get_uint (g_value_array_get_nth (vals, 0));
- change->contact = e_contact_new_from_vcard
- (g_value_get_string (g_value_array_get_nth (vals, 1)));
+ l = g_list_prepend (l, change);
+ }
- l = g_list_prepend (l, change);
+ g_free (val_str);
}
- g_ptr_array_foreach (array, (GFunc)g_value_array_free, NULL);
- g_ptr_array_free (array, TRUE);
-
return g_list_reverse (l);
}
@@ -2176,16 +2136,18 @@ e_book_get_changes (EBook *book,
GError **error)
{
GError *err = NULL;
- GPtrArray *array = NULL;
+ GVariant *var_changes = NULL;
e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+
+ e_gdbus_book_call_get_changes_sync (book->priv->gdbus_book, changeid, &var_changes, NULL, &err);
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_changes (book->priv->proxy, changeid, &array, &err);
- UNLOCK_CONN ();
if (!err) {
- *changes = parse_changes_array (array);
+ *changes = parse_changes_array (var_changes);
+
+ g_variant_unref (var_changes);
+
return TRUE;
} else {
return unwrap_gerror (err, error);
@@ -2193,9 +2155,10 @@ e_book_get_changes (EBook *book,
}
static void
-get_changes_reply (DBusGProxy *proxy, GPtrArray *changes, GError *error, gpointer user_data)
+get_changes_reply (GObject *gdbus_book, GAsyncResult *res, gpointer user_data)
{
- GError *err = NULL;
+ GVariant *var_changes = NULL;
+ GError *err = NULL, *error = NULL;
AsyncData *data = user_data;
EBookListExCallback excb = data->excallback;
#ifndef E_BOOK_DISABLE_DEPRECATED
@@ -2203,10 +2166,14 @@ get_changes_reply (DBusGProxy *proxy, GPtrArray *changes, GError *error, gpointe
#endif
GList *list = NULL;
+ e_gdbus_book_call_get_changes_finish (E_GDBUS_BOOK (gdbus_book), &var_changes, res, &error);
+
unwrap_gerror (error, &err);
- if (changes)
- list = parse_changes_array (changes);
+ if (var_changes) {
+ list = parse_changes_array (var_changes);
+ g_variant_unref (var_changes);
+ }
#ifndef E_BOOK_DISABLE_DEPRECATED
if (cb)
@@ -2247,16 +2214,14 @@ e_book_async_get_changes (EBook *book,
AsyncData *data;
e_return_async_error_val_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_async_error_val_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_async_error_val_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
data = g_slice_new0 (AsyncData);
data->book = g_object_ref (book);
data->callback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_changes_async (book->priv->proxy, changeid, get_changes_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_get_changes (book->priv->gdbus_book, changeid, NULL, get_changes_reply, data);
return 0;
}
@@ -2285,16 +2250,14 @@ e_book_async_get_changes_ex (EBook *book,
AsyncData *data;
e_return_ex_async_error_val_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_ex_async_error_val_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_ex_async_error_val_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
data = g_slice_new0 (AsyncData);
data->book = g_object_ref (book);
data->excallback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_get_changes_async (book->priv->proxy, changeid, get_changes_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_get_changes (book->priv->gdbus_book, changeid, NULL, get_changes_reply, data);
return TRUE;
}
@@ -2340,16 +2303,10 @@ gboolean
e_book_cancel (EBook *book,
GError **error)
{
- gboolean res;
-
e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
- LOCK_CONN ();
- res = org_gnome_evolution_dataserver_addressbook_Book_cancel_operation (book->priv->proxy, error);
- UNLOCK_CONN ();
-
- return res;
+ return e_gdbus_book_call_cancel_operation_sync (book->priv->gdbus_book, NULL, error);
}
/**
@@ -2363,16 +2320,10 @@ e_book_cancel (EBook *book,
gboolean
e_book_cancel_async_op (EBook *book, GError **error)
{
- gboolean res;
-
e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
-
- LOCK_CONN ();
- res = org_gnome_evolution_dataserver_addressbook_Book_cancel_operation (book->priv->proxy, error);
- UNLOCK_CONN ();
+ e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
- return res;
+ return e_gdbus_book_call_cancel_operation_sync (book->priv->gdbus_book, NULL, error);
}
/**
@@ -2393,17 +2344,14 @@ e_book_open (EBook *book,
GError *err = NULL;
e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_addressbook_Book_open (book->priv->proxy, only_if_exists, &err)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_book_call_open_sync (book->priv->gdbus_book, only_if_exists, NULL, &err)) {
unwrap_gerror (err, error);
return FALSE;
}
- UNLOCK_CONN ();
if (!err)
book->priv->loaded = TRUE;
@@ -2412,15 +2360,17 @@ e_book_open (EBook *book,
}
static void
-open_reply(DBusGProxy *proxy, GError *error, gpointer user_data)
+open_reply (GObject *gdbus_book, GAsyncResult *res, gpointer user_data)
{
- GError *err = NULL;
+ GError *err = NULL, *error = NULL;
AsyncData *data = user_data;
EBookExCallback excb = data->excallback;
#ifndef E_BOOK_DISABLE_DEPRECATED
EBookCallback cb = data->callback;
#endif
+ e_gdbus_book_call_open_finish (E_GDBUS_BOOK (gdbus_book), res, &error);
+
unwrap_gerror (error, &err);
data->book->priv->loaded = !error;
@@ -2463,16 +2413,14 @@ e_book_async_open (EBook *book,
AsyncData *data;
e_return_async_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_async_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_async_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
data = g_slice_new0 (AsyncData);
data->book = g_object_ref (book);
data->callback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_open_async (book->priv->proxy, only_if_exists, open_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_open (book->priv->gdbus_book, only_if_exists, NULL, open_reply, data);
return 0;
}
@@ -2501,16 +2449,14 @@ e_book_async_open_ex (EBook *book,
AsyncData *data;
e_return_ex_async_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_ex_async_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_ex_async_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
data = g_slice_new0 (AsyncData);
data->book = g_object_ref (book);
data->excallback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_open_async (book->priv->proxy, only_if_exists, open_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_open (book->priv->gdbus_book, only_if_exists, NULL, open_reply, data);
return TRUE;
}
@@ -2532,25 +2478,25 @@ e_book_remove (EBook *book,
GError *err = NULL;
e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_remove (book->priv->proxy, &err);
- UNLOCK_CONN ();
+ e_gdbus_book_call_remove_sync (book->priv->gdbus_book, NULL, &err);
return unwrap_gerror (err, error);
}
static void
-remove_reply(DBusGProxy *proxy, GError *error, gpointer user_data)
+remove_reply (GObject *gdbus_book, GAsyncResult *res, gpointer user_data)
{
- GError *err = NULL;
+ GError *err = NULL, *error = NULL;
AsyncData *data = user_data;
EBookExCallback excb = data->excallback;
#ifndef E_BOOK_DISABLE_DEPRECATED
EBookCallback cb = data->callback;
#endif
+ e_gdbus_book_call_remove_finish (E_GDBUS_BOOK (gdbus_book), res, &error);
+
unwrap_gerror (error, &err);
#ifndef E_BOOK_DISABLE_DEPRECATED
@@ -2589,16 +2535,14 @@ e_book_async_remove (EBook *book,
AsyncData *data;
e_return_async_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_async_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_async_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
data = g_slice_new0 (AsyncData);
data->book = g_object_ref (book);
data->callback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_remove_async (book->priv->proxy, remove_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_remove (book->priv->gdbus_book, NULL, remove_reply, data);
return 0;
}
@@ -2625,16 +2569,14 @@ e_book_async_remove_ex (EBook *book,
AsyncData *data;
e_return_ex_async_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_ex_async_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_ex_async_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
data = g_slice_new0 (AsyncData);
data->book = g_object_ref (book);
data->excallback = cb;
data->closure = closure;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_addressbook_Book_remove_async (book->priv->proxy, remove_reply, data);
- UNLOCK_CONN ();
+ e_gdbus_book_call_remove (book->priv->gdbus_book, NULL, remove_reply, data);
return TRUE;
}
@@ -2686,17 +2628,14 @@ e_book_get_static_capabilities (EBook *book,
GError **error)
{
e_return_error_if_fail (E_IS_BOOK (book), E_BOOK_ERROR_INVALID_ARG);
- e_return_error_if_fail (book->priv->proxy, E_BOOK_ERROR_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (book->priv->gdbus_book, E_BOOK_ERROR_REPOSITORY_OFFLINE);
if (!book->priv->cap_queried) {
gchar *cap = NULL;
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_addressbook_Book_get_static_capabilities (book->priv->proxy, &cap, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_book_call_get_static_capabilities_sync (book->priv->gdbus_book, &cap, NULL, error)) {
return NULL;
}
- UNLOCK_CONN ();
book->priv->cap = cap;
book->priv->cap_queried = TRUE;
@@ -3075,8 +3014,10 @@ e_book_new (ESource *source, GError **error)
e_return_error_if_fail (E_IS_SOURCE (source), E_BOOK_ERROR_INVALID_ARG);
if (!e_book_activate (&err)) {
- g_warning (G_STRLOC ": cannot activate book: %s\n", err->message);
+ unwrap_gerror (err, &err);
+ g_warning (G_STRLOC ": cannot activate book: %s", err->message);
g_propagate_error (error, err);
+
return NULL;
}
@@ -3087,40 +3028,41 @@ e_book_new (ESource *source, GError **error)
xml = e_source_to_standalone_xml (source);
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_addressbook_BookFactory_get_book (factory_proxy, xml, &path, &err)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_book_factory_call_get_book_sync (book_factory_proxy, xml, &path, NULL, &err)) {
+ unwrap_gerror (err, &err);
g_free (xml);
g_warning (G_STRLOC ": cannot get book from factory: %s", err ? err->message : "[no error]");
- g_propagate_error (error, err);
+ if (err)
+ g_propagate_error (error, err);
g_object_unref (book);
+
return NULL;
}
g_free (xml);
- book->priv->proxy = dbus_g_proxy_new_for_name_owner (connection,
- E_DATA_BOOK_FACTORY_SERVICE_NAME, path,
- "org.gnome.evolution.dataserver.addressbook.Book",
- &err);
- UNLOCK_CONN ();
+ book->priv->gdbus_book = e_gdbus_book_proxy_new_sync (g_dbus_proxy_get_connection (G_DBUS_PROXY (book_factory_proxy)),
+ G_DBUS_PROXY_FLAGS_NONE,
+ E_DATA_BOOK_FACTORY_SERVICE_NAME,
+ path,
+ NULL,
+ &err);
- if (!book->priv->proxy) {
- g_warning (G_STRLOC ": cannot get proxy for book %s: %s", path, err->message);
- g_propagate_error (error, err);
+ if (!book->priv->gdbus_book) {
g_free (path);
+ unwrap_gerror (err, &err);
+ g_warning ("Cannot create cal proxy: %s", err ? err->message : "Unknown error");
+ if (err)
+ g_error_free (err);
g_object_unref (book);
return NULL;
}
- g_free (path);
- g_object_weak_ref (G_OBJECT (book->priv->proxy), proxy_destroyed, book);
+ g_free (path);
- dbus_g_proxy_add_signal (book->priv->proxy, "writable", G_TYPE_BOOLEAN, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (book->priv->proxy, "writable", G_CALLBACK (writable_cb), book, NULL);
- dbus_g_proxy_add_signal (book->priv->proxy, "connection", G_TYPE_BOOLEAN, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (book->priv->proxy, "connection", G_CALLBACK (connection_cb), book, NULL);
- dbus_g_proxy_add_signal (book->priv->proxy, "auth_required", G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (book->priv->proxy, "auth_required", G_CALLBACK (auth_required_cb), book, NULL);
+ g_signal_connect (g_dbus_proxy_get_connection (G_DBUS_PROXY (book->priv->gdbus_book)), "closed", G_CALLBACK (gdbus_book_closed_cb), book);
+ g_signal_connect (book->priv->gdbus_book, "writable", G_CALLBACK (writable_cb), book);
+ g_signal_connect (book->priv->gdbus_book, "connection", G_CALLBACK (connection_cb), book);
+ g_signal_connect (book->priv->gdbus_book, "auth-required", G_CALLBACK (auth_required_cb), book);
return book;
}
@@ -3347,27 +3289,6 @@ e_book_new_default_addressbook (GError **error)
return book;
}
-static gboolean
-strcaseequal_no_underscore (const gchar *str1, const gchar *str2)
-{
- gint i, j;
-
- if (!str1 || !str2)
- return FALSE;
-
- for (i = 0, j = 0; str1[i] && str2[j]; i++, j++) {
- while (str1[i] == '_' && str1[i + 1])
- i++;
- while (str2[j] == '_' && str2[j + 1])
- j++;
-
- if (g_ascii_tolower (str1[i]) != g_ascii_tolower (str2[j]))
- return FALSE;
- }
-
- return !str1[i] && !str2[j];
-}
-
/**
* If the GError is a remote error, extract the EBookStatus embedded inside.
* Otherwise return DBUS_EXCEPTION (I know this is DBus...).
@@ -3380,49 +3301,54 @@ get_status_from_error (GError *error)
const gchar *name;
EBookStatus err_code;
} errors[] = {
- { err ("E_DATA_BOOK_STATUS_SUCCESS", E_BOOK_ERROR_OK) },
- { err ("E_DATA_BOOK_STATUS_REPOSITORY_OFFLINE", E_BOOK_ERROR_REPOSITORY_OFFLINE) },
- { err ("E_DATA_BOOK_STATUS_PERMISSION_DENIED", E_BOOK_ERROR_PERMISSION_DENIED) },
- { err ("E_DATA_BOOK_STATUS_CONTACT_NOT_FOUND", E_BOOK_ERROR_CONTACT_NOT_FOUND) },
- { err ("E_DATA_BOOK_STATUS_CONTACTID_ALREADY_EXISTS", E_BOOK_ERROR_CONTACT_ID_ALREADY_EXISTS) },
- { err ("E_DATA_BOOK_STATUS_AUTHENTICATION_FAILED", E_BOOK_ERROR_AUTHENTICATION_FAILED) },
- { err ("E_DATA_BOOK_STATUS_AUTHENTICATION_REQUIRED", E_BOOK_ERROR_AUTHENTICATION_REQUIRED) },
- { err ("E_DATA_BOOK_STATUS_UNSUPPORTED_FIELD", E_BOOK_ERROR_OTHER_ERROR) },
- { err ("E_DATA_BOOK_STATUS_UNSUPPORTED_AUTHENTICATION_METHOD", E_BOOK_ERROR_UNSUPPORTED_AUTHENTICATION_METHOD) },
- { err ("E_DATA_BOOK_STATUS_TLS_NOT_AVAILABLE", E_BOOK_ERROR_TLS_NOT_AVAILABLE) },
- { err ("E_DATA_BOOK_STATUS_NO_SUCH_BOOK", E_BOOK_ERROR_NO_SUCH_BOOK) },
- { err ("E_DATA_BOOK_STATUS_BOOK_REMOVED", E_BOOK_ERROR_NO_SUCH_SOURCE) },
- { err ("E_DATA_BOOK_STATUS_OFFLINE_UNAVAILABLE", E_BOOK_ERROR_OFFLINE_UNAVAILABLE) },
- { err ("E_DATA_BOOK_STATUS_SEARCH_SIZE_LIMIT_EXCEEDED", E_BOOK_ERROR_OTHER_ERROR) },
- { err ("E_DATA_BOOK_STATUS_SEARCH_TIME_LIMIT_EXCEEDED", E_BOOK_ERROR_OTHER_ERROR) },
- { err ("E_DATA_BOOK_STATUS_INVALID_QUERY", E_BOOK_ERROR_OTHER_ERROR) },
- { err ("E_DATA_BOOK_STATUS_QUERY_REFUSED", E_BOOK_ERROR_OTHER_ERROR) },
- { err ("E_DATA_BOOK_STATUS_COULD_NOT_CANCEL", E_BOOK_ERROR_COULD_NOT_CANCEL) },
- { err ("E_DATA_BOOK_STATUS_OTHER_ERROR", E_BOOK_ERROR_OTHER_ERROR) },
- { err ("E_DATA_BOOK_STATUS_INVALID_SERVER_VERSION", E_BOOK_ERROR_INVALID_SERVER_VERSION) },
- { err ("E_DATA_BOOK_STATUS_NO_SPACE", E_BOOK_ERROR_NO_SPACE) },
- { err ("E_DATA_BOOK_STATUS_INVALID_ARG", E_BOOK_ERROR_INVALID_ARG) },
- { err ("E_DATA_BOOK_STATUS_NOT_SUPPORTED", E_BOOK_ERROR_NOT_SUPPORTED) }
+ { err ("Success", E_BOOK_ERROR_OK) },
+ { err ("RepositoryOffline", E_BOOK_ERROR_REPOSITORY_OFFLINE) },
+ { err ("PermissionDenied", E_BOOK_ERROR_PERMISSION_DENIED) },
+ { err ("ContactNotFound", E_BOOK_ERROR_CONTACT_NOT_FOUND) },
+ { err ("ContactIDAlreadyExists", E_BOOK_ERROR_CONTACT_ID_ALREADY_EXISTS) },
+ { err ("AuthenticationFailed", E_BOOK_ERROR_AUTHENTICATION_FAILED) },
+ { err ("AuthenticationRequired", E_BOOK_ERROR_AUTHENTICATION_REQUIRED) },
+ { err ("UnsupportedField", E_BOOK_ERROR_OTHER_ERROR) },
+ { err ("UnsupportedAuthenticationMethod", E_BOOK_ERROR_UNSUPPORTED_AUTHENTICATION_METHOD) },
+ { err ("TLSNotAvailable", E_BOOK_ERROR_TLS_NOT_AVAILABLE) },
+ { err ("NoSuchBook", E_BOOK_ERROR_NO_SUCH_BOOK) },
+ { err ("BookRemoved", E_BOOK_ERROR_NO_SUCH_SOURCE) },
+ { err ("OfflineUnavailable", E_BOOK_ERROR_OFFLINE_UNAVAILABLE) },
+ { err ("SearchSizeLimitExceeded", E_BOOK_ERROR_OTHER_ERROR) },
+ { err ("SearchTimeLimitExceeded", E_BOOK_ERROR_OTHER_ERROR) },
+ { err ("InvalidQuery", E_BOOK_ERROR_OTHER_ERROR) },
+ { err ("QueryRefused", E_BOOK_ERROR_OTHER_ERROR) },
+ { err ("CouldNotCancel", E_BOOK_ERROR_COULD_NOT_CANCEL) },
+ { err ("OtherError", E_BOOK_ERROR_OTHER_ERROR) },
+ { err ("InvalidServerVersion", E_BOOK_ERROR_INVALID_SERVER_VERSION) },
+ { err ("NoSpace", E_BOOK_ERROR_NO_SPACE) },
+ { err ("InvalidArg", E_BOOK_ERROR_INVALID_ARG) },
+ { err ("NotSupported", E_BOOK_ERROR_NOT_SUPPORTED) }
};
#undef err
if G_LIKELY (error == NULL)
return E_BOOK_ERROR_OK;
- if (error->domain == DBUS_GERROR && error->code == DBUS_GERROR_REMOTE_EXCEPTION) {
- const gchar *name;
+ if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_DBUS_ERROR)) {
+ gchar *name;
gint i;
- name = dbus_g_error_get_name (error);
+ name = g_dbus_error_get_remote_error (error);
for (i = 0; i < G_N_ELEMENTS (errors); i++) {
- if (g_ascii_strcasecmp (errors[i].name, name) == 0 ||
- strcaseequal_no_underscore (errors[i].name, name))
+ if (g_ascii_strcasecmp (errors[i].name, name) == 0) {
+ g_free (name);
return errors[i].err_code;
+ }
}
g_warning (G_STRLOC ": unmatched error name %s", name);
+ g_free (name);
+
return E_BOOK_ERROR_OTHER_ERROR;
+ } else if (error->domain == E_BOOK_ERROR) {
+ return error->code;
} else {
/* In this case the error was caused by DBus. Dump the message to the
console as otherwise we have no idea what the problem is. */
@@ -3442,19 +3368,22 @@ unwrap_gerror (GError *error, GError **client_error)
if (error == NULL)
return TRUE;
- if (error->domain == DBUS_GERROR && error->code == DBUS_GERROR_REMOTE_EXCEPTION) {
- GError *new;
- gint code;
+ if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_DBUS_ERROR)) {
if (client_error) {
+ gint code;
+
code = get_status_from_error (error);
- new = g_error_new_literal (E_BOOK_ERROR, code, error->message);
- *client_error = new;
+ g_dbus_error_strip_remote_error (error);
+
+ *client_error = g_error_new_literal (E_BOOK_ERROR, code, error->message);
}
+
g_error_free (error);
} else {
if (client_error)
*client_error = error;
}
+
return FALSE;
}
@@ -3483,8 +3412,25 @@ array_to_stringlist (gchar **list)
GList *l = NULL;
gchar **i = list;
while (*i != NULL) {
- l = g_list_prepend (l, (*i++));
+ l = g_list_prepend (l, g_strdup (*i++));
}
g_free (list);
return g_list_reverse(l);
}
+
+static EList *
+array_to_elist (gchar **list)
+{
+ EList *elst = NULL;
+ gchar **i = list;
+
+ elst = e_list_new (NULL, (EListFreeFunc) g_free, NULL);
+ if (!list)
+ return elst;
+
+ while (*i != NULL) {
+ e_list_append (elst, g_strdup (*i++));
+ }
+
+ return elst;
+}
diff --git a/addressbook/libedata-book/Makefile.am b/addressbook/libedata-book/Makefile.am
index 1e27886..12db8f8 100644
--- a/addressbook/libedata-book/Makefile.am
+++ b/addressbook/libedata-book/Makefile.am
@@ -1,11 +1,3 @@
-# The marshallers
-MARSHAL_GENERATED = e-data-book-marshal.c e-data-book-marshal.h
- EVO_MARSHAL_RULE@
-
-DBUS_GENERATED_H = e-data-book-glue.h e-data-book-factory-glue.h e-data-book-view-glue.h
-%-glue.h: %.xml
- @DBUS_BINDING_TOOL@ --mode=glib-server --output=$@ --prefix=$(subst -,_,$*) $^
-
include $(top_srcdir)/glib-gen.mak
glib_enum_headers=e-data-book-types.h
glib_enum_define=E_DATA_BOOK
@@ -21,15 +13,14 @@ libedata_book_1_2_la_CPPFLAGS = \
-DG_LOG_DOMAIN=\"libedata-book\" \
-DLIBEXECDIR=\"$(libexecdir)\" \
-I$(top_srcdir) \
- -I$(top_builddir) \
-I$(top_srcdir)/addressbook \
+ -I$(top_srcdir)/addressbook/libegdbus \
+ -I$(top_builddir) \
-I$(top_builddir)/addressbook \
$(DB_CFLAGS) \
$(EVOLUTION_ADDRESSBOOK_CFLAGS)
libedata_book_1_2_la_SOURCES = \
- $(MARSHAL_GENERATED) \
- $(DBUS_GENERATED_H) \
e-book-backend-factory.c \
e-book-backend-sexp.c \
e-book-backend-summary.c \
@@ -44,6 +35,7 @@ libedata_book_1_2_la_SOURCES = \
$(ENUM_GENERATED)
libedata_book_1_2_la_LIBADD = \
+ $(top_builddir)/addressbook/libegdbus/libegdbus-book.la \
$(top_builddir)/addressbook/libebook/libebook-1.2.la \
$(top_builddir)/libedataserver/libedataserver-1.2.la \
$(top_builddir)/libebackend/libebackend-1.2.la \
@@ -78,8 +70,9 @@ e_addressbook_factory_CPPFLAGS = \
-DG_LOG_DOMAIN=\"libedata-book\" \
-DE_PRGNAME=\"e-addressbook-factory\" \
-I$(top_srcdir) \
- -I$(top_builddir) \
-I$(top_srcdir)/addressbook \
+ -I$(top_srcdir)/addressbook/libegdbus \
+ -I$(top_builddir) \
-I$(top_builddir)/addressbook
e_addressbook_factory_SOURCES = \
@@ -103,12 +96,11 @@ servicedir = $(datadir)/dbus-1/services
service_DATA = $(service_in_files:.service.in=.service)
@EVO_SUBST_SERVICE_RULE@
-BUILT_SOURCES = $(DBUS_GENERATED_H) $(MARSHAL_GENERATED) $(ENUM_GENERATED)
+BUILT_SOURCES = $(ENUM_GENERATED)
CLEANFILES = $(BUILT_SOURCES) $(service_DATA)
DISTCLEANFILES = $(pkgconfig_DATA)
EXTRA_DIST = \
- e-data-book-marshal.list \
e-data-book-factory.xml \
e-data-book-view.xml \
e-data-book.xml \
diff --git a/addressbook/libedata-book/e-data-book-factory.c b/addressbook/libedata-book/e-data-book-factory.c
index fded31a..17d98a3 100644
--- a/addressbook/libedata-book/e-data-book-factory.c
+++ b/addressbook/libedata-book/e-data-book-factory.c
@@ -26,10 +26,6 @@
#include <unistd.h>
#include <glib-object.h>
#include <glib/gi18n.h>
-#include <dbus/dbus-protocol.h>
-#include <dbus/dbus-glib.h>
-#include <dbus/dbus-glib-lowlevel.h>
-#include <dbus/dbus-glib-bindings.h>
#include <libebackend/e-data-server-module.h>
#include <libebackend/e-offline-listener.h>
#include "e-book-backend-factory.h"
@@ -38,14 +34,11 @@
#include "e-book-backend.h"
#include "e-book-backend-factory.h"
-#define d(x)
+#include "e-gdbus-egdbusbookfactory.h"
-static void impl_BookFactory_getBook(EDataBookFactory *factory, const gchar *IN_uri, DBusGMethodInvocation *context);
-#include "e-data-book-factory-glue.h"
+#define d(x)
static GMainLoop *loop;
-static EDataBookFactory *factory;
-extern DBusGConnection *connection;
/* Convenience macro to test and set a GError/return on failure */
#define g_set_error_val_if_fail(test, returnval, error, domain, code) G_STMT_START{ \
@@ -61,6 +54,8 @@ G_DEFINE_TYPE(EDataBookFactory, e_data_book_factory, G_TYPE_OBJECT);
#define E_DATA_BOOK_FACTORY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), E_TYPE_DATA_BOOK_FACTORY, EDataBookFactoryPrivate))
struct _EDataBookFactoryPrivate {
+ EGdbusBookFactory *gdbus_object;
+
/* 'protocol' -> EBookBackendFactory hash table */
GHashTable *factories;
@@ -180,42 +175,6 @@ e_data_book_factory_set_backend_mode (EDataBookFactory *factory,
g_mutex_unlock (factory->priv->backends_lock);
}
-static void
-e_data_book_factory_class_init (EDataBookFactoryClass *class)
-{
- g_type_class_add_private (class, sizeof (EDataBookFactoryPrivate));
-
- dbus_g_object_type_install_info (
- G_TYPE_FROM_CLASS (class),
- &dbus_glib_e_data_book_factory_object_info);
-}
-
-static void
-e_data_book_factory_init (EDataBookFactory *factory)
-{
- factory->priv = E_DATA_BOOK_FACTORY_GET_PRIVATE (factory);
-
- factory->priv->factories = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
-
- factory->priv->backends_lock = g_mutex_new ();
- factory->priv->backends = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
-
- factory->priv->books_lock = g_mutex_new ();
- factory->priv->books = g_hash_table_new_full (
- g_str_hash, g_str_equal,
- (GDestroyNotify) g_free,
- (GDestroyNotify) NULL);
-
- factory->priv->connections_lock = g_mutex_new ();
- factory->priv->connections = g_hash_table_new_full (
- g_str_hash, g_str_equal,
- (GDestroyNotify) g_free,
- (GDestroyNotify) NULL);
-
- e_data_server_module_init ();
- e_data_book_factory_register_backends (factory);
-}
-
/* TODO: write dispose to kill hash */
static gchar *
e_data_book_factory_extract_proto_from_uri (const gchar *uri)
@@ -262,16 +221,22 @@ construct_book_factory_path (void)
getpid (), g_atomic_int_exchange_and_add (&counter, 1));
}
+static gboolean
+remove_dead_pointer_cb (gpointer path, gpointer live, gpointer dead)
+{
+ return live == dead;
+}
+
static void
-my_remove (gchar *key, GObject *dead)
+book_freed_cb (EDataBookFactory *factory, GObject *dead)
{
EDataBookFactoryPrivate *priv = factory->priv;
GHashTableIter iter;
gpointer hkey, hvalue;
- d (g_debug ("%s (%p) is dead", key, dead));
+ d (g_debug ("in factory %p (%p) is dead", factory, dead));
- g_hash_table_remove (priv->books, key);
+ g_hash_table_foreach_remove (priv->books, remove_dead_pointer_cb, dead);
g_hash_table_iter_init (&iter, priv->connections);
while (g_hash_table_iter_next (&iter, &hkey, &hvalue)) {
@@ -290,8 +255,6 @@ my_remove (gchar *key, GObject *dead)
}
}
- g_free (key);
-
/* If there are no open books, start a timer to quit */
if (priv->exit_timeout == 0 && g_hash_table_size (priv->books) == 0)
priv->exit_timeout = g_timeout_add_seconds (
@@ -299,31 +262,33 @@ my_remove (gchar *key, GObject *dead)
}
static void
-backend_gone_cb (const gchar *uri, GObject *backend)
+backend_gone_cb (EDataBookFactory *factory, GObject *dead)
{
EDataBookFactoryPrivate *priv = factory->priv;
g_mutex_lock (priv->backends_lock);
- g_hash_table_remove (priv->backends, uri);
+ g_hash_table_foreach_remove (priv->backends, remove_dead_pointer_cb, dead);
g_mutex_unlock (priv->backends_lock);
}
-static void
-impl_BookFactory_getBook(EDataBookFactory *factory, const gchar *IN_source, DBusGMethodInvocation *context)
+static gboolean
+impl_BookFactory_getBook (EGdbusBookFactory *object, GDBusMethodInvocation *invocation, const gchar *in_source, EDataBookFactory *factory)
{
EDataBook *book;
EBookBackend *backend;
EDataBookFactoryPrivate *priv = factory->priv;
ESource *source;
- gchar *uri, *path, *sender;
+ gchar *uri, *path;
+ const gchar *sender;
GList *list;
+ GError *error = NULL;
- if (IN_source == NULL || IN_source[0] == '\0') {
- dbus_g_method_return_error (
- context, g_error_new (
- E_DATA_BOOK_ERROR, E_DATA_BOOK_STATUS_NO_SUCH_BOOK,
- _("Empty URI")));
- return;
+ if (in_source == NULL || in_source[0] == '\0') {
+ error = g_error_new (E_DATA_BOOK_ERROR, E_DATA_BOOK_STATUS_NO_SUCH_BOOK, _("Empty URI"));
+ g_dbus_method_invocation_return_gerror (invocation, error);
+ g_error_free (error);
+
+ return TRUE;
}
/* Remove a pending exit */
@@ -334,14 +299,15 @@ impl_BookFactory_getBook(EDataBookFactory *factory, const gchar *IN_source, DBus
g_mutex_lock (priv->backends_lock);
- source = e_source_new_from_standalone_xml (IN_source);
+ source = e_source_new_from_standalone_xml (in_source);
if (!source) {
g_mutex_unlock (priv->backends_lock);
- dbus_g_method_return_error (
- context, g_error_new (
- E_DATA_BOOK_ERROR, E_DATA_BOOK_STATUS_NO_SUCH_BOOK,
- _("Invalid source")));
- return;
+
+ error = g_error_new (E_DATA_BOOK_ERROR, E_DATA_BOOK_STATUS_NO_SUCH_BOOK, _("Invalid source"));
+ g_dbus_method_invocation_return_gerror (invocation, error);
+ g_error_free (error);
+
+ return TRUE;
}
uri = e_source_get_uri (source);
@@ -362,7 +328,7 @@ impl_BookFactory_getBook(EDataBookFactory *factory, const gchar *IN_source, DBus
g_hash_table_insert (
priv->backends, uri_key, backend);
- g_object_weak_ref (G_OBJECT (backend), (GWeakNotify) backend_gone_cb, uri_key);
+ g_object_weak_ref (G_OBJECT (backend), (GWeakNotify) backend_gone_cb, factory);
g_signal_connect (backend, "last-client-gone", G_CALLBACK (g_object_unref), NULL);
e_book_backend_set_mode (backend, priv->mode);
}
@@ -374,29 +340,29 @@ impl_BookFactory_getBook(EDataBookFactory *factory, const gchar *IN_source, DBus
g_mutex_unlock (priv->books_lock);
g_mutex_unlock (priv->backends_lock);
- dbus_g_method_return_error (
- context, g_error_new (
- E_DATA_BOOK_ERROR, E_DATA_BOOK_STATUS_NO_SUCH_BOOK,
- _("Invalid source")));
- return;
+
+ error = g_error_new (E_DATA_BOOK_ERROR, E_DATA_BOOK_STATUS_NO_SUCH_BOOK, _("Invalid source"));
+ g_dbus_method_invocation_return_gerror (invocation, error);
+ g_error_free (error);
+
+ return TRUE;
}
path = construct_book_factory_path ();
book = e_data_book_new (backend, source);
g_hash_table_insert (priv->books, g_strdup (path), book);
e_book_backend_add_client (backend, book);
- dbus_g_connection_register_g_object (
- connection, path, G_OBJECT (book));
+ e_data_book_register_gdbus_object (book, g_dbus_method_invocation_get_connection (invocation), path, &error);
g_object_weak_ref (
G_OBJECT (book), (GWeakNotify)
- my_remove, g_strdup (path));
+ book_freed_cb, factory);
/* Update the hash of open connections */
g_mutex_lock (priv->connections_lock);
- sender = dbus_g_method_get_sender (context);
+ sender = g_dbus_method_invocation_get_sender (invocation);
list = g_hash_table_lookup (priv->connections, sender);
list = g_list_prepend (list, book);
- g_hash_table_insert (priv->connections, sender, list);
+ g_hash_table_insert (priv->connections, g_strdup (sender), list);
g_mutex_unlock (priv->connections_lock);
g_mutex_unlock (priv->books_lock);
@@ -405,7 +371,15 @@ impl_BookFactory_getBook(EDataBookFactory *factory, const gchar *IN_source, DBus
g_object_unref (source);
g_free (uri);
- dbus_g_method_return (context, path);
+ if (error) {
+ g_dbus_method_invocation_return_gerror (invocation, error);
+ g_error_free (error);
+ } else
+ e_gdbus_book_factory_complete_get_book (object, invocation, path);
+
+ g_free (path);
+
+ return TRUE;
}
static void
@@ -424,31 +398,76 @@ remove_data_book_cb (gpointer data_bk, gpointer user_data)
}
static void
-name_owner_changed (DBusGProxy *proxy,
- const gchar *name,
- const gchar *prev_owner,
- const gchar *new_owner,
- EDataBookFactory *factory)
+e_data_book_factory_init (EDataBookFactory *factory)
{
- if (strcmp (new_owner, "") == 0 && strcmp (name, prev_owner) == 0) {
- gchar *key;
- GList *list = NULL;
- g_mutex_lock (factory->priv->connections_lock);
- while (g_hash_table_lookup_extended (
- factory->priv->connections, prev_owner,
- (gpointer) &key, (gpointer) &list)) {
- GList *copy = g_list_copy (list);
-
- /* this should trigger the book's weak ref notify
- * function, which will remove it from the list before
- * it's freed, and will remove the connection from
- * priv->connections once they're all gone */
- g_list_foreach (copy, remove_data_book_cb, NULL);
- g_list_free (copy);
- }
+ factory->priv = E_DATA_BOOK_FACTORY_GET_PRIVATE (factory);
- g_mutex_unlock (factory->priv->connections_lock);
- }
+ factory->priv->gdbus_object = e_gdbus_book_factory_stub_new ();
+ g_signal_connect (factory->priv->gdbus_object, "handle-get-book", G_CALLBACK (impl_BookFactory_getBook), factory);
+
+ factory->priv->factories = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+
+ factory->priv->backends_lock = g_mutex_new ();
+ factory->priv->backends = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+
+ factory->priv->books_lock = g_mutex_new ();
+ factory->priv->books = g_hash_table_new_full (
+ g_str_hash, g_str_equal,
+ (GDestroyNotify) g_free,
+ (GDestroyNotify) NULL);
+
+ factory->priv->connections_lock = g_mutex_new ();
+ factory->priv->connections = g_hash_table_new_full (
+ g_str_hash, g_str_equal,
+ (GDestroyNotify) g_free,
+ (GDestroyNotify) NULL);
+
+ e_data_server_module_init ();
+ e_data_book_factory_register_backends (factory);
+}
+
+static void
+e_data_book_factory_finalize (GObject *object)
+{
+ EDataBookFactory *factory = E_DATA_BOOK_FACTORY (object);
+
+ g_return_if_fail (factory != NULL);
+
+ g_object_unref (factory->priv->gdbus_object);
+
+ g_hash_table_destroy (factory->priv->factories);
+ g_hash_table_destroy (factory->priv->backends);
+ g_hash_table_destroy (factory->priv->books);
+ g_hash_table_destroy (factory->priv->connections);
+
+ g_mutex_free (factory->priv->backends_lock);
+ g_mutex_free (factory->priv->books_lock);
+ g_mutex_free (factory->priv->connections_lock);
+
+ if (G_OBJECT_CLASS (e_data_book_factory_parent_class)->finalize)
+ G_OBJECT_CLASS (e_data_book_factory_parent_class)->finalize (object);
+}
+
+static void
+e_data_book_factory_class_init (EDataBookFactoryClass *klass)
+{
+ GObjectClass *object_class;
+
+ g_type_class_add_private (klass, sizeof (EDataBookFactoryPrivate));
+
+ object_class = G_OBJECT_CLASS (klass);
+ object_class->finalize = e_data_book_factory_finalize;
+}
+
+static guint
+e_data_book_factory_register_gdbus_object (EDataBookFactory *factory, GDBusConnection *connection, const gchar *object_path, GError **error)
+{
+ g_return_val_if_fail (factory != NULL, 0);
+ g_return_val_if_fail (E_IS_DATA_BOOK_FACTORY (factory), 0);
+ g_return_val_if_fail (connection != NULL, 0);
+ g_return_val_if_fail (object_path != NULL, 0);
+
+ return e_gdbus_book_factory_register_object (factory->priv->gdbus_object, connection, object_path, error);
}
/* Convenience function to print an error and exit */
@@ -475,53 +494,74 @@ offline_state_changed_cb (EOfflineListener *eol, EDataBookFactory *factory)
#define E_DATA_BOOK_FACTORY_SERVICE_NAME \
"org.gnome.evolution.dataserver.AddressBook"
-gint
-main (gint argc, gchar **argv)
+static void
+on_bus_acquired (GDBusConnection *connection,
+ const gchar *name,
+ gpointer user_data)
{
+ EDataBookFactory *factory = user_data;
+ guint registration_id;
GError *error = NULL;
- DBusGProxy *bus_proxy;
- guint32 request_name_ret;
- EOfflineListener *eol;
- g_type_init ();
- g_set_prgname (E_PRGNAME);
- if (!g_thread_supported ()) g_thread_init (NULL);
- dbus_g_thread_init ();
-
- loop = g_main_loop_new (NULL, FALSE);
+ registration_id = e_data_book_factory_register_gdbus_object (
+ factory,
+ connection,
+ "/org/gnome/evolution/dataserver/addressbook/BookFactory",
+ &error);
- /* Obtain a connection to the session bus */
- connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
- if (connection == NULL)
- die ("Failed to open connection to bus", error);
+ if (error)
+ die ("Failed to register a BookFactory object", error);
- bus_proxy = dbus_g_proxy_new_for_name (connection,
- DBUS_SERVICE_DBUS,
- DBUS_PATH_DBUS,
- DBUS_INTERFACE_DBUS);
+ g_assert (registration_id > 0);
+}
- if (!org_freedesktop_DBus_request_name (
- bus_proxy, E_DATA_BOOK_FACTORY_SERVICE_NAME,
- 0, &request_name_ret, &error))
- die ("Failed to get name", error);
+static void
+on_name_acquired (GDBusConnection *connection,
+ const gchar *name,
+ gpointer user_data)
+{
+}
- if (request_name_ret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
- g_error ("Got result code %u from requesting name", request_name_ret);
- exit (1);
+static void
+on_name_lost (GDBusConnection *connection,
+ const gchar *name,
+ gpointer user_data)
+{
+ GList *list = NULL;
+ gchar *key;
+ EDataBookFactory *factory = user_data;
+
+ g_mutex_lock (factory->priv->connections_lock);
+ while (g_hash_table_lookup_extended (
+ factory->priv->connections, name,
+ (gpointer) &key, (gpointer) &list)) {
+ GList *copy = g_list_copy (list);
+
+ /* this should trigger the book's weak ref notify
+ * function, which will remove it from the list before
+ * it's freed, and will remove the connection from
+ * priv->connections once they're all gone */
+ g_list_foreach (copy, remove_data_book_cb, NULL);
+ g_list_free (copy);
}
+ g_mutex_unlock (factory->priv->connections_lock);
+}
+
+gint
+main (gint argc, gchar **argv)
+{
+ EOfflineListener *eol;
+ EDataBookFactory *factory;
+ guint owner_id;
+
+ g_type_init ();
+ g_set_prgname (E_PRGNAME);
+ if (!g_thread_supported ()) g_thread_init (NULL);
+
factory = g_object_new (E_TYPE_DATA_BOOK_FACTORY, NULL);
- dbus_g_connection_register_g_object (
- connection,
- "/org/gnome/evolution/dataserver/addressbook/BookFactory",
- G_OBJECT (factory));
- dbus_g_proxy_add_signal (
- bus_proxy, "NameOwnerChanged",
- G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (
- bus_proxy, "NameOwnerChanged",
- G_CALLBACK (name_owner_changed), factory, NULL);
+ loop = g_main_loop_new (NULL, FALSE);
eol = e_offline_listener_new ();
offline_state_changed_cb (eol, factory);
@@ -529,16 +569,25 @@ main (gint argc, gchar **argv)
eol, "changed",
G_CALLBACK (offline_state_changed_cb), factory);
- printf ("Server is up and running...\n");
+ owner_id = g_bus_own_name (G_BUS_TYPE_SESSION,
+ E_DATA_BOOK_FACTORY_SERVICE_NAME,
+ G_BUS_NAME_OWNER_FLAGS_NONE,
+ on_bus_acquired,
+ on_name_acquired,
+ on_name_lost,
+ factory,
+ NULL);
/* Migrate user data from ~/.evolution to XDG base directories. */
e_data_book_migrate ();
+ printf ("Server is up and running...\n");
+
g_main_loop_run (loop);
+ g_bus_unown_name (owner_id);
g_object_unref (eol);
-
- dbus_g_connection_unref (connection);
+ g_object_unref (factory);
printf ("Bye.\n");
diff --git a/addressbook/libedata-book/e-data-book-view.c b/addressbook/libedata-book/e-data-book-view.c
index 055bcc8..974f940 100644
--- a/addressbook/libedata-book/e-data-book-view.c
+++ b/addressbook/libedata-book/e-data-book-view.c
@@ -25,18 +25,10 @@
#endif
#include <string.h>
-#include <dbus/dbus.h>
#include <libebook/e-contact.h>
#include "e-data-book-view.h"
-#include "e-data-book-marshal.h"
-extern DBusGConnection *connection;
-
-static gboolean impl_BookView_start (EDataBookView *view, GError **error);
-static gboolean impl_BookView_stop (EDataBookView *view, GError **error);
-static gboolean impl_BookView_dispose (EDataBookView *view, GError **eror);
-
-#include "e-data-book-view-glue.h"
+#include "e-gdbus-egdbusbookview.h"
static void reset_array (GArray *array);
@@ -46,6 +38,8 @@ G_DEFINE_TYPE (EDataBookView, e_data_book_view, G_TYPE_OBJECT);
#define THRESHOLD 32
struct _EDataBookViewPrivate {
+ EGdbusBookView *gdbus_object;
+
EDataBook *book;
EBookBackend *backend;
@@ -64,17 +58,6 @@ struct _EDataBookViewPrivate {
guint idle_id;
};
-enum {
- CONTACTS_ADDED,
- CONTACTS_CHANGED,
- CONTACTS_REMOVED,
- STATUS_MESSAGE,
- COMPLETE,
- LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
static void e_data_book_view_dispose (GObject *object);
static void e_data_book_view_finalize (GObject *object);
@@ -83,69 +66,21 @@ e_data_book_view_class_init (EDataBookViewClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- object_class->dispose = e_data_book_view_dispose;
- object_class->finalize = e_data_book_view_finalize;
-
- signals[CONTACTS_ADDED] =
- g_signal_new ("contacts-added",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- 0, NULL, NULL,
- g_cclosure_marshal_VOID__BOXED,
- G_TYPE_NONE, 1, G_TYPE_STRV);
-
- signals[CONTACTS_CHANGED] =
- g_signal_new ("contacts-changed",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- 0, NULL, NULL,
- g_cclosure_marshal_VOID__BOXED,
- G_TYPE_NONE, 1, G_TYPE_STRV);
-
- signals[CONTACTS_REMOVED] =
- g_signal_new ("contacts-removed",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- 0, NULL, NULL,
- g_cclosure_marshal_VOID__BOXED,
- G_TYPE_NONE, 1, G_TYPE_STRV);
-
- signals[STATUS_MESSAGE] =
- g_signal_new ("status-message",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- 0, NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE, 1, G_TYPE_STRING);
-
- signals[COMPLETE] =
- g_signal_new ("complete",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- 0, NULL, NULL,
- e_data_book_marshal_NONE__UINT_STRING,
- G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_STRING);
-
g_type_class_add_private (klass, sizeof (EDataBookViewPrivate));
- dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass), &dbus_glib_e_data_book_view_object_info);
+ object_class->dispose = e_data_book_view_dispose;
+ object_class->finalize = e_data_book_view_finalize;
}
-static void
-e_data_book_view_init (EDataBookView *book_view)
+guint
+e_data_book_view_register_gdbus_object (EDataBookView *query, GDBusConnection *connection, const gchar *object_path, GError **error)
{
- EDataBookViewPrivate *priv = E_DATA_BOOK_VIEW_GET_PRIVATE (book_view);
- book_view->priv = priv;
-
- priv->running = FALSE;
- priv->pending_mutex = g_mutex_new ();
-
- priv->adds = g_array_sized_new (TRUE, TRUE, sizeof (gchar *), THRESHOLD);
- priv->changes = g_array_sized_new (TRUE, TRUE, sizeof (gchar *), THRESHOLD);
- priv->removes = g_array_sized_new (TRUE, TRUE, sizeof (gchar *), THRESHOLD);
+ g_return_val_if_fail (query != NULL, 0);
+ g_return_val_if_fail (E_IS_DATA_BOOK_VIEW (query), 0);
+ g_return_val_if_fail (connection != NULL, 0);
+ g_return_val_if_fail (object_path != NULL, 0);
- priv->ids = g_hash_table_new_full (g_str_hash, g_str_equal,
- g_free, NULL);
+ return e_gdbus_book_view_register_object (query->priv->gdbus_object, connection, object_path, error);
}
static void
@@ -173,7 +108,7 @@ send_pending_adds (EDataBookView *view)
if (priv->adds->len == 0)
return;
- g_signal_emit (view, signals[CONTACTS_ADDED], 0, priv->adds->data);
+ e_gdbus_book_view_emit_contacts_added (view->priv->gdbus_object, (const gchar * const *) priv->adds->data);
reset_array (priv->adds);
}
@@ -185,7 +120,7 @@ send_pending_changes (EDataBookView *view)
if (priv->changes->len == 0)
return;
- g_signal_emit (view, signals[CONTACTS_CHANGED], 0, priv->changes->data);
+ e_gdbus_book_view_emit_contacts_changed (view->priv->gdbus_object, (const gchar * const *) priv->changes->data);
reset_array (priv->changes);
}
@@ -197,7 +132,7 @@ send_pending_removes (EDataBookView *view)
if (priv->removes->len == 0)
return;
- g_signal_emit (view, signals[CONTACTS_REMOVED], 0, priv->removes->data);
+ e_gdbus_book_view_emit_contacts_removed (view->priv->gdbus_object, (const gchar * const *) priv->removes->data);
reset_array (priv->removes);
}
@@ -460,7 +395,7 @@ e_data_book_view_notify_complete (EDataBookView *book_view, const GError *error)
/* We're done now, so tell the backend to stop? TODO: this is a bit different to
how the CORBA backend works... */
- g_signal_emit (book_view, signals[COMPLETE], 0, error ? error->code : 0, error ? error->message : NULL);
+ e_gdbus_book_view_emit_complete (priv->gdbus_object, error ? error->code : 0, error ? error->message : "");
}
/**
@@ -480,13 +415,12 @@ e_data_book_view_notify_status_message (EDataBookView *book_view, const gchar *m
if (!priv->running)
return;
- g_signal_emit (book_view, signals[STATUS_MESSAGE], 0, message);
+ e_gdbus_book_view_emit_status_message (priv->gdbus_object, message ? message : "");
}
/**
* e_data_book_view_new:
* @book: The #EDataBook to search
- * @path: The object path that this book view should have
* @card_query: The query as a string
* @card_sexp: The query as an #EBookBackendSExp
* @max_results: The maximum number of results to return
@@ -495,7 +429,7 @@ e_data_book_view_notify_status_message (EDataBookView *book_view, const gchar *m
* and place it on DBus at the object path #path.
*/
EDataBookView *
-e_data_book_view_new (EDataBook *book, const gchar *path, const gchar *card_query, EBookBackendSExp *card_sexp, gint max_results)
+e_data_book_view_new (EDataBook *book, const gchar *card_query, EBookBackendSExp *card_sexp, gint max_results)
{
EDataBookView *view;
EDataBookViewPrivate *priv;
@@ -511,11 +445,90 @@ e_data_book_view_new (EDataBook *book, const gchar *path, const gchar *card_quer
priv->card_sexp = card_sexp;
priv->max_results = max_results;
- dbus_g_connection_register_g_object (connection, path, G_OBJECT (view));
-
return view;
}
+static gboolean
+bookview_idle_start (gpointer data)
+{
+ EDataBookView *book_view = data;
+
+ book_view->priv->running = TRUE;
+ book_view->priv->idle_id = 0;
+
+ e_book_backend_start_book_view (book_view->priv->backend, book_view);
+
+ return FALSE;
+}
+
+static gboolean
+impl_DataBookView_start (EGdbusBookView *object, GDBusMethodInvocation *invocation, EDataBookView *book_view)
+{
+ book_view->priv->idle_id = g_idle_add (bookview_idle_start, book_view);
+
+ e_gdbus_book_view_complete_start (object, invocation);
+
+ return TRUE;
+}
+
+static gboolean
+bookview_idle_stop (gpointer data)
+{
+ EDataBookView *book_view = data;
+
+ e_book_backend_stop_book_view (book_view->priv->backend, book_view);
+
+ book_view->priv->running = FALSE;
+ book_view->priv->idle_id = 0;
+
+ return FALSE;
+}
+
+static gboolean
+impl_DataBookView_stop (EGdbusBookView *object, GDBusMethodInvocation *invocation, EDataBookView *book_view)
+{
+ if (book_view->priv->idle_id)
+ g_source_remove (book_view->priv->idle_id);
+
+ book_view->priv->idle_id = g_idle_add (bookview_idle_stop, book_view);
+
+ e_gdbus_book_view_complete_stop (object, invocation);
+
+ return TRUE;
+}
+
+static gboolean
+impl_DataBookView_dispose (EGdbusBookView *object, GDBusMethodInvocation *invocation, EDataBookView *book_view)
+{
+ e_gdbus_book_view_complete_dispose (object, invocation);
+
+ g_object_unref (book_view);
+
+ return TRUE;
+}
+
+static void
+e_data_book_view_init (EDataBookView *book_view)
+{
+ EDataBookViewPrivate *priv = E_DATA_BOOK_VIEW_GET_PRIVATE (book_view);
+ book_view->priv = priv;
+
+ priv->gdbus_object = e_gdbus_book_view_stub_new ();
+ g_signal_connect (priv->gdbus_object, "handle-start", G_CALLBACK (impl_DataBookView_start), book_view);
+ g_signal_connect (priv->gdbus_object, "handle-stop", G_CALLBACK (impl_DataBookView_stop), book_view);
+ g_signal_connect (priv->gdbus_object, "handle-dispose", G_CALLBACK (impl_DataBookView_dispose), book_view);
+
+ priv->running = FALSE;
+ priv->pending_mutex = g_mutex_new ();
+
+ priv->adds = g_array_sized_new (TRUE, TRUE, sizeof (gchar *), THRESHOLD);
+ priv->changes = g_array_sized_new (TRUE, TRUE, sizeof (gchar *), THRESHOLD);
+ priv->removes = g_array_sized_new (TRUE, TRUE, sizeof (gchar *), THRESHOLD);
+
+ priv->ids = g_hash_table_new_full (g_str_hash, g_str_equal,
+ g_free, NULL);
+}
+
static void
e_data_book_view_dispose (GObject *object)
{
@@ -569,56 +582,6 @@ e_data_book_view_finalize (GObject *object)
G_OBJECT_CLASS (e_data_book_view_parent_class)->finalize (object);
}
-static gboolean
-bookview_idle_start (gpointer data)
-{
- EDataBookView *book_view = data;
-
- book_view->priv->running = TRUE;
- book_view->priv->idle_id = 0;
-
- e_book_backend_start_book_view (book_view->priv->backend, book_view);
- return FALSE;
-}
-
-static gboolean
-impl_BookView_start (EDataBookView *book_view, GError **error)
-{
- book_view->priv->idle_id = g_idle_add (bookview_idle_start, book_view);
- return TRUE;
-}
-
-static gboolean
-bookview_idle_stop (gpointer data)
-{
- EDataBookView *book_view = data;
-
- e_book_backend_stop_book_view (book_view->priv->backend, book_view);
-
- book_view->priv->running = FALSE;
- book_view->priv->idle_id = 0;
-
- return FALSE;
-}
-
-static gboolean
-impl_BookView_stop (EDataBookView *book_view, GError **error)
-{
- if (book_view->priv->idle_id)
- g_source_remove (book_view->priv->idle_id);
-
- book_view->priv->idle_id = g_idle_add (bookview_idle_stop, book_view);
- return TRUE;
-}
-
-static gboolean
-impl_BookView_dispose (EDataBookView *book_view, GError **eror)
-{
- g_object_unref (book_view);
-
- return TRUE;
-}
-
void
e_data_book_view_set_thresholds (EDataBookView *book_view,
gint minimum_grouping_threshold,
diff --git a/addressbook/libedata-book/e-data-book-view.h b/addressbook/libedata-book/e-data-book-view.h
index eacc142..1f856b9 100644
--- a/addressbook/libedata-book/e-data-book-view.h
+++ b/addressbook/libedata-book/e-data-book-view.h
@@ -26,6 +26,7 @@
#include <glib.h>
#include <glib-object.h>
+#include <gio/gio.h>
#include <libebook/e-contact.h>
#include <libedata-book/e-data-book-types.h>
#include <libedata-book/e-book-backend.h>
@@ -52,10 +53,11 @@ struct _EDataBookViewClass {
};
EDataBookView *e_data_book_view_new (EDataBook *book,
- const gchar *path,
- const gchar *card_query,
+ const gchar *card_query,
EBookBackendSExp *card_sexp,
- gint max_results);
+ gint max_results);
+
+guint e_data_book_view_register_gdbus_object (EDataBookView *query, GDBusConnection *connection, const gchar *object_path, GError **error);
void e_data_book_view_set_thresholds (EDataBookView *book_view,
gint minimum_grouping_threshold,
diff --git a/addressbook/libedata-book/e-data-book.c b/addressbook/libedata-book/e-data-book.c
index 9364a0f..163fbd0 100644
--- a/addressbook/libedata-book/e-data-book.c
+++ b/addressbook/libedata-book/e-data-book.c
@@ -22,11 +22,10 @@
#include <unistd.h>
#include <stdlib.h>
-#include <dbus/dbus.h>
-#include <dbus/dbus-glib.h>
-#include <dbus/dbus-glib-lowlevel.h>
#include <glib/gi18n.h>
#include <glib-object.h>
+#include <gio/gio.h>
+
#include "e-data-book-enumtypes.h"
#include "e-data-book-factory.h"
#include "e-data-book.h"
@@ -34,40 +33,22 @@
#include "e-book-backend-sexp.h"
#include "opid.h"
-DBusGConnection *connection;
-
-/* DBus glue */
-static void impl_AddressBook_Book_open(EDataBook *book, gboolean only_if_exists, DBusGMethodInvocation *context);
-static void impl_AddressBook_Book_remove(EDataBook *book, DBusGMethodInvocation *context);
-static void impl_AddressBook_Book_getContact(EDataBook *book, const gchar *IN_uid, DBusGMethodInvocation *context);
-static void impl_AddressBook_Book_getContactList(EDataBook *book, const gchar *query, DBusGMethodInvocation *context);
-static void impl_AddressBook_Book_authenticateUser(EDataBook *book, const gchar *IN_user, const gchar *IN_passwd, const gchar *IN_auth_method, DBusGMethodInvocation *context);
-static void impl_AddressBook_Book_addContact(EDataBook *book, const gchar *IN_vcard, DBusGMethodInvocation *context);
-static void impl_AddressBook_Book_modifyContact(EDataBook *book, const gchar *IN_vcard, DBusGMethodInvocation *context);
-static void impl_AddressBook_Book_removeContacts(EDataBook *book, const gchar **IN_uids, DBusGMethodInvocation *context);
-static gboolean impl_AddressBook_Book_getStaticCapabilities(EDataBook *book, gchar **OUT_capabilities, GError **error);
-static void impl_AddressBook_Book_getSupportedFields(EDataBook *book, DBusGMethodInvocation *context);
-static void impl_AddressBook_Book_getRequiredFields(EDataBook *book, DBusGMethodInvocation *context);
-static void impl_AddressBook_Book_getSupportedAuthMethods(EDataBook *book, DBusGMethodInvocation *context);
-static void impl_AddressBook_Book_getBookView (EDataBook *book, const gchar *search, const guint max_results, DBusGMethodInvocation *context);
-static void impl_AddressBook_Book_getChanges(EDataBook *book, const gchar *IN_change_id, DBusGMethodInvocation *context);
-static gboolean impl_AddressBook_Book_cancelOperation(EDataBook *book, GError **error);
-static void impl_AddressBook_Book_close(EDataBook *book, DBusGMethodInvocation *context);
-#include "e-data-book-glue.h"
-
-static void return_error_and_list (guint32 opid, GError *error, const gchar *error_fmt, GList *list, gboolean free_data);
-static void data_book_return_error (DBusGMethodInvocation *context, const GError *error, const gchar *error_fmt);
-
-enum {
- WRITABLE,
- CONNECTION,
- AUTH_REQUIRED,
- LAST_SIGNAL
+#include "e-gdbus-egdbusbook.h"
+
+G_DEFINE_TYPE (EDataBook, e_data_book, G_TYPE_OBJECT)
+
+struct _EDataBookPrivate
+{
+ EGdbusBook *gdbus_object;
+
+ EBookBackend *backend;
+ ESource *source;
};
-static guint signals[LAST_SIGNAL] = { 0 };
+static void return_error_and_list (EGdbusBook *gdbus_object, void (* complete_func) (EGdbusBook *object, GDBusMethodInvocation *invocation, const gchar* const *out_array), guint32 opid, GError *error, const gchar *error_fmt, GList *list, gboolean free_data);
+static void data_book_return_error (GDBusMethodInvocation *invocation, const GError *error, const gchar *error_fmt);
-static GThreadPool *op_pool;
+static GThreadPool *op_pool = NULL;
typedef enum {
OP_OPEN,
@@ -162,14 +143,14 @@ operation_thread (gpointer data, gpointer user_data)
}
static OperationData *
-op_new (OperationID op, EDataBook *book, DBusGMethodInvocation *context)
+op_new (OperationID op, EDataBook *book, GDBusMethodInvocation *invocation)
{
OperationData *data;
data = g_slice_new0 (OperationData);
data->op = op;
data->book = g_object_ref (book);
- data->id = opid_store (context);
+ data->id = opid_store (invocation);
return data;
}
@@ -205,7 +186,6 @@ e_data_book_status_to_string (EDataBookStatus status)
{ E_DATA_BOOK_STATUS_NO_SPACE, N_("No space") },
{ E_DATA_BOOK_STATUS_INVALID_ARG, N_("Invalid argument") },
{ E_DATA_BOOK_STATUS_NOT_SUPPORTED, N_("Not supported") }
-
};
for (i = 0; i < G_N_ELEMENTS (statuses); i++) {
@@ -220,10 +200,41 @@ e_data_book_status_to_string (EDataBookStatus status)
GQuark
e_data_book_error_quark (void)
{
- static GQuark quark = 0;
- if (G_UNLIKELY (quark == 0))
- quark = g_quark_from_static_string ("e-data-book-error");
- return quark;
+ #define ERR_PREFIX "org.gnome.evolution.dataserver.addressbook.Book."
+
+ static const GDBusErrorEntry entries[] = {
+ { E_DATA_BOOK_STATUS_SUCCESS, ERR_PREFIX "Success" },
+ { E_DATA_BOOK_STATUS_REPOSITORY_OFFLINE, ERR_PREFIX "RepositoryOffline" },
+ { E_DATA_BOOK_STATUS_PERMISSION_DENIED, ERR_PREFIX "PermissionDenied" },
+ { E_DATA_BOOK_STATUS_CONTACT_NOT_FOUND, ERR_PREFIX "ContactNotFound" },
+ { E_DATA_BOOK_STATUS_CONTACTID_ALREADY_EXISTS, ERR_PREFIX "ContactIDAlreadyExists" },
+ { E_DATA_BOOK_STATUS_AUTHENTICATION_FAILED, ERR_PREFIX "AuthenticationFailed" },
+ { E_DATA_BOOK_STATUS_AUTHENTICATION_REQUIRED, ERR_PREFIX "AuthenticationRequired" },
+ { E_DATA_BOOK_STATUS_UNSUPPORTED_FIELD, ERR_PREFIX "UnsupportedField" },
+ { E_DATA_BOOK_STATUS_UNSUPPORTED_AUTHENTICATION_METHOD, ERR_PREFIX "UnsupportedAuthenticationMethod" },
+ { E_DATA_BOOK_STATUS_TLS_NOT_AVAILABLE, ERR_PREFIX "TLSNotAvailable" },
+ { E_DATA_BOOK_STATUS_NO_SUCH_BOOK, ERR_PREFIX "NoSuchBook" },
+ { E_DATA_BOOK_STATUS_BOOK_REMOVED, ERR_PREFIX "BookRemoved" },
+ { E_DATA_BOOK_STATUS_OFFLINE_UNAVAILABLE, ERR_PREFIX "OfflineUnavailable" },
+ { E_DATA_BOOK_STATUS_SEARCH_SIZE_LIMIT_EXCEEDED, ERR_PREFIX "SearchSizeLimitExceeded" },
+ { E_DATA_BOOK_STATUS_SEARCH_TIME_LIMIT_EXCEEDED, ERR_PREFIX "SearchTimeLimitExceeded" },
+ { E_DATA_BOOK_STATUS_INVALID_QUERY, ERR_PREFIX "InvalidQuery" },
+ { E_DATA_BOOK_STATUS_QUERY_REFUSED, ERR_PREFIX "QueryRefused" },
+ { E_DATA_BOOK_STATUS_COULD_NOT_CANCEL, ERR_PREFIX "CouldNotCancel" },
+ { E_DATA_BOOK_STATUS_OTHER_ERROR, ERR_PREFIX "OtherError" },
+ { E_DATA_BOOK_STATUS_INVALID_SERVER_VERSION, ERR_PREFIX "InvalidServerVersion" },
+ { E_DATA_BOOK_STATUS_NO_SPACE, ERR_PREFIX "NoSpace" },
+ { E_DATA_BOOK_STATUS_INVALID_ARG, ERR_PREFIX "InvalidArg" },
+ { E_DATA_BOOK_STATUS_NOT_SUPPORTED, ERR_PREFIX "NotSupported" }
+ };
+
+ #undef ERR_PREFIX
+
+ static volatile gsize quark_volatile = 0;
+
+ g_dbus_error_register_error_domain ("e-data-book-error", &quark_volatile, entries, G_N_ELEMENTS (entries));
+
+ return (GQuark) quark_volatile;
}
GError *
@@ -256,150 +267,74 @@ e_data_book_create_error_fmt (EDataBookStatus status, const gchar *custom_msg_fm
return error;
}
-/* Generate the GObject boilerplate */
-G_DEFINE_TYPE(EDataBook, e_data_book, G_TYPE_OBJECT)
-
-static void
-e_data_book_dispose (GObject *object)
-{
- EDataBook *book = E_DATA_BOOK (object);
-
- if (book->backend) {
- g_object_unref (book->backend);
- book->backend = NULL;
- }
-
- if (book->source) {
- g_object_unref (book->source);
- book->source = NULL;
- }
-
- G_OBJECT_CLASS (e_data_book_parent_class)->dispose (object);
-}
-
-static void
-e_data_book_class_init (EDataBookClass *e_data_book_class)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (e_data_book_class);
-
- object_class->dispose = e_data_book_dispose;
-
- signals[WRITABLE] =
- g_signal_new ("writable",
- G_OBJECT_CLASS_TYPE (e_data_book_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
- 0,
- NULL, NULL,
- g_cclosure_marshal_VOID__BOOLEAN,
- G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
-
- signals[CONNECTION] =
- g_signal_new ("connection",
- G_OBJECT_CLASS_TYPE (e_data_book_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
- 0,
- NULL, NULL,
- g_cclosure_marshal_VOID__BOOLEAN,
- G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
-
- signals[AUTH_REQUIRED] =
- g_signal_new ("auth-required",
- G_OBJECT_CLASS_TYPE (e_data_book_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
- 0,
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
-
- dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (e_data_book_class), &dbus_glib_e_data_book_object_info);
-
- dbus_g_error_domain_register (E_DATA_BOOK_ERROR, NULL, E_TYPE_DATA_BOOK_STATUS);
-
- op_pool = g_thread_pool_new (operation_thread, NULL, 10, FALSE, NULL);
- /* Kill threads which don't do anything for 10 seconds */
- g_thread_pool_set_max_idle_time (10 * 1000);
-}
-
-/* Instance init */
-static void
-e_data_book_init (EDataBook *ebook)
-{
-}
-
-EDataBook *
-e_data_book_new (EBookBackend *backend, ESource *source)
-{
- EDataBook *book;
-
- book = g_object_new (E_TYPE_DATA_BOOK, NULL);
- book->backend = g_object_ref (backend);
- book->source = g_object_ref (source);
-
- return book;
-}
-
ESource*
e_data_book_get_source (EDataBook *book)
{
g_return_val_if_fail (book != NULL, NULL);
+ g_return_val_if_fail (E_IS_DATA_BOOK (book), NULL);
- return book->source;
+ return book->priv->source;
}
EBookBackend*
e_data_book_get_backend (EDataBook *book)
{
g_return_val_if_fail (book != NULL, NULL);
+ g_return_val_if_fail (E_IS_DATA_BOOK (book), NULL);
- return book->backend;
+ return book->priv->backend;
}
-static void
-impl_AddressBook_Book_open(EDataBook *book, gboolean only_if_exists, DBusGMethodInvocation *context)
+static gboolean
+impl_Book_open (EGdbusBook *object, GDBusMethodInvocation *invocation, gboolean only_if_exists, EDataBook *book)
{
OperationData *op;
- op = op_new (OP_OPEN, book, context);
+ op = op_new (OP_OPEN, book, invocation);
op->d.only_if_exists = only_if_exists;
g_thread_pool_push (op_pool, op, NULL);
+
+ return TRUE;
}
void
e_data_book_respond_open (EDataBook *book, guint opid, GError *error)
{
- DBusGMethodInvocation *context = opid_fetch (opid);
+ GDBusMethodInvocation *invocation = opid_fetch (opid);
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_book_return_error (context, error, _("Cannot open book: %s"));
+ data_book_return_error (invocation, error, _("Cannot open book: %s"));
g_error_free (error);
} else {
- dbus_g_method_return (context);
+ e_gdbus_book_complete_open (book->priv->gdbus_object, invocation);
}
}
-static void
-impl_AddressBook_Book_remove(EDataBook *book, DBusGMethodInvocation *context)
+static gboolean
+impl_Book_remove (EGdbusBook *object, GDBusMethodInvocation *invocation, EDataBook *book)
{
- e_book_backend_remove (book->backend, book, opid_store (context));
+ e_book_backend_remove (book->priv->backend, book, opid_store (invocation));
+
+ return TRUE;
}
void
e_data_book_respond_remove (EDataBook *book, guint opid, GError *error)
{
- DBusGMethodInvocation *context = opid_fetch (opid);
+ GDBusMethodInvocation *invocation = opid_fetch (opid);
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_book_return_error (context, error, _("Cannot remove book: %s"));
+ data_book_return_error (invocation, error, _("Cannot remove book: %s"));
g_error_free (error);
} else {
- dbus_g_method_return (context);
+ e_gdbus_book_complete_remove (book->priv->gdbus_object, invocation);
}
}
-static void
-impl_AddressBook_Book_getContact (EDataBook *book, const gchar *IN_uid, DBusGMethodInvocation *context)
+static gboolean
+impl_Book_getContact (EGdbusBook *object, GDBusMethodInvocation *invocation, const gchar *IN_uid, EDataBook *book)
{
OperationData *op;
@@ -408,76 +343,82 @@ impl_AddressBook_Book_getContact (EDataBook *book, const gchar *IN_uid, DBusGMet
error = e_data_book_create_error (E_DATA_BOOK_STATUS_CONTACT_NOT_FOUND, NULL);
/* Translators: The '%s' is replaced with a detailed error message */
- data_book_return_error (context, error, _("Cannot get contact: %s"));
+ data_book_return_error (invocation, error, _("Cannot get contact: %s"));
g_error_free (error);
- return;
+ return TRUE;
}
- op = op_new (OP_GET_CONTACT, book, context);
+ op = op_new (OP_GET_CONTACT, book, invocation);
op->d.uid = g_strdup (IN_uid);
g_thread_pool_push (op_pool, op, NULL);
+
+ return TRUE;
}
void
e_data_book_respond_get_contact (EDataBook *book, guint32 opid, GError *error, const gchar *vcard)
{
- DBusGMethodInvocation *context = opid_fetch (opid);
+ GDBusMethodInvocation *invocation = opid_fetch (opid);
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_book_return_error (context, error, _("Cannot get contact: %s"));
+ data_book_return_error (invocation, error, _("Cannot get contact: %s"));
g_error_free (error);
} else {
- dbus_g_method_return (context, vcard);
+ e_gdbus_book_complete_get_contact (book->priv->gdbus_object, invocation, vcard);
}
}
-static void
-impl_AddressBook_Book_getContactList (EDataBook *book, const gchar *query, DBusGMethodInvocation *context)
+static gboolean
+impl_Book_getContactList (EGdbusBook *object, GDBusMethodInvocation *invocation, const gchar *query, EDataBook *book)
{
OperationData *op;
if (query == NULL || query[0] == '\0') {
GError *error = e_data_book_create_error (E_DATA_BOOK_STATUS_INVALID_QUERY, NULL);
/* Translators: The '%s' is replaced with a detailed error message */
- data_book_return_error (context, error, _("Empty query: %s"));
+ data_book_return_error (invocation, error, _("Empty query: %s"));
g_error_free (error);
- return;
+ return TRUE;
}
- op = op_new (OP_GET_CONTACTS, book, context);
+ op = op_new (OP_GET_CONTACTS, book, invocation);
op->d.query = g_strdup (query);
g_thread_pool_push (op_pool, op, NULL);
+
+ return TRUE;
}
void
e_data_book_respond_get_contact_list (EDataBook *book, guint32 opid, GError *error, GList *cards)
{
/* Translators: The '%s' is replaced with a detailed error message */
- return_error_and_list (opid, error, _("Cannot get contact list: %s"), cards, TRUE);
+ return_error_and_list (book->priv->gdbus_object, e_gdbus_book_complete_get_contact_list, opid, error, _("Cannot get contact list: %s"), cards, TRUE);
}
-static void
-impl_AddressBook_Book_authenticateUser(EDataBook *book, const gchar *IN_user, const gchar *IN_passwd, const gchar *IN_auth_method, DBusGMethodInvocation *context)
+static gboolean
+impl_Book_authenticateUser (EGdbusBook *object, GDBusMethodInvocation *invocation, const gchar *IN_user, const gchar *IN_passwd, const gchar *IN_auth_method, EDataBook *book)
{
OperationData *op;
- op = op_new (OP_AUTHENTICATE, book, context);
+ op = op_new (OP_AUTHENTICATE, book, invocation);
op->d.auth.username = g_strdup (IN_user);
op->d.auth.password = g_strdup (IN_passwd);
op->d.auth.method = g_strdup (IN_auth_method);
g_thread_pool_push (op_pool, op, NULL);
+
+ return TRUE;
}
static void
-data_book_return_error (DBusGMethodInvocation *context, const GError *perror, const gchar *error_fmt)
+data_book_return_error (GDBusMethodInvocation *invocation, const GError *perror, const gchar *error_fmt)
{
GError *error;
g_return_if_fail (perror != NULL);
error = g_error_new (E_DATA_BOOK_ERROR, perror->code, error_fmt, perror->message);
- dbus_g_method_return_error (context, error);
+ g_dbus_method_invocation_return_gerror (invocation, error);
g_error_free (error);
}
@@ -485,115 +426,121 @@ data_book_return_error (DBusGMethodInvocation *context, const GError *perror, co
void
e_data_book_respond_authenticate_user (EDataBook *book, guint32 opid, GError *error)
{
- DBusGMethodInvocation *context = opid_fetch (opid);
+ GDBusMethodInvocation *invocation = opid_fetch (opid);
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_book_return_error (context, error, _("Cannot authenticate user: %s"));
+ data_book_return_error (invocation, error, _("Cannot authenticate user: %s"));
g_error_free (error);
} else {
- dbus_g_method_return (context);
+ e_gdbus_book_complete_authenticate_user (book->priv->gdbus_object, invocation);
}
}
-static void
-impl_AddressBook_Book_addContact (EDataBook *book, const gchar *IN_vcard, DBusGMethodInvocation *context)
+static gboolean
+impl_Book_addContact (EGdbusBook *object, GDBusMethodInvocation *invocation, const gchar *IN_vcard, EDataBook *book)
{
OperationData *op;
if (IN_vcard == NULL || IN_vcard[0] == '\0') {
GError *error = e_data_book_create_error (E_DATA_BOOK_STATUS_INVALID_QUERY, NULL);
/* Translators: The '%s' is replaced with a detailed error message */
- data_book_return_error (context, error, _("Cannot add contact: %s"));
+ data_book_return_error (invocation, error, _("Cannot add contact: %s"));
g_error_free (error);
- return;
+ return TRUE;
}
- op = op_new (OP_ADD_CONTACT, book, context);
+ op = op_new (OP_ADD_CONTACT, book, invocation);
op->d.vcard = g_strdup (IN_vcard);
g_thread_pool_push (op_pool, op, NULL);
+
+ return TRUE;
}
void
e_data_book_respond_create (EDataBook *book, guint32 opid, GError *error, EContact *contact)
{
- DBusGMethodInvocation *context = opid_fetch (opid);
+ GDBusMethodInvocation *invocation = opid_fetch (opid);
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_book_return_error (context, error, _("Cannot add contact: %s"));
+ data_book_return_error (invocation, error, _("Cannot add contact: %s"));
g_error_free (error);
} else {
e_book_backend_notify_update (e_data_book_get_backend (book), contact);
e_book_backend_notify_complete (e_data_book_get_backend (book));
- dbus_g_method_return (context, e_contact_get_const (contact, E_CONTACT_UID));
+ e_gdbus_book_complete_add_contact (book->priv->gdbus_object, invocation, e_contact_get_const (contact, E_CONTACT_UID));
}
}
-static void
-impl_AddressBook_Book_modifyContact (EDataBook *book, const gchar *IN_vcard, DBusGMethodInvocation *context)
+static gboolean
+impl_Book_modifyContact (EGdbusBook *object, GDBusMethodInvocation *invocation, const gchar *IN_vcard, EDataBook *book)
{
OperationData *op;
if (IN_vcard == NULL) {
GError *error = e_data_book_create_error (E_DATA_BOOK_STATUS_INVALID_QUERY, NULL);
/* Translators: The '%s' is replaced with a detailed error message */
- data_book_return_error (context, error, _("Cannot modify contact: %s"));
+ data_book_return_error (invocation, error, _("Cannot modify contact: %s"));
g_error_free (error);
- return;
+ return TRUE;
}
- op = op_new (OP_MODIFY_CONTACT, book, context);
+ op = op_new (OP_MODIFY_CONTACT, book, invocation);
op->d.vcard = g_strdup (IN_vcard);
g_thread_pool_push (op_pool, op, NULL);
+
+ return TRUE;
}
void
e_data_book_respond_modify (EDataBook *book, guint32 opid, GError *error, EContact *contact)
{
- DBusGMethodInvocation *context = opid_fetch (opid);
+ GDBusMethodInvocation *invocation = opid_fetch (opid);
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_book_return_error (context, error, _("Cannot modify contact: %s"));
+ data_book_return_error (invocation, error, _("Cannot modify contact: %s"));
g_error_free (error);
} else {
e_book_backend_notify_update (e_data_book_get_backend (book), contact);
e_book_backend_notify_complete (e_data_book_get_backend (book));
- dbus_g_method_return (context);
+ e_gdbus_book_complete_modify_contact (book->priv->gdbus_object, invocation);
}
}
-static void
-impl_AddressBook_Book_removeContacts(EDataBook *book, const gchar **IN_uids, DBusGMethodInvocation *context)
+static gboolean
+impl_Book_removeContacts (EGdbusBook *object, GDBusMethodInvocation *invocation, const gchar * const *IN_uids, EDataBook *book)
{
OperationData *op;
/* Allow an empty array to be removed */
if (IN_uids == NULL) {
- dbus_g_method_return (context);
- return;
+ e_gdbus_book_complete_remove_contacts (object, invocation);
+ return TRUE;
}
- op = op_new (OP_REMOVE_CONTACTS, book, context);
+ op = op_new (OP_REMOVE_CONTACTS, book, invocation);
for (; *IN_uids; IN_uids++) {
op->d.ids = g_list_prepend (op->d.ids, g_strdup (*IN_uids));
}
g_thread_pool_push (op_pool, op, NULL);
+
+ return TRUE;
}
void
e_data_book_respond_remove_contacts (EDataBook *book, guint32 opid, GError *error, GList *ids)
{
- DBusGMethodInvocation *context = opid_fetch (opid);
+ GDBusMethodInvocation *invocation = opid_fetch (opid);
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_book_return_error (context, error, _("Cannot remove contacts: %s"));
+ data_book_return_error (invocation, error, _("Cannot remove contacts: %s"));
g_error_free (error);
} else {
GList *i;
@@ -602,54 +549,65 @@ e_data_book_respond_remove_contacts (EDataBook *book, guint32 opid, GError *erro
e_book_backend_notify_remove (e_data_book_get_backend (book), i->data);
e_book_backend_notify_complete (e_data_book_get_backend (book));
- dbus_g_method_return (context);
+ e_gdbus_book_complete_remove_contacts (book->priv->gdbus_object, invocation);
}
}
static gboolean
-impl_AddressBook_Book_getStaticCapabilities(EDataBook *book, gchar **OUT_capabilities, GError **error)
+impl_Book_getStaticCapabilities (EGdbusBook *object, GDBusMethodInvocation *invocation, EDataBook *book)
{
- *OUT_capabilities = e_book_backend_get_static_capabilities (e_data_book_get_backend (book));
+ gchar *capabilities = e_book_backend_get_static_capabilities (e_data_book_get_backend (book));
+
+ e_gdbus_book_complete_get_static_capabilities (object, invocation, capabilities ? capabilities : "");
+
+ g_free (capabilities);
+
return TRUE;
}
-static void
-impl_AddressBook_Book_getSupportedFields(EDataBook *book, DBusGMethodInvocation *context)
+static gboolean
+impl_Book_getSupportedFields (EGdbusBook *object, GDBusMethodInvocation *invocation, EDataBook *book)
{
- e_book_backend_get_supported_fields (e_data_book_get_backend (book), book, opid_store (context));
+ e_book_backend_get_supported_fields (e_data_book_get_backend (book), book, opid_store (invocation));
+
+ return TRUE;
}
void
e_data_book_respond_get_supported_fields (EDataBook *book, guint32 opid, GError *error, GList *fields)
{
/* Translators: The '%s' is replaced with a detailed error message */
- return_error_and_list (opid, error, _("Cannot get supported fields: %s"), fields, FALSE);
+ return_error_and_list (book->priv->gdbus_object, e_gdbus_book_complete_get_supported_fields, opid, error, _("Cannot get supported fields: %s"), fields, FALSE);
}
-static void
-impl_AddressBook_Book_getRequiredFields(EDataBook *book, DBusGMethodInvocation *context)
+static gboolean
+impl_Book_getRequiredFields (EGdbusBook *object, GDBusMethodInvocation *invocation, EDataBook *book)
{
- e_book_backend_get_required_fields (e_data_book_get_backend (book), book, opid_store (context));
+ e_book_backend_get_required_fields (e_data_book_get_backend (book), book, opid_store (invocation));
+
+ return TRUE;
}
void
e_data_book_respond_get_required_fields (EDataBook *book, guint32 opid, GError *error, GList *fields)
{
/* Translators: The '%s' is replaced with a detailed error message */
- return_error_and_list (opid, error, _("Cannot get required fields: %s"), fields, FALSE);
+ return_error_and_list (book->priv->gdbus_object, e_gdbus_book_complete_get_required_fields, opid, error, _("Cannot get required fields: %s"), fields, FALSE);
}
-static void
-impl_AddressBook_Book_getSupportedAuthMethods(EDataBook *book, DBusGMethodInvocation *context)
+static gboolean
+impl_Book_getSupportedAuthMethods (EGdbusBook *object, GDBusMethodInvocation *invocation, EDataBook *book)
{
- e_book_backend_get_supported_auth_methods (e_data_book_get_backend (book), book, opid_store (context));
+ e_book_backend_get_supported_auth_methods (e_data_book_get_backend (book), book, opid_store (invocation));
+
+ return TRUE;
}
void
e_data_book_respond_get_supported_auth_methods (EDataBook *book, guint32 opid, GError *error, GList *auth_methods)
{
/* Translators: The '%s' is replaced with a detailed error message */
- return_error_and_list (opid, error, _("Cannot get supported auth methods: %s"), auth_methods, FALSE);
+ return_error_and_list (book->priv->gdbus_object, e_gdbus_book_complete_get_supported_auth_methods, opid, error, _("Cannot get supported auth methods: %s"), auth_methods, FALSE);
}
static gchar *
@@ -662,106 +620,123 @@ construct_bookview_path (void)
g_atomic_int_exchange_and_add ((int*)&counter, 1));
}
-static void
-impl_AddressBook_Book_getBookView (EDataBook *book, const gchar *search, const guint max_results, DBusGMethodInvocation *context)
+static gboolean
+impl_Book_getBookView (EGdbusBook *object, GDBusMethodInvocation *invocation, const gchar *search, const guint max_results, EDataBook *book)
{
EBookBackend *backend = e_data_book_get_backend (book);
EBookBackendSExp *card_sexp;
EDataBookView *book_view;
gchar *path;
+ GError *error = NULL;
card_sexp = e_book_backend_sexp_new (search);
if (!card_sexp) {
- GError *error = e_data_book_create_error (E_DATA_BOOK_STATUS_INVALID_QUERY, NULL);
+ error = e_data_book_create_error (E_DATA_BOOK_STATUS_INVALID_QUERY, NULL);
/* Translators: The '%s' is replaced with a detailed error message */
- data_book_return_error (context, error, _("Invalid query: %s"));
+ data_book_return_error (invocation, error, _("Invalid query: %s"));
g_error_free (error);
- return;
+ return TRUE;
}
path = construct_bookview_path ();
- book_view = e_data_book_view_new (book, path, search, card_sexp, max_results);
+ book_view = e_data_book_view_new (book, search, card_sexp, max_results);
+ e_data_book_view_register_gdbus_object (book_view, g_dbus_method_invocation_get_connection (invocation), path, &error);
+
+ if (error) {
+ /* Translators: The '%s' is replaced with a detailed error message */
+ data_book_return_error (invocation, error, _("Invalid query: %s"));
+ g_error_free (error);
+ g_object_unref (book_view);
+ g_free (path);
+
+ return TRUE;
+ }
e_book_backend_add_book_view (backend, book_view);
- dbus_g_method_return (context, path);
+ e_gdbus_book_complete_get_book_view (object, invocation, path);
+
g_free (path);
+
+ return TRUE;
}
-static void
-impl_AddressBook_Book_getChanges(EDataBook *book, const gchar *IN_change_id, DBusGMethodInvocation *context)
+static gboolean
+impl_Book_getChanges (EGdbusBook *object, GDBusMethodInvocation *invocation, const gchar *IN_change_id, EDataBook *book)
{
OperationData *op;
- op = op_new (OP_GET_CHANGES, book, context);
+ op = op_new (OP_GET_CHANGES, book, invocation);
op->d.change_id = g_strdup (IN_change_id);
g_thread_pool_push (op_pool, op, NULL);
+
+ return TRUE;
}
void
e_data_book_respond_get_changes (EDataBook *book, guint32 opid, GError *error, GList *changes)
{
- DBusGMethodInvocation *context = opid_fetch (opid);
+ GDBusMethodInvocation *invocation = opid_fetch (opid);
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_book_return_error (context, error, _("Cannot get changes: %s"));
+ data_book_return_error (invocation, error, _("Cannot get changes: %s"));
g_error_free (error);
} else {
- /* The DBus interface to this is a(us), an array of structs of unsigned ints
- and strings. In dbus-glib this is a GPtrArray of GValueArray of unsigned
- gint and strings. */
- GPtrArray *array;
+ GVariantBuilder *builder;
+ GVariant *variant;
- array = g_ptr_array_new ();
+ builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY);
while (changes != NULL) {
EDataBookChange *change = (EDataBookChange *) changes->data;
- GValueArray *vals;
- vals = g_value_array_new (2);
-
- g_value_array_append (vals, NULL);
- g_value_init (g_value_array_get_nth (vals, 0), G_TYPE_UINT);
- g_value_set_uint (g_value_array_get_nth (vals, 0), change->change_type);
-
- g_value_array_append (vals, NULL);
- g_value_init (g_value_array_get_nth (vals, 1), G_TYPE_STRING);
- g_value_take_string (g_value_array_get_nth (vals, 1), change->vcard);
- /* Now change->vcard is owned by the GValue */
+ g_variant_builder_add (builder, "(us)", change->change_type, change->vcard ? change->vcard : "");
+ g_free (change->vcard);
g_free (change);
+
changes = g_list_remove (changes, change);
}
- dbus_g_method_return (context, array);
- g_ptr_array_foreach (array, (GFunc)g_value_array_free, NULL);
- g_ptr_array_free (array, TRUE);
+ /* always add one empty value */
+ g_variant_builder_add (builder, "(us)", -1, "");
+
+ variant = g_variant_builder_end (builder);
+
+ e_gdbus_book_complete_get_changes (book->priv->gdbus_object, invocation, variant);
+
+ g_variant_unref (variant);
}
}
static gboolean
-impl_AddressBook_Book_cancelOperation(EDataBook *book, GError **error)
+impl_Book_cancelOperation (EGdbusBook *object, GDBusMethodInvocation *invocation, EDataBook *book)
{
- GError *err = NULL;
+ GError *error = NULL;
- e_book_backend_cancel_operation (e_data_book_get_backend (book), book, &err);
+ e_book_backend_cancel_operation (e_data_book_get_backend (book), book, &error);
- if (err) {
- g_propagate_error (error, err);
- return FALSE;
+ if (error) {
+ /* Translators: The '%s' is replaced with a detailed error message */
+ data_book_return_error (invocation, error, _("Cancel operation failed: %s"));
+ g_error_free (error);
+ } else {
+ e_gdbus_book_complete_cancel_operation (object, invocation);
}
return TRUE;
}
-static void
-impl_AddressBook_Book_close(EDataBook *book, DBusGMethodInvocation *context)
+static gboolean
+impl_Book_close (EGdbusBook *object, GDBusMethodInvocation *invocation, EDataBook *book)
{
e_book_backend_remove_client (e_data_book_get_backend (book), book);
g_object_unref (book);
- dbus_g_method_return (context);
+ e_gdbus_book_complete_close (object, invocation);
+
+ return TRUE;
}
void
@@ -769,7 +744,7 @@ e_data_book_report_writable (EDataBook *book, gboolean writable)
{
g_return_if_fail (book != NULL);
- g_signal_emit (book, signals[WRITABLE], 0, writable);
+ e_gdbus_book_emit_writable (book->priv->gdbus_object, writable);
}
void
@@ -777,7 +752,7 @@ e_data_book_report_connection_status (EDataBook *book, gboolean connected)
{
g_return_if_fail (book != NULL);
- g_signal_emit (book, signals[CONNECTION], 0, connected);
+ e_gdbus_book_emit_connection (book->priv->gdbus_object, connected);
}
void
@@ -785,18 +760,19 @@ e_data_book_report_auth_required (EDataBook *book)
{
g_return_if_fail (book != NULL);
- g_signal_emit (book, signals[AUTH_REQUIRED], 0);
+ e_gdbus_book_emit_auth_required (book->priv->gdbus_object);
}
static void
-return_error_and_list (guint32 opid, GError *error, const gchar *error_fmt, GList *list, gboolean free_data)
+return_error_and_list (EGdbusBook *gdbus_object, void (* complete_func) (EGdbusBook *object, GDBusMethodInvocation *invocation, const gchar* const *out_array), guint32 opid, GError *error, const gchar *error_fmt, GList *list, gboolean free_data)
{
- DBusGMethodInvocation *context = opid_fetch (opid);
+ GDBusMethodInvocation *invocation = opid_fetch (opid);
g_return_if_fail (error_fmt != NULL);
+ g_return_if_fail (complete_func != NULL);
if (error) {
- data_book_return_error (context, error, error_fmt);
+ data_book_return_error (invocation, error, error_fmt);
g_error_free (error);
} else {
gchar **array;
@@ -808,7 +784,7 @@ return_error_and_list (guint32 opid, GError *error, const gchar *error_fmt, GLis
array[i++] = l->data;
}
- dbus_g_method_return (context, array);
+ complete_func (gdbus_object, invocation, (const gchar * const *) array);
if (free_data) {
g_strfreev (array);
@@ -817,3 +793,95 @@ return_error_and_list (guint32 opid, GError *error, const gchar *error_fmt, GLis
}
}
}
+
+/**
+ * e_data_book_register_gdbus_object:
+ *
+ * Registers GDBus object of this EDataBook.
+ **/
+guint
+e_data_book_register_gdbus_object (EDataBook *book, GDBusConnection *connection, const gchar *object_path, GError **error)
+{
+ g_return_val_if_fail (book != NULL, 0);
+ g_return_val_if_fail (E_IS_DATA_BOOK (book), 0);
+ g_return_val_if_fail (connection != NULL, 0);
+ g_return_val_if_fail (object_path != NULL, 0);
+
+ return e_gdbus_book_register_object (book->priv->gdbus_object, connection, object_path, error);
+}
+
+/* Instance init */
+static void
+e_data_book_init (EDataBook *ebook)
+{
+ EGdbusBook *gdbus_object;
+
+ ebook->priv = G_TYPE_INSTANCE_GET_PRIVATE (ebook, E_TYPE_DATA_BOOK, EDataBookPrivate);
+
+ ebook->priv->gdbus_object = e_gdbus_book_stub_new ();
+
+ gdbus_object = ebook->priv->gdbus_object;
+ g_signal_connect (gdbus_object, "handle-open", G_CALLBACK (impl_Book_open), ebook);
+ g_signal_connect (gdbus_object, "handle-remove", G_CALLBACK (impl_Book_remove), ebook);
+ g_signal_connect (gdbus_object, "handle-get-contact", G_CALLBACK (impl_Book_getContact), ebook);
+ g_signal_connect (gdbus_object, "handle-get-contact-list", G_CALLBACK (impl_Book_getContactList), ebook);
+ g_signal_connect (gdbus_object, "handle-authenticate-user", G_CALLBACK (impl_Book_authenticateUser), ebook);
+ g_signal_connect (gdbus_object, "handle-add-contact", G_CALLBACK (impl_Book_addContact), ebook);
+ g_signal_connect (gdbus_object, "handle-remove-contacts", G_CALLBACK (impl_Book_removeContacts), ebook);
+ g_signal_connect (gdbus_object, "handle-modify-contact", G_CALLBACK (impl_Book_modifyContact), ebook);
+ g_signal_connect (gdbus_object, "handle-get-static-capabilities", G_CALLBACK (impl_Book_getStaticCapabilities), ebook);
+ g_signal_connect (gdbus_object, "handle-get-required-fields", G_CALLBACK (impl_Book_getRequiredFields), ebook);
+ g_signal_connect (gdbus_object, "handle-get-supported-fields", G_CALLBACK (impl_Book_getSupportedFields), ebook);
+ g_signal_connect (gdbus_object, "handle-get-supported-auth-methods", G_CALLBACK (impl_Book_getSupportedAuthMethods), ebook);
+ g_signal_connect (gdbus_object, "handle-get-book-view", G_CALLBACK (impl_Book_getBookView), ebook);
+ g_signal_connect (gdbus_object, "handle-get-changes", G_CALLBACK (impl_Book_getChanges), ebook);
+ g_signal_connect (gdbus_object, "handle-cancel-operation", G_CALLBACK (impl_Book_cancelOperation), ebook);
+ g_signal_connect (gdbus_object, "handle-close", G_CALLBACK (impl_Book_close), ebook);
+}
+
+static void
+e_data_book_dispose (GObject *object)
+{
+ EDataBook *book = E_DATA_BOOK (object);
+
+ if (book->priv->backend) {
+ g_object_unref (book->priv->backend);
+ book->priv->backend = NULL;
+ }
+
+ if (book->priv->source) {
+ g_object_unref (book->priv->source);
+ book->priv->source = NULL;
+ }
+
+ G_OBJECT_CLASS (e_data_book_parent_class)->dispose (object);
+}
+
+static void
+e_data_book_class_init (EDataBookClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ g_type_class_add_private (klass, sizeof (EDataBookPrivate));
+
+ object_class->dispose = e_data_book_dispose;
+
+ if (!op_pool) {
+ op_pool = g_thread_pool_new (operation_thread, NULL, 10, FALSE, NULL);
+
+ /* Kill threads which don't do anything for 10 seconds */
+ g_thread_pool_set_max_idle_time (10 * 1000);
+ }
+}
+
+EDataBook *
+e_data_book_new (EBookBackend *backend, ESource *source)
+{
+ EDataBook *book;
+
+ book = g_object_new (E_TYPE_DATA_BOOK, NULL);
+ book->priv->backend = g_object_ref (backend);
+ book->priv->source = g_object_ref (source);
+
+ return book;
+}
diff --git a/addressbook/libedata-book/e-data-book.h b/addressbook/libedata-book/e-data-book.h
index c879e1f..027f841 100644
--- a/addressbook/libedata-book/e-data-book.h
+++ b/addressbook/libedata-book/e-data-book.h
@@ -24,7 +24,7 @@
#define __E_DATA_BOOK_H__
#include <glib-object.h>
-#include <dbus/dbus-glib.h>
+#include <gio/gio.h>
#include <libedataserver/e-source.h>
#include "e-book-backend.h"
#include "e-data-book-types.h"
@@ -38,10 +38,12 @@ G_BEGIN_DECLS
#define E_IS_DATA_BOOK_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), E_TYPE_DATA_BOOK))
#define E_DATA_BOOK_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), E_TYPE_DATA_BOOK, EDataBookClass))
+typedef struct _EDataBookPrivate EDataBookPrivate;
+
struct _EDataBook {
GObject parent;
- EBookBackend *backend;
- ESource *source;
+
+ EDataBookPrivate *priv;
};
struct _EDataBookClass {
@@ -95,6 +97,9 @@ const gchar *e_data_book_status_to_string (EDataBookStatus status);
} G_STMT_END
EDataBook *e_data_book_new (EBookBackend *backend, ESource *source);
+
+guint e_data_book_register_gdbus_object (EDataBook *cal, GDBusConnection *connection, const gchar *object_path, GError **error);
+
EBookBackend *e_data_book_get_backend (EDataBook *book);
ESource *e_data_book_get_source (EDataBook *book);
diff --git a/addressbook/libegdbus/Makefile.am b/addressbook/libegdbus/Makefile.am
new file mode 100644
index 0000000..bc483d1
--- /dev/null
+++ b/addressbook/libegdbus/Makefile.am
@@ -0,0 +1,38 @@
+GDBUS_XML_FILES = \
+ ../libedata-book/e-data-book-factory.xml \
+ ../libedata-book/e-data-book-view.xml \
+ ../libedata-book/e-data-book.xml
+
+gdbus-files: $(GDBUS_XML_FILES)
+ gdbus-codegen --namespace=EGdbus --strip-prefix=org.gnome.evolution.dataserver.addressbook --output-prefix=e-gdbus $(GDBUS_XML_FILES)
+ rm e-gdbus-bindings.h
+ rm e-gdbus-bindings.stamp
+
+# The library
+noinst_LTLIBRARIES = libegdbus-book.la
+
+libegdbus_book_la_CPPFLAGS = \
+ $(AM_CPPFLAGS) \
+ -DG_LOG_DOMAIN=\"libegdbus-book\" \
+ -I$(top_srcdir)/addressbook \
+ $(GNOME_PLATFORM_CFLAGS)
+
+libegdbus_book_la_SOURCES = \
+ e-gdbus-egdbusbook.h \
+ e-gdbus-egdbusbook.c \
+ e-gdbus-egdbusbookfactory.h \
+ e-gdbus-egdbusbookfactory.c \
+ e-gdbus-egdbusbookview.h \
+ e-gdbus-egdbusbookview.c \
+ e-gdbus-marshallers.h \
+ e-gdbus-marshallers.c \
+ e-gdbus-typemappers.h
+
+libegdbus_book_la_LIBADD = \
+ $(GNOME_PLATFORM_LIBS)
+
+libegdbus_book_la_LDFLAGS = $(NO_UNDEFINED)
+
+EXTRA_DIST = e-gdbus-marshallers.list
+
+-include $(top_srcdir)/git.mk
diff --git a/addressbook/libegdbus/e-gdbus-egdbusbook.c b/addressbook/libegdbus/e-gdbus-egdbusbook.c
new file mode 100644
index 0000000..90c748f
--- /dev/null
+++ b/addressbook/libegdbus/e-gdbus-egdbusbook.c
@@ -0,0 +1,4525 @@
+/* File: e-gdbus-egdbusbook.c
+ *
+ * GType name: EGdbusBook
+ * D-Bus name: org.gnome.evolution.dataserver.addressbook.Book
+ *
+ * Generated by GDBus Binding Tool 0.1. DO NOT EDIT.
+ */
+
+/**
+ * SECTION:e-gdbus-egdbusbook
+ * @title: EGdbusBook
+ * @short_description: Wraps the org.gnome.evolution.dataserver.addressbook.Book D-Bus interface
+ * @include: gio/gio.h
+ *
+ * The abstract #EGdbusBook interface type wraps the <literal>org.gnome.evolution.dataserver.addressbook.Book</literal> D-Bus interface. Two concrete implementations of this type are included: #EGdbusBookProxy and #EGdbusBookStub.
+ *
+ * The generated proxy type #EGdbusBookProxy is typically used with the generated constructors e_gdbus_book_proxy_new(), e_gdbus_book_proxy_new_sync() and e_gdbus_book_proxy_new_for_bus(), e_gdbus_book_proxy_new_for_bus_sync().
+ *
+ * The generated stub type #EGdbusBookStub takes care of handling properties, method invocations and signal emissions. Simply use e_gdbus_book_stub_new(), set some properties and connect to any of the handle-* signals to handle method invocations. Finally use e_gdbus_book_register_object() to export the object on a #GDBusConnection.
+ * |[
+ * /<!-- -->* You can also use g_object_new() with E_GDBUS_TYPE_BOOK_STUB
+ * * to set properties at construction time.
+ * *<!-- -->/
+ * object = e_gdbus_book_stub_new ();
+ * e_gdbus_book_set_<property_name> (object, <value_for_property>);
+ * [...]
+ *
+ * g_signal_connect (object,
+ * "handle-<method-name>",
+ * G_CALLBACK (on_handle_<method_name>),
+ * some_user_data);
+ * [...]
+ *
+ * error = NULL;
+ * id = e_gdbus_book_register_object (object,
+ * connection,
+ * "/path/of/object",
+ * &error);
+ * ]|
+ *
+ * You don't <emphasis>have</emphasis> to use the generated stub type to export
+ * objects. Any type implementing the #EGdbusBook interface may be used with
+ * e_gdbus_book_register_object().
+ *
+ * Once exported, you can make the exported object emit D-Bus signals by simply
+ * emitting the corresponding GType signals. For better type-safety, you can use,
+ * the provided e_gdbus_book_emit_*() helpers.
+ *
+ * For property changes, #GObject::notify signal emissions on exported objects
+ * will be intercepted and queued. In an idle handler, the queued notifications
+ * are processed and a single <literal>PropertiesChanged</literal> signal (on the
+ * <literal>org.freedesktop.DBus.Properties</literal> interface) will be emitted
+ * for all the properties that changed (possibly containing several properties).
+ * Use e_gdbus_book_drain_notify() to drain the queue immediately.
+ */
+
+#include "e-gdbus-egdbusbook.h"
+#include "e-gdbus-typemappers.h"
+#include "e-gdbus-marshallers.h"
+
+typedef EGdbusBookIface EGdbusBookInterface;
+G_DEFINE_INTERFACE (EGdbusBook, e_gdbus_book, G_TYPE_OBJECT);
+
+
+enum
+{
+ _0_SIGNAL,
+ __WRITABLE_SIGNAL,
+ __CONNECTION_SIGNAL,
+ __AUTH_REQUIRED_SIGNAL,
+ __OPEN_METHOD,
+ __REMOVE_METHOD,
+ __GET_CONTACT_METHOD,
+ __GET_CONTACT_LIST_METHOD,
+ __AUTHENTICATE_USER_METHOD,
+ __ADD_CONTACT_METHOD,
+ __REMOVE_CONTACTS_METHOD,
+ __MODIFY_CONTACT_METHOD,
+ __GET_STATIC_CAPABILITIES_METHOD,
+ __GET_REQUIRED_FIELDS_METHOD,
+ __GET_SUPPORTED_FIELDS_METHOD,
+ __GET_SUPPORTED_AUTH_METHODS_METHOD,
+ __GET_BOOK_VIEW_METHOD,
+ __GET_CHANGES_METHOD,
+ __CANCEL_OPERATION_METHOD,
+ __CLOSE_METHOD,
+ __LAST_SIGNAL
+};
+
+static guint signals[__LAST_SIGNAL] = {0};
+
+
+enum
+{
+ PROP_0,
+};
+
+/* ------------------------------------------------------------------------- */
+
+/* Various lookup tables */
+
+static GHashTable *_method_name_to_id = NULL;
+static GHashTable *_signal_name_to_id = NULL;
+static GHashTable *_property_name_to_id = NULL;
+static GHashTable *_property_gname_to_name = NULL;
+static GHashTable *_property_name_to_gname = NULL;
+
+
+static guint
+lookup_method_id_from_method_name (const gchar *method_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_method_name_to_id, method_name));
+}
+
+static guint
+lookup_signal_id_from_signal_name (const gchar *signal_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_signal_name_to_id, signal_name));
+}
+
+static guint
+lookup_property_id_from_property_name (const gchar *property_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_property_name_to_id, property_name));
+}
+
+static const gchar *
+lookup_property_name_from_property_gname (const gchar *property_gname)
+{
+ return g_hash_table_lookup (_property_gname_to_name, property_gname);
+}
+
+static const gchar *
+lookup_property_gname_from_property_name (const gchar *property_name)
+{
+ return g_hash_table_lookup (_property_name_to_gname, property_name);
+}
+
+/* ------------------------------------------------------------------------- */
+static gboolean
+signal_emission_hook_cb_writable (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ GObject *object;
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *params;
+ GVariant *item;
+ GVariantBuilder *builder;
+
+ if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT))
+ goto out;
+ object = g_value_get_object (¶m_values[0]);
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE);
+ g_assert_cmpint (n_param_values - 1, ==, 1);
+ param_values++;
+ item = g_variant_new_boolean (g_value_get_boolean (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ params = g_variant_builder_end (builder);
+ g_variant_builder_unref (builder);
+
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.gnome.evolution.dataserver.addressbook.Book",
+ "writable",
+ params,
+ NULL);
+out:
+ return TRUE;
+}
+
+static gboolean
+signal_emission_hook_cb_connection (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ GObject *object;
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *params;
+ GVariant *item;
+ GVariantBuilder *builder;
+
+ if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT))
+ goto out;
+ object = g_value_get_object (¶m_values[0]);
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE);
+ g_assert_cmpint (n_param_values - 1, ==, 1);
+ param_values++;
+ item = g_variant_new_boolean (g_value_get_boolean (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ params = g_variant_builder_end (builder);
+ g_variant_builder_unref (builder);
+
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.gnome.evolution.dataserver.addressbook.Book",
+ "connection",
+ params,
+ NULL);
+out:
+ return TRUE;
+}
+
+static gboolean
+signal_emission_hook_cb_auth_required (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ GObject *object;
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *params;
+
+ if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT))
+ goto out;
+ object = g_value_get_object (¶m_values[0]);
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ params = NULL;
+
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.gnome.evolution.dataserver.addressbook.Book",
+ "auth_required",
+ params,
+ NULL);
+out:
+ return TRUE;
+}
+
+static void
+e_gdbus_book_default_init (EGdbusBookIface *iface)
+{
+
+ /* Build lookup structures */
+ _method_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _signal_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_gname_to_name = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_name_to_gname = g_hash_table_new (g_str_hash, g_str_equal);
+ g_hash_table_insert (_method_name_to_id, (gpointer) "open", GUINT_TO_POINTER (__OPEN_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "remove", GUINT_TO_POINTER (__REMOVE_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getContact", GUINT_TO_POINTER (__GET_CONTACT_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getContactList", GUINT_TO_POINTER (__GET_CONTACT_LIST_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "authenticateUser", GUINT_TO_POINTER (__AUTHENTICATE_USER_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "addContact", GUINT_TO_POINTER (__ADD_CONTACT_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "removeContacts", GUINT_TO_POINTER (__REMOVE_CONTACTS_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "modifyContact", GUINT_TO_POINTER (__MODIFY_CONTACT_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getStaticCapabilities", GUINT_TO_POINTER (__GET_STATIC_CAPABILITIES_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getRequiredFields", GUINT_TO_POINTER (__GET_REQUIRED_FIELDS_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getSupportedFields", GUINT_TO_POINTER (__GET_SUPPORTED_FIELDS_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getSupportedAuthMethods", GUINT_TO_POINTER (__GET_SUPPORTED_AUTH_METHODS_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getBookView", GUINT_TO_POINTER (__GET_BOOK_VIEW_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getChanges", GUINT_TO_POINTER (__GET_CHANGES_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "cancelOperation", GUINT_TO_POINTER (__CANCEL_OPERATION_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "close", GUINT_TO_POINTER (__CLOSE_METHOD));
+ g_hash_table_insert (_signal_name_to_id, (gpointer) "writable", GUINT_TO_POINTER (__WRITABLE_SIGNAL));
+ g_hash_table_insert (_signal_name_to_id, (gpointer) "connection", GUINT_TO_POINTER (__CONNECTION_SIGNAL));
+ g_hash_table_insert (_signal_name_to_id, (gpointer) "auth_required", GUINT_TO_POINTER (__AUTH_REQUIRED_SIGNAL));
+
+ /* GObject signals definitions for D-Bus signals: */
+ /**
+ * EGdbusBook::writable:
+ * @object: The object emitting the signal.
+ * @value: Parameter.
+ *
+ * Represents the D-Bus signal <literal>writable</literal>.
+ *
+ * On proxies, connect to this signal to get notified whenever the remote
+ * object instances emits the signal (similar to how the
+ * #GDBusProxy::g-signal works). The signal is emitted in the
+ * thread-default main loop of the thread that the proxy was created in.
+ *
+ * On exported objects, emitting this signal causes the actual D-Bus signal to be emitted. You can use e_gdbus_book_emit_writable() to do this.
+ */ signals[__WRITABLE_SIGNAL] =
+ g_signal_new ("writable",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, writable),
+ NULL,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_VOID__BOOLEAN,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_BOOLEAN);
+ g_signal_add_emission_hook (signals[__WRITABLE_SIGNAL],
+ 0,
+ signal_emission_hook_cb_writable,
+ (gpointer) "writable",
+ NULL);
+
+ /**
+ * EGdbusBook::connection:
+ * @object: The object emitting the signal.
+ * @connected: Parameter.
+ *
+ * Represents the D-Bus signal <literal>connection</literal>.
+ *
+ * On proxies, connect to this signal to get notified whenever the remote
+ * object instances emits the signal (similar to how the
+ * #GDBusProxy::g-signal works). The signal is emitted in the
+ * thread-default main loop of the thread that the proxy was created in.
+ *
+ * On exported objects, emitting this signal causes the actual D-Bus signal to be emitted. You can use e_gdbus_book_emit_connection() to do this.
+ */ signals[__CONNECTION_SIGNAL] =
+ g_signal_new ("connection",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, connection),
+ NULL,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_VOID__BOOLEAN,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_BOOLEAN);
+ g_signal_add_emission_hook (signals[__CONNECTION_SIGNAL],
+ 0,
+ signal_emission_hook_cb_connection,
+ (gpointer) "connection",
+ NULL);
+
+ /**
+ * EGdbusBook::auth-required:
+ * @object: The object emitting the signal.
+ *
+ * Represents the D-Bus signal <literal>auth_required</literal>.
+ *
+ * On proxies, connect to this signal to get notified whenever the remote
+ * object instances emits the signal (similar to how the
+ * #GDBusProxy::g-signal works). The signal is emitted in the
+ * thread-default main loop of the thread that the proxy was created in.
+ *
+ * On exported objects, emitting this signal causes the actual D-Bus signal to be emitted. You can use e_gdbus_book_emit_auth_required() to do this.
+ */ signals[__AUTH_REQUIRED_SIGNAL] =
+ g_signal_new ("auth-required",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, auth_required),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+ g_signal_add_emission_hook (signals[__AUTH_REQUIRED_SIGNAL],
+ 0,
+ signal_emission_hook_cb_auth_required,
+ (gpointer) "auth_required",
+ NULL);
+
+
+ /* GObject signals definitions for D-Bus methods: */
+ /**
+ * EGdbusBook::handle-open:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @only_if_exists: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>open</literal> D-Bus method on @object. Use e_gdbus_book_complete_open() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__OPEN_METHOD] =
+ g_signal_new ("handle-open",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, handle_open),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_BOOLEAN,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_BOOLEAN);
+ /**
+ * EGdbusBook::handle-remove:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>remove</literal> D-Bus method on @object. Use e_gdbus_book_complete_remove() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__REMOVE_METHOD] =
+ g_signal_new ("handle-remove",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, handle_remove),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusBook::handle-get-contact:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @uid: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getContact</literal> D-Bus method on @object. Use e_gdbus_book_complete_get_contact() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_CONTACT_METHOD] =
+ g_signal_new ("handle-get-contact",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, handle_get_contact),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING);
+ /**
+ * EGdbusBook::handle-get-contact-list:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @query: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getContactList</literal> D-Bus method on @object. Use e_gdbus_book_complete_get_contact_list() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_CONTACT_LIST_METHOD] =
+ g_signal_new ("handle-get-contact-list",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, handle_get_contact_list),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING);
+ /**
+ * EGdbusBook::handle-authenticate-user:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @user: Parameter.
+ * @passwd: Parameter.
+ * @auth_method: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>authenticateUser</literal> D-Bus method on @object. Use e_gdbus_book_complete_authenticate_user() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__AUTHENTICATE_USER_METHOD] =
+ g_signal_new ("handle-authenticate-user",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, handle_authenticate_user),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_STRING_STRING,
+ G_TYPE_BOOLEAN,
+ 4,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING);
+ /**
+ * EGdbusBook::handle-add-contact:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @vcard: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>addContact</literal> D-Bus method on @object. Use e_gdbus_book_complete_add_contact() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__ADD_CONTACT_METHOD] =
+ g_signal_new ("handle-add-contact",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, handle_add_contact),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING);
+ /**
+ * EGdbusBook::handle-remove-contacts:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @list: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>removeContacts</literal> D-Bus method on @object. Use e_gdbus_book_complete_remove_contacts() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__REMOVE_CONTACTS_METHOD] =
+ g_signal_new ("handle-remove-contacts",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, handle_remove_contacts),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_BOXED,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRV);
+ /**
+ * EGdbusBook::handle-modify-contact:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @vcard: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>modifyContact</literal> D-Bus method on @object. Use e_gdbus_book_complete_modify_contact() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__MODIFY_CONTACT_METHOD] =
+ g_signal_new ("handle-modify-contact",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, handle_modify_contact),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING);
+ /**
+ * EGdbusBook::handle-get-static-capabilities:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getStaticCapabilities</literal> D-Bus method on @object. Use e_gdbus_book_complete_get_static_capabilities() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_STATIC_CAPABILITIES_METHOD] =
+ g_signal_new ("handle-get-static-capabilities",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, handle_get_static_capabilities),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusBook::handle-get-required-fields:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getRequiredFields</literal> D-Bus method on @object. Use e_gdbus_book_complete_get_required_fields() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_REQUIRED_FIELDS_METHOD] =
+ g_signal_new ("handle-get-required-fields",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, handle_get_required_fields),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusBook::handle-get-supported-fields:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getSupportedFields</literal> D-Bus method on @object. Use e_gdbus_book_complete_get_supported_fields() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_SUPPORTED_FIELDS_METHOD] =
+ g_signal_new ("handle-get-supported-fields",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, handle_get_supported_fields),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusBook::handle-get-supported-auth-methods:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getSupportedAuthMethods</literal> D-Bus method on @object. Use e_gdbus_book_complete_get_supported_auth_methods() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_SUPPORTED_AUTH_METHODS_METHOD] =
+ g_signal_new ("handle-get-supported-auth-methods",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, handle_get_supported_auth_methods),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusBook::handle-get-book-view:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @query: Parameter.
+ * @max_results: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getBookView</literal> D-Bus method on @object. Use e_gdbus_book_complete_get_book_view() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_BOOK_VIEW_METHOD] =
+ g_signal_new ("handle-get-book-view",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, handle_get_book_view),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_UINT,
+ G_TYPE_BOOLEAN,
+ 3,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING,
+ G_TYPE_UINT);
+ /**
+ * EGdbusBook::handle-get-changes:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @change_id: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getChanges</literal> D-Bus method on @object. Use e_gdbus_book_complete_get_changes() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_CHANGES_METHOD] =
+ g_signal_new ("handle-get-changes",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, handle_get_changes),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING);
+ /**
+ * EGdbusBook::handle-cancel-operation:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>cancelOperation</literal> D-Bus method on @object. Use e_gdbus_book_complete_cancel_operation() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__CANCEL_OPERATION_METHOD] =
+ g_signal_new ("handle-cancel-operation",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, handle_cancel_operation),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusBook::handle-close:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>close</literal> D-Bus method on @object. Use e_gdbus_book_complete_close() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__CLOSE_METHOD] =
+ g_signal_new ("handle-close",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookIface, handle_close),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /* GObject property definitions for D-Bus properties: */
+}
+
+
+/* C Bindings for properties */
+
+/**
+ * e_gdbus_book_call_open:
+ * @proxy: A #EGdbusBook.
+ * @in_only_if_exists: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.open</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_call_open_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_call_open_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_call_open (
+ EGdbusBook *proxy,
+ gboolean in_only_if_exists,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(b)",
+ in_only_if_exists);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "open",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_call_open_finish:
+ * @proxy: A #EGdbusBook.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_call_open().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.Book.open</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_open_finish (
+ EGdbusBook *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_call_open_sync:
+ * @proxy: A #EGdbusBook.
+ * @in_only_if_exists: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.open</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_call_open() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_open_sync (
+ EGdbusBook *proxy,
+ gboolean in_only_if_exists,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(b)",
+ in_only_if_exists);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "open",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_call_remove:
+ * @proxy: A #EGdbusBook.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.remove</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_call_remove_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_call_remove_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_call_remove (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "remove",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_call_remove_finish:
+ * @proxy: A #EGdbusBook.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_call_remove().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.Book.remove</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_remove_finish (
+ EGdbusBook *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_call_remove_sync:
+ * @proxy: A #EGdbusBook.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.remove</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_call_remove() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_remove_sync (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "remove",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_call_get_contact:
+ * @proxy: A #EGdbusBook.
+ * @in_uid: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.getContact</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_call_get_contact_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_call_get_contact_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_call_get_contact (
+ EGdbusBook *proxy,
+ const gchar *in_uid,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ in_uid);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getContact",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_call_get_contact_finish:
+ * @proxy: A #EGdbusBook.
+ * @out_vcard: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_call_get_contact().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.Book.getContact</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_get_contact_finish (
+ EGdbusBook *proxy,
+ gchar **out_vcard,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_vcard);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_call_get_contact_sync:
+ * @proxy: A #EGdbusBook.
+ * @in_uid: Method parameter.
+ * @out_vcard: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.getContact</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_call_get_contact() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_get_contact_sync (
+ EGdbusBook *proxy,
+ const gchar *in_uid,
+ gchar **out_vcard,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(s)",
+ in_uid);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getContact",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_vcard);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_call_get_contact_list:
+ * @proxy: A #EGdbusBook.
+ * @in_query: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.getContactList</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_call_get_contact_list_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_call_get_contact_list_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_call_get_contact_list (
+ EGdbusBook *proxy,
+ const gchar *in_query,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ in_query);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getContactList",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_call_get_contact_list_finish:
+ * @proxy: A #EGdbusBook.
+ * @out_vcards: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_call_get_contact_list().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.Book.getContactList</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_get_contact_list_finish (
+ EGdbusBook *proxy,
+ gchar ***out_vcards,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^as)",
+ out_vcards);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_call_get_contact_list_sync:
+ * @proxy: A #EGdbusBook.
+ * @in_query: Method parameter.
+ * @out_vcards: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.getContactList</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_call_get_contact_list() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_get_contact_list_sync (
+ EGdbusBook *proxy,
+ const gchar *in_query,
+ gchar ***out_vcards,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(s)",
+ in_query);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getContactList",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^as)",
+ out_vcards);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_call_authenticate_user:
+ * @proxy: A #EGdbusBook.
+ * @in_user: Method parameter.
+ * @in_passwd: Method parameter.
+ * @in_auth_method: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.authenticateUser</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_call_authenticate_user_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_call_authenticate_user_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_call_authenticate_user (
+ EGdbusBook *proxy,
+ const gchar *in_user,
+ const gchar *in_passwd,
+ const gchar *in_auth_method,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(sss)",
+ in_user,
+ in_passwd,
+ in_auth_method);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "authenticateUser",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_call_authenticate_user_finish:
+ * @proxy: A #EGdbusBook.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_call_authenticate_user().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.Book.authenticateUser</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_authenticate_user_finish (
+ EGdbusBook *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_call_authenticate_user_sync:
+ * @proxy: A #EGdbusBook.
+ * @in_user: Method parameter.
+ * @in_passwd: Method parameter.
+ * @in_auth_method: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.authenticateUser</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_call_authenticate_user() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_authenticate_user_sync (
+ EGdbusBook *proxy,
+ const gchar *in_user,
+ const gchar *in_passwd,
+ const gchar *in_auth_method,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(sss)",
+ in_user,
+ in_passwd,
+ in_auth_method);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "authenticateUser",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_call_add_contact:
+ * @proxy: A #EGdbusBook.
+ * @in_vcard: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.addContact</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_call_add_contact_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_call_add_contact_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_call_add_contact (
+ EGdbusBook *proxy,
+ const gchar *in_vcard,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ in_vcard);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "addContact",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_call_add_contact_finish:
+ * @proxy: A #EGdbusBook.
+ * @out_uid: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_call_add_contact().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.Book.addContact</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_add_contact_finish (
+ EGdbusBook *proxy,
+ gchar **out_uid,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_uid);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_call_add_contact_sync:
+ * @proxy: A #EGdbusBook.
+ * @in_vcard: Method parameter.
+ * @out_uid: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.addContact</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_call_add_contact() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_add_contact_sync (
+ EGdbusBook *proxy,
+ const gchar *in_vcard,
+ gchar **out_uid,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(s)",
+ in_vcard);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "addContact",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_uid);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_call_remove_contacts:
+ * @proxy: A #EGdbusBook.
+ * @in_list: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.removeContacts</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_call_remove_contacts_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_call_remove_contacts_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_call_remove_contacts (
+ EGdbusBook *proxy,
+ const gchar* const *in_list,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(^as)",
+ in_list);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "removeContacts",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_call_remove_contacts_finish:
+ * @proxy: A #EGdbusBook.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_call_remove_contacts().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.Book.removeContacts</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_remove_contacts_finish (
+ EGdbusBook *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_call_remove_contacts_sync:
+ * @proxy: A #EGdbusBook.
+ * @in_list: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.removeContacts</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_call_remove_contacts() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_remove_contacts_sync (
+ EGdbusBook *proxy,
+ const gchar* const *in_list,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(^as)",
+ in_list);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "removeContacts",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_call_modify_contact:
+ * @proxy: A #EGdbusBook.
+ * @in_vcard: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.modifyContact</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_call_modify_contact_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_call_modify_contact_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_call_modify_contact (
+ EGdbusBook *proxy,
+ const gchar *in_vcard,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ in_vcard);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "modifyContact",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_call_modify_contact_finish:
+ * @proxy: A #EGdbusBook.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_call_modify_contact().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.Book.modifyContact</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_modify_contact_finish (
+ EGdbusBook *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_call_modify_contact_sync:
+ * @proxy: A #EGdbusBook.
+ * @in_vcard: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.modifyContact</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_call_modify_contact() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_modify_contact_sync (
+ EGdbusBook *proxy,
+ const gchar *in_vcard,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(s)",
+ in_vcard);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "modifyContact",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_call_get_static_capabilities:
+ * @proxy: A #EGdbusBook.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.getStaticCapabilities</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_call_get_static_capabilities_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_call_get_static_capabilities_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_call_get_static_capabilities (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getStaticCapabilities",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_call_get_static_capabilities_finish:
+ * @proxy: A #EGdbusBook.
+ * @out_capabilities: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_call_get_static_capabilities().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.Book.getStaticCapabilities</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_get_static_capabilities_finish (
+ EGdbusBook *proxy,
+ gchar **out_capabilities,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_capabilities);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_call_get_static_capabilities_sync:
+ * @proxy: A #EGdbusBook.
+ * @out_capabilities: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.getStaticCapabilities</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_call_get_static_capabilities() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_get_static_capabilities_sync (
+ EGdbusBook *proxy,
+ gchar **out_capabilities,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getStaticCapabilities",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_capabilities);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_call_get_required_fields:
+ * @proxy: A #EGdbusBook.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.getRequiredFields</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_call_get_required_fields_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_call_get_required_fields_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_call_get_required_fields (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getRequiredFields",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_call_get_required_fields_finish:
+ * @proxy: A #EGdbusBook.
+ * @out_fields: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_call_get_required_fields().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.Book.getRequiredFields</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_get_required_fields_finish (
+ EGdbusBook *proxy,
+ gchar ***out_fields,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^as)",
+ out_fields);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_call_get_required_fields_sync:
+ * @proxy: A #EGdbusBook.
+ * @out_fields: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.getRequiredFields</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_call_get_required_fields() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_get_required_fields_sync (
+ EGdbusBook *proxy,
+ gchar ***out_fields,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getRequiredFields",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^as)",
+ out_fields);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_call_get_supported_fields:
+ * @proxy: A #EGdbusBook.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.getSupportedFields</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_call_get_supported_fields_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_call_get_supported_fields_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_call_get_supported_fields (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getSupportedFields",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_call_get_supported_fields_finish:
+ * @proxy: A #EGdbusBook.
+ * @out_fields: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_call_get_supported_fields().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.Book.getSupportedFields</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_get_supported_fields_finish (
+ EGdbusBook *proxy,
+ gchar ***out_fields,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^as)",
+ out_fields);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_call_get_supported_fields_sync:
+ * @proxy: A #EGdbusBook.
+ * @out_fields: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.getSupportedFields</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_call_get_supported_fields() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_get_supported_fields_sync (
+ EGdbusBook *proxy,
+ gchar ***out_fields,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getSupportedFields",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^as)",
+ out_fields);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_call_get_supported_auth_methods:
+ * @proxy: A #EGdbusBook.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.getSupportedAuthMethods</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_call_get_supported_auth_methods_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_call_get_supported_auth_methods_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_call_get_supported_auth_methods (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getSupportedAuthMethods",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_call_get_supported_auth_methods_finish:
+ * @proxy: A #EGdbusBook.
+ * @out_auth_methods: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_call_get_supported_auth_methods().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.Book.getSupportedAuthMethods</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_get_supported_auth_methods_finish (
+ EGdbusBook *proxy,
+ gchar ***out_auth_methods,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^as)",
+ out_auth_methods);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_call_get_supported_auth_methods_sync:
+ * @proxy: A #EGdbusBook.
+ * @out_auth_methods: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.getSupportedAuthMethods</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_call_get_supported_auth_methods() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_get_supported_auth_methods_sync (
+ EGdbusBook *proxy,
+ gchar ***out_auth_methods,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getSupportedAuthMethods",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^as)",
+ out_auth_methods);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_call_get_book_view:
+ * @proxy: A #EGdbusBook.
+ * @in_query: Method parameter.
+ * @in_max_results: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.getBookView</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_call_get_book_view_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_call_get_book_view_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_call_get_book_view (
+ EGdbusBook *proxy,
+ const gchar *in_query,
+ guint in_max_results,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(su)",
+ in_query,
+ in_max_results);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getBookView",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_call_get_book_view_finish:
+ * @proxy: A #EGdbusBook.
+ * @out_view: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_call_get_book_view().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.Book.getBookView</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_get_book_view_finish (
+ EGdbusBook *proxy,
+ gchar **out_view,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(o)",
+ out_view);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_call_get_book_view_sync:
+ * @proxy: A #EGdbusBook.
+ * @in_query: Method parameter.
+ * @in_max_results: Method parameter.
+ * @out_view: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.getBookView</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_call_get_book_view() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_get_book_view_sync (
+ EGdbusBook *proxy,
+ const gchar *in_query,
+ guint in_max_results,
+ gchar **out_view,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(su)",
+ in_query,
+ in_max_results);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getBookView",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(o)",
+ out_view);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_call_get_changes:
+ * @proxy: A #EGdbusBook.
+ * @in_change_id: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.getChanges</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_call_get_changes_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_call_get_changes_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_call_get_changes (
+ EGdbusBook *proxy,
+ const gchar *in_change_id,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ in_change_id);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getChanges",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_call_get_changes_finish:
+ * @proxy: A #EGdbusBook.
+ * @out_changes: Return location for out parameter or %NULL. Free with g_variant_unref().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_call_get_changes().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.Book.getChanges</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_get_changes_finish (
+ EGdbusBook *proxy,
+ GVariant **out_changes,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(*)",
+ out_changes);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_call_get_changes_sync:
+ * @proxy: A #EGdbusBook.
+ * @in_change_id: Method parameter.
+ * @out_changes: Return location for out parameter or %NULL. Free with g_variant_unref().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.getChanges</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_call_get_changes() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_get_changes_sync (
+ EGdbusBook *proxy,
+ const gchar *in_change_id,
+ GVariant **out_changes,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(s)",
+ in_change_id);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getChanges",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(*)",
+ out_changes);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_call_cancel_operation:
+ * @proxy: A #EGdbusBook.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.cancelOperation</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_call_cancel_operation_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_call_cancel_operation_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_call_cancel_operation (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "cancelOperation",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_call_cancel_operation_finish:
+ * @proxy: A #EGdbusBook.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_call_cancel_operation().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.Book.cancelOperation</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_cancel_operation_finish (
+ EGdbusBook *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_call_cancel_operation_sync:
+ * @proxy: A #EGdbusBook.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.cancelOperation</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_call_cancel_operation() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_cancel_operation_sync (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "cancelOperation",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_call_close:
+ * @proxy: A #EGdbusBook.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.close</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_call_close_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_call_close_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_call_close (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "close",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_call_close_finish:
+ * @proxy: A #EGdbusBook.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_call_close().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.Book.close</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_close_finish (
+ EGdbusBook *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_call_close_sync:
+ * @proxy: A #EGdbusBook.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.Book.close</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_call_close() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_call_close_sync (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "close",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_complete_open:
+ * @object: A #EGdbusBook.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.Book.open</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_complete_open (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_book_complete_remove:
+ * @object: A #EGdbusBook.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.Book.remove</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_complete_remove (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_book_complete_get_contact:
+ * @object: A #EGdbusBook.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_vcard: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.Book.getContact</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_complete_get_contact (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_vcard)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ out_vcard);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_book_complete_get_contact_list:
+ * @object: A #EGdbusBook.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_vcards: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.Book.getContactList</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_complete_get_contact_list (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_vcards)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(^as)",
+ out_vcards);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_book_complete_authenticate_user:
+ * @object: A #EGdbusBook.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.Book.authenticateUser</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_complete_authenticate_user (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_book_complete_add_contact:
+ * @object: A #EGdbusBook.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_uid: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.Book.addContact</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_complete_add_contact (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_uid)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ out_uid);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_book_complete_remove_contacts:
+ * @object: A #EGdbusBook.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.Book.removeContacts</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_complete_remove_contacts (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_book_complete_modify_contact:
+ * @object: A #EGdbusBook.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.Book.modifyContact</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_complete_modify_contact (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_book_complete_get_static_capabilities:
+ * @object: A #EGdbusBook.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_capabilities: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.Book.getStaticCapabilities</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_complete_get_static_capabilities (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_capabilities)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ out_capabilities);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_book_complete_get_required_fields:
+ * @object: A #EGdbusBook.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_fields: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.Book.getRequiredFields</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_complete_get_required_fields (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_fields)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(^as)",
+ out_fields);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_book_complete_get_supported_fields:
+ * @object: A #EGdbusBook.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_fields: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.Book.getSupportedFields</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_complete_get_supported_fields (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_fields)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(^as)",
+ out_fields);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_book_complete_get_supported_auth_methods:
+ * @object: A #EGdbusBook.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_auth_methods: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.Book.getSupportedAuthMethods</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_complete_get_supported_auth_methods (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_auth_methods)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(^as)",
+ out_auth_methods);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_book_complete_get_book_view:
+ * @object: A #EGdbusBook.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_view: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.Book.getBookView</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_complete_get_book_view (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_view)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(o)",
+ out_view);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_book_complete_get_changes:
+ * @object: A #EGdbusBook.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_changes: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.Book.getChanges</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_complete_get_changes (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ GVariant *out_changes)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(*)",
+ out_changes);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_book_complete_cancel_operation:
+ * @object: A #EGdbusBook.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.Book.cancelOperation</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_complete_cancel_operation (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_book_complete_close:
+ * @object: A #EGdbusBook.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.Book.close</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_complete_close (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_book_emit_writable:
+ * @object: A #EGdbusBook.
+ * @arg_value: Signal parameter.
+ *
+ * Emits the <literal>org.gnome.evolution.dataserver.addressbook.Book.writable</literal>
+ * D-Bus signal.
+ */
+void e_gdbus_book_emit_writable (
+ EGdbusBook *object,
+ gboolean arg_value)
+{
+ g_signal_emit (object, signals[__WRITABLE_SIGNAL], 0, arg_value);
+}
+
+
+/**
+ * e_gdbus_book_emit_connection:
+ * @object: A #EGdbusBook.
+ * @arg_connected: Signal parameter.
+ *
+ * Emits the <literal>org.gnome.evolution.dataserver.addressbook.Book.connection</literal>
+ * D-Bus signal.
+ */
+void e_gdbus_book_emit_connection (
+ EGdbusBook *object,
+ gboolean arg_connected)
+{
+ g_signal_emit (object, signals[__CONNECTION_SIGNAL], 0, arg_connected);
+}
+
+
+/**
+ * e_gdbus_book_emit_auth_required:
+ * @object: A #EGdbusBook.
+ *
+ * Emits the <literal>org.gnome.evolution.dataserver.addressbook.Book.auth_required</literal>
+ * D-Bus signal.
+ */
+void e_gdbus_book_emit_auth_required (
+ EGdbusBook *object)
+{
+ g_signal_emit (object, signals[__AUTH_REQUIRED_SIGNAL], 0);
+}
+
+
+static const GDBusArgInfo e_gdbus_book_signal_writable_value =
+{
+ -1,
+ (gchar *) "value",
+ (gchar *) "b",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_signal_writable_arg_pointers[] =
+{
+ &e_gdbus_book_signal_writable_value,
+ NULL
+};
+
+static const GDBusSignalInfo e_gdbus_book_signal_writable =
+{
+ -1,
+ (gchar *) "writable",
+ (GDBusArgInfo **) &e_gdbus_book_signal_writable_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_book_signal_connection_connected =
+{
+ -1,
+ (gchar *) "connected",
+ (gchar *) "b",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_signal_connection_arg_pointers[] =
+{
+ &e_gdbus_book_signal_connection_connected,
+ NULL
+};
+
+static const GDBusSignalInfo e_gdbus_book_signal_connection =
+{
+ -1,
+ (gchar *) "connection",
+ (GDBusArgInfo **) &e_gdbus_book_signal_connection_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusSignalInfo e_gdbus_book_signal_auth_required =
+{
+ -1,
+ (gchar *) "auth_required",
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusSignalInfo * const e_gdbus_book_signal_info_pointers[] =
+{
+ &e_gdbus_book_signal_writable,
+ &e_gdbus_book_signal_connection,
+ &e_gdbus_book_signal_auth_required,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_book_method_in_open_only_if_exists =
+{
+ -1,
+ (gchar *) "only_if_exists",
+ (gchar *) "b",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_in_open_arg_pointers[] =
+{
+ &e_gdbus_book_method_in_open_only_if_exists,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_book_method_open =
+{
+ -1,
+ (gchar *) "open",
+ (GDBusArgInfo **) &e_gdbus_book_method_in_open_arg_pointers,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusMethodInfo e_gdbus_book_method_remove =
+{
+ -1,
+ (gchar *) "remove",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_book_method_in_getContact_uid =
+{
+ -1,
+ (gchar *) "uid",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_in_getContact_arg_pointers[] =
+{
+ &e_gdbus_book_method_in_getContact_uid,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_book_method_out_getContact_vcard =
+{
+ -1,
+ (gchar *) "vcard",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_out_getContact_arg_pointers[] =
+{
+ &e_gdbus_book_method_out_getContact_vcard,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_book_method_getContact =
+{
+ -1,
+ (gchar *) "getContact",
+ (GDBusArgInfo **) &e_gdbus_book_method_in_getContact_arg_pointers,
+ (GDBusArgInfo **) &e_gdbus_book_method_out_getContact_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_book_method_in_getContactList_query =
+{
+ -1,
+ (gchar *) "query",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_in_getContactList_arg_pointers[] =
+{
+ &e_gdbus_book_method_in_getContactList_query,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_book_method_out_getContactList_vcards =
+{
+ -1,
+ (gchar *) "vcards",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_out_getContactList_arg_pointers[] =
+{
+ &e_gdbus_book_method_out_getContactList_vcards,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_book_method_getContactList =
+{
+ -1,
+ (gchar *) "getContactList",
+ (GDBusArgInfo **) &e_gdbus_book_method_in_getContactList_arg_pointers,
+ (GDBusArgInfo **) &e_gdbus_book_method_out_getContactList_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_book_method_in_authenticateUser_user =
+{
+ -1,
+ (gchar *) "user",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_book_method_in_authenticateUser_passwd =
+{
+ -1,
+ (gchar *) "passwd",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_book_method_in_authenticateUser_auth_method =
+{
+ -1,
+ (gchar *) "auth_method",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_in_authenticateUser_arg_pointers[] =
+{
+ &e_gdbus_book_method_in_authenticateUser_user,
+ &e_gdbus_book_method_in_authenticateUser_passwd,
+ &e_gdbus_book_method_in_authenticateUser_auth_method,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_book_method_authenticateUser =
+{
+ -1,
+ (gchar *) "authenticateUser",
+ (GDBusArgInfo **) &e_gdbus_book_method_in_authenticateUser_arg_pointers,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_book_method_in_addContact_vcard =
+{
+ -1,
+ (gchar *) "vcard",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_in_addContact_arg_pointers[] =
+{
+ &e_gdbus_book_method_in_addContact_vcard,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_book_method_out_addContact_uid =
+{
+ -1,
+ (gchar *) "uid",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_out_addContact_arg_pointers[] =
+{
+ &e_gdbus_book_method_out_addContact_uid,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_book_method_addContact =
+{
+ -1,
+ (gchar *) "addContact",
+ (GDBusArgInfo **) &e_gdbus_book_method_in_addContact_arg_pointers,
+ (GDBusArgInfo **) &e_gdbus_book_method_out_addContact_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_book_method_in_removeContacts_list =
+{
+ -1,
+ (gchar *) "list",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_in_removeContacts_arg_pointers[] =
+{
+ &e_gdbus_book_method_in_removeContacts_list,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_book_method_removeContacts =
+{
+ -1,
+ (gchar *) "removeContacts",
+ (GDBusArgInfo **) &e_gdbus_book_method_in_removeContacts_arg_pointers,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_book_method_in_modifyContact_vcard =
+{
+ -1,
+ (gchar *) "vcard",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_in_modifyContact_arg_pointers[] =
+{
+ &e_gdbus_book_method_in_modifyContact_vcard,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_book_method_modifyContact =
+{
+ -1,
+ (gchar *) "modifyContact",
+ (GDBusArgInfo **) &e_gdbus_book_method_in_modifyContact_arg_pointers,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_book_method_out_getStaticCapabilities_capabilities =
+{
+ -1,
+ (gchar *) "capabilities",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_out_getStaticCapabilities_arg_pointers[] =
+{
+ &e_gdbus_book_method_out_getStaticCapabilities_capabilities,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_book_method_getStaticCapabilities =
+{
+ -1,
+ (gchar *) "getStaticCapabilities",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) &e_gdbus_book_method_out_getStaticCapabilities_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_book_method_out_getRequiredFields_fields =
+{
+ -1,
+ (gchar *) "fields",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_out_getRequiredFields_arg_pointers[] =
+{
+ &e_gdbus_book_method_out_getRequiredFields_fields,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_book_method_getRequiredFields =
+{
+ -1,
+ (gchar *) "getRequiredFields",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) &e_gdbus_book_method_out_getRequiredFields_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_book_method_out_getSupportedFields_fields =
+{
+ -1,
+ (gchar *) "fields",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_out_getSupportedFields_arg_pointers[] =
+{
+ &e_gdbus_book_method_out_getSupportedFields_fields,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_book_method_getSupportedFields =
+{
+ -1,
+ (gchar *) "getSupportedFields",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) &e_gdbus_book_method_out_getSupportedFields_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_book_method_out_getSupportedAuthMethods_auth_methods =
+{
+ -1,
+ (gchar *) "auth_methods",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_out_getSupportedAuthMethods_arg_pointers[] =
+{
+ &e_gdbus_book_method_out_getSupportedAuthMethods_auth_methods,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_book_method_getSupportedAuthMethods =
+{
+ -1,
+ (gchar *) "getSupportedAuthMethods",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) &e_gdbus_book_method_out_getSupportedAuthMethods_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_book_method_in_getBookView_query =
+{
+ -1,
+ (gchar *) "query",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_book_method_in_getBookView_max_results =
+{
+ -1,
+ (gchar *) "max_results",
+ (gchar *) "u",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_in_getBookView_arg_pointers[] =
+{
+ &e_gdbus_book_method_in_getBookView_query,
+ &e_gdbus_book_method_in_getBookView_max_results,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_book_method_out_getBookView_view =
+{
+ -1,
+ (gchar *) "view",
+ (gchar *) "o",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_out_getBookView_arg_pointers[] =
+{
+ &e_gdbus_book_method_out_getBookView_view,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_book_method_getBookView =
+{
+ -1,
+ (gchar *) "getBookView",
+ (GDBusArgInfo **) &e_gdbus_book_method_in_getBookView_arg_pointers,
+ (GDBusArgInfo **) &e_gdbus_book_method_out_getBookView_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_book_method_in_getChanges_change_id =
+{
+ -1,
+ (gchar *) "change_id",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_in_getChanges_arg_pointers[] =
+{
+ &e_gdbus_book_method_in_getChanges_change_id,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_book_method_out_getChanges_changes =
+{
+ -1,
+ (gchar *) "changes",
+ (gchar *) "a(us)",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_method_out_getChanges_arg_pointers[] =
+{
+ &e_gdbus_book_method_out_getChanges_changes,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_book_method_getChanges =
+{
+ -1,
+ (gchar *) "getChanges",
+ (GDBusArgInfo **) &e_gdbus_book_method_in_getChanges_arg_pointers,
+ (GDBusArgInfo **) &e_gdbus_book_method_out_getChanges_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusMethodInfo e_gdbus_book_method_cancelOperation =
+{
+ -1,
+ (gchar *) "cancelOperation",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusMethodInfo e_gdbus_book_method_close =
+{
+ -1,
+ (gchar *) "close",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusMethodInfo * const e_gdbus_book_method_info_pointers[] =
+{
+ &e_gdbus_book_method_open,
+ &e_gdbus_book_method_remove,
+ &e_gdbus_book_method_getContact,
+ &e_gdbus_book_method_getContactList,
+ &e_gdbus_book_method_authenticateUser,
+ &e_gdbus_book_method_addContact,
+ &e_gdbus_book_method_removeContacts,
+ &e_gdbus_book_method_modifyContact,
+ &e_gdbus_book_method_getStaticCapabilities,
+ &e_gdbus_book_method_getRequiredFields,
+ &e_gdbus_book_method_getSupportedFields,
+ &e_gdbus_book_method_getSupportedAuthMethods,
+ &e_gdbus_book_method_getBookView,
+ &e_gdbus_book_method_getChanges,
+ &e_gdbus_book_method_cancelOperation,
+ &e_gdbus_book_method_close,
+ NULL
+};
+
+static const GDBusInterfaceInfo _e_gdbus_book_interface_info =
+{
+ -1,
+ (gchar *) "org.gnome.evolution.dataserver.addressbook.Book",
+ (GDBusMethodInfo **) &e_gdbus_book_method_info_pointers,
+ (GDBusSignalInfo **) &e_gdbus_book_signal_info_pointers,
+ (GDBusPropertyInfo **) NULL,
+};
+
+static void
+handle_method_call (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *method_name,
+ GVariant *parameters,
+ GDBusMethodInvocation *invocation,
+ gpointer user_data)
+{
+ guint method_id;
+ method_id = lookup_method_id_from_method_name (method_name);
+ switch (method_id)
+ {
+ case __OPEN_METHOD:
+ {
+ EGdbusBook *object = E_GDBUS_BOOK (user_data);
+ gboolean handled;
+ gboolean arg_only_if_exists;
+ g_variant_get (parameters,
+ "(b)",
+ &arg_only_if_exists);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_only_if_exists, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __REMOVE_METHOD:
+ {
+ EGdbusBook *object = E_GDBUS_BOOK (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_CONTACT_METHOD:
+ {
+ EGdbusBook *object = E_GDBUS_BOOK (user_data);
+ gboolean handled;
+ const gchar *arg_uid;
+ g_variant_get (parameters,
+ "(&s)",
+ &arg_uid);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_uid, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_CONTACT_LIST_METHOD:
+ {
+ EGdbusBook *object = E_GDBUS_BOOK (user_data);
+ gboolean handled;
+ const gchar *arg_query;
+ g_variant_get (parameters,
+ "(&s)",
+ &arg_query);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_query, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __AUTHENTICATE_USER_METHOD:
+ {
+ EGdbusBook *object = E_GDBUS_BOOK (user_data);
+ gboolean handled;
+ const gchar *arg_user;
+ const gchar *arg_passwd;
+ const gchar *arg_auth_method;
+ g_variant_get (parameters,
+ "(&s&s&s)",
+ &arg_user,
+ &arg_passwd,
+ &arg_auth_method);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_user, arg_passwd, arg_auth_method, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __ADD_CONTACT_METHOD:
+ {
+ EGdbusBook *object = E_GDBUS_BOOK (user_data);
+ gboolean handled;
+ const gchar *arg_vcard;
+ g_variant_get (parameters,
+ "(&s)",
+ &arg_vcard);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_vcard, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __REMOVE_CONTACTS_METHOD:
+ {
+ EGdbusBook *object = E_GDBUS_BOOK (user_data);
+ gboolean handled;
+ const gchar* const *arg_list;
+ g_variant_get (parameters,
+ "(^a&s)",
+ &arg_list);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_list, &handled);
+ g_free ((gpointer) arg_list);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __MODIFY_CONTACT_METHOD:
+ {
+ EGdbusBook *object = E_GDBUS_BOOK (user_data);
+ gboolean handled;
+ const gchar *arg_vcard;
+ g_variant_get (parameters,
+ "(&s)",
+ &arg_vcard);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_vcard, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_STATIC_CAPABILITIES_METHOD:
+ {
+ EGdbusBook *object = E_GDBUS_BOOK (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_REQUIRED_FIELDS_METHOD:
+ {
+ EGdbusBook *object = E_GDBUS_BOOK (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_SUPPORTED_FIELDS_METHOD:
+ {
+ EGdbusBook *object = E_GDBUS_BOOK (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_SUPPORTED_AUTH_METHODS_METHOD:
+ {
+ EGdbusBook *object = E_GDBUS_BOOK (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_BOOK_VIEW_METHOD:
+ {
+ EGdbusBook *object = E_GDBUS_BOOK (user_data);
+ gboolean handled;
+ const gchar *arg_query;
+ guint arg_max_results;
+ g_variant_get (parameters,
+ "(&su)",
+ &arg_query,
+ &arg_max_results);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_query, arg_max_results, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_CHANGES_METHOD:
+ {
+ EGdbusBook *object = E_GDBUS_BOOK (user_data);
+ gboolean handled;
+ const gchar *arg_change_id;
+ g_variant_get (parameters,
+ "(&s)",
+ &arg_change_id);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_change_id, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __CANCEL_OPERATION_METHOD:
+ {
+ EGdbusBook *object = E_GDBUS_BOOK (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __CLOSE_METHOD:
+ {
+ EGdbusBook *object = E_GDBUS_BOOK (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ default:
+not_implemented:
+ g_dbus_method_invocation_return_error (invocation,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "Method `%s' is not implemented",
+ method_name);
+ break;
+ }
+};
+
+static GVariant *
+get_property (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *property_name,
+ GError **error,
+ gpointer user_data)
+{
+ GVariant *ret;
+ guint prop_id;
+ prop_id = lookup_property_id_from_property_name (property_name);
+ ret = NULL;
+ switch (prop_id)
+ {
+ default:
+ g_set_error (error,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "This implementation does not support property `%s'",
+ property_name);
+ break;
+ }
+
+ return ret;
+};
+
+static gboolean
+set_property (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *property_name,
+ GVariant *value,
+ GError **error,
+ gpointer user_data)
+{
+ gboolean ret;
+ guint prop_id;
+ prop_id = lookup_property_id_from_property_name (property_name);
+ ret = TRUE;
+ switch (prop_id)
+ {
+ default:
+ g_set_error (error,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "This implementation does not support property `%s'",
+ property_name);
+ ret = FALSE;
+ break;
+ }
+
+ return ret;
+};
+
+static const GDBusInterfaceVTable e_gdbus_book_interface_vtable =
+{
+ handle_method_call,
+ get_property,
+ set_property,
+};
+
+static gboolean
+emit_notifications_in_idle (gpointer user_data)
+{
+ GObject *object = G_OBJECT (user_data);
+ GDBusConnection *connection;
+ const gchar *path;
+ GHashTable *notification_queue;
+ GHashTableIter iter;
+ const gchar *property_name;
+ GVariant *value;
+ GVariantBuilder *builder;
+ GVariantBuilder *invalidated_builder;
+ GHashTable *pvc;
+ gboolean has_changes;
+
+ notification_queue = g_object_get_data (object, "gdbus-codegen-notification-queue");
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ pvc = g_object_get_data (object, "gdbus-codegen-pvc");
+ g_assert (notification_queue != NULL && path != NULL && connection != NULL && pvc != NULL);
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY);
+ invalidated_builder = g_variant_builder_new (G_VARIANT_TYPE ("as"));
+ g_hash_table_iter_init (&iter, notification_queue);
+ has_changes = FALSE;
+ while (g_hash_table_iter_next (&iter, (gpointer) &property_name, (gpointer) &value))
+ {
+ GVariant *cached_value;
+ cached_value = g_hash_table_lookup (pvc, property_name);
+ if (cached_value == NULL || !g_variant_equal (cached_value, value))
+ {
+ g_hash_table_insert (pvc, (gpointer) property_name, (gpointer) g_variant_ref (value));
+ g_variant_builder_add (builder, "{sv}", property_name, value);
+ has_changes = TRUE;
+ }
+ }
+
+ if (has_changes)
+ {
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.freedesktop.DBus.Properties",
+ "PropertiesChanged",
+ g_variant_new ("(sa{sv}as)",
+ "org.gnome.evolution.dataserver.addressbook.Book",
+ builder,
+ invalidated_builder),
+ NULL);
+ }
+ else
+ {
+ g_variant_builder_unref (builder);
+ g_variant_builder_unref (invalidated_builder);
+ }
+
+ g_hash_table_remove_all (notification_queue);
+ g_object_set_data (object, "gdbus-codegen-notification-idle-id", GUINT_TO_POINTER (0));
+ return FALSE;
+}
+
+static void
+queue_notification (GObject *object,
+ const gchar *property_name,
+ GVariant *value)
+{
+ GHashTable *notification_queue;
+ guint idle_id;
+ notification_queue = g_object_get_data (object, "gdbus-codegen-notification-queue");
+ if (notification_queue == NULL)
+ {
+ notification_queue = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_variant_unref);
+ g_object_set_data_full (object, "gdbus-codegen-notification-queue", notification_queue, (GDestroyNotify) g_hash_table_unref);
+ }
+ g_hash_table_insert (notification_queue, (gpointer) property_name, (gpointer) value); /* adopts value */
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (object, "gdbus-codegen-notification-idle-id"));
+ if (idle_id == 0)
+ {
+ GSource *idle_source;
+ idle_source = g_idle_source_new ();
+ g_source_set_priority (idle_source, G_PRIORITY_DEFAULT);
+ g_source_set_callback (idle_source,
+ emit_notifications_in_idle,
+ g_object_ref (object),
+ (GDestroyNotify) g_object_unref);
+ idle_id = g_source_attach (idle_source, g_main_context_get_thread_default ());
+ g_source_unref (idle_source);
+ g_object_set_data (object, "gdbus-codegen-notification-idle-id", GUINT_TO_POINTER (idle_id));
+ }
+}
+
+/**
+ * e_gdbus_book_drain_notify:
+ * @object: A #EGdbusBook that is exported.
+ *
+ * If @object has queued notifications, empty the queue forcing
+ * the <literal>PropertiesChanged</literal> signal to be emitted.
+ * See <xref linkend="EGdbusBook.description"/> for more background information.
+ */
+void
+e_gdbus_book_drain_notify (EGdbusBook *object)
+{
+ gint idle_id;
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (object), "gdbus-codegen-notification-idle-id"));
+ if (idle_id > 0)
+ {
+ emit_notifications_in_idle (object);
+ g_source_remove (idle_id);
+ }
+}
+
+static void
+on_notify (GObject *object,
+ GParamSpec *pspec,
+ gpointer user_data)
+{
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *value;
+ const gchar *property_name;
+ guint prop_id;
+
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ property_name = lookup_property_name_from_property_gname (pspec->name);
+ if (property_name == NULL)
+ goto out;
+ prop_id = lookup_property_id_from_property_name (property_name);
+
+ value = NULL;
+ switch (prop_id)
+ {
+ }
+
+ if (value != NULL && property_name != NULL)
+ {
+ queue_notification (object, property_name, g_variant_ref_sink (value));
+ }
+out:
+ ;
+}
+
+static void
+on_object_unregistered (GObject *object)
+{
+ gint idle_id;
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (object), "gdbus-codegen-notification-idle-id"));
+ if (idle_id > 0)
+ {
+ g_source_remove (idle_id);
+ }
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-path", NULL);
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-connection", NULL);
+ g_signal_handlers_disconnect_by_func (object, on_notify, NULL);
+}
+
+/**
+ * e_gdbus_book_register_object:
+ * @object: An instance of a #GObject<!-- -->-derived type implementing the #EGdbusBook interface.
+ * @connection: A #GDBusConnection.
+ * @object_path: The object to register the object at.
+ * @error: Return location for error or %NULL.
+ *
+ * Registers @object at @object_path on @connection.
+ *
+ * See <xref linkend="EGdbusBook.description"/>
+ * for how properties, methods and signals are handled.
+ *
+ * Returns: 0 if @error is set, otherwise a registration id (never 0) that can be used with g_dbus_connection_unregister_object().
+ */
+guint
+e_gdbus_book_register_object (EGdbusBook *object,
+ GDBusConnection *connection,
+ const gchar *object_path,
+ GError **error)
+{
+ G_GNUC_UNUSED GVariant *value;
+ GHashTable *pvc;
+
+ pvc = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_variant_unref);
+
+ g_object_set_data_full (G_OBJECT (object), "gdbus-codegen-path", (gpointer) g_strdup (object_path), g_free);
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-connection", (gpointer) connection);
+ g_object_set_data_full (G_OBJECT (object), "gdbus-codegen-pvc", (gpointer) pvc, (GDestroyNotify) g_hash_table_unref);
+ g_signal_connect (object, "notify", G_CALLBACK (on_notify), NULL);
+ return g_dbus_connection_register_object (connection,
+ object_path,
+ &_e_gdbus_book_interface_info,
+ &e_gdbus_book_interface_vtable,
+ object,
+ (GDestroyNotify) on_object_unregistered,
+ error);
+}
+
+/**
+ * e_gdbus_book_interface_info:
+ *
+ * Gets interface description for the <literal>org.gnome.evolution.dataserver.addressbook.Book</literal> D-Bus interface.
+ *
+ * Returns: A #GDBusInterfaceInfo. Do not free, the object is statically allocated.
+ */
+const GDBusInterfaceInfo *
+e_gdbus_book_interface_info (void)
+{
+ return &_e_gdbus_book_interface_info;
+}
+
+
+/* ---------------------------------------------------------------------- */
+
+static void proxy_iface_init (EGdbusBookIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (EGdbusBookProxy, e_gdbus_book_proxy, G_TYPE_DBUS_PROXY,
+ G_IMPLEMENT_INTERFACE (E_GDBUS_TYPE_BOOK, proxy_iface_init));
+
+static void
+e_gdbus_book_proxy_init (EGdbusBookProxy *proxy)
+{
+ g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy),
+ (GDBusInterfaceInfo *) &_e_gdbus_book_interface_info);
+}
+
+static void
+g_signal (GDBusProxy *proxy,
+ const gchar *sender_name,
+ const gchar *signal_name,
+ GVariant *parameters)
+{
+ guint signal_id;
+ signal_id = lookup_signal_id_from_signal_name (signal_name);
+ switch (signal_id)
+ {
+ case __WRITABLE_SIGNAL:
+ {
+ gboolean arg_value;
+ g_variant_get (parameters,
+ "(b)",
+ &arg_value);
+ g_signal_emit (proxy,
+ signals[signal_id],
+ 0, arg_value);
+ }
+ break;
+
+ case __CONNECTION_SIGNAL:
+ {
+ gboolean arg_connected;
+ g_variant_get (parameters,
+ "(b)",
+ &arg_connected);
+ g_signal_emit (proxy,
+ signals[signal_id],
+ 0, arg_connected);
+ }
+ break;
+
+ case __AUTH_REQUIRED_SIGNAL:
+ {
+ g_signal_emit (proxy,
+ signals[signal_id],
+ 0);
+ }
+ break;
+
+ }
+}
+
+static void
+e_gdbus_book_proxy_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED GVariant *cached;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+property_set_cb (GDBusProxy *proxy,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ const gchar *property_name = user_data;
+ GError *error;
+ GVariant *result;
+
+ error = NULL;
+ result = g_dbus_proxy_call_finish (proxy, res, &error);
+ if (result == NULL)
+ {
+ g_warning ("Error setting property `%s': %s", property_name, error->message);
+ g_error_free (error);
+ }
+ else
+ {
+ g_variant_unref (result);
+ }
+}
+
+static void
+e_gdbus_book_proxy_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GVariant *new_value;
+ const gchar *property_name;
+ new_value = NULL;
+ property_name = NULL;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+
+ if (new_value != NULL)
+ {
+ g_variant_ref_sink (new_value);
+ g_dbus_proxy_call (G_DBUS_PROXY (object),
+ "org.freedesktop.DBus.Properties.Set",
+ g_variant_new ("(ssv)",
+ "org.gnome.evolution.dataserver.addressbook.Book",
+ property_name,
+ new_value),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ (GAsyncReadyCallback) property_set_cb,
+ (gpointer) property_name);
+ g_variant_unref (new_value);
+ }
+
+}
+
+static void
+g_properties_changed (GDBusProxy *proxy,
+ GVariant *changed_properties,
+ const gchar* const *invalidated_properties)
+{
+ guint n;
+ const gchar *key;
+ GVariantIter *iter;
+ const gchar *gname;
+
+ g_variant_get (changed_properties, "a{sv}", &iter);
+ while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+ {
+ gname = lookup_property_gname_from_property_name (key);
+ if (gname != NULL)
+ g_object_notify (G_OBJECT (proxy), gname);
+ }
+
+ for (n = 0; invalidated_properties[n] != NULL; n++)
+ {
+ gname = lookup_property_gname_from_property_name (invalidated_properties[n]);
+ if (gname != NULL)
+ g_object_notify (G_OBJECT (proxy), gname);
+ }
+
+}
+
+static void
+e_gdbus_book_proxy_class_init (EGdbusBookProxyClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusProxyClass *proxy_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->get_property = e_gdbus_book_proxy_get_property;
+ gobject_class->set_property = e_gdbus_book_proxy_set_property;
+
+ proxy_class = G_DBUS_PROXY_CLASS (klass);
+ proxy_class->g_signal = g_signal;
+ proxy_class->g_properties_changed = g_properties_changed;
+
+}
+
+static void
+proxy_iface_init (EGdbusBookIface *iface)
+{
+}
+
+
+/**
+ * e_gdbus_book_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: Callback function to invoke when the proxy is ready.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like g_dbus_proxy_new() but returns a #EGdbusBookProxy.
+ *
+ * This is a failable asynchronous constructor - when the proxy is ready, callback will be invoked and you can use e_gdbus_book_proxy_new_finish() to get the result.
+ */
+void e_gdbus_book_proxy_new (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (E_GDBUS_TYPE_BOOK_PROXY,
+ G_PRIORITY_DEFAULT,
+ cancellable,
+ callback,
+ user_data,
+ "g-flags", flags,
+ "g-name", name,
+ "g-connection", connection,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.addressbook.Book",
+ NULL);
+}
+
+/**
+ * e_gdbus_book_proxy_new_finish:
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to e_gdbus_book_proxy_new().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes creating a #EGdbusBookProxy.
+ *
+ * Returns: A #EGdbusBookProxy or %NULL if @error is set. Free with g_object_unref().
+ */
+EGdbusBook *e_gdbus_book_proxy_new_finish (GAsyncResult *res,
+ GError **error)
+{
+ GObject *object;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ g_assert (source_object != NULL);
+ object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object),
+ res,
+ error);
+ g_object_unref (source_object);
+ if (object != NULL)
+ return E_GDBUS_BOOK (object);
+ else
+ return NULL;
+}
+
+/**
+ * e_gdbus_book_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Like g_dbus_proxy_new_sync() but returns a #EGdbusBookProxy.
+ *
+ * This is a synchronous failable constructor. See e_gdbus_book_proxy_new() and e_gdbus_book_proxy_new_finish() for the asynchronous version.
+ *
+ * Returns: A #EGdbusBookProxy or %NULL if error is set. Free with g_object_unref().
+ */
+EGdbusBook *e_gdbus_book_proxy_new_sync (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *initable;
+ initable = g_initable_new (E_GDBUS_TYPE_BOOK_PROXY,
+ cancellable,
+ error,
+ "g-flags", flags,
+ "g-name", name,
+ "g-connection", connection,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.addressbook.Book",
+ NULL);
+ if (initable != NULL)
+ return E_GDBUS_BOOK (initable);
+ else
+ return NULL;
+}
+
+
+/**
+ * e_gdbus_book_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: Callback function to invoke when the proxy is ready.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like g_dbus_proxy_new_for_bus() but returns a #EGdbusBookProxy.
+ *
+ * This is a failable asynchronous constructor - when the proxy is ready, callback will be invoked and you can use e_gdbus_book_proxy_new_for_bus_finish() to get the result.
+ */
+void e_gdbus_book_proxy_new_for_bus (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (E_GDBUS_TYPE_BOOK_PROXY,
+ G_PRIORITY_DEFAULT,
+ cancellable,
+ callback,
+ user_data,
+ "g-flags", flags,
+ "g-name", name,
+ "g-bus-type", bus_type,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.addressbook.Book",
+ NULL);
+}
+
+/**
+ * e_gdbus_book_proxy_new_for_bus_finish:
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to e_gdbus_book_proxy_new_for_bus().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes creating a #EGdbusBookProxy.
+ *
+ * Returns: A #EGdbusBookProxy or %NULL if @error is set. Free with g_object_unref().
+ */
+EGdbusBook *e_gdbus_book_proxy_new_for_bus_finish (GAsyncResult *res,
+ GError **error)
+{
+ GObject *object;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ g_assert (source_object != NULL);
+ object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object),
+ res,
+ error);
+ g_object_unref (source_object);
+ if (object != NULL)
+ return E_GDBUS_BOOK (object);
+ else
+ return NULL;
+}
+
+/**
+ * e_gdbus_book_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Like g_dbus_proxy_new_for_bus_sync() but returns a #EGdbusBookProxy.
+ *
+ * This is a synchronous failable constructor. See e_gdbus_book_proxy_new_for_bus() and e_gdbus_book_proxy_new_for_bus_finish() for the asynchronous version.
+ *
+ * Returns: A #EGdbusBookProxy or %NULL if error is set. Free with g_object_unref().
+ */
+EGdbusBook *e_gdbus_book_proxy_new_for_bus_sync (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *initable;
+ initable = g_initable_new (E_GDBUS_TYPE_BOOK_PROXY,
+ cancellable,
+ error,
+ "g-flags", flags,
+ "g-name", name,
+ "g-bus-type", bus_type,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.addressbook.Book",
+ NULL);
+ if (initable != NULL)
+ return E_GDBUS_BOOK (initable);
+ else
+ return NULL;
+}
+
+
+/* ---------------------------------------------------------------------- */
+
+struct _EGdbusBookStubPrivate
+{
+ gint foo;
+};
+
+static void stub_iface_init (EGdbusBookIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (EGdbusBookStub, e_gdbus_book_stub, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (E_GDBUS_TYPE_BOOK, stub_iface_init));
+
+static void
+e_gdbus_book_stub_finalize (GObject *object)
+{
+ G_GNUC_UNUSED EGdbusBookStub *stub = (EGdbusBookStub *) object;
+ if (G_OBJECT_CLASS (e_gdbus_book_stub_parent_class)->finalize != NULL)
+ G_OBJECT_CLASS (e_gdbus_book_stub_parent_class)->finalize (object);
+}
+
+static void
+e_gdbus_book_stub_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED static gchar **strv_of_len_zero = {NULL};
+ G_GNUC_UNUSED EGdbusBookStub *stub = (EGdbusBookStub *) object;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+e_gdbus_book_stub_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED EGdbusBookStub *stub = (EGdbusBookStub *) object;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+e_gdbus_book_stub_init (EGdbusBookStub *stub)
+{
+ stub->priv = G_TYPE_INSTANCE_GET_PRIVATE (stub, E_GDBUS_TYPE_BOOK_STUB, EGdbusBookStubPrivate);
+}
+
+static void
+e_gdbus_book_stub_class_init (EGdbusBookStubClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = e_gdbus_book_stub_finalize;
+ gobject_class->get_property = e_gdbus_book_stub_get_property;
+ gobject_class->set_property = e_gdbus_book_stub_set_property;
+ g_type_class_add_private (klass, sizeof (EGdbusBookStubPrivate));
+}
+
+static void
+stub_iface_init (EGdbusBookIface *iface)
+{
+}
+
+/**
+ * e_gdbus_book_stub_new:
+ *
+ * Creates a new stub object that can be exported via e_gdbus_book_register_object().
+ *
+ * Returns: A #EGdbusBookStub instance. Free with g_object_unref().
+ */
+EGdbusBook *
+e_gdbus_book_stub_new (void)
+{
+ return E_GDBUS_BOOK (g_object_new (E_GDBUS_TYPE_BOOK_STUB, NULL));
+}
diff --git a/addressbook/libegdbus/e-gdbus-egdbusbook.h b/addressbook/libegdbus/e-gdbus-egdbusbook.h
new file mode 100644
index 0000000..62db87b
--- /dev/null
+++ b/addressbook/libegdbus/e-gdbus-egdbusbook.h
@@ -0,0 +1,681 @@
+/* File: e-gdbus-egdbusbook.h
+ *
+ * GType name: EGdbusBook
+ * D-Bus name: org.gnome.evolution.dataserver.addressbook.Book
+ *
+ * Generated by GDBus Binding Tool 0.1. DO NOT EDIT.
+ */
+
+#ifndef __E_GDBUS_E_GDBUS_BOOK_H__
+#define __E_GDBUS_E_GDBUS_BOOK_H__
+
+#include <gio/gio.h>
+
+#include "e-gdbus-typemappers.h"
+G_BEGIN_DECLS
+
+#define E_GDBUS_TYPE_BOOK (e_gdbus_book_get_type ())
+#define E_GDBUS_BOOK(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), E_GDBUS_TYPE_BOOK, EGdbusBook))
+#define E_GDBUS_IS_BOOK(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_GDBUS_TYPE_BOOK))
+#define E_GDBUS_BOOK_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), E_GDBUS_TYPE_BOOK, EGdbusBookIface))
+
+/**
+ * EGdbusBook:
+ *
+ * Opaque type representing a proxy or an exported object.
+ */
+typedef struct _EGdbusBook EGdbusBook; /* Dummy typedef */
+/**
+ * EGdbusBookIface:
+ * @parent_iface: The parent interface.
+ * @writable: Handler for the #EGdbusBook::writable signal.
+ * @connection: Handler for the #EGdbusBook::connection signal.
+ * @auth_required: Handler for the #EGdbusBook::auth-required signal.
+ * @handle_open: Handler for the #EGdbusBook::handle-open signal.
+ * @handle_remove: Handler for the #EGdbusBook::handle-remove signal.
+ * @handle_get_contact: Handler for the #EGdbusBook::handle-get-contact signal.
+ * @handle_get_contact_list: Handler for the #EGdbusBook::handle-get-contact-list signal.
+ * @handle_authenticate_user: Handler for the #EGdbusBook::handle-authenticate-user signal.
+ * @handle_add_contact: Handler for the #EGdbusBook::handle-add-contact signal.
+ * @handle_remove_contacts: Handler for the #EGdbusBook::handle-remove-contacts signal.
+ * @handle_modify_contact: Handler for the #EGdbusBook::handle-modify-contact signal.
+ * @handle_get_static_capabilities: Handler for the #EGdbusBook::handle-get-static-capabilities signal.
+ * @handle_get_required_fields: Handler for the #EGdbusBook::handle-get-required-fields signal.
+ * @handle_get_supported_fields: Handler for the #EGdbusBook::handle-get-supported-fields signal.
+ * @handle_get_supported_auth_methods: Handler for the #EGdbusBook::handle-get-supported-auth-methods signal.
+ * @handle_get_book_view: Handler for the #EGdbusBook::handle-get-book-view signal.
+ * @handle_get_changes: Handler for the #EGdbusBook::handle-get-changes signal.
+ * @handle_cancel_operation: Handler for the #EGdbusBook::handle-cancel-operation signal.
+ * @handle_close: Handler for the #EGdbusBook::handle-close signal.
+ *
+ * Virtual table.
+ */
+typedef struct _EGdbusBookIface EGdbusBookIface;
+
+GType e_gdbus_book_get_type (void) G_GNUC_CONST;
+
+/* ---------------------------------------------------------------------- */
+
+typedef struct _EGdbusBookProxy EGdbusBookProxy;
+typedef struct _EGdbusBookProxyClass EGdbusBookProxyClass;
+
+/**
+ * EGdbusBookProxyPrivate:
+ *
+ * The #EGdbusBookProxyPrivate structure contains only private data.
+ */
+typedef struct _EGdbusBookProxyPrivate EGdbusBookProxyPrivate;
+
+/**
+ * EGdbusBookProxy:
+ *
+ * The #EGdbusBookProxy structure contains only private data and
+ * should only be accessed using the provided API.
+ */
+struct _EGdbusBookProxy
+{
+ GDBusProxy parent_instance;
+ EGdbusBookProxyPrivate *priv;
+};
+
+/**
+ * EGdbusBookProxyClass:
+ *
+ * Class structure for #EGdbusBookProxy.
+ */
+struct _EGdbusBookProxyClass
+{
+ GDBusProxyClass parent_class;
+};
+
+#define E_GDBUS_TYPE_BOOK_PROXY (e_gdbus_book_proxy_get_type ())
+GType e_gdbus_book_proxy_get_type (void) G_GNUC_CONST;
+
+void e_gdbus_book_proxy_new (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+EGdbusBook *e_gdbus_book_proxy_new_finish (GAsyncResult *res,
+ GError **error);
+EGdbusBook *e_gdbus_book_proxy_new_sync (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+void e_gdbus_book_proxy_new_for_bus (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+EGdbusBook *e_gdbus_book_proxy_new_for_bus_finish (GAsyncResult *res,
+ GError **error);
+EGdbusBook *e_gdbus_book_proxy_new_for_bus_sync (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+/* ---------------------------------------------------------------------- */
+
+typedef struct _EGdbusBookStub EGdbusBookStub;
+typedef struct _EGdbusBookStubClass EGdbusBookStubClass;
+
+/**
+ * EGdbusBookStubPrivate:
+ *
+ * The #EGdbusBookStubPrivate structure contains only private data.
+ */
+typedef struct _EGdbusBookStubPrivate EGdbusBookStubPrivate;
+
+/**
+ * EGdbusBookStub:
+ *
+ * The #EGdbusBookStub structure contains only private data and
+ * should only be accessed using the provided API.
+ */
+struct _EGdbusBookStub
+{
+ GObject parent_instance;
+ EGdbusBookStubPrivate *priv;
+};
+
+/**
+ * EGdbusBookStubClass:
+ *
+ * Class structure for #EGdbusBookStub.
+ */
+struct _EGdbusBookStubClass
+{
+ GObjectClass parent_class;
+};
+
+#define E_GDBUS_TYPE_BOOK_STUB (e_gdbus_book_stub_get_type ())
+GType e_gdbus_book_stub_get_type (void) G_GNUC_CONST;
+
+EGdbusBook *e_gdbus_book_stub_new (void);
+
+
+guint e_gdbus_book_register_object (EGdbusBook *object,
+ GDBusConnection *connection,
+ const gchar *object_path,
+ GError **error);
+
+void e_gdbus_book_drain_notify (EGdbusBook *object);
+
+
+const GDBusInterfaceInfo *e_gdbus_book_interface_info (void) G_GNUC_CONST;
+
+struct _EGdbusBookIface
+{
+ GTypeInterface parent_iface;
+
+ /* Signal handlers for receiving D-Bus signals: */
+ void (*writable) (
+ EGdbusBook *object,
+ gboolean arg_value);
+ void (*connection) (
+ EGdbusBook *object,
+ gboolean arg_connected);
+ void (*auth_required) (
+ EGdbusBook *object);
+
+ /* Signal handlers for handling D-Bus method calls: */
+ gboolean (*handle_open) (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ gboolean in_only_if_exists);
+ gboolean (*handle_remove) (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_get_contact) (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_uid);
+ gboolean (*handle_get_contact_list) (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_query);
+ gboolean (*handle_authenticate_user) (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_user,
+ const gchar *in_passwd,
+ const gchar *in_auth_method);
+ gboolean (*handle_add_contact) (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_vcard);
+ gboolean (*handle_remove_contacts) (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *in_list);
+ gboolean (*handle_modify_contact) (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_vcard);
+ gboolean (*handle_get_static_capabilities) (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_get_required_fields) (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_get_supported_fields) (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_get_supported_auth_methods) (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_get_book_view) (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_query,
+ guint in_max_results);
+ gboolean (*handle_get_changes) (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_change_id);
+ gboolean (*handle_cancel_operation) (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_close) (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation);
+};
+
+/* C Bindings for properties */
+
+
+/* D-Bus Methods */
+void e_gdbus_book_call_open (
+ EGdbusBook *proxy,
+ gboolean in_only_if_exists,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_call_open_finish (
+ EGdbusBook *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_call_open_sync (
+ EGdbusBook *proxy,
+ gboolean in_only_if_exists,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_book_call_remove (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_call_remove_finish (
+ EGdbusBook *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_call_remove_sync (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_book_call_get_contact (
+ EGdbusBook *proxy,
+ const gchar *in_uid,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_call_get_contact_finish (
+ EGdbusBook *proxy,
+ gchar **out_vcard,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_call_get_contact_sync (
+ EGdbusBook *proxy,
+ const gchar *in_uid,
+ gchar **out_vcard,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_book_call_get_contact_list (
+ EGdbusBook *proxy,
+ const gchar *in_query,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_call_get_contact_list_finish (
+ EGdbusBook *proxy,
+ gchar ***out_vcards,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_call_get_contact_list_sync (
+ EGdbusBook *proxy,
+ const gchar *in_query,
+ gchar ***out_vcards,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_book_call_authenticate_user (
+ EGdbusBook *proxy,
+ const gchar *in_user,
+ const gchar *in_passwd,
+ const gchar *in_auth_method,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_call_authenticate_user_finish (
+ EGdbusBook *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_call_authenticate_user_sync (
+ EGdbusBook *proxy,
+ const gchar *in_user,
+ const gchar *in_passwd,
+ const gchar *in_auth_method,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_book_call_add_contact (
+ EGdbusBook *proxy,
+ const gchar *in_vcard,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_call_add_contact_finish (
+ EGdbusBook *proxy,
+ gchar **out_uid,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_call_add_contact_sync (
+ EGdbusBook *proxy,
+ const gchar *in_vcard,
+ gchar **out_uid,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_book_call_remove_contacts (
+ EGdbusBook *proxy,
+ const gchar* const *in_list,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_call_remove_contacts_finish (
+ EGdbusBook *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_call_remove_contacts_sync (
+ EGdbusBook *proxy,
+ const gchar* const *in_list,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_book_call_modify_contact (
+ EGdbusBook *proxy,
+ const gchar *in_vcard,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_call_modify_contact_finish (
+ EGdbusBook *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_call_modify_contact_sync (
+ EGdbusBook *proxy,
+ const gchar *in_vcard,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_book_call_get_static_capabilities (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_call_get_static_capabilities_finish (
+ EGdbusBook *proxy,
+ gchar **out_capabilities,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_call_get_static_capabilities_sync (
+ EGdbusBook *proxy,
+ gchar **out_capabilities,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_book_call_get_required_fields (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_call_get_required_fields_finish (
+ EGdbusBook *proxy,
+ gchar ***out_fields,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_call_get_required_fields_sync (
+ EGdbusBook *proxy,
+ gchar ***out_fields,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_book_call_get_supported_fields (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_call_get_supported_fields_finish (
+ EGdbusBook *proxy,
+ gchar ***out_fields,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_call_get_supported_fields_sync (
+ EGdbusBook *proxy,
+ gchar ***out_fields,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_book_call_get_supported_auth_methods (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_call_get_supported_auth_methods_finish (
+ EGdbusBook *proxy,
+ gchar ***out_auth_methods,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_call_get_supported_auth_methods_sync (
+ EGdbusBook *proxy,
+ gchar ***out_auth_methods,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_book_call_get_book_view (
+ EGdbusBook *proxy,
+ const gchar *in_query,
+ guint in_max_results,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_call_get_book_view_finish (
+ EGdbusBook *proxy,
+ gchar **out_view,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_call_get_book_view_sync (
+ EGdbusBook *proxy,
+ const gchar *in_query,
+ guint in_max_results,
+ gchar **out_view,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_book_call_get_changes (
+ EGdbusBook *proxy,
+ const gchar *in_change_id,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_call_get_changes_finish (
+ EGdbusBook *proxy,
+ GVariant **out_changes,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_call_get_changes_sync (
+ EGdbusBook *proxy,
+ const gchar *in_change_id,
+ GVariant **out_changes,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_book_call_cancel_operation (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_call_cancel_operation_finish (
+ EGdbusBook *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_call_cancel_operation_sync (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_book_call_close (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_call_close_finish (
+ EGdbusBook *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_call_close_sync (
+ EGdbusBook *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+
+
+/* D-Bus Methods Completion Helpers */
+void e_gdbus_book_complete_open (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_book_complete_remove (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_book_complete_get_contact (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_vcard);
+
+
+void e_gdbus_book_complete_get_contact_list (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_vcards);
+
+
+void e_gdbus_book_complete_authenticate_user (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_book_complete_add_contact (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_uid);
+
+
+void e_gdbus_book_complete_remove_contacts (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_book_complete_modify_contact (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_book_complete_get_static_capabilities (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_capabilities);
+
+
+void e_gdbus_book_complete_get_required_fields (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_fields);
+
+
+void e_gdbus_book_complete_get_supported_fields (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_fields);
+
+
+void e_gdbus_book_complete_get_supported_auth_methods (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_auth_methods);
+
+
+void e_gdbus_book_complete_get_book_view (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_view);
+
+
+void e_gdbus_book_complete_get_changes (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation,
+ GVariant *out_changes);
+
+
+void e_gdbus_book_complete_cancel_operation (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_book_complete_close (
+ EGdbusBook *object,
+ GDBusMethodInvocation *invocation);
+
+
+
+/* D-Bus Signal Emission Helpers */
+void e_gdbus_book_emit_writable (
+ EGdbusBook *object,
+ gboolean arg_value);
+
+
+void e_gdbus_book_emit_connection (
+ EGdbusBook *object,
+ gboolean arg_connected);
+
+
+void e_gdbus_book_emit_auth_required (
+ EGdbusBook *object);
+
+
+
+G_END_DECLS
+
+#endif /* __E_GDBUS_E_GDBUS_BOOK_H__ */
diff --git a/addressbook/libegdbus/e-gdbus-egdbusbookfactory.c b/addressbook/libegdbus/e-gdbus-egdbusbookfactory.c
new file mode 100644
index 0000000..b7ed223
--- /dev/null
+++ b/addressbook/libegdbus/e-gdbus-egdbusbookfactory.c
@@ -0,0 +1,1120 @@
+/* File: e-gdbus-egdbusbookfactory.c
+ *
+ * GType name: EGdbusBookFactory
+ * D-Bus name: org.gnome.evolution.dataserver.addressbook.BookFactory
+ *
+ * Generated by GDBus Binding Tool 0.1. DO NOT EDIT.
+ */
+
+/**
+ * SECTION:e-gdbus-egdbusbookfactory
+ * @title: EGdbusBookFactory
+ * @short_description: Wraps the org.gnome.evolution.dataserver.addressbook.BookFactory D-Bus interface
+ * @include: gio/gio.h
+ *
+ * The abstract #EGdbusBookFactory interface type wraps the <literal>org.gnome.evolution.dataserver.addressbook.BookFactory</literal> D-Bus interface. Two concrete implementations of this type are included: #EGdbusBookFactoryProxy and #EGdbusBookFactoryStub.
+ *
+ * The generated proxy type #EGdbusBookFactoryProxy is typically used with the generated constructors e_gdbus_book_factory_proxy_new(), e_gdbus_book_factory_proxy_new_sync() and e_gdbus_book_factory_proxy_new_for_bus(), e_gdbus_book_factory_proxy_new_for_bus_sync().
+ *
+ * The generated stub type #EGdbusBookFactoryStub takes care of handling properties, method invocations and signal emissions. Simply use e_gdbus_book_factory_stub_new(), set some properties and connect to any of the handle-* signals to handle method invocations. Finally use e_gdbus_book_factory_register_object() to export the object on a #GDBusConnection.
+ * |[
+ * /<!-- -->* You can also use g_object_new() with E_GDBUS_TYPE_BOOK_FACTORY_STUB
+ * * to set properties at construction time.
+ * *<!-- -->/
+ * object = e_gdbus_book_factory_stub_new ();
+ * e_gdbus_book_factory_set_<property_name> (object, <value_for_property>);
+ * [...]
+ *
+ * g_signal_connect (object,
+ * "handle-<method-name>",
+ * G_CALLBACK (on_handle_<method_name>),
+ * some_user_data);
+ * [...]
+ *
+ * error = NULL;
+ * id = e_gdbus_book_factory_register_object (object,
+ * connection,
+ * "/path/of/object",
+ * &error);
+ * ]|
+ *
+ * You don't <emphasis>have</emphasis> to use the generated stub type to export
+ * objects. Any type implementing the #EGdbusBookFactory interface may be used with
+ * e_gdbus_book_factory_register_object().
+ *
+ * Once exported, you can make the exported object emit D-Bus signals by simply
+ * emitting the corresponding GType signals. For better type-safety, you can use,
+ * the provided e_gdbus_book_factory_emit_*() helpers.
+ *
+ * For property changes, #GObject::notify signal emissions on exported objects
+ * will be intercepted and queued. In an idle handler, the queued notifications
+ * are processed and a single <literal>PropertiesChanged</literal> signal (on the
+ * <literal>org.freedesktop.DBus.Properties</literal> interface) will be emitted
+ * for all the properties that changed (possibly containing several properties).
+ * Use e_gdbus_book_factory_drain_notify() to drain the queue immediately.
+ */
+
+#include "e-gdbus-egdbusbookfactory.h"
+#include "e-gdbus-typemappers.h"
+#include "e-gdbus-marshallers.h"
+
+typedef EGdbusBookFactoryIface EGdbusBookFactoryInterface;
+G_DEFINE_INTERFACE (EGdbusBookFactory, e_gdbus_book_factory, G_TYPE_OBJECT);
+
+
+enum
+{
+ _0_SIGNAL,
+ __GET_BOOK_METHOD,
+ __LAST_SIGNAL
+};
+
+static guint signals[__LAST_SIGNAL] = {0};
+
+
+enum
+{
+ PROP_0,
+};
+
+/* ------------------------------------------------------------------------- */
+
+/* Various lookup tables */
+
+static GHashTable *_method_name_to_id = NULL;
+static GHashTable *_signal_name_to_id = NULL;
+static GHashTable *_property_name_to_id = NULL;
+static GHashTable *_property_gname_to_name = NULL;
+static GHashTable *_property_name_to_gname = NULL;
+
+
+static guint
+lookup_method_id_from_method_name (const gchar *method_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_method_name_to_id, method_name));
+}
+
+static guint
+lookup_signal_id_from_signal_name (const gchar *signal_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_signal_name_to_id, signal_name));
+}
+
+static guint
+lookup_property_id_from_property_name (const gchar *property_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_property_name_to_id, property_name));
+}
+
+static const gchar *
+lookup_property_name_from_property_gname (const gchar *property_gname)
+{
+ return g_hash_table_lookup (_property_gname_to_name, property_gname);
+}
+
+static const gchar *
+lookup_property_gname_from_property_name (const gchar *property_name)
+{
+ return g_hash_table_lookup (_property_name_to_gname, property_name);
+}
+
+/* ------------------------------------------------------------------------- */
+static void
+e_gdbus_book_factory_default_init (EGdbusBookFactoryIface *iface)
+{
+
+ /* Build lookup structures */
+ _method_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _signal_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_gname_to_name = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_name_to_gname = g_hash_table_new (g_str_hash, g_str_equal);
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getBook", GUINT_TO_POINTER (__GET_BOOK_METHOD));
+
+ /* GObject signals definitions for D-Bus signals: */
+
+ /* GObject signals definitions for D-Bus methods: */
+ /**
+ * EGdbusBookFactory::handle-get-book:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @source: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getBook</literal> D-Bus method on @object. Use e_gdbus_book_factory_complete_get_book() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_factory_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_BOOK_METHOD] =
+ g_signal_new ("handle-get-book",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookFactoryIface, handle_get_book),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING);
+
+ /* GObject property definitions for D-Bus properties: */
+}
+
+
+/* C Bindings for properties */
+
+/**
+ * e_gdbus_book_factory_call_get_book:
+ * @proxy: A #EGdbusBookFactory.
+ * @in_source: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.BookFactory.getBook</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_factory_call_get_book_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_factory_call_get_book_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_factory_call_get_book (
+ EGdbusBookFactory *proxy,
+ const gchar *in_source,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ in_source);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getBook",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_factory_call_get_book_finish:
+ * @proxy: A #EGdbusBookFactory.
+ * @out_path: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_factory_call_get_book().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.BookFactory.getBook</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_factory_call_get_book_finish (
+ EGdbusBookFactory *proxy,
+ gchar **out_path,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(o)",
+ out_path);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_factory_call_get_book_sync:
+ * @proxy: A #EGdbusBookFactory.
+ * @in_source: Method parameter.
+ * @out_path: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.BookFactory.getBook</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_factory_call_get_book() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_factory_call_get_book_sync (
+ EGdbusBookFactory *proxy,
+ const gchar *in_source,
+ gchar **out_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(s)",
+ in_source);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getBook",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(o)",
+ out_path);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_factory_complete_get_book:
+ * @object: A #EGdbusBookFactory.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_path: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.BookFactory.getBook</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_factory_complete_get_book (
+ EGdbusBookFactory *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_path)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(o)",
+ out_path);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+static const GDBusArgInfo e_gdbus_book_factory_method_in_getBook_source =
+{
+ -1,
+ (gchar *) "source",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_factory_method_in_getBook_arg_pointers[] =
+{
+ &e_gdbus_book_factory_method_in_getBook_source,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_book_factory_method_out_getBook_path =
+{
+ -1,
+ (gchar *) "path",
+ (gchar *) "o",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_factory_method_out_getBook_arg_pointers[] =
+{
+ &e_gdbus_book_factory_method_out_getBook_path,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_book_factory_method_getBook =
+{
+ -1,
+ (gchar *) "getBook",
+ (GDBusArgInfo **) &e_gdbus_book_factory_method_in_getBook_arg_pointers,
+ (GDBusArgInfo **) &e_gdbus_book_factory_method_out_getBook_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusMethodInfo * const e_gdbus_book_factory_method_info_pointers[] =
+{
+ &e_gdbus_book_factory_method_getBook,
+ NULL
+};
+
+static const GDBusInterfaceInfo _e_gdbus_book_factory_interface_info =
+{
+ -1,
+ (gchar *) "org.gnome.evolution.dataserver.addressbook.BookFactory",
+ (GDBusMethodInfo **) &e_gdbus_book_factory_method_info_pointers,
+ (GDBusSignalInfo **) NULL,
+ (GDBusPropertyInfo **) NULL,
+};
+
+static void
+handle_method_call (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *method_name,
+ GVariant *parameters,
+ GDBusMethodInvocation *invocation,
+ gpointer user_data)
+{
+ guint method_id;
+ method_id = lookup_method_id_from_method_name (method_name);
+ switch (method_id)
+ {
+ case __GET_BOOK_METHOD:
+ {
+ EGdbusBookFactory *object = E_GDBUS_BOOK_FACTORY (user_data);
+ gboolean handled;
+ const gchar *arg_source;
+ g_variant_get (parameters,
+ "(&s)",
+ &arg_source);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_source, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ default:
+not_implemented:
+ g_dbus_method_invocation_return_error (invocation,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "Method `%s' is not implemented",
+ method_name);
+ break;
+ }
+};
+
+static GVariant *
+get_property (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *property_name,
+ GError **error,
+ gpointer user_data)
+{
+ GVariant *ret;
+ guint prop_id;
+ prop_id = lookup_property_id_from_property_name (property_name);
+ ret = NULL;
+ switch (prop_id)
+ {
+ default:
+ g_set_error (error,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "This implementation does not support property `%s'",
+ property_name);
+ break;
+ }
+
+ return ret;
+};
+
+static gboolean
+set_property (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *property_name,
+ GVariant *value,
+ GError **error,
+ gpointer user_data)
+{
+ gboolean ret;
+ guint prop_id;
+ prop_id = lookup_property_id_from_property_name (property_name);
+ ret = TRUE;
+ switch (prop_id)
+ {
+ default:
+ g_set_error (error,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "This implementation does not support property `%s'",
+ property_name);
+ ret = FALSE;
+ break;
+ }
+
+ return ret;
+};
+
+static const GDBusInterfaceVTable e_gdbus_book_factory_interface_vtable =
+{
+ handle_method_call,
+ get_property,
+ set_property,
+};
+
+static gboolean
+emit_notifications_in_idle (gpointer user_data)
+{
+ GObject *object = G_OBJECT (user_data);
+ GDBusConnection *connection;
+ const gchar *path;
+ GHashTable *notification_queue;
+ GHashTableIter iter;
+ const gchar *property_name;
+ GVariant *value;
+ GVariantBuilder *builder;
+ GVariantBuilder *invalidated_builder;
+ GHashTable *pvc;
+ gboolean has_changes;
+
+ notification_queue = g_object_get_data (object, "gdbus-codegen-notification-queue");
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ pvc = g_object_get_data (object, "gdbus-codegen-pvc");
+ g_assert (notification_queue != NULL && path != NULL && connection != NULL && pvc != NULL);
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY);
+ invalidated_builder = g_variant_builder_new (G_VARIANT_TYPE ("as"));
+ g_hash_table_iter_init (&iter, notification_queue);
+ has_changes = FALSE;
+ while (g_hash_table_iter_next (&iter, (gpointer) &property_name, (gpointer) &value))
+ {
+ GVariant *cached_value;
+ cached_value = g_hash_table_lookup (pvc, property_name);
+ if (cached_value == NULL || !g_variant_equal (cached_value, value))
+ {
+ g_hash_table_insert (pvc, (gpointer) property_name, (gpointer) g_variant_ref (value));
+ g_variant_builder_add (builder, "{sv}", property_name, value);
+ has_changes = TRUE;
+ }
+ }
+
+ if (has_changes)
+ {
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.freedesktop.DBus.Properties",
+ "PropertiesChanged",
+ g_variant_new ("(sa{sv}as)",
+ "org.gnome.evolution.dataserver.addressbook.BookFactory",
+ builder,
+ invalidated_builder),
+ NULL);
+ }
+ else
+ {
+ g_variant_builder_unref (builder);
+ g_variant_builder_unref (invalidated_builder);
+ }
+
+ g_hash_table_remove_all (notification_queue);
+ g_object_set_data (object, "gdbus-codegen-notification-idle-id", GUINT_TO_POINTER (0));
+ return FALSE;
+}
+
+static void
+queue_notification (GObject *object,
+ const gchar *property_name,
+ GVariant *value)
+{
+ GHashTable *notification_queue;
+ guint idle_id;
+ notification_queue = g_object_get_data (object, "gdbus-codegen-notification-queue");
+ if (notification_queue == NULL)
+ {
+ notification_queue = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_variant_unref);
+ g_object_set_data_full (object, "gdbus-codegen-notification-queue", notification_queue, (GDestroyNotify) g_hash_table_unref);
+ }
+ g_hash_table_insert (notification_queue, (gpointer) property_name, (gpointer) value); /* adopts value */
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (object, "gdbus-codegen-notification-idle-id"));
+ if (idle_id == 0)
+ {
+ GSource *idle_source;
+ idle_source = g_idle_source_new ();
+ g_source_set_priority (idle_source, G_PRIORITY_DEFAULT);
+ g_source_set_callback (idle_source,
+ emit_notifications_in_idle,
+ g_object_ref (object),
+ (GDestroyNotify) g_object_unref);
+ idle_id = g_source_attach (idle_source, g_main_context_get_thread_default ());
+ g_source_unref (idle_source);
+ g_object_set_data (object, "gdbus-codegen-notification-idle-id", GUINT_TO_POINTER (idle_id));
+ }
+}
+
+/**
+ * e_gdbus_book_factory_drain_notify:
+ * @object: A #EGdbusBookFactory that is exported.
+ *
+ * If @object has queued notifications, empty the queue forcing
+ * the <literal>PropertiesChanged</literal> signal to be emitted.
+ * See <xref linkend="EGdbusBookFactory.description"/> for more background information.
+ */
+void
+e_gdbus_book_factory_drain_notify (EGdbusBookFactory *object)
+{
+ gint idle_id;
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (object), "gdbus-codegen-notification-idle-id"));
+ if (idle_id > 0)
+ {
+ emit_notifications_in_idle (object);
+ g_source_remove (idle_id);
+ }
+}
+
+static void
+on_notify (GObject *object,
+ GParamSpec *pspec,
+ gpointer user_data)
+{
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *value;
+ const gchar *property_name;
+ guint prop_id;
+
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ property_name = lookup_property_name_from_property_gname (pspec->name);
+ if (property_name == NULL)
+ goto out;
+ prop_id = lookup_property_id_from_property_name (property_name);
+
+ value = NULL;
+ switch (prop_id)
+ {
+ }
+
+ if (value != NULL && property_name != NULL)
+ {
+ queue_notification (object, property_name, g_variant_ref_sink (value));
+ }
+out:
+ ;
+}
+
+static void
+on_object_unregistered (GObject *object)
+{
+ gint idle_id;
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (object), "gdbus-codegen-notification-idle-id"));
+ if (idle_id > 0)
+ {
+ g_source_remove (idle_id);
+ }
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-path", NULL);
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-connection", NULL);
+ g_signal_handlers_disconnect_by_func (object, on_notify, NULL);
+}
+
+/**
+ * e_gdbus_book_factory_register_object:
+ * @object: An instance of a #GObject<!-- -->-derived type implementing the #EGdbusBookFactory interface.
+ * @connection: A #GDBusConnection.
+ * @object_path: The object to register the object at.
+ * @error: Return location for error or %NULL.
+ *
+ * Registers @object at @object_path on @connection.
+ *
+ * See <xref linkend="EGdbusBookFactory.description"/>
+ * for how properties, methods and signals are handled.
+ *
+ * Returns: 0 if @error is set, otherwise a registration id (never 0) that can be used with g_dbus_connection_unregister_object().
+ */
+guint
+e_gdbus_book_factory_register_object (EGdbusBookFactory *object,
+ GDBusConnection *connection,
+ const gchar *object_path,
+ GError **error)
+{
+ G_GNUC_UNUSED GVariant *value;
+ GHashTable *pvc;
+
+ pvc = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_variant_unref);
+
+ g_object_set_data_full (G_OBJECT (object), "gdbus-codegen-path", (gpointer) g_strdup (object_path), g_free);
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-connection", (gpointer) connection);
+ g_object_set_data_full (G_OBJECT (object), "gdbus-codegen-pvc", (gpointer) pvc, (GDestroyNotify) g_hash_table_unref);
+ g_signal_connect (object, "notify", G_CALLBACK (on_notify), NULL);
+ return g_dbus_connection_register_object (connection,
+ object_path,
+ &_e_gdbus_book_factory_interface_info,
+ &e_gdbus_book_factory_interface_vtable,
+ object,
+ (GDestroyNotify) on_object_unregistered,
+ error);
+}
+
+/**
+ * e_gdbus_book_factory_interface_info:
+ *
+ * Gets interface description for the <literal>org.gnome.evolution.dataserver.addressbook.BookFactory</literal> D-Bus interface.
+ *
+ * Returns: A #GDBusInterfaceInfo. Do not free, the object is statically allocated.
+ */
+const GDBusInterfaceInfo *
+e_gdbus_book_factory_interface_info (void)
+{
+ return &_e_gdbus_book_factory_interface_info;
+}
+
+
+/* ---------------------------------------------------------------------- */
+
+static void proxy_iface_init (EGdbusBookFactoryIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (EGdbusBookFactoryProxy, e_gdbus_book_factory_proxy, G_TYPE_DBUS_PROXY,
+ G_IMPLEMENT_INTERFACE (E_GDBUS_TYPE_BOOK_FACTORY, proxy_iface_init));
+
+static void
+e_gdbus_book_factory_proxy_init (EGdbusBookFactoryProxy *proxy)
+{
+ g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy),
+ (GDBusInterfaceInfo *) &_e_gdbus_book_factory_interface_info);
+}
+
+static void
+g_signal (GDBusProxy *proxy,
+ const gchar *sender_name,
+ const gchar *signal_name,
+ GVariant *parameters)
+{
+ guint signal_id;
+ signal_id = lookup_signal_id_from_signal_name (signal_name);
+ switch (signal_id)
+ {
+ }
+}
+
+static void
+e_gdbus_book_factory_proxy_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED GVariant *cached;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+property_set_cb (GDBusProxy *proxy,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ const gchar *property_name = user_data;
+ GError *error;
+ GVariant *result;
+
+ error = NULL;
+ result = g_dbus_proxy_call_finish (proxy, res, &error);
+ if (result == NULL)
+ {
+ g_warning ("Error setting property `%s': %s", property_name, error->message);
+ g_error_free (error);
+ }
+ else
+ {
+ g_variant_unref (result);
+ }
+}
+
+static void
+e_gdbus_book_factory_proxy_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GVariant *new_value;
+ const gchar *property_name;
+ new_value = NULL;
+ property_name = NULL;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+
+ if (new_value != NULL)
+ {
+ g_variant_ref_sink (new_value);
+ g_dbus_proxy_call (G_DBUS_PROXY (object),
+ "org.freedesktop.DBus.Properties.Set",
+ g_variant_new ("(ssv)",
+ "org.gnome.evolution.dataserver.addressbook.BookFactory",
+ property_name,
+ new_value),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ (GAsyncReadyCallback) property_set_cb,
+ (gpointer) property_name);
+ g_variant_unref (new_value);
+ }
+
+}
+
+static void
+g_properties_changed (GDBusProxy *proxy,
+ GVariant *changed_properties,
+ const gchar* const *invalidated_properties)
+{
+ guint n;
+ const gchar *key;
+ GVariantIter *iter;
+ const gchar *gname;
+
+ g_variant_get (changed_properties, "a{sv}", &iter);
+ while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+ {
+ gname = lookup_property_gname_from_property_name (key);
+ if (gname != NULL)
+ g_object_notify (G_OBJECT (proxy), gname);
+ }
+
+ for (n = 0; invalidated_properties[n] != NULL; n++)
+ {
+ gname = lookup_property_gname_from_property_name (invalidated_properties[n]);
+ if (gname != NULL)
+ g_object_notify (G_OBJECT (proxy), gname);
+ }
+
+}
+
+static void
+e_gdbus_book_factory_proxy_class_init (EGdbusBookFactoryProxyClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusProxyClass *proxy_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->get_property = e_gdbus_book_factory_proxy_get_property;
+ gobject_class->set_property = e_gdbus_book_factory_proxy_set_property;
+
+ proxy_class = G_DBUS_PROXY_CLASS (klass);
+ proxy_class->g_signal = g_signal;
+ proxy_class->g_properties_changed = g_properties_changed;
+
+}
+
+static void
+proxy_iface_init (EGdbusBookFactoryIface *iface)
+{
+}
+
+
+/**
+ * e_gdbus_book_factory_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: Callback function to invoke when the proxy is ready.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like g_dbus_proxy_new() but returns a #EGdbusBookFactoryProxy.
+ *
+ * This is a failable asynchronous constructor - when the proxy is ready, callback will be invoked and you can use e_gdbus_book_factory_proxy_new_finish() to get the result.
+ */
+void e_gdbus_book_factory_proxy_new (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (E_GDBUS_TYPE_BOOK_FACTORY_PROXY,
+ G_PRIORITY_DEFAULT,
+ cancellable,
+ callback,
+ user_data,
+ "g-flags", flags,
+ "g-name", name,
+ "g-connection", connection,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.addressbook.BookFactory",
+ NULL);
+}
+
+/**
+ * e_gdbus_book_factory_proxy_new_finish:
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to e_gdbus_book_factory_proxy_new().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes creating a #EGdbusBookFactoryProxy.
+ *
+ * Returns: A #EGdbusBookFactoryProxy or %NULL if @error is set. Free with g_object_unref().
+ */
+EGdbusBookFactory *e_gdbus_book_factory_proxy_new_finish (GAsyncResult *res,
+ GError **error)
+{
+ GObject *object;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ g_assert (source_object != NULL);
+ object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object),
+ res,
+ error);
+ g_object_unref (source_object);
+ if (object != NULL)
+ return E_GDBUS_BOOK_FACTORY (object);
+ else
+ return NULL;
+}
+
+/**
+ * e_gdbus_book_factory_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Like g_dbus_proxy_new_sync() but returns a #EGdbusBookFactoryProxy.
+ *
+ * This is a synchronous failable constructor. See e_gdbus_book_factory_proxy_new() and e_gdbus_book_factory_proxy_new_finish() for the asynchronous version.
+ *
+ * Returns: A #EGdbusBookFactoryProxy or %NULL if error is set. Free with g_object_unref().
+ */
+EGdbusBookFactory *e_gdbus_book_factory_proxy_new_sync (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *initable;
+ initable = g_initable_new (E_GDBUS_TYPE_BOOK_FACTORY_PROXY,
+ cancellable,
+ error,
+ "g-flags", flags,
+ "g-name", name,
+ "g-connection", connection,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.addressbook.BookFactory",
+ NULL);
+ if (initable != NULL)
+ return E_GDBUS_BOOK_FACTORY (initable);
+ else
+ return NULL;
+}
+
+
+/**
+ * e_gdbus_book_factory_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: Callback function to invoke when the proxy is ready.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like g_dbus_proxy_new_for_bus() but returns a #EGdbusBookFactoryProxy.
+ *
+ * This is a failable asynchronous constructor - when the proxy is ready, callback will be invoked and you can use e_gdbus_book_factory_proxy_new_for_bus_finish() to get the result.
+ */
+void e_gdbus_book_factory_proxy_new_for_bus (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (E_GDBUS_TYPE_BOOK_FACTORY_PROXY,
+ G_PRIORITY_DEFAULT,
+ cancellable,
+ callback,
+ user_data,
+ "g-flags", flags,
+ "g-name", name,
+ "g-bus-type", bus_type,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.addressbook.BookFactory",
+ NULL);
+}
+
+/**
+ * e_gdbus_book_factory_proxy_new_for_bus_finish:
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to e_gdbus_book_factory_proxy_new_for_bus().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes creating a #EGdbusBookFactoryProxy.
+ *
+ * Returns: A #EGdbusBookFactoryProxy or %NULL if @error is set. Free with g_object_unref().
+ */
+EGdbusBookFactory *e_gdbus_book_factory_proxy_new_for_bus_finish (GAsyncResult *res,
+ GError **error)
+{
+ GObject *object;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ g_assert (source_object != NULL);
+ object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object),
+ res,
+ error);
+ g_object_unref (source_object);
+ if (object != NULL)
+ return E_GDBUS_BOOK_FACTORY (object);
+ else
+ return NULL;
+}
+
+/**
+ * e_gdbus_book_factory_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Like g_dbus_proxy_new_for_bus_sync() but returns a #EGdbusBookFactoryProxy.
+ *
+ * This is a synchronous failable constructor. See e_gdbus_book_factory_proxy_new_for_bus() and e_gdbus_book_factory_proxy_new_for_bus_finish() for the asynchronous version.
+ *
+ * Returns: A #EGdbusBookFactoryProxy or %NULL if error is set. Free with g_object_unref().
+ */
+EGdbusBookFactory *e_gdbus_book_factory_proxy_new_for_bus_sync (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *initable;
+ initable = g_initable_new (E_GDBUS_TYPE_BOOK_FACTORY_PROXY,
+ cancellable,
+ error,
+ "g-flags", flags,
+ "g-name", name,
+ "g-bus-type", bus_type,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.addressbook.BookFactory",
+ NULL);
+ if (initable != NULL)
+ return E_GDBUS_BOOK_FACTORY (initable);
+ else
+ return NULL;
+}
+
+
+/* ---------------------------------------------------------------------- */
+
+struct _EGdbusBookFactoryStubPrivate
+{
+ gint foo;
+};
+
+static void stub_iface_init (EGdbusBookFactoryIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (EGdbusBookFactoryStub, e_gdbus_book_factory_stub, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (E_GDBUS_TYPE_BOOK_FACTORY, stub_iface_init));
+
+static void
+e_gdbus_book_factory_stub_finalize (GObject *object)
+{
+ G_GNUC_UNUSED EGdbusBookFactoryStub *stub = (EGdbusBookFactoryStub *) object;
+ if (G_OBJECT_CLASS (e_gdbus_book_factory_stub_parent_class)->finalize != NULL)
+ G_OBJECT_CLASS (e_gdbus_book_factory_stub_parent_class)->finalize (object);
+}
+
+static void
+e_gdbus_book_factory_stub_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED static gchar **strv_of_len_zero = {NULL};
+ G_GNUC_UNUSED EGdbusBookFactoryStub *stub = (EGdbusBookFactoryStub *) object;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+e_gdbus_book_factory_stub_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED EGdbusBookFactoryStub *stub = (EGdbusBookFactoryStub *) object;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+e_gdbus_book_factory_stub_init (EGdbusBookFactoryStub *stub)
+{
+ stub->priv = G_TYPE_INSTANCE_GET_PRIVATE (stub, E_GDBUS_TYPE_BOOK_FACTORY_STUB, EGdbusBookFactoryStubPrivate);
+}
+
+static void
+e_gdbus_book_factory_stub_class_init (EGdbusBookFactoryStubClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = e_gdbus_book_factory_stub_finalize;
+ gobject_class->get_property = e_gdbus_book_factory_stub_get_property;
+ gobject_class->set_property = e_gdbus_book_factory_stub_set_property;
+ g_type_class_add_private (klass, sizeof (EGdbusBookFactoryStubPrivate));
+}
+
+static void
+stub_iface_init (EGdbusBookFactoryIface *iface)
+{
+}
+
+/**
+ * e_gdbus_book_factory_stub_new:
+ *
+ * Creates a new stub object that can be exported via e_gdbus_book_factory_register_object().
+ *
+ * Returns: A #EGdbusBookFactoryStub instance. Free with g_object_unref().
+ */
+EGdbusBookFactory *
+e_gdbus_book_factory_stub_new (void)
+{
+ return E_GDBUS_BOOK_FACTORY (g_object_new (E_GDBUS_TYPE_BOOK_FACTORY_STUB, NULL));
+}
diff --git a/addressbook/libegdbus/e-gdbus-egdbusbookfactory.h b/addressbook/libegdbus/e-gdbus-egdbusbookfactory.h
new file mode 100644
index 0000000..b050214
--- /dev/null
+++ b/addressbook/libegdbus/e-gdbus-egdbusbookfactory.h
@@ -0,0 +1,209 @@
+/* File: e-gdbus-egdbusbookfactory.h
+ *
+ * GType name: EGdbusBookFactory
+ * D-Bus name: org.gnome.evolution.dataserver.addressbook.BookFactory
+ *
+ * Generated by GDBus Binding Tool 0.1. DO NOT EDIT.
+ */
+
+#ifndef __E_GDBUS_E_GDBUS_BOOK_FACTORY_H__
+#define __E_GDBUS_E_GDBUS_BOOK_FACTORY_H__
+
+#include <gio/gio.h>
+
+#include "e-gdbus-typemappers.h"
+G_BEGIN_DECLS
+
+#define E_GDBUS_TYPE_BOOK_FACTORY (e_gdbus_book_factory_get_type ())
+#define E_GDBUS_BOOK_FACTORY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), E_GDBUS_TYPE_BOOK_FACTORY, EGdbusBookFactory))
+#define E_GDBUS_IS_BOOK_FACTORY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_GDBUS_TYPE_BOOK_FACTORY))
+#define E_GDBUS_BOOK_FACTORY_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), E_GDBUS_TYPE_BOOK_FACTORY, EGdbusBookFactoryIface))
+
+/**
+ * EGdbusBookFactory:
+ *
+ * Opaque type representing a proxy or an exported object.
+ */
+typedef struct _EGdbusBookFactory EGdbusBookFactory; /* Dummy typedef */
+/**
+ * EGdbusBookFactoryIface:
+ * @parent_iface: The parent interface.
+ * @handle_get_book: Handler for the #EGdbusBookFactory::handle-get-book signal.
+ *
+ * Virtual table.
+ */
+typedef struct _EGdbusBookFactoryIface EGdbusBookFactoryIface;
+
+GType e_gdbus_book_factory_get_type (void) G_GNUC_CONST;
+
+/* ---------------------------------------------------------------------- */
+
+typedef struct _EGdbusBookFactoryProxy EGdbusBookFactoryProxy;
+typedef struct _EGdbusBookFactoryProxyClass EGdbusBookFactoryProxyClass;
+
+/**
+ * EGdbusBookFactoryProxyPrivate:
+ *
+ * The #EGdbusBookFactoryProxyPrivate structure contains only private data.
+ */
+typedef struct _EGdbusBookFactoryProxyPrivate EGdbusBookFactoryProxyPrivate;
+
+/**
+ * EGdbusBookFactoryProxy:
+ *
+ * The #EGdbusBookFactoryProxy structure contains only private data and
+ * should only be accessed using the provided API.
+ */
+struct _EGdbusBookFactoryProxy
+{
+ GDBusProxy parent_instance;
+ EGdbusBookFactoryProxyPrivate *priv;
+};
+
+/**
+ * EGdbusBookFactoryProxyClass:
+ *
+ * Class structure for #EGdbusBookFactoryProxy.
+ */
+struct _EGdbusBookFactoryProxyClass
+{
+ GDBusProxyClass parent_class;
+};
+
+#define E_GDBUS_TYPE_BOOK_FACTORY_PROXY (e_gdbus_book_factory_proxy_get_type ())
+GType e_gdbus_book_factory_proxy_get_type (void) G_GNUC_CONST;
+
+void e_gdbus_book_factory_proxy_new (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+EGdbusBookFactory *e_gdbus_book_factory_proxy_new_finish (GAsyncResult *res,
+ GError **error);
+EGdbusBookFactory *e_gdbus_book_factory_proxy_new_sync (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+void e_gdbus_book_factory_proxy_new_for_bus (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+EGdbusBookFactory *e_gdbus_book_factory_proxy_new_for_bus_finish (GAsyncResult *res,
+ GError **error);
+EGdbusBookFactory *e_gdbus_book_factory_proxy_new_for_bus_sync (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+/* ---------------------------------------------------------------------- */
+
+typedef struct _EGdbusBookFactoryStub EGdbusBookFactoryStub;
+typedef struct _EGdbusBookFactoryStubClass EGdbusBookFactoryStubClass;
+
+/**
+ * EGdbusBookFactoryStubPrivate:
+ *
+ * The #EGdbusBookFactoryStubPrivate structure contains only private data.
+ */
+typedef struct _EGdbusBookFactoryStubPrivate EGdbusBookFactoryStubPrivate;
+
+/**
+ * EGdbusBookFactoryStub:
+ *
+ * The #EGdbusBookFactoryStub structure contains only private data and
+ * should only be accessed using the provided API.
+ */
+struct _EGdbusBookFactoryStub
+{
+ GObject parent_instance;
+ EGdbusBookFactoryStubPrivate *priv;
+};
+
+/**
+ * EGdbusBookFactoryStubClass:
+ *
+ * Class structure for #EGdbusBookFactoryStub.
+ */
+struct _EGdbusBookFactoryStubClass
+{
+ GObjectClass parent_class;
+};
+
+#define E_GDBUS_TYPE_BOOK_FACTORY_STUB (e_gdbus_book_factory_stub_get_type ())
+GType e_gdbus_book_factory_stub_get_type (void) G_GNUC_CONST;
+
+EGdbusBookFactory *e_gdbus_book_factory_stub_new (void);
+
+
+guint e_gdbus_book_factory_register_object (EGdbusBookFactory *object,
+ GDBusConnection *connection,
+ const gchar *object_path,
+ GError **error);
+
+void e_gdbus_book_factory_drain_notify (EGdbusBookFactory *object);
+
+
+const GDBusInterfaceInfo *e_gdbus_book_factory_interface_info (void) G_GNUC_CONST;
+
+struct _EGdbusBookFactoryIface
+{
+ GTypeInterface parent_iface;
+
+ /* Signal handlers for receiving D-Bus signals: */
+
+ /* Signal handlers for handling D-Bus method calls: */
+ gboolean (*handle_get_book) (
+ EGdbusBookFactory *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_source);
+};
+
+/* C Bindings for properties */
+
+
+/* D-Bus Methods */
+void e_gdbus_book_factory_call_get_book (
+ EGdbusBookFactory *proxy,
+ const gchar *in_source,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_factory_call_get_book_finish (
+ EGdbusBookFactory *proxy,
+ gchar **out_path,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_factory_call_get_book_sync (
+ EGdbusBookFactory *proxy,
+ const gchar *in_source,
+ gchar **out_path,
+ GCancellable *cancellable,
+ GError **error);
+
+
+
+/* D-Bus Methods Completion Helpers */
+void e_gdbus_book_factory_complete_get_book (
+ EGdbusBookFactory *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_path);
+
+
+
+/* D-Bus Signal Emission Helpers */
+
+G_END_DECLS
+
+#endif /* __E_GDBUS_E_GDBUS_BOOK_FACTORY_H__ */
diff --git a/addressbook/libegdbus/e-gdbus-egdbusbookview.c b/addressbook/libegdbus/e-gdbus-egdbusbookview.c
new file mode 100644
index 0000000..613e5c5
--- /dev/null
+++ b/addressbook/libegdbus/e-gdbus-egdbusbookview.c
@@ -0,0 +1,2043 @@
+/* File: e-gdbus-egdbusbookview.c
+ *
+ * GType name: EGdbusBookView
+ * D-Bus name: org.gnome.evolution.dataserver.addressbook.BookView
+ *
+ * Generated by GDBus Binding Tool 0.1. DO NOT EDIT.
+ */
+
+/**
+ * SECTION:e-gdbus-egdbusbookview
+ * @title: EGdbusBookView
+ * @short_description: Wraps the org.gnome.evolution.dataserver.addressbook.BookView D-Bus interface
+ * @include: gio/gio.h
+ *
+ * The abstract #EGdbusBookView interface type wraps the <literal>org.gnome.evolution.dataserver.addressbook.BookView</literal> D-Bus interface. Two concrete implementations of this type are included: #EGdbusBookViewProxy and #EGdbusBookViewStub.
+ *
+ * The generated proxy type #EGdbusBookViewProxy is typically used with the generated constructors e_gdbus_book_view_proxy_new(), e_gdbus_book_view_proxy_new_sync() and e_gdbus_book_view_proxy_new_for_bus(), e_gdbus_book_view_proxy_new_for_bus_sync().
+ *
+ * The generated stub type #EGdbusBookViewStub takes care of handling properties, method invocations and signal emissions. Simply use e_gdbus_book_view_stub_new(), set some properties and connect to any of the handle-* signals to handle method invocations. Finally use e_gdbus_book_view_register_object() to export the object on a #GDBusConnection.
+ * |[
+ * /<!-- -->* You can also use g_object_new() with E_GDBUS_TYPE_BOOK_VIEW_STUB
+ * * to set properties at construction time.
+ * *<!-- -->/
+ * object = e_gdbus_book_view_stub_new ();
+ * e_gdbus_book_view_set_<property_name> (object, <value_for_property>);
+ * [...]
+ *
+ * g_signal_connect (object,
+ * "handle-<method-name>",
+ * G_CALLBACK (on_handle_<method_name>),
+ * some_user_data);
+ * [...]
+ *
+ * error = NULL;
+ * id = e_gdbus_book_view_register_object (object,
+ * connection,
+ * "/path/of/object",
+ * &error);
+ * ]|
+ *
+ * You don't <emphasis>have</emphasis> to use the generated stub type to export
+ * objects. Any type implementing the #EGdbusBookView interface may be used with
+ * e_gdbus_book_view_register_object().
+ *
+ * Once exported, you can make the exported object emit D-Bus signals by simply
+ * emitting the corresponding GType signals. For better type-safety, you can use,
+ * the provided e_gdbus_book_view_emit_*() helpers.
+ *
+ * For property changes, #GObject::notify signal emissions on exported objects
+ * will be intercepted and queued. In an idle handler, the queued notifications
+ * are processed and a single <literal>PropertiesChanged</literal> signal (on the
+ * <literal>org.freedesktop.DBus.Properties</literal> interface) will be emitted
+ * for all the properties that changed (possibly containing several properties).
+ * Use e_gdbus_book_view_drain_notify() to drain the queue immediately.
+ */
+
+#include "e-gdbus-egdbusbookview.h"
+#include "e-gdbus-typemappers.h"
+#include "e-gdbus-marshallers.h"
+
+typedef EGdbusBookViewIface EGdbusBookViewInterface;
+G_DEFINE_INTERFACE (EGdbusBookView, e_gdbus_book_view, G_TYPE_OBJECT);
+
+
+enum
+{
+ _0_SIGNAL,
+ __CONTACTS_ADDED_SIGNAL,
+ __CONTACTS_CHANGED_SIGNAL,
+ __CONTACTS_REMOVED_SIGNAL,
+ __STATUS_MESSAGE_SIGNAL,
+ __COMPLETE_SIGNAL,
+ __START_METHOD,
+ __STOP_METHOD,
+ __DISPOSE_METHOD,
+ __LAST_SIGNAL
+};
+
+static guint signals[__LAST_SIGNAL] = {0};
+
+
+enum
+{
+ PROP_0,
+};
+
+/* ------------------------------------------------------------------------- */
+
+/* Various lookup tables */
+
+static GHashTable *_method_name_to_id = NULL;
+static GHashTable *_signal_name_to_id = NULL;
+static GHashTable *_property_name_to_id = NULL;
+static GHashTable *_property_gname_to_name = NULL;
+static GHashTable *_property_name_to_gname = NULL;
+
+
+static guint
+lookup_method_id_from_method_name (const gchar *method_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_method_name_to_id, method_name));
+}
+
+static guint
+lookup_signal_id_from_signal_name (const gchar *signal_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_signal_name_to_id, signal_name));
+}
+
+static guint
+lookup_property_id_from_property_name (const gchar *property_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_property_name_to_id, property_name));
+}
+
+static const gchar *
+lookup_property_name_from_property_gname (const gchar *property_gname)
+{
+ return g_hash_table_lookup (_property_gname_to_name, property_gname);
+}
+
+static const gchar *
+lookup_property_gname_from_property_name (const gchar *property_name)
+{
+ return g_hash_table_lookup (_property_name_to_gname, property_name);
+}
+
+/* ------------------------------------------------------------------------- */
+static gboolean
+signal_emission_hook_cb_contacts_added (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ GObject *object;
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *params;
+ GVariant *item;
+ GVariantBuilder *builder;
+
+ if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT))
+ goto out;
+ object = g_value_get_object (¶m_values[0]);
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE);
+ g_assert_cmpint (n_param_values - 1, ==, 1);
+ param_values++;
+ item = g_variant_new ("^as", g_value_get_boxed (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ params = g_variant_builder_end (builder);
+ g_variant_builder_unref (builder);
+
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.gnome.evolution.dataserver.addressbook.BookView",
+ "ContactsAdded",
+ params,
+ NULL);
+out:
+ return TRUE;
+}
+
+static gboolean
+signal_emission_hook_cb_contacts_changed (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ GObject *object;
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *params;
+ GVariant *item;
+ GVariantBuilder *builder;
+
+ if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT))
+ goto out;
+ object = g_value_get_object (¶m_values[0]);
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE);
+ g_assert_cmpint (n_param_values - 1, ==, 1);
+ param_values++;
+ item = g_variant_new ("^as", g_value_get_boxed (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ params = g_variant_builder_end (builder);
+ g_variant_builder_unref (builder);
+
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.gnome.evolution.dataserver.addressbook.BookView",
+ "ContactsChanged",
+ params,
+ NULL);
+out:
+ return TRUE;
+}
+
+static gboolean
+signal_emission_hook_cb_contacts_removed (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ GObject *object;
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *params;
+ GVariant *item;
+ GVariantBuilder *builder;
+
+ if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT))
+ goto out;
+ object = g_value_get_object (¶m_values[0]);
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE);
+ g_assert_cmpint (n_param_values - 1, ==, 1);
+ param_values++;
+ item = g_variant_new ("^as", g_value_get_boxed (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ params = g_variant_builder_end (builder);
+ g_variant_builder_unref (builder);
+
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.gnome.evolution.dataserver.addressbook.BookView",
+ "ContactsRemoved",
+ params,
+ NULL);
+out:
+ return TRUE;
+}
+
+static gboolean
+signal_emission_hook_cb_status_message (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ GObject *object;
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *params;
+ GVariant *item;
+ GVariantBuilder *builder;
+
+ if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT))
+ goto out;
+ object = g_value_get_object (¶m_values[0]);
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE);
+ g_assert_cmpint (n_param_values - 1, ==, 1);
+ param_values++;
+ item = g_variant_new ("s", g_value_get_string (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ params = g_variant_builder_end (builder);
+ g_variant_builder_unref (builder);
+
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.gnome.evolution.dataserver.addressbook.BookView",
+ "StatusMessage",
+ params,
+ NULL);
+out:
+ return TRUE;
+}
+
+static gboolean
+signal_emission_hook_cb_complete (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ GObject *object;
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *params;
+ GVariant *item;
+ GVariantBuilder *builder;
+
+ if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT))
+ goto out;
+ object = g_value_get_object (¶m_values[0]);
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE);
+ g_assert_cmpint (n_param_values - 1, ==, 2);
+ param_values++;
+ item = g_variant_new_uint32 (g_value_get_uint (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ item = g_variant_new ("s", g_value_get_string (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ params = g_variant_builder_end (builder);
+ g_variant_builder_unref (builder);
+
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.gnome.evolution.dataserver.addressbook.BookView",
+ "Complete",
+ params,
+ NULL);
+out:
+ return TRUE;
+}
+
+static void
+e_gdbus_book_view_default_init (EGdbusBookViewIface *iface)
+{
+
+ /* Build lookup structures */
+ _method_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _signal_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_gname_to_name = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_name_to_gname = g_hash_table_new (g_str_hash, g_str_equal);
+ g_hash_table_insert (_method_name_to_id, (gpointer) "start", GUINT_TO_POINTER (__START_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "stop", GUINT_TO_POINTER (__STOP_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "dispose", GUINT_TO_POINTER (__DISPOSE_METHOD));
+ g_hash_table_insert (_signal_name_to_id, (gpointer) "ContactsAdded", GUINT_TO_POINTER (__CONTACTS_ADDED_SIGNAL));
+ g_hash_table_insert (_signal_name_to_id, (gpointer) "ContactsChanged", GUINT_TO_POINTER (__CONTACTS_CHANGED_SIGNAL));
+ g_hash_table_insert (_signal_name_to_id, (gpointer) "ContactsRemoved", GUINT_TO_POINTER (__CONTACTS_REMOVED_SIGNAL));
+ g_hash_table_insert (_signal_name_to_id, (gpointer) "StatusMessage", GUINT_TO_POINTER (__STATUS_MESSAGE_SIGNAL));
+ g_hash_table_insert (_signal_name_to_id, (gpointer) "Complete", GUINT_TO_POINTER (__COMPLETE_SIGNAL));
+
+ /* GObject signals definitions for D-Bus signals: */
+ /**
+ * EGdbusBookView::contacts-added:
+ * @object: The object emitting the signal.
+ * @vcards: Parameter.
+ *
+ * Represents the D-Bus signal <literal>ContactsAdded</literal>.
+ *
+ * On proxies, connect to this signal to get notified whenever the remote
+ * object instances emits the signal (similar to how the
+ * #GDBusProxy::g-signal works). The signal is emitted in the
+ * thread-default main loop of the thread that the proxy was created in.
+ *
+ * On exported objects, emitting this signal causes the actual D-Bus signal to be emitted. You can use e_gdbus_book_view_emit_contacts_added() to do this.
+ */ signals[__CONTACTS_ADDED_SIGNAL] =
+ g_signal_new ("contacts-added",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookViewIface, contacts_added),
+ NULL,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_VOID__BOXED,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_STRV);
+ g_signal_add_emission_hook (signals[__CONTACTS_ADDED_SIGNAL],
+ 0,
+ signal_emission_hook_cb_contacts_added,
+ (gpointer) "ContactsAdded",
+ NULL);
+
+ /**
+ * EGdbusBookView::contacts-changed:
+ * @object: The object emitting the signal.
+ * @vcards: Parameter.
+ *
+ * Represents the D-Bus signal <literal>ContactsChanged</literal>.
+ *
+ * On proxies, connect to this signal to get notified whenever the remote
+ * object instances emits the signal (similar to how the
+ * #GDBusProxy::g-signal works). The signal is emitted in the
+ * thread-default main loop of the thread that the proxy was created in.
+ *
+ * On exported objects, emitting this signal causes the actual D-Bus signal to be emitted. You can use e_gdbus_book_view_emit_contacts_changed() to do this.
+ */ signals[__CONTACTS_CHANGED_SIGNAL] =
+ g_signal_new ("contacts-changed",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookViewIface, contacts_changed),
+ NULL,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_VOID__BOXED,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_STRV);
+ g_signal_add_emission_hook (signals[__CONTACTS_CHANGED_SIGNAL],
+ 0,
+ signal_emission_hook_cb_contacts_changed,
+ (gpointer) "ContactsChanged",
+ NULL);
+
+ /**
+ * EGdbusBookView::contacts-removed:
+ * @object: The object emitting the signal.
+ * @ids: Parameter.
+ *
+ * Represents the D-Bus signal <literal>ContactsRemoved</literal>.
+ *
+ * On proxies, connect to this signal to get notified whenever the remote
+ * object instances emits the signal (similar to how the
+ * #GDBusProxy::g-signal works). The signal is emitted in the
+ * thread-default main loop of the thread that the proxy was created in.
+ *
+ * On exported objects, emitting this signal causes the actual D-Bus signal to be emitted. You can use e_gdbus_book_view_emit_contacts_removed() to do this.
+ */ signals[__CONTACTS_REMOVED_SIGNAL] =
+ g_signal_new ("contacts-removed",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookViewIface, contacts_removed),
+ NULL,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_VOID__BOXED,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_STRV);
+ g_signal_add_emission_hook (signals[__CONTACTS_REMOVED_SIGNAL],
+ 0,
+ signal_emission_hook_cb_contacts_removed,
+ (gpointer) "ContactsRemoved",
+ NULL);
+
+ /**
+ * EGdbusBookView::status-message:
+ * @object: The object emitting the signal.
+ * @message: Parameter.
+ *
+ * Represents the D-Bus signal <literal>StatusMessage</literal>.
+ *
+ * On proxies, connect to this signal to get notified whenever the remote
+ * object instances emits the signal (similar to how the
+ * #GDBusProxy::g-signal works). The signal is emitted in the
+ * thread-default main loop of the thread that the proxy was created in.
+ *
+ * On exported objects, emitting this signal causes the actual D-Bus signal to be emitted. You can use e_gdbus_book_view_emit_status_message() to do this.
+ */ signals[__STATUS_MESSAGE_SIGNAL] =
+ g_signal_new ("status-message",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookViewIface, status_message),
+ NULL,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_VOID__STRING,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_STRING);
+ g_signal_add_emission_hook (signals[__STATUS_MESSAGE_SIGNAL],
+ 0,
+ signal_emission_hook_cb_status_message,
+ (gpointer) "StatusMessage",
+ NULL);
+
+ /**
+ * EGdbusBookView::complete:
+ * @object: The object emitting the signal.
+ * @status: Parameter.
+ * @message: Parameter.
+ *
+ * Represents the D-Bus signal <literal>Complete</literal>.
+ *
+ * On proxies, connect to this signal to get notified whenever the remote
+ * object instances emits the signal (similar to how the
+ * #GDBusProxy::g-signal works). The signal is emitted in the
+ * thread-default main loop of the thread that the proxy was created in.
+ *
+ * On exported objects, emitting this signal causes the actual D-Bus signal to be emitted. You can use e_gdbus_book_view_emit_complete() to do this.
+ */ signals[__COMPLETE_SIGNAL] =
+ g_signal_new ("complete",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookViewIface, complete),
+ NULL,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_VOID__UINT_STRING,
+ G_TYPE_NONE,
+ 2,
+ G_TYPE_UINT,
+ G_TYPE_STRING);
+ g_signal_add_emission_hook (signals[__COMPLETE_SIGNAL],
+ 0,
+ signal_emission_hook_cb_complete,
+ (gpointer) "Complete",
+ NULL);
+
+
+ /* GObject signals definitions for D-Bus methods: */
+ /**
+ * EGdbusBookView::handle-start:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>start</literal> D-Bus method on @object. Use e_gdbus_book_view_complete_start() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_view_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__START_METHOD] =
+ g_signal_new ("handle-start",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookViewIface, handle_start),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusBookView::handle-stop:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>stop</literal> D-Bus method on @object. Use e_gdbus_book_view_complete_stop() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_view_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__STOP_METHOD] =
+ g_signal_new ("handle-stop",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookViewIface, handle_stop),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusBookView::handle-dispose:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>dispose</literal> D-Bus method on @object. Use e_gdbus_book_view_complete_dispose() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_book_view_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__DISPOSE_METHOD] =
+ g_signal_new ("handle-dispose",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusBookViewIface, handle_dispose),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /* GObject property definitions for D-Bus properties: */
+}
+
+
+/* C Bindings for properties */
+
+/**
+ * e_gdbus_book_view_call_start:
+ * @proxy: A #EGdbusBookView.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.BookView.start</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_view_call_start_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_view_call_start_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_view_call_start (
+ EGdbusBookView *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "start",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_view_call_start_finish:
+ * @proxy: A #EGdbusBookView.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_view_call_start().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.BookView.start</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_view_call_start_finish (
+ EGdbusBookView *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_view_call_start_sync:
+ * @proxy: A #EGdbusBookView.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.BookView.start</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_view_call_start() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_view_call_start_sync (
+ EGdbusBookView *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "start",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_view_call_stop:
+ * @proxy: A #EGdbusBookView.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.BookView.stop</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_view_call_stop_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_view_call_stop_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_view_call_stop (
+ EGdbusBookView *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "stop",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_view_call_stop_finish:
+ * @proxy: A #EGdbusBookView.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_view_call_stop().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.BookView.stop</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_view_call_stop_finish (
+ EGdbusBookView *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_view_call_stop_sync:
+ * @proxy: A #EGdbusBookView.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.BookView.stop</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_view_call_stop() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_view_call_stop_sync (
+ EGdbusBookView *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "stop",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_view_call_dispose:
+ * @proxy: A #EGdbusBookView.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.addressbook.BookView.dispose</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_book_view_call_dispose_finish() to get the result of the operation.
+ *
+ * See e_gdbus_book_view_call_dispose_sync() for the synchronous version of this method.
+ */
+void e_gdbus_book_view_call_dispose (
+ EGdbusBookView *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "dispose",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_book_view_call_dispose_finish:
+ * @proxy: A #EGdbusBookView.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_book_view_call_dispose().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.addressbook.BookView.dispose</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_view_call_dispose_finish (
+ EGdbusBookView *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_book_view_call_dispose_sync:
+ * @proxy: A #EGdbusBookView.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.addressbook.BookView.dispose</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_book_view_call_dispose() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_book_view_call_dispose_sync (
+ EGdbusBookView *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "dispose",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_book_view_complete_start:
+ * @object: A #EGdbusBookView.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.BookView.start</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_view_complete_start (
+ EGdbusBookView *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_book_view_complete_stop:
+ * @object: A #EGdbusBookView.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.BookView.stop</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_view_complete_stop (
+ EGdbusBookView *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_book_view_complete_dispose:
+ * @object: A #EGdbusBookView.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.addressbook.BookView.dispose</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_book_view_complete_dispose (
+ EGdbusBookView *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_book_view_emit_contacts_added:
+ * @object: A #EGdbusBookView.
+ * @arg_vcards: Signal parameter.
+ *
+ * Emits the <literal>org.gnome.evolution.dataserver.addressbook.BookView.ContactsAdded</literal>
+ * D-Bus signal.
+ */
+void e_gdbus_book_view_emit_contacts_added (
+ EGdbusBookView *object,
+ const gchar* const *arg_vcards)
+{
+ g_signal_emit (object, signals[__CONTACTS_ADDED_SIGNAL], 0, arg_vcards);
+}
+
+
+/**
+ * e_gdbus_book_view_emit_contacts_changed:
+ * @object: A #EGdbusBookView.
+ * @arg_vcards: Signal parameter.
+ *
+ * Emits the <literal>org.gnome.evolution.dataserver.addressbook.BookView.ContactsChanged</literal>
+ * D-Bus signal.
+ */
+void e_gdbus_book_view_emit_contacts_changed (
+ EGdbusBookView *object,
+ const gchar* const *arg_vcards)
+{
+ g_signal_emit (object, signals[__CONTACTS_CHANGED_SIGNAL], 0, arg_vcards);
+}
+
+
+/**
+ * e_gdbus_book_view_emit_contacts_removed:
+ * @object: A #EGdbusBookView.
+ * @arg_ids: Signal parameter.
+ *
+ * Emits the <literal>org.gnome.evolution.dataserver.addressbook.BookView.ContactsRemoved</literal>
+ * D-Bus signal.
+ */
+void e_gdbus_book_view_emit_contacts_removed (
+ EGdbusBookView *object,
+ const gchar* const *arg_ids)
+{
+ g_signal_emit (object, signals[__CONTACTS_REMOVED_SIGNAL], 0, arg_ids);
+}
+
+
+/**
+ * e_gdbus_book_view_emit_status_message:
+ * @object: A #EGdbusBookView.
+ * @arg_message: Signal parameter.
+ *
+ * Emits the <literal>org.gnome.evolution.dataserver.addressbook.BookView.StatusMessage</literal>
+ * D-Bus signal.
+ */
+void e_gdbus_book_view_emit_status_message (
+ EGdbusBookView *object,
+ const gchar *arg_message)
+{
+ g_signal_emit (object, signals[__STATUS_MESSAGE_SIGNAL], 0, arg_message);
+}
+
+
+/**
+ * e_gdbus_book_view_emit_complete:
+ * @object: A #EGdbusBookView.
+ * @arg_status: Signal parameter.
+ * @arg_message: Signal parameter.
+ *
+ * Emits the <literal>org.gnome.evolution.dataserver.addressbook.BookView.Complete</literal>
+ * D-Bus signal.
+ */
+void e_gdbus_book_view_emit_complete (
+ EGdbusBookView *object,
+ guint arg_status,
+ const gchar *arg_message)
+{
+ g_signal_emit (object, signals[__COMPLETE_SIGNAL], 0, arg_status, arg_message);
+}
+
+
+static const GDBusArgInfo e_gdbus_book_view_signal_ContactsAdded_vcards =
+{
+ -1,
+ (gchar *) "vcards",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_view_signal_ContactsAdded_arg_pointers[] =
+{
+ &e_gdbus_book_view_signal_ContactsAdded_vcards,
+ NULL
+};
+
+static const GDBusSignalInfo e_gdbus_book_view_signal_ContactsAdded =
+{
+ -1,
+ (gchar *) "ContactsAdded",
+ (GDBusArgInfo **) &e_gdbus_book_view_signal_ContactsAdded_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_book_view_signal_ContactsChanged_vcards =
+{
+ -1,
+ (gchar *) "vcards",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_view_signal_ContactsChanged_arg_pointers[] =
+{
+ &e_gdbus_book_view_signal_ContactsChanged_vcards,
+ NULL
+};
+
+static const GDBusSignalInfo e_gdbus_book_view_signal_ContactsChanged =
+{
+ -1,
+ (gchar *) "ContactsChanged",
+ (GDBusArgInfo **) &e_gdbus_book_view_signal_ContactsChanged_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_book_view_signal_ContactsRemoved_ids =
+{
+ -1,
+ (gchar *) "ids",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_view_signal_ContactsRemoved_arg_pointers[] =
+{
+ &e_gdbus_book_view_signal_ContactsRemoved_ids,
+ NULL
+};
+
+static const GDBusSignalInfo e_gdbus_book_view_signal_ContactsRemoved =
+{
+ -1,
+ (gchar *) "ContactsRemoved",
+ (GDBusArgInfo **) &e_gdbus_book_view_signal_ContactsRemoved_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_book_view_signal_StatusMessage_message =
+{
+ -1,
+ (gchar *) "message",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_view_signal_StatusMessage_arg_pointers[] =
+{
+ &e_gdbus_book_view_signal_StatusMessage_message,
+ NULL
+};
+
+static const GDBusSignalInfo e_gdbus_book_view_signal_StatusMessage =
+{
+ -1,
+ (gchar *) "StatusMessage",
+ (GDBusArgInfo **) &e_gdbus_book_view_signal_StatusMessage_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_book_view_signal_Complete_status =
+{
+ -1,
+ (gchar *) "status",
+ (gchar *) "u",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_book_view_signal_Complete_message =
+{
+ -1,
+ (gchar *) "message",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_book_view_signal_Complete_arg_pointers[] =
+{
+ &e_gdbus_book_view_signal_Complete_status,
+ &e_gdbus_book_view_signal_Complete_message,
+ NULL
+};
+
+static const GDBusSignalInfo e_gdbus_book_view_signal_Complete =
+{
+ -1,
+ (gchar *) "Complete",
+ (GDBusArgInfo **) &e_gdbus_book_view_signal_Complete_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusSignalInfo * const e_gdbus_book_view_signal_info_pointers[] =
+{
+ &e_gdbus_book_view_signal_ContactsAdded,
+ &e_gdbus_book_view_signal_ContactsChanged,
+ &e_gdbus_book_view_signal_ContactsRemoved,
+ &e_gdbus_book_view_signal_StatusMessage,
+ &e_gdbus_book_view_signal_Complete,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_book_view_method_start =
+{
+ -1,
+ (gchar *) "start",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusMethodInfo e_gdbus_book_view_method_stop =
+{
+ -1,
+ (gchar *) "stop",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusMethodInfo e_gdbus_book_view_method_dispose =
+{
+ -1,
+ (gchar *) "dispose",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusMethodInfo * const e_gdbus_book_view_method_info_pointers[] =
+{
+ &e_gdbus_book_view_method_start,
+ &e_gdbus_book_view_method_stop,
+ &e_gdbus_book_view_method_dispose,
+ NULL
+};
+
+static const GDBusInterfaceInfo _e_gdbus_book_view_interface_info =
+{
+ -1,
+ (gchar *) "org.gnome.evolution.dataserver.addressbook.BookView",
+ (GDBusMethodInfo **) &e_gdbus_book_view_method_info_pointers,
+ (GDBusSignalInfo **) &e_gdbus_book_view_signal_info_pointers,
+ (GDBusPropertyInfo **) NULL,
+};
+
+static void
+handle_method_call (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *method_name,
+ GVariant *parameters,
+ GDBusMethodInvocation *invocation,
+ gpointer user_data)
+{
+ guint method_id;
+ method_id = lookup_method_id_from_method_name (method_name);
+ switch (method_id)
+ {
+ case __START_METHOD:
+ {
+ EGdbusBookView *object = E_GDBUS_BOOK_VIEW (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __STOP_METHOD:
+ {
+ EGdbusBookView *object = E_GDBUS_BOOK_VIEW (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __DISPOSE_METHOD:
+ {
+ EGdbusBookView *object = E_GDBUS_BOOK_VIEW (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ default:
+not_implemented:
+ g_dbus_method_invocation_return_error (invocation,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "Method `%s' is not implemented",
+ method_name);
+ break;
+ }
+};
+
+static GVariant *
+get_property (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *property_name,
+ GError **error,
+ gpointer user_data)
+{
+ GVariant *ret;
+ guint prop_id;
+ prop_id = lookup_property_id_from_property_name (property_name);
+ ret = NULL;
+ switch (prop_id)
+ {
+ default:
+ g_set_error (error,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "This implementation does not support property `%s'",
+ property_name);
+ break;
+ }
+
+ return ret;
+};
+
+static gboolean
+set_property (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *property_name,
+ GVariant *value,
+ GError **error,
+ gpointer user_data)
+{
+ gboolean ret;
+ guint prop_id;
+ prop_id = lookup_property_id_from_property_name (property_name);
+ ret = TRUE;
+ switch (prop_id)
+ {
+ default:
+ g_set_error (error,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "This implementation does not support property `%s'",
+ property_name);
+ ret = FALSE;
+ break;
+ }
+
+ return ret;
+};
+
+static const GDBusInterfaceVTable e_gdbus_book_view_interface_vtable =
+{
+ handle_method_call,
+ get_property,
+ set_property,
+};
+
+static gboolean
+emit_notifications_in_idle (gpointer user_data)
+{
+ GObject *object = G_OBJECT (user_data);
+ GDBusConnection *connection;
+ const gchar *path;
+ GHashTable *notification_queue;
+ GHashTableIter iter;
+ const gchar *property_name;
+ GVariant *value;
+ GVariantBuilder *builder;
+ GVariantBuilder *invalidated_builder;
+ GHashTable *pvc;
+ gboolean has_changes;
+
+ notification_queue = g_object_get_data (object, "gdbus-codegen-notification-queue");
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ pvc = g_object_get_data (object, "gdbus-codegen-pvc");
+ g_assert (notification_queue != NULL && path != NULL && connection != NULL && pvc != NULL);
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY);
+ invalidated_builder = g_variant_builder_new (G_VARIANT_TYPE ("as"));
+ g_hash_table_iter_init (&iter, notification_queue);
+ has_changes = FALSE;
+ while (g_hash_table_iter_next (&iter, (gpointer) &property_name, (gpointer) &value))
+ {
+ GVariant *cached_value;
+ cached_value = g_hash_table_lookup (pvc, property_name);
+ if (cached_value == NULL || !g_variant_equal (cached_value, value))
+ {
+ g_hash_table_insert (pvc, (gpointer) property_name, (gpointer) g_variant_ref (value));
+ g_variant_builder_add (builder, "{sv}", property_name, value);
+ has_changes = TRUE;
+ }
+ }
+
+ if (has_changes)
+ {
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.freedesktop.DBus.Properties",
+ "PropertiesChanged",
+ g_variant_new ("(sa{sv}as)",
+ "org.gnome.evolution.dataserver.addressbook.BookView",
+ builder,
+ invalidated_builder),
+ NULL);
+ }
+ else
+ {
+ g_variant_builder_unref (builder);
+ g_variant_builder_unref (invalidated_builder);
+ }
+
+ g_hash_table_remove_all (notification_queue);
+ g_object_set_data (object, "gdbus-codegen-notification-idle-id", GUINT_TO_POINTER (0));
+ return FALSE;
+}
+
+static void
+queue_notification (GObject *object,
+ const gchar *property_name,
+ GVariant *value)
+{
+ GHashTable *notification_queue;
+ guint idle_id;
+ notification_queue = g_object_get_data (object, "gdbus-codegen-notification-queue");
+ if (notification_queue == NULL)
+ {
+ notification_queue = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_variant_unref);
+ g_object_set_data_full (object, "gdbus-codegen-notification-queue", notification_queue, (GDestroyNotify) g_hash_table_unref);
+ }
+ g_hash_table_insert (notification_queue, (gpointer) property_name, (gpointer) value); /* adopts value */
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (object, "gdbus-codegen-notification-idle-id"));
+ if (idle_id == 0)
+ {
+ GSource *idle_source;
+ idle_source = g_idle_source_new ();
+ g_source_set_priority (idle_source, G_PRIORITY_DEFAULT);
+ g_source_set_callback (idle_source,
+ emit_notifications_in_idle,
+ g_object_ref (object),
+ (GDestroyNotify) g_object_unref);
+ idle_id = g_source_attach (idle_source, g_main_context_get_thread_default ());
+ g_source_unref (idle_source);
+ g_object_set_data (object, "gdbus-codegen-notification-idle-id", GUINT_TO_POINTER (idle_id));
+ }
+}
+
+/**
+ * e_gdbus_book_view_drain_notify:
+ * @object: A #EGdbusBookView that is exported.
+ *
+ * If @object has queued notifications, empty the queue forcing
+ * the <literal>PropertiesChanged</literal> signal to be emitted.
+ * See <xref linkend="EGdbusBookView.description"/> for more background information.
+ */
+void
+e_gdbus_book_view_drain_notify (EGdbusBookView *object)
+{
+ gint idle_id;
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (object), "gdbus-codegen-notification-idle-id"));
+ if (idle_id > 0)
+ {
+ emit_notifications_in_idle (object);
+ g_source_remove (idle_id);
+ }
+}
+
+static void
+on_notify (GObject *object,
+ GParamSpec *pspec,
+ gpointer user_data)
+{
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *value;
+ const gchar *property_name;
+ guint prop_id;
+
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ property_name = lookup_property_name_from_property_gname (pspec->name);
+ if (property_name == NULL)
+ goto out;
+ prop_id = lookup_property_id_from_property_name (property_name);
+
+ value = NULL;
+ switch (prop_id)
+ {
+ }
+
+ if (value != NULL && property_name != NULL)
+ {
+ queue_notification (object, property_name, g_variant_ref_sink (value));
+ }
+out:
+ ;
+}
+
+static void
+on_object_unregistered (GObject *object)
+{
+ gint idle_id;
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (object), "gdbus-codegen-notification-idle-id"));
+ if (idle_id > 0)
+ {
+ g_source_remove (idle_id);
+ }
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-path", NULL);
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-connection", NULL);
+ g_signal_handlers_disconnect_by_func (object, on_notify, NULL);
+}
+
+/**
+ * e_gdbus_book_view_register_object:
+ * @object: An instance of a #GObject<!-- -->-derived type implementing the #EGdbusBookView interface.
+ * @connection: A #GDBusConnection.
+ * @object_path: The object to register the object at.
+ * @error: Return location for error or %NULL.
+ *
+ * Registers @object at @object_path on @connection.
+ *
+ * See <xref linkend="EGdbusBookView.description"/>
+ * for how properties, methods and signals are handled.
+ *
+ * Returns: 0 if @error is set, otherwise a registration id (never 0) that can be used with g_dbus_connection_unregister_object().
+ */
+guint
+e_gdbus_book_view_register_object (EGdbusBookView *object,
+ GDBusConnection *connection,
+ const gchar *object_path,
+ GError **error)
+{
+ G_GNUC_UNUSED GVariant *value;
+ GHashTable *pvc;
+
+ pvc = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_variant_unref);
+
+ g_object_set_data_full (G_OBJECT (object), "gdbus-codegen-path", (gpointer) g_strdup (object_path), g_free);
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-connection", (gpointer) connection);
+ g_object_set_data_full (G_OBJECT (object), "gdbus-codegen-pvc", (gpointer) pvc, (GDestroyNotify) g_hash_table_unref);
+ g_signal_connect (object, "notify", G_CALLBACK (on_notify), NULL);
+ return g_dbus_connection_register_object (connection,
+ object_path,
+ &_e_gdbus_book_view_interface_info,
+ &e_gdbus_book_view_interface_vtable,
+ object,
+ (GDestroyNotify) on_object_unregistered,
+ error);
+}
+
+/**
+ * e_gdbus_book_view_interface_info:
+ *
+ * Gets interface description for the <literal>org.gnome.evolution.dataserver.addressbook.BookView</literal> D-Bus interface.
+ *
+ * Returns: A #GDBusInterfaceInfo. Do not free, the object is statically allocated.
+ */
+const GDBusInterfaceInfo *
+e_gdbus_book_view_interface_info (void)
+{
+ return &_e_gdbus_book_view_interface_info;
+}
+
+
+/* ---------------------------------------------------------------------- */
+
+static void proxy_iface_init (EGdbusBookViewIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (EGdbusBookViewProxy, e_gdbus_book_view_proxy, G_TYPE_DBUS_PROXY,
+ G_IMPLEMENT_INTERFACE (E_GDBUS_TYPE_BOOK_VIEW, proxy_iface_init));
+
+static void
+e_gdbus_book_view_proxy_init (EGdbusBookViewProxy *proxy)
+{
+ g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy),
+ (GDBusInterfaceInfo *) &_e_gdbus_book_view_interface_info);
+}
+
+static void
+g_signal (GDBusProxy *proxy,
+ const gchar *sender_name,
+ const gchar *signal_name,
+ GVariant *parameters)
+{
+ guint signal_id;
+ signal_id = lookup_signal_id_from_signal_name (signal_name);
+ switch (signal_id)
+ {
+ case __CONTACTS_ADDED_SIGNAL:
+ {
+ const gchar* const *arg_vcards;
+ g_variant_get (parameters,
+ "(^a&s)",
+ &arg_vcards);
+ g_signal_emit (proxy,
+ signals[signal_id],
+ 0, arg_vcards);
+ g_free ((gpointer) arg_vcards);
+ }
+ break;
+
+ case __CONTACTS_CHANGED_SIGNAL:
+ {
+ const gchar* const *arg_vcards;
+ g_variant_get (parameters,
+ "(^a&s)",
+ &arg_vcards);
+ g_signal_emit (proxy,
+ signals[signal_id],
+ 0, arg_vcards);
+ g_free ((gpointer) arg_vcards);
+ }
+ break;
+
+ case __CONTACTS_REMOVED_SIGNAL:
+ {
+ const gchar* const *arg_ids;
+ g_variant_get (parameters,
+ "(^a&s)",
+ &arg_ids);
+ g_signal_emit (proxy,
+ signals[signal_id],
+ 0, arg_ids);
+ g_free ((gpointer) arg_ids);
+ }
+ break;
+
+ case __STATUS_MESSAGE_SIGNAL:
+ {
+ const gchar *arg_message;
+ g_variant_get (parameters,
+ "(&s)",
+ &arg_message);
+ g_signal_emit (proxy,
+ signals[signal_id],
+ 0, arg_message);
+ }
+ break;
+
+ case __COMPLETE_SIGNAL:
+ {
+ guint arg_status;
+ const gchar *arg_message;
+ g_variant_get (parameters,
+ "(u&s)",
+ &arg_status,
+ &arg_message);
+ g_signal_emit (proxy,
+ signals[signal_id],
+ 0, arg_status, arg_message);
+ }
+ break;
+
+ }
+}
+
+static void
+e_gdbus_book_view_proxy_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED GVariant *cached;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+property_set_cb (GDBusProxy *proxy,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ const gchar *property_name = user_data;
+ GError *error;
+ GVariant *result;
+
+ error = NULL;
+ result = g_dbus_proxy_call_finish (proxy, res, &error);
+ if (result == NULL)
+ {
+ g_warning ("Error setting property `%s': %s", property_name, error->message);
+ g_error_free (error);
+ }
+ else
+ {
+ g_variant_unref (result);
+ }
+}
+
+static void
+e_gdbus_book_view_proxy_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GVariant *new_value;
+ const gchar *property_name;
+ new_value = NULL;
+ property_name = NULL;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+
+ if (new_value != NULL)
+ {
+ g_variant_ref_sink (new_value);
+ g_dbus_proxy_call (G_DBUS_PROXY (object),
+ "org.freedesktop.DBus.Properties.Set",
+ g_variant_new ("(ssv)",
+ "org.gnome.evolution.dataserver.addressbook.BookView",
+ property_name,
+ new_value),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ (GAsyncReadyCallback) property_set_cb,
+ (gpointer) property_name);
+ g_variant_unref (new_value);
+ }
+
+}
+
+static void
+g_properties_changed (GDBusProxy *proxy,
+ GVariant *changed_properties,
+ const gchar* const *invalidated_properties)
+{
+ guint n;
+ const gchar *key;
+ GVariantIter *iter;
+ const gchar *gname;
+
+ g_variant_get (changed_properties, "a{sv}", &iter);
+ while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+ {
+ gname = lookup_property_gname_from_property_name (key);
+ if (gname != NULL)
+ g_object_notify (G_OBJECT (proxy), gname);
+ }
+
+ for (n = 0; invalidated_properties[n] != NULL; n++)
+ {
+ gname = lookup_property_gname_from_property_name (invalidated_properties[n]);
+ if (gname != NULL)
+ g_object_notify (G_OBJECT (proxy), gname);
+ }
+
+}
+
+static void
+e_gdbus_book_view_proxy_class_init (EGdbusBookViewProxyClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusProxyClass *proxy_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->get_property = e_gdbus_book_view_proxy_get_property;
+ gobject_class->set_property = e_gdbus_book_view_proxy_set_property;
+
+ proxy_class = G_DBUS_PROXY_CLASS (klass);
+ proxy_class->g_signal = g_signal;
+ proxy_class->g_properties_changed = g_properties_changed;
+
+}
+
+static void
+proxy_iface_init (EGdbusBookViewIface *iface)
+{
+}
+
+
+/**
+ * e_gdbus_book_view_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: Callback function to invoke when the proxy is ready.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like g_dbus_proxy_new() but returns a #EGdbusBookViewProxy.
+ *
+ * This is a failable asynchronous constructor - when the proxy is ready, callback will be invoked and you can use e_gdbus_book_view_proxy_new_finish() to get the result.
+ */
+void e_gdbus_book_view_proxy_new (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (E_GDBUS_TYPE_BOOK_VIEW_PROXY,
+ G_PRIORITY_DEFAULT,
+ cancellable,
+ callback,
+ user_data,
+ "g-flags", flags,
+ "g-name", name,
+ "g-connection", connection,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.addressbook.BookView",
+ NULL);
+}
+
+/**
+ * e_gdbus_book_view_proxy_new_finish:
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to e_gdbus_book_view_proxy_new().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes creating a #EGdbusBookViewProxy.
+ *
+ * Returns: A #EGdbusBookViewProxy or %NULL if @error is set. Free with g_object_unref().
+ */
+EGdbusBookView *e_gdbus_book_view_proxy_new_finish (GAsyncResult *res,
+ GError **error)
+{
+ GObject *object;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ g_assert (source_object != NULL);
+ object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object),
+ res,
+ error);
+ g_object_unref (source_object);
+ if (object != NULL)
+ return E_GDBUS_BOOK_VIEW (object);
+ else
+ return NULL;
+}
+
+/**
+ * e_gdbus_book_view_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Like g_dbus_proxy_new_sync() but returns a #EGdbusBookViewProxy.
+ *
+ * This is a synchronous failable constructor. See e_gdbus_book_view_proxy_new() and e_gdbus_book_view_proxy_new_finish() for the asynchronous version.
+ *
+ * Returns: A #EGdbusBookViewProxy or %NULL if error is set. Free with g_object_unref().
+ */
+EGdbusBookView *e_gdbus_book_view_proxy_new_sync (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *initable;
+ initable = g_initable_new (E_GDBUS_TYPE_BOOK_VIEW_PROXY,
+ cancellable,
+ error,
+ "g-flags", flags,
+ "g-name", name,
+ "g-connection", connection,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.addressbook.BookView",
+ NULL);
+ if (initable != NULL)
+ return E_GDBUS_BOOK_VIEW (initable);
+ else
+ return NULL;
+}
+
+
+/**
+ * e_gdbus_book_view_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: Callback function to invoke when the proxy is ready.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like g_dbus_proxy_new_for_bus() but returns a #EGdbusBookViewProxy.
+ *
+ * This is a failable asynchronous constructor - when the proxy is ready, callback will be invoked and you can use e_gdbus_book_view_proxy_new_for_bus_finish() to get the result.
+ */
+void e_gdbus_book_view_proxy_new_for_bus (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (E_GDBUS_TYPE_BOOK_VIEW_PROXY,
+ G_PRIORITY_DEFAULT,
+ cancellable,
+ callback,
+ user_data,
+ "g-flags", flags,
+ "g-name", name,
+ "g-bus-type", bus_type,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.addressbook.BookView",
+ NULL);
+}
+
+/**
+ * e_gdbus_book_view_proxy_new_for_bus_finish:
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to e_gdbus_book_view_proxy_new_for_bus().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes creating a #EGdbusBookViewProxy.
+ *
+ * Returns: A #EGdbusBookViewProxy or %NULL if @error is set. Free with g_object_unref().
+ */
+EGdbusBookView *e_gdbus_book_view_proxy_new_for_bus_finish (GAsyncResult *res,
+ GError **error)
+{
+ GObject *object;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ g_assert (source_object != NULL);
+ object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object),
+ res,
+ error);
+ g_object_unref (source_object);
+ if (object != NULL)
+ return E_GDBUS_BOOK_VIEW (object);
+ else
+ return NULL;
+}
+
+/**
+ * e_gdbus_book_view_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Like g_dbus_proxy_new_for_bus_sync() but returns a #EGdbusBookViewProxy.
+ *
+ * This is a synchronous failable constructor. See e_gdbus_book_view_proxy_new_for_bus() and e_gdbus_book_view_proxy_new_for_bus_finish() for the asynchronous version.
+ *
+ * Returns: A #EGdbusBookViewProxy or %NULL if error is set. Free with g_object_unref().
+ */
+EGdbusBookView *e_gdbus_book_view_proxy_new_for_bus_sync (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *initable;
+ initable = g_initable_new (E_GDBUS_TYPE_BOOK_VIEW_PROXY,
+ cancellable,
+ error,
+ "g-flags", flags,
+ "g-name", name,
+ "g-bus-type", bus_type,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.addressbook.BookView",
+ NULL);
+ if (initable != NULL)
+ return E_GDBUS_BOOK_VIEW (initable);
+ else
+ return NULL;
+}
+
+
+/* ---------------------------------------------------------------------- */
+
+struct _EGdbusBookViewStubPrivate
+{
+ gint foo;
+};
+
+static void stub_iface_init (EGdbusBookViewIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (EGdbusBookViewStub, e_gdbus_book_view_stub, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (E_GDBUS_TYPE_BOOK_VIEW, stub_iface_init));
+
+static void
+e_gdbus_book_view_stub_finalize (GObject *object)
+{
+ G_GNUC_UNUSED EGdbusBookViewStub *stub = (EGdbusBookViewStub *) object;
+ if (G_OBJECT_CLASS (e_gdbus_book_view_stub_parent_class)->finalize != NULL)
+ G_OBJECT_CLASS (e_gdbus_book_view_stub_parent_class)->finalize (object);
+}
+
+static void
+e_gdbus_book_view_stub_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED static gchar **strv_of_len_zero = {NULL};
+ G_GNUC_UNUSED EGdbusBookViewStub *stub = (EGdbusBookViewStub *) object;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+e_gdbus_book_view_stub_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED EGdbusBookViewStub *stub = (EGdbusBookViewStub *) object;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+e_gdbus_book_view_stub_init (EGdbusBookViewStub *stub)
+{
+ stub->priv = G_TYPE_INSTANCE_GET_PRIVATE (stub, E_GDBUS_TYPE_BOOK_VIEW_STUB, EGdbusBookViewStubPrivate);
+}
+
+static void
+e_gdbus_book_view_stub_class_init (EGdbusBookViewStubClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = e_gdbus_book_view_stub_finalize;
+ gobject_class->get_property = e_gdbus_book_view_stub_get_property;
+ gobject_class->set_property = e_gdbus_book_view_stub_set_property;
+ g_type_class_add_private (klass, sizeof (EGdbusBookViewStubPrivate));
+}
+
+static void
+stub_iface_init (EGdbusBookViewIface *iface)
+{
+}
+
+/**
+ * e_gdbus_book_view_stub_new:
+ *
+ * Creates a new stub object that can be exported via e_gdbus_book_view_register_object().
+ *
+ * Returns: A #EGdbusBookViewStub instance. Free with g_object_unref().
+ */
+EGdbusBookView *
+e_gdbus_book_view_stub_new (void)
+{
+ return E_GDBUS_BOOK_VIEW (g_object_new (E_GDBUS_TYPE_BOOK_VIEW_STUB, NULL));
+}
diff --git a/addressbook/libegdbus/e-gdbus-egdbusbookview.h b/addressbook/libegdbus/e-gdbus-egdbusbookview.h
new file mode 100644
index 0000000..ede4b5c
--- /dev/null
+++ b/addressbook/libegdbus/e-gdbus-egdbusbookview.h
@@ -0,0 +1,302 @@
+/* File: e-gdbus-egdbusbookview.h
+ *
+ * GType name: EGdbusBookView
+ * D-Bus name: org.gnome.evolution.dataserver.addressbook.BookView
+ *
+ * Generated by GDBus Binding Tool 0.1. DO NOT EDIT.
+ */
+
+#ifndef __E_GDBUS_E_GDBUS_BOOK_VIEW_H__
+#define __E_GDBUS_E_GDBUS_BOOK_VIEW_H__
+
+#include <gio/gio.h>
+
+#include "e-gdbus-typemappers.h"
+G_BEGIN_DECLS
+
+#define E_GDBUS_TYPE_BOOK_VIEW (e_gdbus_book_view_get_type ())
+#define E_GDBUS_BOOK_VIEW(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), E_GDBUS_TYPE_BOOK_VIEW, EGdbusBookView))
+#define E_GDBUS_IS_BOOK_VIEW(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_GDBUS_TYPE_BOOK_VIEW))
+#define E_GDBUS_BOOK_VIEW_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), E_GDBUS_TYPE_BOOK_VIEW, EGdbusBookViewIface))
+
+/**
+ * EGdbusBookView:
+ *
+ * Opaque type representing a proxy or an exported object.
+ */
+typedef struct _EGdbusBookView EGdbusBookView; /* Dummy typedef */
+/**
+ * EGdbusBookViewIface:
+ * @parent_iface: The parent interface.
+ * @contacts_added: Handler for the #EGdbusBookView::contacts-added signal.
+ * @contacts_changed: Handler for the #EGdbusBookView::contacts-changed signal.
+ * @contacts_removed: Handler for the #EGdbusBookView::contacts-removed signal.
+ * @status_message: Handler for the #EGdbusBookView::status-message signal.
+ * @complete: Handler for the #EGdbusBookView::complete signal.
+ * @handle_start: Handler for the #EGdbusBookView::handle-start signal.
+ * @handle_stop: Handler for the #EGdbusBookView::handle-stop signal.
+ * @handle_dispose: Handler for the #EGdbusBookView::handle-dispose signal.
+ *
+ * Virtual table.
+ */
+typedef struct _EGdbusBookViewIface EGdbusBookViewIface;
+
+GType e_gdbus_book_view_get_type (void) G_GNUC_CONST;
+
+/* ---------------------------------------------------------------------- */
+
+typedef struct _EGdbusBookViewProxy EGdbusBookViewProxy;
+typedef struct _EGdbusBookViewProxyClass EGdbusBookViewProxyClass;
+
+/**
+ * EGdbusBookViewProxyPrivate:
+ *
+ * The #EGdbusBookViewProxyPrivate structure contains only private data.
+ */
+typedef struct _EGdbusBookViewProxyPrivate EGdbusBookViewProxyPrivate;
+
+/**
+ * EGdbusBookViewProxy:
+ *
+ * The #EGdbusBookViewProxy structure contains only private data and
+ * should only be accessed using the provided API.
+ */
+struct _EGdbusBookViewProxy
+{
+ GDBusProxy parent_instance;
+ EGdbusBookViewProxyPrivate *priv;
+};
+
+/**
+ * EGdbusBookViewProxyClass:
+ *
+ * Class structure for #EGdbusBookViewProxy.
+ */
+struct _EGdbusBookViewProxyClass
+{
+ GDBusProxyClass parent_class;
+};
+
+#define E_GDBUS_TYPE_BOOK_VIEW_PROXY (e_gdbus_book_view_proxy_get_type ())
+GType e_gdbus_book_view_proxy_get_type (void) G_GNUC_CONST;
+
+void e_gdbus_book_view_proxy_new (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+EGdbusBookView *e_gdbus_book_view_proxy_new_finish (GAsyncResult *res,
+ GError **error);
+EGdbusBookView *e_gdbus_book_view_proxy_new_sync (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+void e_gdbus_book_view_proxy_new_for_bus (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+EGdbusBookView *e_gdbus_book_view_proxy_new_for_bus_finish (GAsyncResult *res,
+ GError **error);
+EGdbusBookView *e_gdbus_book_view_proxy_new_for_bus_sync (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+/* ---------------------------------------------------------------------- */
+
+typedef struct _EGdbusBookViewStub EGdbusBookViewStub;
+typedef struct _EGdbusBookViewStubClass EGdbusBookViewStubClass;
+
+/**
+ * EGdbusBookViewStubPrivate:
+ *
+ * The #EGdbusBookViewStubPrivate structure contains only private data.
+ */
+typedef struct _EGdbusBookViewStubPrivate EGdbusBookViewStubPrivate;
+
+/**
+ * EGdbusBookViewStub:
+ *
+ * The #EGdbusBookViewStub structure contains only private data and
+ * should only be accessed using the provided API.
+ */
+struct _EGdbusBookViewStub
+{
+ GObject parent_instance;
+ EGdbusBookViewStubPrivate *priv;
+};
+
+/**
+ * EGdbusBookViewStubClass:
+ *
+ * Class structure for #EGdbusBookViewStub.
+ */
+struct _EGdbusBookViewStubClass
+{
+ GObjectClass parent_class;
+};
+
+#define E_GDBUS_TYPE_BOOK_VIEW_STUB (e_gdbus_book_view_stub_get_type ())
+GType e_gdbus_book_view_stub_get_type (void) G_GNUC_CONST;
+
+EGdbusBookView *e_gdbus_book_view_stub_new (void);
+
+
+guint e_gdbus_book_view_register_object (EGdbusBookView *object,
+ GDBusConnection *connection,
+ const gchar *object_path,
+ GError **error);
+
+void e_gdbus_book_view_drain_notify (EGdbusBookView *object);
+
+
+const GDBusInterfaceInfo *e_gdbus_book_view_interface_info (void) G_GNUC_CONST;
+
+struct _EGdbusBookViewIface
+{
+ GTypeInterface parent_iface;
+
+ /* Signal handlers for receiving D-Bus signals: */
+ void (*contacts_added) (
+ EGdbusBookView *object,
+ const gchar* const *arg_vcards);
+ void (*contacts_changed) (
+ EGdbusBookView *object,
+ const gchar* const *arg_vcards);
+ void (*contacts_removed) (
+ EGdbusBookView *object,
+ const gchar* const *arg_ids);
+ void (*status_message) (
+ EGdbusBookView *object,
+ const gchar *arg_message);
+ void (*complete) (
+ EGdbusBookView *object,
+ guint arg_status,
+ const gchar *arg_message);
+
+ /* Signal handlers for handling D-Bus method calls: */
+ gboolean (*handle_start) (
+ EGdbusBookView *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_stop) (
+ EGdbusBookView *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_dispose) (
+ EGdbusBookView *object,
+ GDBusMethodInvocation *invocation);
+};
+
+/* C Bindings for properties */
+
+
+/* D-Bus Methods */
+void e_gdbus_book_view_call_start (
+ EGdbusBookView *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_view_call_start_finish (
+ EGdbusBookView *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_view_call_start_sync (
+ EGdbusBookView *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_book_view_call_stop (
+ EGdbusBookView *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_view_call_stop_finish (
+ EGdbusBookView *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_view_call_stop_sync (
+ EGdbusBookView *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_book_view_call_dispose (
+ EGdbusBookView *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_book_view_call_dispose_finish (
+ EGdbusBookView *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_book_view_call_dispose_sync (
+ EGdbusBookView *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+
+
+/* D-Bus Methods Completion Helpers */
+void e_gdbus_book_view_complete_start (
+ EGdbusBookView *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_book_view_complete_stop (
+ EGdbusBookView *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_book_view_complete_dispose (
+ EGdbusBookView *object,
+ GDBusMethodInvocation *invocation);
+
+
+
+/* D-Bus Signal Emission Helpers */
+void e_gdbus_book_view_emit_contacts_added (
+ EGdbusBookView *object,
+ const gchar* const *arg_vcards);
+
+
+void e_gdbus_book_view_emit_contacts_changed (
+ EGdbusBookView *object,
+ const gchar* const *arg_vcards);
+
+
+void e_gdbus_book_view_emit_contacts_removed (
+ EGdbusBookView *object,
+ const gchar* const *arg_ids);
+
+
+void e_gdbus_book_view_emit_status_message (
+ EGdbusBookView *object,
+ const gchar *arg_message);
+
+
+void e_gdbus_book_view_emit_complete (
+ EGdbusBookView *object,
+ guint arg_status,
+ const gchar *arg_message);
+
+
+
+G_END_DECLS
+
+#endif /* __E_GDBUS_E_GDBUS_BOOK_VIEW_H__ */
diff --git a/addressbook/libegdbus/e-gdbus-marshallers.c b/addressbook/libegdbus/e-gdbus-marshallers.c
new file mode 100644
index 0000000..fe8613b
--- /dev/null
+++ b/addressbook/libegdbus/e-gdbus-marshallers.c
@@ -0,0 +1,345 @@
+#include "e-gdbus-marshallers.h"
+
+#include <glib-object.h>
+
+
+#ifdef G_ENABLE_DEBUG
+#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v)
+#define g_marshal_value_peek_char(v) g_value_get_char (v)
+#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v)
+#define g_marshal_value_peek_int(v) g_value_get_int (v)
+#define g_marshal_value_peek_uint(v) g_value_get_uint (v)
+#define g_marshal_value_peek_long(v) g_value_get_long (v)
+#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v)
+#define g_marshal_value_peek_int64(v) g_value_get_int64 (v)
+#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v)
+#define g_marshal_value_peek_enum(v) g_value_get_enum (v)
+#define g_marshal_value_peek_flags(v) g_value_get_flags (v)
+#define g_marshal_value_peek_float(v) g_value_get_float (v)
+#define g_marshal_value_peek_double(v) g_value_get_double (v)
+#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v)
+#define g_marshal_value_peek_param(v) g_value_get_param (v)
+#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v)
+#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v)
+#define g_marshal_value_peek_object(v) g_value_get_object (v)
+#define g_marshal_value_peek_variant(v) g_value_get_variant (v)
+#else /* !G_ENABLE_DEBUG */
+/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
+ * Do not access GValues directly in your code. Instead, use the
+ * g_value_get_*() functions
+ */
+#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int
+#define g_marshal_value_peek_char(v) (v)->data[0].v_int
+#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint
+#define g_marshal_value_peek_int(v) (v)->data[0].v_int
+#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint
+#define g_marshal_value_peek_long(v) (v)->data[0].v_long
+#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong
+#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64
+#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64
+#define g_marshal_value_peek_enum(v) (v)->data[0].v_long
+#define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong
+#define g_marshal_value_peek_float(v) (v)->data[0].v_float
+#define g_marshal_value_peek_double(v) (v)->data[0].v_double
+#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_variant(v) (v)->data[0].v_pointer
+#endif /* !G_ENABLE_DEBUG */
+
+
+/* BOOLEAN:OBJECT,STRING (e-gdbus-marshallers.list:1) */
+void
+_e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__OBJECT_STRING) (gpointer data1,
+ gpointer arg_1,
+ gpointer arg_2,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__OBJECT_STRING callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 3);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__OBJECT_STRING) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_object (param_values + 1),
+ g_marshal_value_peek_string (param_values + 2),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* VOID:BOXED (e-gdbus-marshallers.list:2) */
+
+/* VOID:STRING (e-gdbus-marshallers.list:3) */
+
+/* VOID:UINT,STRING (e-gdbus-marshallers.list:4) */
+void
+_e_gdbus_gdbus_cclosure_marshaller_VOID__UINT_STRING (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef void (*GMarshalFunc_VOID__UINT_STRING) (gpointer data1,
+ guint arg_1,
+ gpointer arg_2,
+ gpointer data2);
+ register GMarshalFunc_VOID__UINT_STRING callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+
+ g_return_if_fail (n_param_values == 3);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_VOID__UINT_STRING) (marshal_data ? marshal_data : cc->callback);
+
+ callback (data1,
+ g_marshal_value_peek_uint (param_values + 1),
+ g_marshal_value_peek_string (param_values + 2),
+ data2);
+}
+
+/* BOOLEAN:OBJECT (e-gdbus-marshallers.list:5) */
+void
+_e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__OBJECT) (gpointer data1,
+ gpointer arg_1,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__OBJECT callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 2);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__OBJECT) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_object (param_values + 1),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* VOID:BOOLEAN (e-gdbus-marshallers.list:6) */
+
+/* BOOLEAN:OBJECT,BOOLEAN (e-gdbus-marshallers.list:7) */
+void
+_e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_BOOLEAN (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__OBJECT_BOOLEAN) (gpointer data1,
+ gpointer arg_1,
+ gboolean arg_2,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__OBJECT_BOOLEAN callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 3);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__OBJECT_BOOLEAN) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_object (param_values + 1),
+ g_marshal_value_peek_boolean (param_values + 2),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* BOOLEAN:OBJECT,STRING,STRING,STRING (e-gdbus-marshallers.list:8) */
+void
+_e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_STRING_STRING (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__OBJECT_STRING_STRING_STRING) (gpointer data1,
+ gpointer arg_1,
+ gpointer arg_2,
+ gpointer arg_3,
+ gpointer arg_4,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__OBJECT_STRING_STRING_STRING callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 5);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__OBJECT_STRING_STRING_STRING) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_object (param_values + 1),
+ g_marshal_value_peek_string (param_values + 2),
+ g_marshal_value_peek_string (param_values + 3),
+ g_marshal_value_peek_string (param_values + 4),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* BOOLEAN:OBJECT,BOXED (e-gdbus-marshallers.list:9) */
+void
+_e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_BOXED (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__OBJECT_BOXED) (gpointer data1,
+ gpointer arg_1,
+ gpointer arg_2,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__OBJECT_BOXED callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 3);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__OBJECT_BOXED) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_object (param_values + 1),
+ g_marshal_value_peek_boxed (param_values + 2),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* BOOLEAN:OBJECT,STRING,UINT (e-gdbus-marshallers.list:10) */
+void
+_e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_UINT (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__OBJECT_STRING_UINT) (gpointer data1,
+ gpointer arg_1,
+ gpointer arg_2,
+ guint arg_3,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__OBJECT_STRING_UINT callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 4);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__OBJECT_STRING_UINT) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_object (param_values + 1),
+ g_marshal_value_peek_string (param_values + 2),
+ g_marshal_value_peek_uint (param_values + 3),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
diff --git a/addressbook/libegdbus/e-gdbus-marshallers.h b/addressbook/libegdbus/e-gdbus-marshallers.h
new file mode 100644
index 0000000..d477e91
--- /dev/null
+++ b/addressbook/libegdbus/e-gdbus-marshallers.h
@@ -0,0 +1,77 @@
+
+#ifndef ___e_gdbus_gdbus_cclosure_marshaller_MARSHAL_H__
+#define ___e_gdbus_gdbus_cclosure_marshaller_MARSHAL_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* BOOLEAN:OBJECT,STRING (e-gdbus-marshallers.list:1) */
+extern void _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* VOID:BOXED (e-gdbus-marshallers.list:2) */
+#define _e_gdbus_gdbus_cclosure_marshaller_VOID__BOXED g_cclosure_marshal_VOID__BOXED
+
+/* VOID:STRING (e-gdbus-marshallers.list:3) */
+#define _e_gdbus_gdbus_cclosure_marshaller_VOID__STRING g_cclosure_marshal_VOID__STRING
+
+/* VOID:UINT,STRING (e-gdbus-marshallers.list:4) */
+extern void _e_gdbus_gdbus_cclosure_marshaller_VOID__UINT_STRING (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* BOOLEAN:OBJECT (e-gdbus-marshallers.list:5) */
+extern void _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* VOID:BOOLEAN (e-gdbus-marshallers.list:6) */
+#define _e_gdbus_gdbus_cclosure_marshaller_VOID__BOOLEAN g_cclosure_marshal_VOID__BOOLEAN
+
+/* BOOLEAN:OBJECT,BOOLEAN (e-gdbus-marshallers.list:7) */
+extern void _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_BOOLEAN (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* BOOLEAN:OBJECT,STRING,STRING,STRING (e-gdbus-marshallers.list:8) */
+extern void _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_STRING_STRING (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* BOOLEAN:OBJECT,BOXED (e-gdbus-marshallers.list:9) */
+extern void _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_BOXED (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* BOOLEAN:OBJECT,STRING,UINT (e-gdbus-marshallers.list:10) */
+extern void _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_UINT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+G_END_DECLS
+
+#endif /* ___e_gdbus_gdbus_cclosure_marshaller_MARSHAL_H__ */
+
diff --git a/addressbook/libegdbus/e-gdbus-marshallers.list b/addressbook/libegdbus/e-gdbus-marshallers.list
new file mode 100644
index 0000000..46f24d4
--- /dev/null
+++ b/addressbook/libegdbus/e-gdbus-marshallers.list
@@ -0,0 +1,10 @@
+BOOLEAN:OBJECT,STRING
+VOID:BOXED
+VOID:STRING
+VOID:UINT,STRING
+BOOLEAN:OBJECT
+VOID:BOOLEAN
+BOOLEAN:OBJECT,BOOLEAN
+BOOLEAN:OBJECT,STRING,STRING,STRING
+BOOLEAN:OBJECT,BOXED
+BOOLEAN:OBJECT,STRING,UINT
diff --git a/addressbook/libegdbus/e-gdbus-typemappers.h b/addressbook/libegdbus/e-gdbus-typemappers.h
new file mode 100644
index 0000000..d99ad9c
--- /dev/null
+++ b/addressbook/libegdbus/e-gdbus-typemappers.h
@@ -0,0 +1,12 @@
+/* File: e-gdbus-typemappers.h
+ *
+ * Generated by GDBus Binding Tool 0.1. DO NOT EDIT.
+ */
+
+#ifndef __E_GDBUS_TYPE_MAPPERS_H__
+#define __E_GDBUS_TYPE_MAPPERS_H__
+
+#include <gio/gio.h>
+
+
+#endif /* __E_GDBUS_TYPE_MAPPERS_H__ */
diff --git a/addressbook/tests/ebook/ebook-test-utils.c b/addressbook/tests/ebook/ebook-test-utils.c
index 3b94eaf..fa021b6 100644
--- a/addressbook/tests/ebook/ebook-test-utils.c
+++ b/addressbook/tests/ebook/ebook-test-utils.c
@@ -643,7 +643,6 @@ EBook*
ebook_test_utils_book_new_temp (gchar **uri)
{
EBook *book;
- GError *error = NULL;
gchar *file_template;
gchar *uri_result;
@@ -651,10 +650,9 @@ ebook_test_utils_book_new_temp (gchar **uri)
"ebook-test-XXXXXX/", NULL);
g_mkstemp (file_template);
- uri_result = g_filename_to_uri (file_template, NULL, &error);
+ uri_result = g_strconcat ("local:", file_template, NULL);
if (!uri_result) {
- g_warning ("failed to convert %s to an URI: %s", file_template,
- error->message);
+ g_warning ("failed to convert %s to a 'local:' URI", file_template);
exit (1);
}
g_free (file_template);
diff --git a/calendar/Makefile.am b/calendar/Makefile.am
index 1213b79..6070753 100644
--- a/calendar/Makefile.am
+++ b/calendar/Makefile.am
@@ -1,3 +1,3 @@
-SUBDIRS = libecal libedata-cal backends tests
+SUBDIRS = libegdbus libecal libedata-cal backends tests
-include $(top_srcdir)/git.mk
diff --git a/calendar/libecal/Makefile.am b/calendar/libecal/Makefile.am
index 7d0d17f..47831ba 100644
--- a/calendar/libecal/Makefile.am
+++ b/calendar/libecal/Makefile.am
@@ -5,31 +5,33 @@ MARSHAL_GENERATED = e-cal-marshal.c e-cal-marshal.h
# The library
lib_LTLIBRARIES = libecal-1.2.la
-libecal_1_2_la_CPPFLAGS = \
- $(AM_CPPFLAGS) \
- -DG_LOG_DOMAIN=\"libecal\" \
- -I$(top_srcdir) \
- -I$(top_srcdir)/calendar \
- -I$(top_builddir) \
- -I$(top_builddir)/calendar/libecal \
- $(LIBICAL_CFLAGS) \
+libecal_1_2_la_CPPFLAGS = \
+ $(AM_CPPFLAGS) \
+ -DG_LOG_DOMAIN=\"libecal\" \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/calendar \
+ -I$(top_srcdir)/calendar/libegdbus \
+ -I$(top_srcdir)/calendar/libedata-cal \
+ -I$(top_builddir) \
+ -I$(top_builddir)/calendar/libecal \
+ $(LIBICAL_CFLAGS) \
$(EVOLUTION_CALENDAR_CFLAGS)
-libecal_1_2_la_SOURCES = \
- $(MARSHAL_GENERATED) \
- $(DBUS_GENERATED_H) \
- e-cal.c \
- e-cal-component.c \
- e-cal-recur.c \
- e-cal-time-util.c \
- e-cal-check-timezones.c \
- e-cal-system-timezone.c \
- e-cal-system-timezone.h \
- e-cal-util.c \
- e-cal-view.c \
+libecal_1_2_la_SOURCES = \
+ $(MARSHAL_GENERATED) \
+ e-cal.c \
+ e-cal-component.c \
+ e-cal-recur.c \
+ e-cal-time-util.c \
+ e-cal-check-timezones.c \
+ e-cal-system-timezone.c \
+ e-cal-system-timezone.h \
+ e-cal-util.c \
+ e-cal-view.c \
e-cal-view-private.h
libecal_1_2_la_LIBADD = \
+ $(top_builddir)/calendar/libegdbus/libegdbus-cal.la \
$(top_builddir)/libedataserver/libedataserver-1.2.la \
$(LIBICAL_LIBS) \
$(EVOLUTION_CALENDAR_LIBS)
@@ -56,12 +58,7 @@ libecalinclude_HEADERS = \
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libecal-$(API_VERSION).pc
-DBUS_GENERATED_H = e-data-cal-factory-bindings.h e-data-cal-bindings.h e-data-cal-view-bindings.h
-
-%-bindings.h: $(top_srcdir)/calendar/libedata-cal/%.xml
- @DBUS_BINDING_TOOL@ --mode=glib-client --output=$@ --prefix=$(subst -,_,$*) $^
-
-BUILT_SOURCES = $(DBUS_GENERATED_H) $(MARSHAL_GENERATED)
+BUILT_SOURCES = $(MARSHAL_GENERATED)
CLEANFILES = $(BUILT_SOURCES)
DISTCLEANFILES = $(pkgconfig_DATA)
diff --git a/calendar/libecal/e-cal-view-private.h b/calendar/libecal/e-cal-view-private.h
index e542702..9aa39df 100644
--- a/calendar/libecal/e-cal-view-private.h
+++ b/calendar/libecal/e-cal-view-private.h
@@ -24,11 +24,11 @@
#include <libecal/e-cal-types.h>
#include <libecal/e-cal-view.h>
-#include <dbus/dbus-glib.h>
-
G_BEGIN_DECLS
-ECalView *_e_cal_view_new (struct _ECal *client, DBusGProxy *view_proxy, GStaticRecMutex *connection_lock);
+struct _EGdbusCalView;
+
+ECalView *_e_cal_view_new (struct _ECal *client, struct _EGdbusCalView *gdbus_calview);
G_END_DECLS
diff --git a/calendar/libecal/e-cal-view.c b/calendar/libecal/e-cal-view.c
index 5ac66b2..ec81ff2 100644
--- a/calendar/libecal/e-cal-view.c
+++ b/calendar/libecal/e-cal-view.c
@@ -30,18 +30,14 @@
#include "e-cal.h"
#include "e-cal-view.h"
#include "e-cal-view-private.h"
-#include "e-data-cal-view-bindings.h"
+#include "e-gdbus-egdbuscalview.h"
G_DEFINE_TYPE(ECalView, e_cal_view, G_TYPE_OBJECT);
#define E_CAL_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), E_TYPE_CAL_VIEW, ECalViewPrivate))
-#define LOCK_VIEW() g_static_rec_mutex_lock (priv->view_proxy_lock)
-#define UNLOCK_VIEW() g_static_rec_mutex_unlock (priv->view_proxy_lock)
-
/* Private part of the ECalView structure */
struct _ECalViewPrivate {
- DBusGProxy *view_proxy;
- GStaticRecMutex *view_proxy_lock;
+ EGdbusCalView *gdbus_calview;
ECal *client;
};
@@ -49,7 +45,6 @@ struct _ECalViewPrivate {
enum props {
PROP_0,
PROP_VIEW,
- PROP_VIEW_LOCK,
PROP_CLIENT
};
@@ -68,10 +63,8 @@ enum {
static guint signals[LAST_SIGNAL];
-static GObjectClass *parent_class;
-
static GList *
-build_object_list (const gchar **seq)
+build_object_list (const gchar * const *seq)
{
GList *list;
gint i;
@@ -87,11 +80,11 @@ build_object_list (const gchar **seq)
list = g_list_prepend (list, comp);
}
- return list;
+ return g_list_reverse (list);
}
static GList *
-build_id_list (const gchar **seq)
+build_id_list (const gchar * const *seq)
{
GList *list;
gint i;
@@ -104,88 +97,76 @@ build_id_list (const gchar **seq)
id->rid = NULL; /* TODO */
list = g_list_prepend (list, id);
}
- return list;
+
+ return g_list_reverse (list);
}
static void
-objects_added_cb (DBusGProxy *proxy, const gchar **objects, gpointer data)
+objects_added_cb (EGdbusCalView *gdbus_calview, const gchar * const *objects, ECalView *view)
{
- ECalView *view;
GList *list;
- view = E_CAL_VIEW (data);
+ g_return_if_fail (E_IS_CAL_VIEW (view));
g_object_ref (view);
list = build_object_list (objects);
g_signal_emit (G_OBJECT (view), signals[OBJECTS_ADDED], 0, list);
- while (list) {
- icalcomponent_free (list->data);
- list = g_list_delete_link (list, list);
- }
+ g_list_foreach (list, (GFunc) icalcomponent_free, NULL);
+ g_list_free (list);
g_object_unref (view);
}
static void
-objects_modified_cb (DBusGProxy *proxy, const gchar **objects, gpointer data)
+objects_modified_cb (EGdbusCalView *gdbus_calview, const gchar * const *objects, ECalView *view)
{
- ECalView *view;
GList *list;
- view = E_CAL_VIEW (data);
+ g_return_if_fail (E_IS_CAL_VIEW (view));
g_object_ref (view);
list = build_object_list (objects);
g_signal_emit (G_OBJECT (view), signals[OBJECTS_MODIFIED], 0, list);
- while (list) {
- icalcomponent_free (list->data);
- list = g_list_delete_link (list, list);
- }
+ g_list_foreach (list, (GFunc) icalcomponent_free, NULL);
+ g_list_free (list);
g_object_unref (view);
}
static void
-objects_removed_cb (DBusGProxy *proxy, const gchar **uids, gpointer data)
+objects_removed_cb (EGdbusCalView *gdbus_calview, const gchar * const *uids, ECalView *view)
{
- ECalView *view;
GList *list;
- view = E_CAL_VIEW (data);
+ g_return_if_fail (E_IS_CAL_VIEW (view));
g_object_ref (view);
list = build_id_list (uids);
g_signal_emit (G_OBJECT (view), signals[OBJECTS_REMOVED], 0, list);
- while (list) {
- e_cal_component_free_id (list->data);
- list = g_list_delete_link (list, list);
- }
+ g_list_foreach (list, (GFunc) e_cal_component_free_id, NULL);
+ g_list_free (list);
g_object_unref (view);
}
static void
-progress_cb (DBusGProxy *proxy, const gchar *message, gint percent, gpointer data)
+progress_cb (EGdbusCalView *gdbus_calview, const gchar *message, guint percent, ECalView *view)
{
- ECalView *view;
-
- view = E_CAL_VIEW (data);
+ g_return_if_fail (E_IS_CAL_VIEW (view));
g_signal_emit (G_OBJECT (view), signals[VIEW_PROGRESS], 0, message, percent);
}
static void
-done_cb (DBusGProxy *proxy, ECalendarStatus status, const gchar *message, gpointer data)
+done_cb (EGdbusCalView *gdbus_calview, /* ECalendarStatus */ guint status, const gchar *message, ECalView *view)
{
- ECalView *view;
-
- view = E_CAL_VIEW (data);
+ g_return_if_fail (E_IS_CAL_VIEW (view));
#ifndef E_CAL_DISABLE_DEPRECATED
g_signal_emit (G_OBJECT (view), signals[VIEW_DONE], 0, status);
@@ -212,31 +193,15 @@ e_cal_view_set_property (GObject *object, guint property_id, const GValue *value
switch (property_id) {
case PROP_VIEW:
- if (priv->view_proxy != NULL)
- g_object_unref (priv->view_proxy);
-
- priv->view_proxy = g_object_ref (g_value_get_pointer (value));
-
- dbus_g_proxy_add_signal (priv->view_proxy, "ObjectsAdded", G_TYPE_STRV, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (priv->view_proxy, "ObjectsAdded", G_CALLBACK (objects_added_cb), view, NULL);
-
- dbus_g_proxy_add_signal (priv->view_proxy, "ObjectsModified", G_TYPE_STRV, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (priv->view_proxy, "ObjectsModified", G_CALLBACK (objects_modified_cb), view, NULL);
-
- dbus_g_proxy_add_signal (priv->view_proxy, "ObjectsRemoved", G_TYPE_STRV, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (priv->view_proxy, "ObjectsRemoved", G_CALLBACK (objects_removed_cb), view, NULL);
-
- dbus_g_object_register_marshaller (e_cal_marshal_VOID__STRING_UINT, G_TYPE_NONE, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_INVALID);
- dbus_g_proxy_add_signal (priv->view_proxy, "Progress", G_TYPE_STRING, G_TYPE_UINT, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (priv->view_proxy, "Progress", G_CALLBACK (progress_cb), view, NULL);
-
- dbus_g_object_register_marshaller (e_cal_marshal_VOID__UINT_STRING, G_TYPE_NONE, G_TYPE_UINT, G_TYPE_STRING, G_TYPE_INVALID);
- dbus_g_proxy_add_signal (priv->view_proxy, "Done", G_TYPE_UINT, G_TYPE_STRING, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (priv->view_proxy, "Done", G_CALLBACK (done_cb), view, NULL);
-
- break;
- case PROP_VIEW_LOCK:
- priv->view_proxy_lock = g_value_get_pointer (value);
+ if (priv->gdbus_calview != NULL)
+ g_object_unref (priv->gdbus_calview);
+
+ priv->gdbus_calview = g_object_ref (g_value_get_pointer (value));
+ g_signal_connect (priv->gdbus_calview, "objects-added", G_CALLBACK (objects_added_cb), view);
+ g_signal_connect (priv->gdbus_calview, "objects-modified", G_CALLBACK (objects_modified_cb), view);
+ g_signal_connect (priv->gdbus_calview, "objects-removed", G_CALLBACK (objects_removed_cb), view);
+ g_signal_connect (priv->gdbus_calview, "progress", G_CALLBACK (progress_cb), view);
+ g_signal_connect (priv->gdbus_calview, "done", G_CALLBACK (done_cb), view);
break;
case PROP_CLIENT:
priv->client = E_CAL (g_value_dup_object (value));
@@ -258,10 +223,7 @@ e_cal_view_get_property (GObject *object, guint property_id, GValue *value, GPar
switch (property_id) {
case PROP_VIEW:
- g_value_set_pointer (value, priv->view_proxy);
- break;
- case PROP_VIEW_LOCK:
- g_value_set_pointer (value, priv->view_proxy_lock);
+ g_value_set_pointer (value, priv->gdbus_calview);
break;
case PROP_CLIENT:
g_value_set_object (value, priv->client);
@@ -285,13 +247,13 @@ e_cal_view_finalize (GObject *object)
view = E_CAL_VIEW (object);
priv = view->priv;
- if (priv->view_proxy != NULL)
- g_object_unref (priv->view_proxy);
+ if (priv->gdbus_calview != NULL)
+ g_object_unref (priv->gdbus_calview);
g_object_unref (priv->client);
- if (G_OBJECT_CLASS (parent_class)->finalize)
- (* G_OBJECT_CLASS (parent_class)->finalize) (object);
+ if (G_OBJECT_CLASS (e_cal_view_parent_class)->finalize)
+ (* G_OBJECT_CLASS (e_cal_view_parent_class)->finalize) (object);
}
/* Class initialization function for the calendar view */
@@ -302,8 +264,6 @@ e_cal_view_class_init (ECalViewClass *klass)
object_class = (GObjectClass *) klass;
- parent_class = g_type_class_peek_parent (klass);
-
object_class->set_property = e_cal_view_set_property;
object_class->get_property = e_cal_view_get_property;
object_class->finalize = e_cal_view_finalize;
@@ -311,11 +271,7 @@ e_cal_view_class_init (ECalViewClass *klass)
g_type_class_add_private (klass, sizeof (ECalViewPrivate));
g_object_class_install_property (object_class, PROP_VIEW,
- g_param_spec_pointer ("view", "The DBus view proxy", NULL,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
-
- g_object_class_install_property (object_class, PROP_VIEW_LOCK,
- g_param_spec_pointer ("view-lock", "The DBus view proxy lock", NULL,
+ g_param_spec_pointer ("view", "The GDBus view proxy", NULL,
G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (object_class, PROP_CLIENT,
@@ -378,8 +334,8 @@ e_cal_view_class_init (ECalViewClass *klass)
/**
* _e_cal_view_new:
- * @corba_view: The CORBA object for the view.
* @client: An #ECal object.
+ * @gdbuc_calview: The GDBus object for the view.
*
* Creates a new view object by issuing the view creation request to the
* calendar server.
@@ -387,14 +343,13 @@ e_cal_view_class_init (ECalViewClass *klass)
* Returns: A newly-created view object, or NULL if the request failed.
**/
ECalView *
-_e_cal_view_new (ECal *client, DBusGProxy *view_proxy, GStaticRecMutex *connection_lock)
+_e_cal_view_new (ECal *client, EGdbusCalView *gdbus_calview)
{
ECalView *view;
view = g_object_new (E_TYPE_CAL_VIEW,
"client", client,
- "view", view_proxy,
- "view-lock", connection_lock,
+ "view", gdbus_calview,
NULL);
return view;
@@ -437,10 +392,8 @@ e_cal_view_start (ECalView *view)
priv = E_CAL_VIEW_GET_PRIVATE(view);
- if (priv->view_proxy) {
- LOCK_VIEW ();
- org_gnome_evolution_dataserver_calendar_CalView_start (priv->view_proxy, &error);
- UNLOCK_VIEW ();
+ if (priv->gdbus_calview) {
+ e_gdbus_cal_view_call_start_sync (priv->gdbus_calview, NULL, &error);
}
if (error) {
@@ -475,10 +428,8 @@ e_cal_view_stop (ECalView *view)
priv = E_CAL_VIEW_GET_PRIVATE(view);
- if (priv->view_proxy) {
- LOCK_VIEW ();
- org_gnome_evolution_dataserver_calendar_CalView_stop (priv->view_proxy, &error);
- UNLOCK_VIEW ();
+ if (priv->gdbus_calview) {
+ e_gdbus_cal_view_call_stop_sync (priv->gdbus_calview, NULL, &error);
}
if (error) {
diff --git a/calendar/libecal/e-cal.c b/calendar/libecal/e-cal.c
index 0b9e83f..b367a82 100644
--- a/calendar/libecal/e-cal.c
+++ b/calendar/libecal/e-cal.c
@@ -42,27 +42,24 @@
#include <libedataserver/e-url.h>
#include <libedataserver/e-data-server-util.h>
-#include <dbus/dbus-glib-lowlevel.h>
-#include <dbus/dbus.h>
-#include <dbus/dbus-glib.h>
#include <glib-object.h>
+#include "libedata-cal/e-data-cal-types.h"
+
#include "e-cal-check-timezones.h"
#include "e-cal-marshal.h"
#include "e-cal-time-util.h"
#include "e-cal-view-private.h"
#include "e-cal.h"
-#include "e-data-cal-factory-bindings.h"
-#include "e-data-cal-bindings.h"
-#include <libedata-cal/e-data-cal-types.h>
-static DBusGConnection *connection = NULL;
-static DBusGProxy *factory_proxy = NULL;
+#include "e-gdbus-egdbuscalfactory.h"
+#include "e-gdbus-egdbuscal.h"
+#include "e-gdbus-egdbuscalview.h"
-/* guards both connection and factory_proxy */
-static GStaticRecMutex connection_lock = G_STATIC_REC_MUTEX_INIT;
-#define LOCK_CONN() g_static_rec_mutex_lock (&connection_lock)
-#define UNLOCK_CONN() g_static_rec_mutex_unlock (&connection_lock)
+static EGdbusCalFactory *cal_factory_proxy = NULL;
+static GStaticRecMutex cal_factory_proxy_lock = G_STATIC_REC_MUTEX_INIT;
+#define LOCK_FACTORY() g_static_rec_mutex_lock (&cal_factory_proxy_lock)
+#define UNLOCK_FACTORY() g_static_rec_mutex_unlock (&cal_factory_proxy_lock)
G_DEFINE_TYPE(ECal, e_cal, G_TYPE_OBJECT)
#define E_CAL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), E_TYPE_CAL, ECalPrivate))
@@ -99,7 +96,7 @@ struct _ECalPrivate {
gboolean read_only;
- DBusGProxy *proxy;
+ EGdbusCal *gdbus_cal;
/* The authentication function */
ECalAuthFunc auth_func;
@@ -204,7 +201,7 @@ e_calendar_error_quark (void)
* Otherwise return CORBA_EXCEPTION (I know this is DBus...).
*/
static ECalendarStatus
-get_status_from_error (GError *error)
+get_status_from_error (const GError *error)
{
#define err(a,b) "org.gnome.evolution.dataserver.calendar.Cal." a, b
static struct {
@@ -242,17 +239,22 @@ get_status_from_error (GError *error)
if G_LIKELY (error == NULL)
return Success;
- if (error->domain == DBUS_GERROR && error->code == DBUS_GERROR_REMOTE_EXCEPTION) {
- const gchar *name;
+ if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_DBUS_ERROR)) {
+ gchar *name;
gint i;
- name = dbus_g_error_get_name (error);
+ name = g_dbus_error_get_remote_error (error);
+
for (i = 0; i < G_N_ELEMENTS (errors); i++) {
- if (g_ascii_strcasecmp (errors[i].name, name) == 0)
+ if (g_ascii_strcasecmp (errors[i].name, name) == 0) {
+ g_free (name);
return errors[i].err_code;
+ }
}
g_warning ("Unmatched error name %s", name);
+ g_free (name);
+
return E_CALENDAR_STATUS_OTHER_ERROR;
} else if (error->domain == E_CALENDAR_ERROR) {
return error->code;
@@ -268,18 +270,24 @@ get_status_from_error (GError *error)
* alone.
*/
static gboolean
-unwrap_gerror(GError **error)
+unwrap_gerror (GError **error)
{
if (*error == NULL)
return TRUE;
- if ((*error)->domain == DBUS_GERROR && (*error)->code == DBUS_GERROR_REMOTE_EXCEPTION) {
+
+ if (g_error_matches (*error, G_IO_ERROR, G_IO_ERROR_DBUS_ERROR)) {
GError *new_error = NULL;
gint code;
+
code = get_status_from_error (*error);
+ g_dbus_error_strip_remote_error (*error);
+
new_error = g_error_new_literal (E_CALENDAR_ERROR, code, (*error)->message);
+
g_error_free (*error);
*error = new_error;
}
+
return FALSE;
}
@@ -400,7 +408,7 @@ e_cal_init (ECal *ecal)
priv->alarm_email_address = NULL;
priv->ldap_attribute = NULL;
priv->capabilities = NULL;
- priv->proxy = NULL;
+ priv->gdbus_cal = NULL;
priv->timezones = g_hash_table_new (g_str_hash, g_str_equal);
priv->default_zone = icaltimezone_get_utc_timezone ();
}
@@ -409,7 +417,7 @@ e_cal_init (ECal *ecal)
* Called when the calendar server dies.
*/
static void
-proxy_destroyed (gpointer data, GObject *object)
+gdbus_cal_destroyed_cb (gpointer data, GObject *object)
{
ECal *ecal = data;
ECalPrivate *priv;
@@ -421,11 +429,11 @@ proxy_destroyed (gpointer data, GObject *object)
g_warning (G_STRLOC ": e-d-s proxy died");
/* Ensure that everything relevant is reset */
- LOCK_CONN ();
- factory_proxy = NULL;
- priv->proxy = NULL;
+ LOCK_FACTORY ();
+ cal_factory_proxy = NULL;
+ priv->gdbus_cal = NULL;
priv->load_state = E_CAL_LOAD_NOT_LOADED;
- UNLOCK_CONN ();
+ UNLOCK_FACTORY ();
g_signal_emit (G_OBJECT (ecal), e_cal_signals [BACKEND_DIED], 0);
}
@@ -440,17 +448,18 @@ e_cal_dispose (GObject *object)
ecal = E_CAL (object);
priv = ecal->priv;
- if (priv->proxy) {
+ if (priv->gdbus_cal) {
GError *error = NULL;
- g_object_weak_unref (G_OBJECT (priv->proxy), proxy_destroyed, ecal);
- LOCK_CONN ();
- org_gnome_evolution_dataserver_calendar_Cal_close (priv->proxy, &error);
- g_object_unref (priv->proxy);
- priv->proxy = NULL;
- UNLOCK_CONN ();
+ g_object_weak_unref (G_OBJECT (priv->gdbus_cal), gdbus_cal_destroyed_cb, ecal);
+
+ e_gdbus_cal_call_close_sync (priv->gdbus_cal, NULL, &error);
+ g_object_unref (priv->gdbus_cal);
+ priv->gdbus_cal = NULL;
if (error) {
+ unwrap_gerror (&error);
+
g_warning ("%s: Failed to close calendar, %s\n", G_STRFUNC, error->message);
g_error_free (error);
}
@@ -591,79 +600,40 @@ e_cal_class_init (ECalClass *klass)
g_type_class_add_private (klass, sizeof (ECalPrivate));
}
-static DBusHandlerResult
-filter_dbus_msgs_cb (DBusConnection *pconnection, DBusMessage *message, gpointer user_data)
-{
- if (dbus_message_is_signal (message, DBUS_INTERFACE_LOCAL, "Disconnected")) {
- DBusGConnection *conn = connection;
-
- LOCK_CONN ();
- factory_proxy = NULL;
- connection = NULL;
- UNLOCK_CONN ();
- dbus_g_connection_unref (conn);
- return DBUS_HANDLER_RESULT_HANDLED;
- }
-
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-}
-
static void
-factory_proxy_destroy_cb (DBusGProxy *proxy, gpointer user_data)
+cal_factory_proxy_destroyed_cb (gpointer user_data, GObject *what)
{
- LOCK_CONN ();
- factory_proxy = NULL;
- UNLOCK_CONN ();
+ LOCK_FACTORY ();
+ cal_factory_proxy = NULL;
+ UNLOCK_FACTORY ();
}
/* one-time start up for libecal */
static gboolean
-e_cal_activate(GError **error)
+e_cal_activate (GError **error)
{
- DBusError derror;
-
- LOCK_CONN ();
- if (G_LIKELY (factory_proxy)) {
- UNLOCK_CONN ();
+ LOCK_FACTORY ();
+ if (G_LIKELY (cal_factory_proxy)) {
+ UNLOCK_FACTORY ();
return TRUE;
}
- if (!connection) {
- connection = dbus_g_bus_get (DBUS_BUS_SESSION, error);
- if (!connection) {
- UNLOCK_CONN ();
- return FALSE;
- }
-
- dbus_connection_add_filter (dbus_g_connection_get_connection (connection), filter_dbus_msgs_cb, NULL, NULL);
- }
+ cal_factory_proxy = e_gdbus_cal_factory_proxy_new_for_bus_sync (
+ G_BUS_TYPE_SESSION,
+ G_DBUS_PROXY_FLAGS_NONE,
+ "org.gnome.evolution.dataserver.Calendar",
+ "/org/gnome/evolution/dataserver/calendar/CalFactory",
+ NULL,
+ error);
- dbus_error_init (&derror);
- if (!dbus_bus_start_service_by_name (dbus_g_connection_get_connection (connection),
- "org.gnome.evolution.dataserver.Calendar",
- 0, NULL, &derror))
- {
- dbus_set_g_error (error, &derror);
- dbus_error_free (&derror);
- UNLOCK_CONN ();
+ if (!cal_factory_proxy) {
+ UNLOCK_FACTORY ();
return FALSE;
}
- if (!factory_proxy) {
- factory_proxy = dbus_g_proxy_new_for_name_owner (connection,
- "org.gnome.evolution.dataserver.Calendar",
- "/org/gnome/evolution/dataserver/calendar/CalFactory",
- "org.gnome.evolution.dataserver.calendar.CalFactory",
- error);
- if (!factory_proxy) {
- UNLOCK_CONN ();
- return FALSE;
- }
-
- g_signal_connect (factory_proxy, "destroy", G_CALLBACK (factory_proxy_destroy_cb), NULL);
- }
+ g_object_weak_ref (G_OBJECT (cal_factory_proxy), cal_factory_proxy_destroyed_cb, NULL);
- UNLOCK_CONN ();
+ UNLOCK_FACTORY ();
return TRUE;
}
@@ -689,46 +659,13 @@ reopen_with_auth (gpointer data)
}
static void
-auth_required_cb (DBusGProxy *proxy, ECal *cal)
+auth_required_cb (EGdbusCal *gdbus_cal, ECal *cal)
{
g_return_if_fail (E_IS_CAL (cal));
- g_idle_add (reopen_with_auth, (gpointer)cal);
+ g_idle_add (reopen_with_auth, (gpointer) cal);
}
-static void
-mode_cb (DBusGProxy *proxy, EDataCalMode mode, ECal *cal)
-{
- g_return_if_fail (E_IS_CAL (cal));
- g_return_if_fail (mode & AnyMode);
-
- g_signal_emit (G_OBJECT (cal), e_cal_signals[CAL_SET_MODE],
- 0, E_CALENDAR_STATUS_OK, mode);
-}
-
-static void
-readonly_cb (DBusGProxy *proxy, gboolean read_only, ECal *cal)
-{
- ECalPrivate *priv;
-
- g_return_if_fail (cal && E_IS_CAL (cal));
-
- priv = cal->priv;
- priv->read_only = read_only;
-}
-
-/*
-static void
-backend_died_cb (EComponentListener *cl, gpointer user_data)
-{
- ECalPrivate *priv;
- ECal *ecal = (ECal *) user_data;
-
- priv = ecal->priv;
- priv->load_state = E_CAL_LOAD_NOT_LOADED;
- g_signal_emit (G_OBJECT (ecal), e_cal_signals[BACKEND_DIED], 0);
-}*/
-
typedef struct
{
ECal *ecal;
@@ -751,7 +688,7 @@ backend_error_idle_cb (gpointer data)
/* Handle the error_occurred signal from the listener */
static void
-backend_error_cb (DBusGProxy *proxy, const gchar *message, ECal *ecal)
+backend_error_cb (EGdbusCal *gdbus_cal, const gchar *message, ECal *ecal)
{
ECalErrorData *error_data;
@@ -766,19 +703,51 @@ backend_error_cb (DBusGProxy *proxy, const gchar *message, ECal *ecal)
}
static void
+readonly_cb (EGdbusCal *gdbus_cal, gboolean read_only, ECal *cal)
+{
+ ECalPrivate *priv;
+
+ g_return_if_fail (cal && E_IS_CAL (cal));
+
+ priv = cal->priv;
+ priv->read_only = read_only;
+}
+
+static void
+mode_cb (EGdbusCal *gdbus_cal, EDataCalMode mode, ECal *cal)
+{
+ g_return_if_fail (E_IS_CAL (cal));
+ g_return_if_fail (mode & AnyMode);
+
+ g_signal_emit (G_OBJECT (cal), e_cal_signals[CAL_SET_MODE],
+ 0, E_CALENDAR_STATUS_OK, mode);
+}
+
+/*
+static void
+backend_died_cb (EComponentListener *cl, gpointer user_data)
+{
+ ECalPrivate *priv;
+ ECal *ecal = (ECal *) user_data;
+
+ priv = ecal->priv;
+ priv->load_state = E_CAL_LOAD_NOT_LOADED;
+ g_signal_emit (G_OBJECT (ecal), e_cal_signals[BACKEND_DIED], 0);
+}*/
+
+static void
set_local_attachment_store (ECal *ecal)
{
gchar *cache_dir = NULL;
GError *error = NULL;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_calendar_Cal_get_cache_dir (
- ecal->priv->proxy, &cache_dir, &error);
- UNLOCK_CONN ();
+ e_gdbus_cal_call_get_cache_dir_sync (
+ ecal->priv->gdbus_cal, &cache_dir, NULL, &error);
if (error == NULL)
ecal->priv->local_attachment_store = cache_dir;
else {
+ unwrap_gerror (&error);
g_warning ("%s", error->message);
g_error_free (error);
}
@@ -807,8 +776,10 @@ e_cal_new (ESource *source, ECalSourceType type)
g_return_val_if_fail (type < E_CAL_SOURCE_TYPE_LAST, NULL);
if (!e_cal_activate (&error)) {
+ unwrap_gerror (&error);
g_warning("Cannot activate ECal: %s\n", error ? error->message : "Unknown error");
- g_error_free (error);
+ if (error)
+ g_error_free (error);
return NULL;
}
@@ -820,41 +791,45 @@ e_cal_new (ESource *source, ECalSourceType type)
priv->type = type;
xml = e_source_to_standalone_xml (priv->source);
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_CalFactory_get_cal (factory_proxy, xml, convert_type (priv->type), &path, &error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_factory_call_get_cal_sync (cal_factory_proxy, xml, convert_type (priv->type), &path, NULL, &error)) {
g_free (xml);
+ unwrap_gerror (&error);
g_warning ("Cannot get cal from factory: %s", error ? error->message : "Unknown error");
- g_error_free (error);
+ if (error)
+ g_error_free (error);
g_object_unref (ecal);
return NULL;
}
g_free (xml);
- priv->proxy = dbus_g_proxy_new_for_name_owner (connection,
- "org.gnome.evolution.dataserver.Calendar", path,
- "org.gnome.evolution.dataserver.calendar.Cal",
- &error);
-
- UNLOCK_CONN ();
-
- if (!priv->proxy)
+ priv->gdbus_cal = e_gdbus_cal_proxy_new_sync (g_dbus_proxy_get_connection (G_DBUS_PROXY (cal_factory_proxy)),
+ G_DBUS_PROXY_FLAGS_NONE,
+ "org.gnome.evolution.dataserver.Calendar",
+ path,
+ NULL,
+ &error);
+
+ if (!priv->gdbus_cal) {
+ g_free (path);
+ unwrap_gerror (&error);
+ g_warning ("Cannot create cal proxy: %s", error ? error->message : "Unknown error");
+ if (error)
+ g_error_free (error);
+ g_object_unref (ecal);
return NULL;
+ }
- g_object_weak_ref (G_OBJECT (priv->proxy), proxy_destroyed, ecal);
-
- dbus_g_proxy_add_signal (priv->proxy, "auth_required", G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (priv->proxy, "auth_required", G_CALLBACK (auth_required_cb), ecal, NULL);
- dbus_g_proxy_add_signal (priv->proxy, "backend_error", G_TYPE_STRING, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (priv->proxy, "backend_error", G_CALLBACK (backend_error_cb), ecal, NULL);
- dbus_g_proxy_add_signal (priv->proxy, "readonly", G_TYPE_BOOLEAN, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (priv->proxy, "readonly", G_CALLBACK (readonly_cb), ecal, NULL);
- dbus_g_proxy_add_signal (priv->proxy, "mode", G_TYPE_INT, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (priv->proxy, "mode", G_CALLBACK (mode_cb), ecal, NULL);
+ g_object_weak_ref (G_OBJECT (priv->gdbus_cal), gdbus_cal_destroyed_cb, ecal);
+ g_signal_connect (priv->gdbus_cal, "auth-required", G_CALLBACK (auth_required_cb), ecal);
+ g_signal_connect (priv->gdbus_cal, "backend-error", G_CALLBACK (backend_error_cb), ecal);
+ g_signal_connect (priv->gdbus_cal, "readonly", G_CALLBACK (readonly_cb), ecal);
+ g_signal_connect (priv->gdbus_cal, "mode", G_CALLBACK (mode_cb), ecal);
/* Set the local attachment store path for the calendar */
set_local_attachment_store (ecal);
+ g_free (path);
+
return ecal;
}
@@ -1065,27 +1040,23 @@ build_pass_key (ECal *ecal)
}
static void
-async_signal_idle_cb (DBusGProxy *proxy, GError *error, gpointer user_data)
+async_open_report_result (ECal *ecal, const GError *error)
{
- ECal *ecal;
#ifndef E_CAL_DISABLE_DEPRECATED
ECalendarStatus status;
#endif
- ecal = E_CAL (user_data);
-
g_return_if_fail (ecal && E_IS_CAL (ecal));
if (error) {
#ifndef E_CAL_DISABLE_DEPRECATED
status = get_status_from_error (error);
-
} else {
status = E_CALENDAR_STATUS_OK;
+ #else
+ } else {
#endif
- LOCK_CONN ();
- org_gnome_evolution_dataserver_calendar_Cal_is_read_only (ecal->priv->proxy, NULL);
- UNLOCK_CONN ();
+ e_gdbus_cal_call_is_read_only_sync (ecal->priv->gdbus_cal, NULL, NULL);
}
#ifndef E_CAL_DISABLE_DEPRECATED
@@ -1094,6 +1065,21 @@ async_signal_idle_cb (DBusGProxy *proxy, GError *error, gpointer user_data)
g_signal_emit (G_OBJECT (ecal), e_cal_signals[CAL_OPENED_EX], 0, error);
}
+static void
+async_open_ready_cb (EGdbusCal *gdbus_cal, GAsyncResult *res, ECal *ecal)
+{
+ GError *error = NULL;
+
+ g_return_if_fail (ecal && E_IS_CAL (ecal));
+
+ e_gdbus_cal_call_open_finish (gdbus_cal, res, &error);
+
+ async_open_report_result (ecal, error);
+
+ if (error)
+ g_error_free (error);
+}
+
static gboolean
open_calendar (ECal *ecal, gboolean only_if_exists, GError **error,
#ifndef E_CAL_DISABLE_DEPRECATED
@@ -1109,7 +1095,7 @@ open_calendar (ECal *ecal, gboolean only_if_exists, GError **error,
e_return_error_if_fail (ecal != NULL, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
if (!needs_auth && priv->load_state == E_CAL_LOAD_LOADED) {
return TRUE;
@@ -1188,21 +1174,13 @@ open_calendar (ECal *ecal, gboolean only_if_exists, GError **error,
*status = E_CALENDAR_STATUS_OK;
#endif
if (!async) {
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_open (priv->proxy, only_if_exists, username ? username : "", password ? password : "", error)) {
+ if (!e_gdbus_cal_call_open_sync (priv->gdbus_cal, only_if_exists, username ? username : "", password ? password : "", NULL, error)) {
#ifndef E_CAL_DISABLE_DEPRECATED
*status = E_CALENDAR_STATUS_DBUS_EXCEPTION;
#endif
}
- UNLOCK_CONN ();
} else {
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_open_async (priv->proxy, only_if_exists, username ? username : "", password ? password : "", async_signal_idle_cb, ecal)) {
- #ifndef E_CAL_DISABLE_DEPRECATED
- *status = E_CALENDAR_STATUS_DBUS_EXCEPTION;
- #endif
- }
- UNLOCK_CONN ();
+ e_gdbus_cal_call_open (priv->gdbus_cal, only_if_exists, username ? username : "", password ? password : "", NULL, (GAsyncReadyCallback) async_open_ready_cb, ecal);
}
g_free (password);
@@ -1214,9 +1192,7 @@ open_calendar (ECal *ecal, gboolean only_if_exists, GError **error,
if (!async) {
GError *err = NULL;
- LOCK_CONN ();
- org_gnome_evolution_dataserver_calendar_Cal_is_read_only (priv->proxy, &err);
- UNLOCK_CONN ();
+ e_gdbus_cal_call_is_read_only_sync (ecal->priv->gdbus_cal, NULL, &err);
if (err)
g_error_free (err);
@@ -1285,7 +1261,7 @@ idle_async_error_reply_cb (gpointer user_data)
g_return_val_if_fail (data->ecal != NULL, FALSE);
g_return_val_if_fail (data->error != NULL, FALSE);
- async_signal_idle_cb (NULL, data->error, data->ecal);
+ async_open_report_result (data->ecal, data->error);
g_object_unref (data->ecal);
g_error_free (data->error);
@@ -1381,14 +1357,11 @@ e_cal_refresh (ECal *ecal, GError **error)
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_refresh (priv->proxy, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_refresh_sync (priv->gdbus_cal, NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
return TRUE;
}
@@ -1409,14 +1382,11 @@ e_cal_remove (ECal *ecal, GError **error)
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_remove (priv->proxy, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_remove_sync (priv->gdbus_cal, NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
return TRUE;
}
@@ -1643,21 +1613,18 @@ e_cal_get_cal_address (ECal *ecal, gchar **cal_address, GError **error)
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (cal_address != NULL, E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
*cal_address = NULL;
if (priv->cal_address == NULL) {
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
if (priv->load_state != E_CAL_LOAD_LOADED) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
}
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_get_cal_address (priv->proxy, cal_address, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_get_cal_address_sync (priv->gdbus_cal, cal_address, NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
} else {
*cal_address = g_strdup (priv->cal_address);
}
@@ -1684,19 +1651,16 @@ e_cal_get_alarm_email_address (ECal *ecal, gchar **alarm_address, GError **error
e_return_error_if_fail (alarm_address != NULL, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
*alarm_address = NULL;
if (priv->load_state != E_CAL_LOAD_LOADED) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
}
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_get_alarm_email_address (priv->proxy, alarm_address, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_get_alarm_email_address_sync (priv->gdbus_cal, alarm_address, NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
return TRUE;
}
@@ -1720,19 +1684,16 @@ e_cal_get_ldap_attribute (ECal *ecal, gchar **ldap_attribute, GError **error)
e_return_error_if_fail (ldap_attribute != NULL, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
*ldap_attribute = NULL;
if (priv->load_state != E_CAL_LOAD_LOADED) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
}
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_get_ldap_attribute (priv->proxy, ldap_attribute, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_get_ldap_attribute_sync (priv->gdbus_cal, ldap_attribute, NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
return TRUE;
}
@@ -1743,7 +1704,7 @@ load_static_capabilities (ECal *ecal, GError **error)
ECalPrivate *priv;
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
if (priv->capabilities)
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_OK, error);
@@ -1752,12 +1713,9 @@ load_static_capabilities (ECal *ecal, GError **error)
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
}
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_get_scheduling_information (priv->proxy, &priv->capabilities, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_get_scheduling_information_sync (priv->gdbus_cal, &priv->capabilities, NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
return TRUE;
}
@@ -1923,17 +1881,16 @@ e_cal_set_mode (ECal *ecal, CalMode mode)
g_return_val_if_fail (mode & CAL_MODE_ANY, FALSE);
priv = ecal->priv;
- g_return_val_if_fail (priv->proxy, FALSE);
+ g_return_val_if_fail (priv->gdbus_cal, FALSE);
g_return_val_if_fail (priv->load_state == E_CAL_LOAD_LOADED, FALSE);
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_set_mode (priv->proxy, mode, &error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_set_mode_sync (priv->gdbus_cal, mode, NULL, &error)) {
+ unwrap_gerror (&error);
g_printerr ("%s: %s\n", G_STRFUNC, error ? error->message : "Unknown error");
- g_error_free (error);
+ if (error)
+ g_error_free (error);
return FALSE;
}
- UNLOCK_CONN ();
return TRUE;
}
@@ -1970,19 +1927,16 @@ e_cal_get_default_object (ECal *ecal, icalcomponent **icalcomp, GError **error)
e_return_error_if_fail (icalcomp != NULL, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
*icalcomp = NULL;
if (priv->load_state != E_CAL_LOAD_LOADED) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
}
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_get_default_object (priv->proxy, &object, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_get_default_object_sync (priv->gdbus_cal, &object, NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
if (object) {
*icalcomp = icalparser_parse_string (object);
@@ -2024,19 +1978,16 @@ e_cal_get_attachments_for_comp (ECal *ecal, const gchar *uid, const gchar *rid,
e_return_error_if_fail (list != NULL, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
*list = NULL;
if (priv->load_state != E_CAL_LOAD_LOADED) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
}
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_get_attachment_list (priv->proxy, uid, rid ? rid: "", &list_array, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_get_attachment_list_sync (priv->gdbus_cal, uid, rid ? rid: "", &list_array, NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
if (list_array) {
gchar **string;
@@ -2077,19 +2028,16 @@ e_cal_get_object (ECal *ecal, const gchar *uid, const gchar *rid, icalcomponent
e_return_error_if_fail (icalcomp != NULL, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
*icalcomp = NULL;
if (priv->load_state != E_CAL_LOAD_LOADED) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
}
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_get_object (priv->proxy, uid, rid ? rid : "", &object, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_get_object_sync (priv->gdbus_cal, uid, rid ? rid : "", &object, NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
status = E_CALENDAR_STATUS_OK;
tmp_icalcomp = icalparser_parse_string (object);
@@ -2157,19 +2105,16 @@ e_cal_get_objects_for_uid (ECal *ecal, const gchar *uid, GList **objects, GError
e_return_error_if_fail (objects != NULL, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
*objects = NULL;
if (priv->load_state != E_CAL_LOAD_LOADED) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
}
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_get_object (priv->proxy, uid, "", &object, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_get_object_sync (priv->gdbus_cal, uid, "", &object, NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
status = E_CALENDAR_STATUS_OK;
{
@@ -2269,25 +2214,22 @@ gboolean
e_cal_get_changes (ECal *ecal, const gchar *change_id, GList **changes, GError **error)
{
ECalPrivate *priv;
- gchar **additions, **modifications, **removals;
+ gchar **additions = NULL, **modifications = NULL, **removals = NULL;
e_return_error_if_fail (changes != NULL, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (change_id != NULL, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
*changes = NULL;
if (priv->load_state != E_CAL_LOAD_LOADED) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
}
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_get_changes (priv->proxy, change_id, &additions, &modifications, &removals, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_get_changes_sync (priv->gdbus_cal, change_id, &additions, &modifications, &removals, NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
/* TODO: Be more elegant and split this into a function */
/* Mostly copied from the old e-cal-listener.c */
@@ -2329,9 +2271,17 @@ e_cal_get_changes (ECal *ecal, const gchar *change_id, GList **changes, GError *
*changes = g_list_append (*changes, change);
}
}
- }
- else
+
+ g_strfreev (additions);
+ g_strfreev (modifications);
+ g_strfreev (removals);
+ } else {
+ g_strfreev (additions);
+ g_strfreev (modifications);
+ g_strfreev (removals);
+
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_OTHER_ERROR, error);
+ }
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_OK, error);
}
@@ -2385,19 +2335,16 @@ e_cal_get_object_list (ECal *ecal, const gchar *query, GList **objects, GError *
e_return_error_if_fail (query, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
*objects = NULL;
if (priv->load_state != E_CAL_LOAD_LOADED) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
}
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_get_object_list (priv->proxy, query, &object_array, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_get_object_list_sync (priv->gdbus_cal, query, &object_array, NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
if (object_array) {
icalcomponent *comp;
@@ -2407,6 +2354,9 @@ e_cal_get_object_list (ECal *ecal, const gchar *query, GList **objects, GError *
if (!comp) continue;
*objects = g_list_prepend (*objects, comp);
}
+
+ g_strfreev (object_array);
+
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_OK, error);
}
else
@@ -2532,7 +2482,7 @@ e_cal_get_free_busy (ECal *ecal, GList *users, time_t start, time_t end,
e_return_error_if_fail (freebusy != NULL, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
*freebusy = NULL;
if (priv->load_state != E_CAL_LOAD_LOADED) {
@@ -2543,17 +2493,14 @@ e_cal_get_free_busy (ECal *ecal, GList *users, time_t start, time_t end,
for (l = users, i = 0; l; l = l->next, i++)
users_list[i] = g_strdup (l->data);
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_get_free_busy (priv->proxy, (const gchar **)users_list, start, end, &freebusy_array, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_get_free_busy_sync (priv->gdbus_cal, (const gchar * const *) users_list, start, end, &freebusy_array, NULL, error)) {
g_strfreev (users_list);
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
g_strfreev (users_list);
if (freebusy_array) {
- *freebusy = build_free_busy_list ((const gchar **)freebusy_array);
+ *freebusy = build_free_busy_list ((const gchar **) freebusy_array);
g_strfreev (freebusy_array);
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_OK, error);
} else
@@ -2779,6 +2726,7 @@ try_again:
goto try_again;
}
+ unwrap_gerror (&error);
g_message ("Failed to get recurrence objects for uid %s \n", error ? error->message : "Unknown error");
g_clear_error (&error);
return;
@@ -3265,13 +3213,13 @@ e_cal_discard_alarm (ECal *ecal, ECalComponent *comp, const gchar *auid, GError
ECalPrivate *priv;
const gchar *uid;
- g_return_val_if_fail (ecal != NULL, FALSE);
- g_return_val_if_fail (E_IS_CAL (ecal), FALSE);
- g_return_val_if_fail (comp != NULL, FALSE);
- g_return_val_if_fail (E_IS_CAL_COMPONENT (comp), FALSE);
- g_return_val_if_fail (auid != NULL, FALSE);
+ e_return_error_if_fail (ecal != NULL, E_CALENDAR_STATUS_INVALID_ARG);
+ e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
+ e_return_error_if_fail (comp != NULL, E_CALENDAR_STATUS_INVALID_ARG);
+ e_return_error_if_fail (E_IS_CAL_COMPONENT (comp), E_CALENDAR_STATUS_INVALID_ARG);
+ e_return_error_if_fail (auid != NULL, E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
if (priv->load_state != E_CAL_LOAD_LOADED) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
@@ -3279,12 +3227,9 @@ e_cal_discard_alarm (ECal *ecal, ECalComponent *comp, const gchar *auid, GError
e_cal_component_get_uid (comp, &uid);
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_discard_alarm (priv->proxy, uid, auid, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_discard_alarm_sync (priv->gdbus_cal, uid ? uid : "", auid, NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_OK, error);
}
@@ -3478,20 +3423,17 @@ e_cal_create_object (ECal *ecal, icalcomponent *icalcomp, gchar **uid, GError **
e_return_error_if_fail (icalcomp != NULL, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (icalcomponent_is_valid (icalcomp), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
if (priv->load_state != E_CAL_LOAD_LOADED) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
}
obj = icalcomponent_as_ical_string_r (icalcomp);
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_create_object (priv->proxy, obj, &muid, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_create_object_sync (priv->gdbus_cal, obj, &muid, NULL, error)) {
g_free (obj);
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
g_free (obj);
@@ -3537,20 +3479,17 @@ e_cal_modify_object (ECal *ecal, icalcomponent *icalcomp, CalObjModType mod, GEr
e_return_error_if_fail (icalcomponent_is_valid (icalcomp), E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (mod & CALOBJ_MOD_ALL, E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
if (priv->load_state != E_CAL_LOAD_LOADED) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
}
obj = icalcomponent_as_ical_string_r (icalcomp);
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_modify_object (priv->proxy, obj, mod, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_modify_object_sync (priv->gdbus_cal, obj, mod, NULL, error)) {
g_free (obj);
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
g_free (obj);
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_OK, error);
@@ -3585,18 +3524,15 @@ e_cal_remove_object_with_mod (ECal *ecal, const gchar *uid,
e_return_error_if_fail (uid, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (mod & CALOBJ_MOD_ALL, E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
if (priv->load_state != E_CAL_LOAD_LOADED) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
}
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_remove_object (priv->proxy, uid, rid ? rid : "", mod, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_remove_object_sync (priv->gdbus_cal, uid, rid ? rid : "", mod, NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_OK, error);
}
@@ -3643,18 +3579,15 @@ e_cal_receive_objects (ECal *ecal, icalcomponent *icalcomp, GError **error)
e_return_error_if_fail (icalcomp, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (icalcomponent_is_valid (icalcomp), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
if (priv->load_state != E_CAL_LOAD_LOADED) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
}
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_receive_objects (priv->proxy, icalcomponent_as_ical_string (icalcomp), error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_receive_objects_sync (priv->gdbus_cal, icalcomponent_as_ical_string (icalcomp), NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_OK, error);
}
@@ -3687,7 +3620,7 @@ e_cal_send_objects (ECal *ecal, icalcomponent *icalcomp, GList **users, icalcomp
e_return_error_if_fail (icalcomponent_is_valid (icalcomp), E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
*users = NULL;
*modified_icalcomp = NULL;
@@ -3695,12 +3628,9 @@ e_cal_send_objects (ECal *ecal, icalcomponent *icalcomp, GList **users, icalcomp
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
}
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_send_objects (priv->proxy, icalcomponent_as_ical_string (icalcomp), &users_array, &object, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_send_objects_sync (priv->gdbus_cal, icalcomponent_as_ical_string (icalcomp), &users_array, &object, NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
status = E_CALENDAR_STATUS_OK;
if (users_array) {
@@ -3741,7 +3671,7 @@ e_cal_get_timezone (ECal *ecal, const gchar *tzid, icaltimezone **zone, GError *
e_return_error_if_fail (zone, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
*zone = NULL;
if (priv->load_state != E_CAL_LOAD_LOADED) {
@@ -3776,12 +3706,9 @@ e_cal_get_timezone (ECal *ecal, const gchar *tzid, icaltimezone **zone, GError *
systzid = e_cal_match_tzid (tzid);
if (!systzid) {
/* call the backend */
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_get_timezone (priv->proxy, tzid, &object, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_get_timezone_sync (priv->gdbus_cal, tzid, &object, NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
icalcomp = icalparser_parse_string (object);
if (!icalcomp)
@@ -3853,7 +3780,7 @@ e_cal_add_timezone (ECal *ecal, icaltimezone *izone, GError **error)
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (izone, E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
if (priv->load_state != E_CAL_LOAD_LOADED) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
@@ -3874,13 +3801,10 @@ e_cal_add_timezone (ECal *ecal, icaltimezone *izone, GError **error)
tzobj = icalcomponent_as_ical_string_r (icalcomp);
/* call the backend */
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_add_timezone (priv->proxy, tzobj, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_add_timezone_sync (priv->gdbus_cal, tzobj, NULL, error)) {
g_free (tzobj);
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
g_free (tzobj);
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_OK, error);
@@ -3904,43 +3828,40 @@ e_cal_get_query (ECal *ecal, const gchar *sexp, ECalView **query, GError **error
ECalPrivate *priv;
ECalendarStatus status;
gchar *query_path;
- DBusGProxy *query_proxy;
+ EGdbusCalView *gdbus_calview;
e_return_error_if_fail (sexp, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (query, E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
*query = NULL;
if (priv->load_state != E_CAL_LOAD_LOADED) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
}
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_get_query (priv->proxy, sexp, &query_path, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_get_query_sync (priv->gdbus_cal, sexp, &query_path, NULL, error)) {
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
status = E_CALENDAR_STATUS_OK;
- LOCK_CONN ();
- query_proxy = dbus_g_proxy_new_for_name_owner (connection,
- "org.gnome.evolution.dataserver.Calendar", query_path,
- "org.gnome.evolution.dataserver.calendar.CalView", error);
- UNLOCK_CONN ();
+ gdbus_calview = e_gdbus_cal_view_proxy_new_sync (g_dbus_proxy_get_connection (G_DBUS_PROXY (cal_factory_proxy)),
+ G_DBUS_PROXY_FLAGS_NONE,
+ "org.gnome.evolution.dataserver.Calendar",
+ query_path,
+ NULL,
+ error);
- if (!query_proxy) {
+ if (!gdbus_calview) {
*query = NULL;
status = E_CALENDAR_STATUS_OTHER_ERROR;
} else {
- *query = _e_cal_view_new (ecal, query_proxy, &connection_lock);
+ *query = _e_cal_view_new (ecal, gdbus_calview);
+ g_object_unref (gdbus_calview);
}
- g_object_unref (query_proxy);
-
E_CALENDAR_CHECK_STATUS (status, error);
}
@@ -3965,7 +3886,7 @@ e_cal_set_default_timezone (ECal *ecal, icaltimezone *zone, GError **error)
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
e_return_error_if_fail (zone, E_CALENDAR_STATUS_INVALID_ARG);
priv = ecal->priv;
- e_return_error_if_fail (priv->proxy, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
+ e_return_error_if_fail (priv->gdbus_cal, E_CALENDAR_STATUS_REPOSITORY_OFFLINE);
/* If the same timezone is already set, we don't have to do anything. */
if (priv->default_zone == zone)
@@ -3981,13 +3902,10 @@ e_cal_set_default_timezone (ECal *ecal, icaltimezone *zone, GError **error)
tzobj = icalcomponent_as_ical_string_r (icalcomp);
/* call the backend */
- LOCK_CONN ();
- if (!org_gnome_evolution_dataserver_calendar_Cal_set_default_timezone (priv->proxy, tzobj, error)) {
- UNLOCK_CONN ();
+ if (!e_gdbus_cal_call_set_default_timezone_sync (priv->gdbus_cal, tzobj, NULL, error)) {
g_free (tzobj);
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_DBUS_EXCEPTION, error);
}
- UNLOCK_CONN ();
g_free (tzobj);
priv->default_zone = zone;
diff --git a/calendar/libedata-cal/Makefile.am b/calendar/libedata-cal/Makefile.am
index ef5f904..352abb8 100644
--- a/calendar/libedata-cal/Makefile.am
+++ b/calendar/libedata-cal/Makefile.am
@@ -1,10 +1,3 @@
-MARSHAL_GENERATED = e-data-cal-marshal.c e-data-cal-marshal.h
- EVO_MARSHAL_RULE@
-
-DBUS_GENERATED_H = e-data-cal-glue.h e-data-cal-factory-glue.h e-data-cal-view-glue.h
-%-glue.h: %.xml
- @DBUS_BINDING_TOOL@ --mode=glib-server --output=$@ --prefix=$(subst -,_,$*) $^
-
include $(top_srcdir)/glib-gen.mak
glib_enum_headers=e-data-cal-types.h
glib_enum_define=E_DATA_CAL
@@ -15,21 +8,20 @@ ENUM_GENERATED = e-data-cal-enumtypes.h e-data-cal-enumtypes.c
# The libraray
lib_LTLIBRARIES = libedata-cal-1.2.la
-libedata_cal_1_2_la_CPPFLAGS = \
- $(AM_CPPFLAGS) \
- -DG_LOG_DOMAIN=\"libedata-cal\" \
- -DBASE_VERSION=\""$(BASE_VERSION)"\" \
- -I$(top_srcdir) \
- -I$(top_builddir) \
- -I$(top_srcdir)/calendar \
- -I$(top_builddir)/calendar \
- $(LIBICAL_CFLAGS) \
+libedata_cal_1_2_la_CPPFLAGS = \
+ $(AM_CPPFLAGS) \
+ -DG_LOG_DOMAIN=\"libedata-cal\" \
+ -DBASE_VERSION=\""$(BASE_VERSION)"\" \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/calendar \
+ -I$(top_srcdir)/calendar/libegdbus \
+ -I$(top_builddir) \
+ -I$(top_builddir)/calendar \
+ $(LIBICAL_CFLAGS) \
$(EVOLUTION_CALENDAR_CFLAGS)
libedata_cal_1_2_la_SOURCES = \
- $(MARSHAL_GENERATED) \
$(ENUM_GENERATED) \
- $(DBUS_GENERATED_H) \
e-cal-backend.c \
e-cal-backend-cache.c \
e-cal-backend-factory.c \
@@ -42,6 +34,7 @@ libedata_cal_1_2_la_SOURCES = \
e-data-cal-view.c
libedata_cal_1_2_la_LIBADD = \
+ $(top_builddir)/calendar/libegdbus/libegdbus-cal.la \
$(top_builddir)/calendar/libecal/libecal-1.2.la \
$(top_builddir)/libedataserver/libedataserver-1.2.la \
$(top_builddir)/libebackend/libebackend-1.2.la \
@@ -79,12 +72,11 @@ servicedir = $(datadir)/dbus-1/services
service_DATA = $(service_in_files:.service.in=.service)
@EVO_SUBST_SERVICE_RULE@
-BUILT_SOURCES = $(DBUS_GENERATED_H) $(MARSHAL_GENERATED) $(ENUM_GENERATED)
+BUILT_SOURCES = $(ENUM_GENERATED)
CLEANFILES = $(BUILT_SOURCES) $(service_DATA)
DISTCLEANFILES = $(pkgconfig_DATA) $(service_DATA)
EXTRA_DIST = \
- e-data-cal-marshal.list \
e-data-cal-factory.xml \
e-data-cal-view.xml \
e-data-cal.xml \
@@ -95,11 +87,11 @@ EXTRA_DIST = \
factorydir = $(libexecdir)
factory_PROGRAMS = e-calendar-factory
-e_calendar_factory_SOURCES = \
- e-data-cal-factory.c \
- e-data-cal-factory.h \
- e-data-cal-migrate.c \
- e-cal-backend-loader-factory.c \
+e_calendar_factory_SOURCES = \
+ e-data-cal-factory.c \
+ e-data-cal-factory.h \
+ e-data-cal-migrate.c \
+ e-cal-backend-loader-factory.c \
e-cal-backend-loader-factory.h
e_calendar_factory_CPPFLAGS = \
@@ -108,15 +100,17 @@ e_calendar_factory_CPPFLAGS = \
-DE_PRGNAME=\"e-calendar-factory\" \
-DLOCALEDIR=\"$(localedir)\" \
-I$(top_srcdir) \
- -I$(top_builddir) \
-I$(top_srcdir)/calendar \
+ -I$(top_srcdir)/calendar/libegdbus \
+ -I$(top_builddir) \
-I$(top_builddir)/calendar \
$(LIBICAL_CFLAGS) \
$(EVOLUTION_CALENDAR_CFLAGS)
-e_calendar_factory_LDADD = \
- $(builddir)/libedata-cal-1.2.la \
- $(top_builddir)/libedataserver/libedataserver-1.2.la \
+e_calendar_factory_LDADD = \
+ $(top_builddir)/calendar/libegdbus/libegdbus-cal.la \
+ $(top_builddir)/calendar/libedata-cal/libedata-cal-1.2.la \
+ $(top_builddir)/libedataserver/libedataserver-1.2.la \
$(top_builddir)/libebackend/libebackend-1.2.la
-include $(top_srcdir)/git.mk
diff --git a/calendar/libedata-cal/e-data-cal-factory.c b/calendar/libedata-cal/e-data-cal-factory.c
index cd3e20a..11267b2 100644
--- a/calendar/libedata-cal/e-data-cal-factory.c
+++ b/calendar/libedata-cal/e-data-cal-factory.c
@@ -30,9 +30,6 @@
#include <unistd.h>
#include <glib/gi18n.h>
#include <glib-object.h>
-#include <dbus/dbus-glib.h>
-#include <dbus/dbus-glib-lowlevel.h>
-#include <dbus/dbus-glib-bindings.h>
#include "libedataserver/e-url.h"
#include "libedataserver/e-source.h"
@@ -46,14 +43,11 @@
#include "e-data-cal-factory.h"
#include "e-cal-backend-loader-factory.h"
-#define d(x)
+#include "e-gdbus-egdbuscalfactory.h"
-static void impl_CalFactory_getCal (EDataCalFactory *factory, const gchar *IN_uri, EDataCalObjType type, DBusGMethodInvocation *context);
-#include "e-data-cal-factory-glue.h"
+#define d(x)
static GMainLoop *loop;
-static EDataCalFactory *factory;
-extern DBusGConnection *connection;
/* Convenience macro to test and set a GError/return on failure */
#define g_set_error_val_if_fail(test, returnval, error, domain, code) G_STMT_START{ \
@@ -69,6 +63,8 @@ G_DEFINE_TYPE(EDataCalFactory, e_data_cal_factory, G_TYPE_OBJECT);
#define E_DATA_CAL_FACTORY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), E_TYPE_DATA_CAL_FACTORY, EDataCalFactoryPrivate))
struct _EDataCalFactoryPrivate {
+ EGdbusCalFactory *gdbus_object;
+
/* Hash table from URI method strings to GType * for backend class types */
GHashTable *methods;
@@ -237,16 +233,22 @@ construct_cal_factory_path (void)
getpid (), g_atomic_int_exchange_and_add (&counter, 1));
}
+static gboolean
+remove_dead_calendar_cb (gpointer path, gpointer calendar, gpointer dead_calendar)
+{
+ return calendar == dead_calendar;
+}
+
static void
-my_remove (gchar *key, GObject *dead)
+calendar_freed_cb (EDataCalFactory *factory, GObject *dead)
{
EDataCalFactoryPrivate *priv = factory->priv;
GHashTableIter iter;
gpointer hkey, hvalue;
- d (g_debug ("%s (%p) is dead", key, dead));
+ d (g_debug ("in factory %p (%p) is dead", factory, dead));
- g_hash_table_remove (priv->calendars, key);
+ g_hash_table_foreach_remove (priv->calendars, remove_dead_calendar_cb, dead);
g_hash_table_iter_init (&iter, priv->connections);
while (g_hash_table_iter_next (&iter, &hkey, &hvalue)) {
@@ -265,8 +267,6 @@ my_remove (gchar *key, GObject *dead)
}
}
- g_free (key);
-
/* If there are no open calendars, start a timer to quit. */
if (priv->exit_timeout == 0 && g_hash_table_size (priv->calendars) == 0)
priv->exit_timeout = g_timeout_add_seconds (
@@ -304,11 +304,8 @@ find_backend_cb (gpointer key, gpointer value, gpointer data)
}
}
-static void
-impl_CalFactory_getCal (EDataCalFactory *factory,
- const gchar *source_xml,
- EDataCalObjType type,
- DBusGMethodInvocation *context)
+static gboolean
+impl_CalFactory_getCal (EGdbusCalFactory *object, GDBusMethodInvocation *invocation, const gchar *source_xml, guint type, EDataCalFactory *factory)
{
EDataCal *calendar;
EDataCalFactoryPrivate *priv = factory->priv;
@@ -318,7 +315,8 @@ impl_CalFactory_getCal (EDataCalFactory *factory,
gchar *str_uri;
EUri *uri;
gchar *uid_type_string;
- gchar *path = NULL, *sender;
+ gchar *path = NULL;
+ const gchar *sender;
GList *list;
GError *error = NULL;
@@ -330,11 +328,11 @@ impl_CalFactory_getCal (EDataCalFactory *factory,
source = e_source_new_from_standalone_xml (source_xml);
if (!source) {
- dbus_g_method_return_error (
- context, g_error_new (
- E_DATA_CAL_ERROR, NoSuchCal,
- _("Invalid source")));
- return;
+ error = g_error_new (E_DATA_CAL_ERROR, NoSuchCal, _("Invalid source"));
+ g_dbus_method_invocation_return_gerror (invocation, error);
+ g_error_free (error);
+
+ return TRUE;
}
/* Get the URI so we can extract the protocol */
@@ -342,21 +340,21 @@ impl_CalFactory_getCal (EDataCalFactory *factory,
if (!str_uri) {
g_object_unref (source);
- dbus_g_method_return_error (
- context, g_error_new (
- E_DATA_CAL_ERROR, NoSuchCal,
- _("Invalid source")));
- return;
+ error = g_error_new (E_DATA_CAL_ERROR, NoSuchCal, _("Invalid source"));
+ g_dbus_method_invocation_return_gerror (invocation, error);
+ g_error_free (error);
+
+ return TRUE;
}
/* Parse the uri */
uri = e_uri_new (str_uri);
if (!uri) {
- dbus_g_method_return_error (
- context, g_error_new (
- E_DATA_CAL_ERROR, NoSuchCal,
- _("Invalid URI")));
- return;
+ error = g_error_new (E_DATA_CAL_ERROR, NoSuchCal, _("Invalid URI"));
+ g_dbus_method_invocation_return_gerror (invocation, error);
+ g_error_free (error);
+
+ return TRUE;
}
uid_type_string = g_strdup_printf (
@@ -454,17 +452,16 @@ impl_CalFactory_getCal (EDataCalFactory *factory,
e_cal_backend_add_client (backend, calendar);
path = construct_cal_factory_path ();
- dbus_g_connection_register_g_object (
- connection, path, G_OBJECT (calendar));
+ e_data_cal_register_gdbus_object (calendar, g_dbus_method_invocation_get_connection (invocation), path, &error);
g_object_weak_ref (
- G_OBJECT (calendar), (GWeakNotify) my_remove, path);
+ G_OBJECT (calendar), (GWeakNotify) calendar_freed_cb, factory);
g_hash_table_insert (priv->calendars, g_strdup (path), calendar);
- sender = dbus_g_method_get_sender (context);
+ sender = g_dbus_method_invocation_get_sender (invocation);
list = g_hash_table_lookup (priv->connections, sender);
list = g_list_prepend (list, calendar);
- g_hash_table_insert (priv->connections, sender, list);
+ g_hash_table_insert (priv->connections, g_strdup (sender), list);
cleanup:
/* The reason why the lock is held for such a long time is that there is
@@ -479,10 +476,15 @@ cleanup2:
g_free (uid_type_string);
g_object_unref (source);
- if (error)
- dbus_g_method_return_error (context, error);
- else
- dbus_g_method_return (context, path);
+ if (error) {
+ g_dbus_method_invocation_return_gerror (invocation, error);
+ g_error_free (error);
+ } else
+ e_gdbus_cal_factory_complete_get_cal (object, invocation, path);
+
+ g_free (path);
+
+ return TRUE;
}
static void
@@ -501,54 +503,15 @@ remove_data_cal_cb (gpointer data_cl,
g_object_unref (data_cal);
}
-static void
-name_owner_changed (DBusGProxy *proxy,
- const gchar *name,
- const gchar *prev_owner,
- const gchar *new_owner,
- EDataCalFactory *factory)
-{
- GList *list = NULL;
- gchar *key;
-
- if (strcmp (new_owner, "") != 0)
- return;
-
- if (strcmp (name, prev_owner) != 0)
- return;
-
- while (g_hash_table_lookup_extended (
- factory->priv->connections, prev_owner,
- (gpointer) &key, (gpointer) &list)) {
-
- GList *copy = g_list_copy (list);
-
- /* this should trigger the book's weak ref notify
- * function, which will remove it from the list before
- * it's freed, and will remove the connection from
- * priv->connections once they're all gone */
- g_list_foreach (copy, remove_data_cal_cb, NULL);
- g_list_free (copy);
- }
-}
-
-/* Class initialization function for the calendar factory */
-static void
-e_data_cal_factory_class_init (EDataCalFactoryClass *class)
-{
- g_type_class_add_private (class, sizeof (EDataCalFactoryPrivate));
-
- dbus_g_object_type_install_info (
- G_TYPE_FROM_CLASS (class),
- &dbus_glib_e_data_cal_factory_object_info);
-}
-
/* Instance init */
static void
e_data_cal_factory_init (EDataCalFactory *factory)
{
factory->priv = E_DATA_CAL_FACTORY_GET_PRIVATE (factory);
+ factory->priv->gdbus_object = e_gdbus_cal_factory_stub_new ();
+ g_signal_connect (factory->priv->gdbus_object, "handle-get-cal", G_CALLBACK (impl_CalFactory_getCal), factory);
+
factory->priv->methods = g_hash_table_new_full (
g_str_hash, g_str_equal,
(GDestroyNotify) g_free,
@@ -576,6 +539,49 @@ e_data_cal_factory_init (EDataCalFactory *factory)
}
static void
+e_data_cal_factory_finalize (GObject *object)
+{
+ EDataCalFactory *factory = E_DATA_CAL_FACTORY (object);
+
+ g_return_if_fail (factory != NULL);
+
+ g_object_unref (factory->priv->gdbus_object);
+
+ g_hash_table_destroy (factory->priv->methods);
+ g_hash_table_destroy (factory->priv->backends);
+ g_hash_table_destroy (factory->priv->calendars);
+ g_hash_table_destroy (factory->priv->connections);
+
+ g_mutex_free (factory->priv->backends_mutex);
+
+ if (G_OBJECT_CLASS (e_data_cal_factory_parent_class)->finalize)
+ G_OBJECT_CLASS (e_data_cal_factory_parent_class)->finalize (object);
+}
+
+/* Class initialization function for the calendar factory */
+static void
+e_data_cal_factory_class_init (EDataCalFactoryClass *klass)
+{
+ GObjectClass *object_class;
+
+ g_type_class_add_private (klass, sizeof (EDataCalFactoryPrivate));
+
+ object_class = G_OBJECT_CLASS (klass);
+ object_class->finalize = e_data_cal_factory_finalize;
+}
+
+static guint
+e_data_cal_factory_register_gdbus_object (EDataCalFactory *factory, GDBusConnection *connection, const gchar *object_path, GError **error)
+{
+ g_return_val_if_fail (factory != NULL, 0);
+ g_return_val_if_fail (E_IS_DATA_CAL_FACTORY (factory), 0);
+ g_return_val_if_fail (connection != NULL, 0);
+ g_return_val_if_fail (object_path != NULL, 0);
+
+ return e_gdbus_cal_factory_register_object (factory->priv->gdbus_object, connection, object_path, error);
+}
+
+static void
set_backend_online_status (gpointer key, gpointer value, gpointer data)
{
ECalBackend *backend = E_CAL_BACKEND (value);
@@ -789,13 +795,64 @@ offline_state_changed_cb (EOfflineListener *eol,
#define E_DATA_CAL_FACTORY_SERVICE_NAME \
"org.gnome.evolution.dataserver.Calendar"
+static void
+on_bus_acquired (GDBusConnection *connection,
+ const gchar *name,
+ gpointer user_data)
+{
+ EDataCalFactory *factory = user_data;
+ guint registration_id;
+ GError *error = NULL;
+
+ registration_id = e_data_cal_factory_register_gdbus_object (
+ factory,
+ connection,
+ "/org/gnome/evolution/dataserver/calendar/CalFactory",
+ &error);
+
+ if (error)
+ die ("Failed to register a CalFactory object", error);
+
+ g_assert (registration_id > 0);
+}
+
+static void
+on_name_acquired (GDBusConnection *connection,
+ const gchar *name,
+ gpointer user_data)
+{
+}
+
+static void
+on_name_lost (GDBusConnection *connection,
+ const gchar *name,
+ gpointer user_data)
+{
+ GList *list = NULL;
+ gchar *key;
+ EDataCalFactory *factory = user_data;
+
+ while (g_hash_table_lookup_extended (
+ factory->priv->connections, name,
+ (gpointer) &key, (gpointer) &list)) {
+
+ GList *copy = g_list_copy (list);
+
+ /* this should trigger the book's weak ref notify
+ * function, which will remove it from the list before
+ * it's freed, and will remove the connection from
+ * priv->connections once they're all gone */
+ g_list_foreach (copy, remove_data_cal_cb, NULL);
+ g_list_free (copy);
+ }
+}
+
gint
main (gint argc, gchar **argv)
{
- GError *error = NULL;
- DBusGProxy *bus_proxy;
- guint32 request_name_ret;
EOfflineListener *eol;
+ EDataCalFactory *factory;
+ guint owner_id;
setlocale (LC_ALL, "");
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
@@ -804,42 +861,10 @@ main (gint argc, gchar **argv)
g_type_init ();
g_set_prgname (E_PRGNAME);
if (!g_thread_supported ()) g_thread_init (NULL);
- dbus_g_thread_init ();
-
- loop = g_main_loop_new (NULL, FALSE);
-
- /* Obtain a connection to the session bus */
- connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
- if (connection == NULL)
- die ("Failed to open connection to bus", error);
-
- bus_proxy = dbus_g_proxy_new_for_name (connection,
- DBUS_SERVICE_DBUS,
- DBUS_PATH_DBUS,
- DBUS_INTERFACE_DBUS);
factory = g_object_new (E_TYPE_DATA_CAL_FACTORY, NULL);
- dbus_g_connection_register_g_object (
- connection,
- "/org/gnome/evolution/dataserver/calendar/CalFactory",
- G_OBJECT (factory));
-
- dbus_g_proxy_add_signal (
- bus_proxy, "NameOwnerChanged",
- G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (
- bus_proxy, "NameOwnerChanged",
- G_CALLBACK (name_owner_changed), factory, NULL);
-
- if (!org_freedesktop_DBus_request_name (
- bus_proxy, E_DATA_CAL_FACTORY_SERVICE_NAME,
- 0, &request_name_ret, &error))
- die ("Failed to get name", error);
-
- if (request_name_ret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
- g_error ("Got result code %u from requesting name", request_name_ret);
- exit (1);
- }
+
+ loop = g_main_loop_new (NULL, FALSE);
eol = e_offline_listener_new ();
offline_state_changed_cb (eol, factory);
@@ -847,16 +872,25 @@ main (gint argc, gchar **argv)
eol, "changed",
G_CALLBACK (offline_state_changed_cb), factory);
- printf ("Server is up and running...\n");
+ owner_id = g_bus_own_name (G_BUS_TYPE_SESSION,
+ E_DATA_CAL_FACTORY_SERVICE_NAME,
+ G_BUS_NAME_OWNER_FLAGS_NONE,
+ on_bus_acquired,
+ on_name_acquired,
+ on_name_lost,
+ factory,
+ NULL);
/* Migrate user data from ~/.evolution to XDG base directories. */
e_data_cal_migrate ();
- g_main_loop_run (loop);
+ printf ("Server is up and running...\n");
- dbus_g_connection_unref (connection);
+ g_main_loop_run (loop);
+ g_bus_unown_name (owner_id);
g_object_unref (eol);
+ g_object_unref (factory);
printf ("Bye.\n");
diff --git a/calendar/libedata-cal/e-data-cal-view.c b/calendar/libedata-cal/e-data-cal-view.c
index 8beaa15..ff9c000 100644
--- a/calendar/libedata-cal/e-data-cal-view.c
+++ b/calendar/libedata-cal/e-data-cal-view.c
@@ -28,23 +28,17 @@
#include <string.h>
#include <glib.h>
-#include <dbus/dbus.h>
-#include <dbus/dbus-glib.h>
#include <glib-object.h>
#include "e-cal-backend-sexp.h"
#include "e-data-cal-view.h"
-#include "e-data-cal-marshal.h"
-
-extern DBusGConnection *connection;
-
-static gboolean impl_EDataCalView_start (EDataCalView *query, GError **error);
-static gboolean impl_EDataCalView_stop (EDataCalView *query, GError **error);
-#include "e-data-cal-view-glue.h"
+#include "e-gdbus-egdbuscalview.h"
#define THRESHOLD 32
struct _EDataCalViewPrivate {
+ EGdbusCalView *gdbus_object;
+
/* The backend we are monitoring */
ECalBackend *backend;
@@ -60,8 +54,6 @@ struct _EDataCalViewPrivate {
GArray *removes;
GHashTable *ids;
-
- gchar *path;
};
G_DEFINE_TYPE (EDataCalView, e_data_cal_view, G_TYPE_OBJECT);
@@ -79,23 +71,10 @@ enum props {
PROP_SEXP
};
-/* Signals */
-enum {
- OBJECTS_ADDED,
- OBJECTS_MODIFIED,
- OBJECTS_REMOVED,
- PROGRESS,
- DONE,
- LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
/* Class init */
static void
e_data_cal_view_class_init (EDataCalViewClass *klass)
{
- GParamSpec *param;
GObjectClass *object_class = G_OBJECT_CLASS (klass);
g_type_class_add_private (klass, sizeof (EDataCalViewPrivate));
@@ -105,54 +84,15 @@ e_data_cal_view_class_init (EDataCalViewClass *klass)
object_class->dispose = e_data_cal_view_dispose;
object_class->finalize = e_data_cal_view_finalize;
- param = g_param_spec_object ("backend", NULL, NULL, E_TYPE_CAL_BACKEND,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY);
- g_object_class_install_property (object_class, PROP_BACKEND, param);
- param = g_param_spec_object ("sexp", NULL, NULL, E_TYPE_CAL_BACKEND_SEXP,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY);
- g_object_class_install_property (object_class, PROP_SEXP, param);
-
- signals[OBJECTS_ADDED] =
- g_signal_new ("objects-added",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- 0, NULL, NULL,
- g_cclosure_marshal_VOID__BOXED,
- G_TYPE_NONE, 1, G_TYPE_STRV);
-
- signals[OBJECTS_MODIFIED] =
- g_signal_new ("objects-modified",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- 0, NULL, NULL,
- g_cclosure_marshal_VOID__BOXED,
- G_TYPE_NONE, 1, G_TYPE_STRV);
-
- signals[OBJECTS_REMOVED] =
- g_signal_new ("objects-removed",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- 0, NULL, NULL,
- g_cclosure_marshal_VOID__BOXED,
- G_TYPE_NONE, 1, G_TYPE_STRV);
-
- signals[PROGRESS] =
- g_signal_new ("progress",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- 0, NULL, NULL,
- e_data_cal_marshal_VOID__STRING_UINT,
- G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_UINT);
-
- signals[DONE] =
- g_signal_new ("done",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- 0, NULL, NULL,
- e_data_cal_marshal_NONE__UINT_STRING,
- G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_STRING);
-
- dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass), &dbus_glib_e_data_cal_view_object_info);
+ g_object_class_install_property (object_class, PROP_BACKEND,
+ g_param_spec_object (
+ "backend", NULL, NULL, E_TYPE_CAL_BACKEND,
+ G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+
+ g_object_class_install_property (object_class, PROP_SEXP,
+ g_param_spec_object (
+ "sexp", NULL, NULL, E_TYPE_CAL_BACKEND_SEXP,
+ G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
}
static guint
@@ -169,57 +109,25 @@ id_equal (gconstpointer a, gconstpointer b)
return g_strcmp0 (id_a->uid, id_b->uid) == 0 && g_strcmp0 (id_a->rid, id_b->rid) == 0;
}
-/* Instance init */
-static void
-e_data_cal_view_init (EDataCalView *view)
-{
- EDataCalViewPrivate *priv = E_DATA_CAL_VIEW_GET_PRIVATE (view);
-
- view->priv = priv;
-
- priv->backend = NULL;
- priv->started = FALSE;
- priv->stopped = FALSE;
- priv->done = FALSE;
- priv->sexp = NULL;
-
- priv->adds = g_array_sized_new (TRUE, TRUE, sizeof (gchar *), THRESHOLD);
- priv->changes = g_array_sized_new (TRUE, TRUE, sizeof (gchar *), THRESHOLD);
- priv->removes = g_array_sized_new (TRUE, TRUE, sizeof (gchar *), THRESHOLD);
-
- priv->ids = g_hash_table_new_full (id_hash, id_equal, (GDestroyNotify)e_cal_component_free_id, NULL);
-}
-
EDataCalView *
-e_data_cal_view_new (ECalBackend *backend,
- const gchar *path, ECalBackendSExp *sexp)
+e_data_cal_view_new (ECalBackend *backend, ECalBackendSExp *sexp)
{
EDataCalView *query;
query = g_object_new (E_DATA_CAL_VIEW_TYPE, "backend", backend, "sexp", sexp, NULL);
- query->priv->path = g_strdup (path);
-
- dbus_g_connection_register_g_object (connection, path, G_OBJECT (query));
return query;
}
-/**
- * e_data_cal_view_get_dbus_path:
- * @view: an #EDataCalView
- *
- * Returns the D-Bus path for @view.
- *
- * Returns: the D-Bus path for @view
- *
- * Since: 2.30
- **/
-const gchar *
-e_data_cal_view_get_dbus_path (EDataCalView *view)
+guint
+e_data_cal_view_register_gdbus_object (EDataCalView *query, GDBusConnection *connection, const gchar *object_path, GError **error)
{
- g_return_val_if_fail (E_IS_DATA_CAL_VIEW (view), NULL);
+ g_return_val_if_fail (query != NULL, 0);
+ g_return_val_if_fail (E_IS_DATA_CAL_VIEW (query), 0);
+ g_return_val_if_fail (connection != NULL, 0);
+ g_return_val_if_fail (object_path != NULL, 0);
- return view->priv->path;
+ return e_gdbus_cal_view_register_object (query->priv->gdbus_object, connection, object_path, error);
}
static void
@@ -246,7 +154,7 @@ send_pending_adds (EDataCalView *view)
if (priv->adds->len == 0)
return;
- g_signal_emit (view, signals[OBJECTS_ADDED], 0, priv->adds->data);
+ e_gdbus_cal_view_emit_objects_added (view->priv->gdbus_object, (const gchar * const *) priv->adds->data);
reset_array (priv->adds);
}
@@ -258,7 +166,7 @@ send_pending_changes (EDataCalView *view)
if (priv->changes->len == 0)
return;
- g_signal_emit (view, signals[OBJECTS_MODIFIED], 0, priv->changes->data);
+ e_gdbus_cal_view_emit_objects_modified (view->priv->gdbus_object, (const gchar * const *) priv->changes->data);
reset_array (priv->changes);
}
@@ -271,7 +179,7 @@ send_pending_removes (EDataCalView *view)
return;
/* TODO: send ECalComponentIds as a list of pairs */
- g_signal_emit (view, signals[OBJECTS_REMOVED], 0, priv->removes->data);
+ e_gdbus_cal_view_emit_objects_removed (view->priv->gdbus_object, (const gchar * const *) priv->removes->data);
reset_array (priv->removes);
}
@@ -330,11 +238,11 @@ notify_done (EDataCalView *view, const GError *error)
send_pending_changes (view);
send_pending_removes (view);
- g_signal_emit (view, signals[DONE], 0, error ? error->code : 0, error ? error->message : NULL);
+ e_gdbus_cal_view_emit_done (view->priv->gdbus_object, error ? error->code : 0, error ? error->message : "");
}
static gboolean
-impl_EDataCalView_start (EDataCalView *query, GError **error)
+impl_DataCalView_start (EGdbusCalView *object, GDBusMethodInvocation *invocation, EDataCalView *query)
{
EDataCalViewPrivate *priv;
@@ -345,11 +253,13 @@ impl_EDataCalView_start (EDataCalView *query, GError **error)
e_cal_backend_start_query (priv->backend, query);
}
+ e_gdbus_cal_view_complete_start (object, invocation);
+
return TRUE;
}
static gboolean
-impl_EDataCalView_stop (EDataCalView *query, GError **error)
+impl_DataCalView_stop (EGdbusCalView *object, GDBusMethodInvocation *invocation, EDataCalView *query)
{
EDataCalViewPrivate *priv;
@@ -357,6 +267,8 @@ impl_EDataCalView_stop (EDataCalView *query, GError **error)
priv->stopped = TRUE;
+ e_gdbus_cal_view_complete_stop (object, invocation);
+
return TRUE;
}
@@ -404,6 +316,31 @@ e_data_cal_view_get_property (GObject *object, guint property_id, GValue *value,
}
}
+/* Instance init */
+static void
+e_data_cal_view_init (EDataCalView *query)
+{
+ EDataCalViewPrivate *priv = E_DATA_CAL_VIEW_GET_PRIVATE (query);
+
+ query->priv = priv;
+
+ priv->gdbus_object = e_gdbus_cal_view_stub_new ();
+ g_signal_connect (priv->gdbus_object, "handle-start", G_CALLBACK (impl_DataCalView_start), query);
+ g_signal_connect (priv->gdbus_object, "handle-stop", G_CALLBACK (impl_DataCalView_stop), query);
+
+ priv->backend = NULL;
+ priv->started = FALSE;
+ priv->stopped = FALSE;
+ priv->done = FALSE;
+ priv->sexp = NULL;
+
+ priv->adds = g_array_sized_new (TRUE, TRUE, sizeof (gchar *), THRESHOLD);
+ priv->changes = g_array_sized_new (TRUE, TRUE, sizeof (gchar *), THRESHOLD);
+ priv->removes = g_array_sized_new (TRUE, TRUE, sizeof (gchar *), THRESHOLD);
+
+ priv->ids = g_hash_table_new_full (id_hash, id_equal, (GDestroyNotify)e_cal_component_free_id, NULL);
+}
+
static void
e_data_cal_view_dispose (GObject *object)
{
@@ -443,8 +380,6 @@ e_data_cal_view_finalize (GObject *object)
g_hash_table_destroy (priv->ids);
- g_free (priv->path);
-
(* G_OBJECT_CLASS (e_data_cal_view_parent_class)->finalize) (object);
}
@@ -734,7 +669,7 @@ e_data_cal_view_notify_progress (EDataCalView *view, const gchar *message, gint
if (!priv->started || priv->stopped)
return;
- g_signal_emit (view, signals[PROGRESS], 0, message, percent);
+ e_gdbus_cal_view_emit_progress (view->priv->gdbus_object, message ? message : "", percent);
}
/**
diff --git a/calendar/libedata-cal/e-data-cal-view.h b/calendar/libedata-cal/e-data-cal-view.h
index c988482..2ec3f48 100644
--- a/calendar/libedata-cal/e-data-cal-view.h
+++ b/calendar/libedata-cal/e-data-cal-view.h
@@ -23,7 +23,7 @@
#include <glib.h>
#include <glib-object.h>
-#include <dbus/dbus-glib.h>
+#include <gio/gio.h>
#include <libedata-cal/e-data-cal-common.h>
#include <libedata-cal/e-cal-backend-sexp.h>
#include <libedata-cal/e-data-cal-types.h>
@@ -52,9 +52,9 @@ struct _EDataCalViewClass {
};
GType e_data_cal_view_get_type (void);
-EDataCalView *e_data_cal_view_new (ECalBackend *backend, const gchar *path, ECalBackendSExp *sexp);
+EDataCalView *e_data_cal_view_new (ECalBackend *backend, ECalBackendSExp *sexp);
-const gchar * e_data_cal_view_get_dbus_path (EDataCalView *view);
+guint e_data_cal_view_register_gdbus_object (EDataCalView *query, GDBusConnection *connection, const gchar *object_path, GError **error);
const gchar *e_data_cal_view_get_text (EDataCalView *query);
ECalBackendSExp *e_data_cal_view_get_object_sexp (EDataCalView *query);
diff --git a/calendar/libedata-cal/e-data-cal.c b/calendar/libedata-cal/e-data-cal.c
index 5c72e9d..c0cf6f3 100644
--- a/calendar/libedata-cal/e-data-cal.c
+++ b/calendar/libedata-cal/e-data-cal.c
@@ -30,64 +30,21 @@
#include <glib/gi18n-lib.h>
#include <unistd.h>
-#include <dbus/dbus.h>
-#include <dbus/dbus-glib.h>
#include <glib-object.h>
#include "e-data-cal.h"
#include "e-data-cal-enumtypes.h"
-
-DBusGConnection *connection;
-
-/* DBus glue */
-static void impl_Cal_get_uri (EDataCal *cal, DBusGMethodInvocation *context);
-static void impl_Cal_getCacheDir (EDataCal *cal, DBusGMethodInvocation *context);
-static void impl_Cal_open (EDataCal *cal, gboolean only_if_exists, gchar *username, gchar *password, DBusGMethodInvocation *context);
-static gboolean impl_Cal_close (EDataCal *cal, GError **error);
-static void impl_Cal_refresh (EDataCal *cal, DBusGMethodInvocation *context);
-static void impl_Cal_remove (EDataCal *cal, DBusGMethodInvocation *context);
-static void impl_Cal_isReadOnly (EDataCal *cal, DBusGMethodInvocation *context);
-static void impl_Cal_getCalAddress (EDataCal *cal, DBusGMethodInvocation *context);
-static void impl_Cal_getAlarmEmailAddress (EDataCal *cal, DBusGMethodInvocation *context);
-static void impl_Cal_getLdapAttribute (EDataCal *cal, DBusGMethodInvocation *context);
-static void impl_Cal_getStaticCapabilities (EDataCal *cal, DBusGMethodInvocation *context);
-static void impl_Cal_setMode (EDataCal *cal, EDataCalMode mode, DBusGMethodInvocation *context);
-static void impl_Cal_getDefaultObject (EDataCal *cal, DBusGMethodInvocation *context);
-static void impl_Cal_getObject (EDataCal *cal, const gchar *uid, const gchar *rid, DBusGMethodInvocation *context);
-static void impl_Cal_getObjectList (EDataCal *cal, const gchar *sexp, DBusGMethodInvocation *context);
-static void impl_Cal_getChanges (EDataCal *cal, const gchar *change_id, DBusGMethodInvocation *context);
-static void impl_Cal_getFreeBusy (EDataCal *cal, const gchar **user_list, const gulong start, const gulong end, DBusGMethodInvocation *context);
-static void impl_Cal_discardAlarm (EDataCal *cal, const gchar *uid, const gchar *auid, DBusGMethodInvocation *context);
-static void impl_Cal_createObject (EDataCal *cal, const gchar *calobj, DBusGMethodInvocation *context);
-static void impl_Cal_modifyObject (EDataCal *cal, const gchar *calobj, const EDataCalObjModType mod, DBusGMethodInvocation *context);
-static void impl_Cal_removeObject (EDataCal *cal, const gchar *uid, const gchar *rid, const EDataCalObjModType mod, DBusGMethodInvocation *context);
-static void impl_Cal_receiveObjects (EDataCal *cal, const gchar *calobj, DBusGMethodInvocation *context);
-static void impl_Cal_sendObjects (EDataCal *cal, const gchar *calobj, DBusGMethodInvocation *context);
-static void impl_Cal_getAttachmentList (EDataCal *cal, gchar *uid, gchar *rid, DBusGMethodInvocation *context);
-static void impl_Cal_getQuery (EDataCal *cal, const gchar *sexp, DBusGMethodInvocation *context);
-static void impl_Cal_getTimezone (EDataCal *cal, const gchar *tzid, DBusGMethodInvocation *context);
-static void impl_Cal_addTimezone (EDataCal *cal, const gchar *tz, DBusGMethodInvocation *context);
-static void impl_Cal_setDefaultTimezone (EDataCal *cal, const gchar *tz, DBusGMethodInvocation *context);
-#include "e-data-cal-glue.h"
-
-enum
-{
- AUTH_REQUIRED,
- BACKEND_ERROR,
- READ_ONLY,
- MODE,
- LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL] = { 0 };
+#include "e-gdbus-egdbuscal.h"
G_DEFINE_TYPE (EDataCal, e_data_cal, G_TYPE_OBJECT);
#define E_DATA_CAL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), E_TYPE_DATA_CAL, EDataCalPrivate))
#define EDC_ERROR(_code) e_data_cal_create_error (_code, NULL)
+#define EDC_ERROR_EX(_code, _msg) e_data_cal_create_error (_code, _msg)
struct _EDataCalPrivate {
+ EGdbusCal *gdbus_object;
ECalBackend *backend;
ESource *source;
GHashTable *live_queries;
@@ -97,10 +54,43 @@ struct _EDataCalPrivate {
GQuark
e_data_cal_error_quark (void)
{
- static GQuark quark = 0;
- if (!quark)
- quark = g_quark_from_static_string ("e_data_cal_error");
- return quark;
+ #define ERR_PREFIX "org.gnome.evolution.dataserver.calendar.Cal."
+
+ static const GDBusErrorEntry entries[] = {
+ { Success, ERR_PREFIX "Success" },
+ { RepositoryOffline, ERR_PREFIX "RepositoryOffline" },
+ { PermissionDenied, ERR_PREFIX "PermissionDenied" },
+ { InvalidRange, ERR_PREFIX "InvalidRange" },
+ { ObjectNotFound, ERR_PREFIX "ObjectNotFound" },
+ { InvalidObject, ERR_PREFIX "InvalidObject" },
+ { ObjectIdAlreadyExists, ERR_PREFIX "ObjectIdAlreadyExists" },
+ { AuthenticationFailed, ERR_PREFIX "AuthenticationFailed" },
+ { AuthenticationRequired, ERR_PREFIX "AuthenticationRequired" },
+ { UnsupportedField, ERR_PREFIX "UnsupportedField" },
+ { UnsupportedMethod, ERR_PREFIX "UnsupportedMethod" },
+ { UnsupportedAuthenticationMethod, ERR_PREFIX "UnsupportedAuthenticationMethod" },
+ { TLSNotAvailable, ERR_PREFIX "TLSNotAvailable" },
+ { NoSuchCal, ERR_PREFIX "NoSuchCal" },
+ { UnknownUser, ERR_PREFIX "UnknownUser" },
+ { OfflineUnavailable, ERR_PREFIX "OfflineUnavailable" },
+ { SearchSizeLimitExceeded, ERR_PREFIX "SearchSizeLimitExceeded" },
+ { SearchTimeLimitExceeded, ERR_PREFIX "SearchTimeLimitExceeded" },
+ { InvalidQuery, ERR_PREFIX "InvalidQuery" },
+ { QueryRefused, ERR_PREFIX "QueryRefused" },
+ { CouldNotCancel, ERR_PREFIX "CouldNotCancel" },
+ { OtherError, ERR_PREFIX "OtherError" },
+ { InvalidServerVersion, ERR_PREFIX "InvalidServerVersion" },
+ { InvalidArg, ERR_PREFIX "InvalidArg" },
+ { NotSupported, ERR_PREFIX "NotSupported" }
+ };
+
+ #undef ERR_PREFIX
+
+ static volatile gsize quark_volatile = 0;
+
+ g_dbus_error_register_error_domain ("e-data-cal-error", &quark_volatile, entries, G_N_ELEMENTS (entries));
+
+ return (GQuark) quark_volatile;
}
const gchar *
@@ -177,79 +167,17 @@ e_data_cal_create_error_fmt (EDataCalCallStatus status, const gchar *custom_msg_
}
static void
-data_cal_return_error (DBusGMethodInvocation *context, const GError *perror, const gchar *error_fmt)
+data_cal_return_error (GDBusMethodInvocation *invocation, const GError *perror, const gchar *error_fmt)
{
GError *error;
g_return_if_fail (perror != NULL);
error = g_error_new (E_DATA_CAL_ERROR, perror->code, error_fmt, perror->message);
- dbus_g_method_return_error (context, error);
- g_error_free (error);
-}
+ g_dbus_method_invocation_return_gerror (invocation, error);
-/* Class init */
-static void
-e_data_cal_class_init (EDataCalClass *e_data_cal_class)
-{
- /* TODO: finalise dispose */
-
- g_type_class_add_private (e_data_cal_class, sizeof (EDataCalPrivate));
-
- signals[AUTH_REQUIRED] =
- g_signal_new ("auth-required",
- G_OBJECT_CLASS_TYPE (e_data_cal_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
- 0,
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
- signals[BACKEND_ERROR] =
- g_signal_new ("backend-error",
- G_OBJECT_CLASS_TYPE (e_data_cal_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
- 0,
- NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE, 1, G_TYPE_STRING);
- signals[READ_ONLY] =
- g_signal_new ("readonly",
- G_OBJECT_CLASS_TYPE (e_data_cal_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
- 0,
- NULL, NULL,
- g_cclosure_marshal_VOID__BOOLEAN,
- G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
- signals[MODE] =
- g_signal_new ("mode",
- G_OBJECT_CLASS_TYPE (e_data_cal_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
- 0,
- NULL, NULL,
- g_cclosure_marshal_VOID__INT,
- G_TYPE_NONE, 1, G_TYPE_INT);
-
- dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (e_data_cal_class), &dbus_glib_e_data_cal_object_info);
-
- dbus_g_error_domain_register (E_DATA_CAL_ERROR, NULL, E_TYPE_DATA_CAL_CALL_STATUS);
-}
-
-/* Instance init */
-static void
-e_data_cal_init (EDataCal *ecal)
-{
- ecal->priv = E_DATA_CAL_GET_PRIVATE (ecal);
-}
-
-EDataCal *
-e_data_cal_new (ECalBackend *backend, ESource *source)
-{
- EDataCal *cal;
- cal = g_object_new (E_TYPE_DATA_CAL, NULL);
- cal->priv->backend = backend;
- cal->priv->source = source;
- return cal;
+ g_error_free (error);
}
/**
@@ -275,143 +203,157 @@ e_data_cal_get_backend (EDataCal *cal)
}
/* EDataCal::getUri method */
-static void
-impl_Cal_get_uri (EDataCal *cal, DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_getUri (EGdbusCal *object, GDBusMethodInvocation *invocation, EDataCal *cal)
{
- dbus_g_method_return (context, g_strdup (e_cal_backend_get_uri (cal->priv->backend)));
+ e_gdbus_cal_complete_get_uri (object, invocation, e_cal_backend_get_uri (cal->priv->backend));
+
+ return TRUE;
}
/* EDataCal::getCacheDir method */
-static void
-impl_Cal_getCacheDir (EDataCal *cal, DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_getCacheDir (EGdbusCal *object, GDBusMethodInvocation *invocation, EDataCal *cal)
{
- const gchar *cache_dir;
+ e_gdbus_cal_complete_get_cache_dir (object, invocation, e_cal_backend_get_cache_dir (cal->priv->backend));
- cache_dir = e_cal_backend_get_cache_dir (cal->priv->backend);
- dbus_g_method_return (context, g_strdup (cache_dir));
+ return TRUE;
}
/* EDataCal::open method */
-static void
-impl_Cal_open (EDataCal *cal,
- gboolean only_if_exists,
- gchar *username,
- gchar *password, DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_open (EGdbusCal *object, GDBusMethodInvocation *invocation, gboolean only_if_exists, const gchar *username, const gchar *password, EDataCal *cal)
{
- e_cal_backend_open (cal->priv->backend, cal, context, only_if_exists, username, password);
+ e_cal_backend_open (cal->priv->backend, cal, invocation, only_if_exists, username, password);
+
+ return TRUE;
}
-/* EDataCal::close method */
+/* EDataCal::refresh method */
static gboolean
-impl_Cal_close (EDataCal *cal, GError **error)
+impl_Cal_refresh (EGdbusCal *object, GDBusMethodInvocation *invocation, EDataCal *cal)
{
- e_cal_backend_remove_client (cal->priv->backend, cal);
- g_object_unref (cal);
+ e_cal_backend_refresh (cal->priv->backend, cal, invocation);
+
return TRUE;
}
-/* EDataCal::refresh method */
-static void
-impl_Cal_refresh (EDataCal *cal, DBusGMethodInvocation *context)
+/* EDataCal::close method */
+static gboolean
+impl_Cal_close (EGdbusCal *object, GDBusMethodInvocation *invocation, EDataCal *cal)
{
- e_cal_backend_refresh (cal->priv->backend, cal, context);
+ e_cal_backend_remove_client (cal->priv->backend, cal);
+ e_gdbus_cal_complete_close (object, invocation);
+
+ g_object_unref (cal);
+
+ return TRUE;
}
/* EDataCal::remove method */
-static void
-impl_Cal_remove (EDataCal *cal, DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_remove (EGdbusCal *object, GDBusMethodInvocation *invocation, EDataCal *cal)
{
- e_cal_backend_remove (cal->priv->backend, cal, context);
+ e_cal_backend_remove (cal->priv->backend, cal, invocation);
+
+ return TRUE;
}
/* EDataCal::isReadOnly method */
-static void
-impl_Cal_isReadOnly (EDataCal *cal, DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_isReadOnly (EGdbusCal *object, GDBusMethodInvocation *invocation, EDataCal *cal)
{
e_cal_backend_is_read_only (cal->priv->backend, cal);
- dbus_g_method_return (context);
+ e_gdbus_cal_complete_is_read_only (object, invocation);
+
+ return TRUE;
}
/* EDataCal::getCalAddress method */
-static void
-impl_Cal_getCalAddress (EDataCal *cal, DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_getCalAddress (EGdbusCal *object, GDBusMethodInvocation *invocation, EDataCal *cal)
{
- e_cal_backend_get_cal_address (cal->priv->backend, cal, context);
+ e_cal_backend_get_cal_address (cal->priv->backend, cal, invocation);
+
+ return TRUE;
}
/* EDataCal::getAlarmEmailAddress method */
-static void
-impl_Cal_getAlarmEmailAddress (EDataCal *cal, DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_getAlarmEmailAddress (EGdbusCal *object, GDBusMethodInvocation *invocation, EDataCal *cal)
{
- e_cal_backend_get_alarm_email_address (cal->priv->backend, cal, context);
+ e_cal_backend_get_alarm_email_address (cal->priv->backend, cal, invocation);
+
+ return TRUE;
}
/* EDataCal::getLdapAttribute method */
-static void
-impl_Cal_getLdapAttribute (EDataCal *cal, DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_getLdapAttribute (EGdbusCal *object, GDBusMethodInvocation *invocation, EDataCal *cal)
{
- e_cal_backend_get_ldap_attribute (cal->priv->backend, cal, context);
+ e_cal_backend_get_ldap_attribute (cal->priv->backend, cal, invocation);
+
+ return TRUE;
}
/* EDataCal::getSchedulingInformation method */
-static void
-impl_Cal_getStaticCapabilities (EDataCal *cal, DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_getSchedulingInformation (EGdbusCal *object, GDBusMethodInvocation *invocation, EDataCal *cal)
{
- e_cal_backend_get_static_capabilities (cal->priv->backend, cal, context);
+ e_cal_backend_get_static_capabilities (cal->priv->backend, cal, invocation);
+
+ return TRUE;
}
/* EDataCal::setMode method */
-static void
-impl_Cal_setMode (EDataCal *cal,
- EDataCalMode mode,
- DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_setMode (EGdbusCal *object, GDBusMethodInvocation *invocation, EDataCalMode mode, EDataCal *cal)
{
e_cal_backend_set_mode (cal->priv->backend, mode);
- dbus_g_method_return (context);
+ e_gdbus_cal_complete_set_mode (object, invocation);
+
+ return TRUE;
}
/* EDataCal::getDefaultObject method */
-static void
-impl_Cal_getDefaultObject (EDataCal *cal, DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_getDefaultObject (EGdbusCal *object, GDBusMethodInvocation *invocation, EDataCal *cal)
{
- e_cal_backend_get_default_object (cal->priv->backend, cal, context);
+ e_cal_backend_get_default_object (cal->priv->backend, cal, invocation);
+
+ return TRUE;
}
/* EDataCal::getObject method */
-static void
-impl_Cal_getObject (EDataCal *cal,
- const gchar *uid,
- const gchar *rid,
- DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_getObject (EGdbusCal *object, GDBusMethodInvocation *invocation, const gchar *uid, const gchar *rid, EDataCal *cal)
{
- e_cal_backend_get_object (cal->priv->backend, cal, context, uid, rid);
+ e_cal_backend_get_object (cal->priv->backend, cal, invocation, uid, rid);
+
+ return TRUE;
}
/* EDataCal::getObjectList method */
-static void
-impl_Cal_getObjectList (EDataCal *cal,
- const gchar *sexp,
- DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_getObjectList (EGdbusCal *object, GDBusMethodInvocation *invocation, const gchar *sexp, EDataCal *cal)
{
- e_cal_backend_get_object_list (cal->priv->backend, cal, context, sexp);
+ e_cal_backend_get_object_list (cal->priv->backend, cal, invocation, sexp);
+
+ return TRUE;
}
/* EDataCal::getChanges method */
-static void
-impl_Cal_getChanges (EDataCal *cal,
- const gchar *change_id,
- DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_getChanges (EGdbusCal *object, GDBusMethodInvocation *invocation, const gchar *change_id, EDataCal *cal)
{
- e_cal_backend_get_changes (cal->priv->backend, cal, context, change_id);
+ e_cal_backend_get_changes (cal->priv->backend, cal, invocation, change_id);
+
+ return TRUE;
}
/* EDataCal::getFreeBusy method */
-static void
-impl_Cal_getFreeBusy (EDataCal *cal,
- const gchar **user_list,
- const gulong start,
- const gulong end,
- DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_getFreeBusy (EGdbusCal *object, GDBusMethodInvocation *invocation, const gchar **user_list, guint start, guint end, EDataCal *cal)
{
GList *users = NULL;
@@ -423,97 +365,93 @@ impl_Cal_getFreeBusy (EDataCal *cal,
}
/* call the backend's get_free_busy method */
- e_cal_backend_get_free_busy (cal->priv->backend, cal, context, users, (time_t)start, (time_t)end);
+ e_cal_backend_get_free_busy (cal->priv->backend, cal, invocation, users, (time_t)start, (time_t)end);
+
+ return TRUE;
}
/* EDataCal::discardAlarm method */
-static void
-impl_Cal_discardAlarm (EDataCal *cal,
- const gchar *uid,
- const gchar *auid,
- DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_discardAlarm (EGdbusCal *object, GDBusMethodInvocation *invocation, const gchar *uid, const gchar *auid, EDataCal *cal)
{
- e_cal_backend_discard_alarm (cal->priv->backend, cal, context, uid, auid);
+ e_cal_backend_discard_alarm (cal->priv->backend, cal, invocation, uid, auid);
+
+ return TRUE;
}
/* EDataCal::createObject method */
-static void
-impl_Cal_createObject (EDataCal *cal,
- const gchar *calobj,
- DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_createObject (EGdbusCal *object, GDBusMethodInvocation *invocation, const gchar *calobj, EDataCal *cal)
{
- e_cal_backend_create_object (cal->priv->backend, cal, context, calobj);
+ e_cal_backend_create_object (cal->priv->backend, cal, invocation, calobj);
+
+ return TRUE;
}
/* EDataCal::modifyObject method */
-static void
-impl_Cal_modifyObject (EDataCal *cal,
- const gchar *calobj,
- const EDataCalObjModType mod,
- DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_modifyObject (EGdbusCal *object, GDBusMethodInvocation *invocation, const gchar *calobj, EDataCalObjModType mod, EDataCal *cal)
{
- e_cal_backend_modify_object (cal->priv->backend, cal, context, calobj, mod);
+ e_cal_backend_modify_object (cal->priv->backend, cal, invocation, calobj, mod);
+
+ return TRUE;
}
/* EDataCal::removeObject method */
-static void
-impl_Cal_removeObject (EDataCal *cal,
- const gchar *uid,
- const gchar *rid,
- const EDataCalObjModType mod,
- DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_removeObject (EGdbusCal *object, GDBusMethodInvocation *invocation, const gchar *uid, const gchar *rid, EDataCalObjModType mod, EDataCal *cal)
{
if (rid[0] == '\0')
rid = NULL;
- e_cal_backend_remove_object (cal->priv->backend, cal, context, uid, rid, mod);
+ e_cal_backend_remove_object (cal->priv->backend, cal, invocation, uid, rid, mod);
+
+ return TRUE;
}
/* EDataCal::receiveObjects method */
-static void
-impl_Cal_receiveObjects (EDataCal *cal,
- const gchar *calobj,
- DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_receiveObjects (EGdbusCal *object, GDBusMethodInvocation *invocation, const gchar *calobj, EDataCal *cal)
{
- e_cal_backend_receive_objects (cal->priv->backend, cal, context, calobj);
+ e_cal_backend_receive_objects (cal->priv->backend, cal, invocation, calobj);
+
+ return TRUE;
}
/* EDataCal::sendObjects method */
-static void
-impl_Cal_sendObjects (EDataCal *cal,
- const gchar *calobj,
- DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_sendObjects (EGdbusCal *object, GDBusMethodInvocation *invocation, const gchar *calobj, EDataCal *cal)
{
- e_cal_backend_send_objects (cal->priv->backend, cal, context, calobj);
+ e_cal_backend_send_objects (cal->priv->backend, cal, invocation, calobj);
+
+ return TRUE;
}
/* EDataCal::getAttachmentList method */
-static void
-impl_Cal_getAttachmentList (EDataCal *cal,
- gchar *uid,
- gchar *rid,
- DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_getAttachmentList (EGdbusCal *object, GDBusMethodInvocation *invocation, const gchar *uid, const gchar *rid, EDataCal *cal)
{
- e_cal_backend_get_attachment_list (cal->priv->backend, cal, context, uid, rid);
+ e_cal_backend_get_attachment_list (cal->priv->backend, cal, invocation, uid, rid);
+
+ return TRUE;
}
/* Function to get a new EDataCalView path, used by getQuery below */
static gchar *
construct_calview_path (void)
{
- static guint counter = 1;
- return g_strdup_printf ("/org/gnome/evolution/dataserver/calendar/CalView/%d/%d", getpid(), counter++);
+ static guint counter = 1;
+ return g_strdup_printf ("/org/gnome/evolution/dataserver/calendar/CalView/%d/%d", getpid(), counter++);
}
/* EDataCal::getQuery method */
-static void
-impl_Cal_getQuery (EDataCal *cal,
- const gchar *sexp,
- DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_getQuery (EGdbusCal *object, GDBusMethodInvocation *invocation, const gchar *sexp, EDataCal *cal)
{
EDataCalView *query;
ECalBackendSExp *obj_sexp;
gchar *path;
+ GError *error = NULL;
/* we handle this entirely here, since it doesn't require any
backend involvement now that we have e_cal_view_start to
@@ -521,50 +459,95 @@ impl_Cal_getQuery (EDataCal *cal,
obj_sexp = e_cal_backend_sexp_new (sexp);
if (!obj_sexp) {
- e_data_cal_notify_query (cal, context, EDC_ERROR (InvalidQuery), NULL);
- return;
+ e_data_cal_notify_query (cal, invocation, EDC_ERROR (InvalidQuery), NULL);
+ return TRUE;
}
- path = construct_calview_path ();
- query = e_data_cal_view_new (cal->priv->backend, path, obj_sexp);
+ query = e_data_cal_view_new (cal->priv->backend, obj_sexp);
if (!query) {
g_object_unref (obj_sexp);
- e_data_cal_notify_query (cal, context, EDC_ERROR (OtherError), NULL);
- return;
+ e_data_cal_notify_query (cal, invocation, EDC_ERROR (OtherError), NULL);
+ return TRUE;
+ }
+
+ path = construct_calview_path ();
+ e_data_cal_view_register_gdbus_object (query, g_dbus_method_invocation_get_connection (invocation), path, &error);
+
+ if (error) {
+ g_object_unref (query);
+ e_data_cal_notify_query (cal, invocation, EDC_ERROR_EX (OtherError, error->message), NULL);
+ g_error_free (error);
+ g_free (path);
+
+ return TRUE;
}
e_cal_backend_add_query (cal->priv->backend, query);
- e_data_cal_notify_query (cal, context, EDC_ERROR (Success), path);
+ e_data_cal_notify_query (cal, invocation, EDC_ERROR (Success), path);
g_free (path);
+
+ return TRUE;
}
/* EDataCal::getTimezone method */
-static void
-impl_Cal_getTimezone (EDataCal *cal,
- const gchar *tzid,
- DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_getTimezone (EGdbusCal *object, GDBusMethodInvocation *invocation, const gchar *tzid, EDataCal *cal)
{
- e_cal_backend_get_timezone (cal->priv->backend, cal, context, tzid);
+ e_cal_backend_get_timezone (cal->priv->backend, cal, invocation, tzid);
+
+ return TRUE;
}
/* EDataCal::addTimezone method */
-static void
-impl_Cal_addTimezone (EDataCal *cal,
- const gchar *tz,
- DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_addTimezone (EGdbusCal *object, GDBusMethodInvocation *invocation, const gchar *tz, EDataCal *cal)
{
- e_cal_backend_add_timezone (cal->priv->backend, cal, context, tz);
+ e_cal_backend_add_timezone (cal->priv->backend, cal, invocation, tz);
+
+ return TRUE;
}
/* EDataCal::setDefaultTimezone method */
-static void
-impl_Cal_setDefaultTimezone (EDataCal *cal,
- const gchar *tz,
- DBusGMethodInvocation *context)
+static gboolean
+impl_Cal_setDefaultTimezone (EGdbusCal *object, GDBusMethodInvocation *invocation, const gchar *tz, EDataCal *cal)
+{
+ e_cal_backend_set_default_zone (cal->priv->backend, cal, invocation, tz);
+
+ return TRUE;
+}
+
+/* free returned pointer with g_free() */
+static gchar **
+create_str_array_from_glist (GList *lst)
{
- e_cal_backend_set_default_zone (cal->priv->backend, cal, context, tz);
+ gchar **seq;
+ GList *l;
+ gint i;
+
+ seq = g_new0 (gchar *, g_list_length (lst) + 1);
+ for (l = lst, i = 0; l; l = l->next, i++) {
+ seq[i] = l->data;
+ }
+
+ return seq;
+}
+
+/* free returned pointer with g_free() */
+static gchar **
+create_str_array_from_gslist (GSList *lst)
+{
+ gchar **seq;
+ GSList *l;
+ gint i;
+
+ seq = g_new0 (gchar *, g_slist_length (lst) + 1);
+ for (l = lst, i = 0; l; l = l->next, i++) {
+ seq[i] = l->data;
+ }
+
+ return seq;
}
/**
@@ -585,7 +568,7 @@ e_data_cal_notify_read_only (EDataCal *cal, GError *error, gboolean read_only)
e_data_cal_notify_error (cal, error->message);
g_error_free (error);
} else {
- g_signal_emit (cal, signals[READ_ONLY], 0, read_only);
+ e_gdbus_cal_emit_readonly (cal->priv->gdbus_object, read_only);
}
}
@@ -600,13 +583,13 @@ e_data_cal_notify_read_only (EDataCal *cal, GError *error, gboolean read_only)
void
e_data_cal_notify_cal_address (EDataCal *cal, EServerMethodContext context, GError *error, const gchar *address)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot retrieve calendar address: %s"));
+ data_cal_return_error (invocation, error, _("Cannot retrieve calendar address: %s"));
g_error_free (error);
} else
- dbus_g_method_return (method, address ? address : "");
+ e_gdbus_cal_complete_get_cal_address (cal->priv->gdbus_object, invocation, address ? address : "");
}
/**
@@ -620,13 +603,13 @@ e_data_cal_notify_cal_address (EDataCal *cal, EServerMethodContext context, GErr
void
e_data_cal_notify_alarm_email_address (EDataCal *cal, EServerMethodContext context, GError *error, const gchar *address)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot retrieve calendar alarm e-mail address: %s"));
+ data_cal_return_error (invocation, error, _("Cannot retrieve calendar alarm e-mail address: %s"));
g_error_free (error);
} else
- dbus_g_method_return (method, address ? address : "");
+ e_gdbus_cal_complete_get_alarm_email_address (cal->priv->gdbus_object, invocation, address ? address : "");
}
/**
@@ -640,13 +623,13 @@ e_data_cal_notify_alarm_email_address (EDataCal *cal, EServerMethodContext conte
void
e_data_cal_notify_ldap_attribute (EDataCal *cal, EServerMethodContext context, GError *error, const gchar *attribute)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot retrieve calendar's ldap attribute: %s"));
+ data_cal_return_error (invocation, error, _("Cannot retrieve calendar's ldap attribute: %s"));
g_error_free (error);
} else
- dbus_g_method_return (method, attribute ? attribute : "");
+ e_gdbus_cal_complete_get_ldap_attribute (cal->priv->gdbus_object, invocation, attribute ? attribute : "");
}
/**
@@ -660,13 +643,13 @@ e_data_cal_notify_ldap_attribute (EDataCal *cal, EServerMethodContext context, G
void
e_data_cal_notify_static_capabilities (EDataCal *cal, EServerMethodContext context, GError *error, const gchar *capabilities)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot retrieve calendar scheduling information: %s"));
+ data_cal_return_error (invocation, error, _("Cannot retrieve calendar scheduling information: %s"));
g_error_free (error);
} else
- dbus_g_method_return (method, capabilities ? capabilities : "");
+ e_gdbus_cal_complete_get_scheduling_information (cal->priv->gdbus_object, invocation, capabilities ? capabilities : "");
}
/**
@@ -679,13 +662,13 @@ e_data_cal_notify_static_capabilities (EDataCal *cal, EServerMethodContext conte
void
e_data_cal_notify_open (EDataCal *cal, EServerMethodContext context, GError *error)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot open calendar: %s"));
+ data_cal_return_error (invocation, error, _("Cannot open calendar: %s"));
g_error_free (error);
} else
- dbus_g_method_return (method);
+ e_gdbus_cal_complete_open (cal->priv->gdbus_object, invocation);
}
/**
@@ -700,13 +683,13 @@ e_data_cal_notify_open (EDataCal *cal, EServerMethodContext context, GError *err
void
e_data_cal_notify_refresh (EDataCal *cal, EServerMethodContext context, GError *error)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot refresh calendar: %s"));
+ data_cal_return_error (invocation, error, _("Cannot refresh calendar: %s"));
g_error_free (error);
} else
- dbus_g_method_return (method);
+ e_gdbus_cal_complete_refresh (cal->priv->gdbus_object, invocation);
}
/**
@@ -719,13 +702,13 @@ e_data_cal_notify_refresh (EDataCal *cal, EServerMethodContext context, GError *
void
e_data_cal_notify_remove (EDataCal *cal, EServerMethodContext context, GError *error)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot remove calendar: %s"));
+ data_cal_return_error (invocation, error, _("Cannot remove calendar: %s"));
g_error_free (error);
} else
- dbus_g_method_return (method);
+ e_gdbus_cal_complete_remove (cal->priv->gdbus_object, invocation);
}
/**
@@ -740,14 +723,14 @@ e_data_cal_notify_remove (EDataCal *cal, EServerMethodContext context, GError *e
e_data_cal_notify_object_created (EDataCal *cal, EServerMethodContext context, GError *error,
const gchar *uid, const gchar *object)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot create calendar object: %s"));
+ data_cal_return_error (invocation, error, _("Cannot create calendar object: %s"));
g_error_free (error);
} else {
e_cal_backend_notify_object_created (cal->priv->backend, object);
- dbus_g_method_return (method, uid ? uid : "");
+ e_gdbus_cal_complete_create_object (cal->priv->gdbus_object, invocation, uid ? uid : "");
}
}
@@ -764,14 +747,14 @@ void
e_data_cal_notify_object_modified (EDataCal *cal, EServerMethodContext context, GError *error,
const gchar *old_object, const gchar *object)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot modify calendar object: %s"));
+ data_cal_return_error (invocation, error, _("Cannot modify calendar object: %s"));
g_error_free (error);
} else {
e_cal_backend_notify_object_modified (cal->priv->backend, old_object, object);
- dbus_g_method_return (method);
+ e_gdbus_cal_complete_modify_object (cal->priv->gdbus_object, invocation);
}
}
@@ -790,14 +773,14 @@ void
e_data_cal_notify_object_removed (EDataCal *cal, EServerMethodContext context, GError *error,
const ECalComponentId *id, const gchar *old_object, const gchar *object)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot remove calendar object: %s"));
+ data_cal_return_error (invocation, error, _("Cannot remove calendar object: %s"));
g_error_free (error);
} else {
e_cal_backend_notify_object_removed (cal->priv->backend, id, old_object, object);
- dbus_g_method_return (method);
+ e_gdbus_cal_complete_remove_object (cal->priv->gdbus_object, invocation);
}
}
@@ -811,13 +794,13 @@ e_data_cal_notify_object_removed (EDataCal *cal, EServerMethodContext context, G
void
e_data_cal_notify_objects_received (EDataCal *cal, EServerMethodContext context, GError *error)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot receive calendar objects: %s"));
+ data_cal_return_error (invocation, error, _("Cannot receive calendar objects: %s"));
g_error_free (error);
} else
- dbus_g_method_return (method);
+ e_gdbus_cal_complete_receive_objects (cal->priv->gdbus_object, invocation);
}
/**
@@ -830,13 +813,13 @@ e_data_cal_notify_objects_received (EDataCal *cal, EServerMethodContext context,
void
e_data_cal_notify_alarm_discarded (EDataCal *cal, EServerMethodContext context, GError *error)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot discard calendar alarm: %s"));
+ data_cal_return_error (invocation, error, _("Cannot discard calendar alarm: %s"));
g_error_free (error);
} else
- dbus_g_method_return (method);
+ e_gdbus_cal_complete_discard_alarm (cal->priv->gdbus_object, invocation);
}
/**
@@ -851,29 +834,17 @@ e_data_cal_notify_alarm_discarded (EDataCal *cal, EServerMethodContext context,
void
e_data_cal_notify_objects_sent (EDataCal *cal, EServerMethodContext context, GError *error, GList *users, const gchar *calobj)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot send calendar objects: %s"));
+ data_cal_return_error (invocation, error, _("Cannot send calendar objects: %s"));
g_error_free (error);
} else {
- gchar **users_array = NULL;
-
- if (users) {
- GList *l;
- gchar **user;
-
- users_array = g_new0 (gchar *, g_list_length (users)+1);
- if (users_array)
- for (l = users, user = users_array; l != NULL; l = l->next, user++)
- *user = g_strdup (l->data);
- }
- else
- users_array = g_new0 (gchar *, 1);
-
- dbus_g_method_return (method, users_array, calobj ? calobj : "");
- if (users_array)
- g_strfreev (users_array);
+ gchar **users_array = create_str_array_from_glist (users);
+
+ e_gdbus_cal_complete_send_objects (cal->priv->gdbus_object, invocation, (const gchar * const *) users_array, calobj ? calobj : "");
+
+ g_free (users_array);
}
}
@@ -888,13 +859,13 @@ e_data_cal_notify_objects_sent (EDataCal *cal, EServerMethodContext context, GEr
void
e_data_cal_notify_default_object (EDataCal *cal, EServerMethodContext context, GError *error, const gchar *object)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot retrieve default calendar object path: %s"));
+ data_cal_return_error (invocation, error, _("Cannot retrieve default calendar object path: %s"));
g_error_free (error);
} else
- dbus_g_method_return (method, object ? object : "");
+ e_gdbus_cal_complete_get_default_object (cal->priv->gdbus_object, invocation, object ? object : "");
}
/**
@@ -908,13 +879,13 @@ e_data_cal_notify_default_object (EDataCal *cal, EServerMethodContext context, G
void
e_data_cal_notify_object (EDataCal *cal, EServerMethodContext context, GError *error, const gchar *object)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot retrieve calendar object path: %s"));
+ data_cal_return_error (invocation, error, _("Cannot retrieve calendar object path: %s"));
g_error_free (error);
} else
- dbus_g_method_return (method, object ? object : "");
+ e_gdbus_cal_complete_get_object (cal->priv->gdbus_object, invocation, object ? object : "");
}
/**
@@ -928,22 +899,15 @@ e_data_cal_notify_object (EDataCal *cal, EServerMethodContext context, GError *e
void
e_data_cal_notify_object_list (EDataCal *cal, EServerMethodContext context, GError *error, GList *objects)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot retrieve calendar object list: %s"));
+ data_cal_return_error (invocation, error, _("Cannot retrieve calendar object list: %s"));
g_error_free (error);
} else {
- gchar **seq = NULL;
- GList *l;
- gint i;
+ gchar **seq = create_str_array_from_glist (objects);
- seq = g_new0 (gchar *, g_list_length (objects)+1);
- for (l = objects, i = 0; l; l = l->next, i++) {
- seq[i] = l->data;
- }
-
- dbus_g_method_return (method, seq);
+ e_gdbus_cal_complete_get_object_list (cal->priv->gdbus_object, invocation, (const gchar * const *) seq);
g_free (seq);
}
@@ -959,22 +923,19 @@ e_data_cal_notify_object_list (EDataCal *cal, EServerMethodContext context, GErr
void
e_data_cal_notify_attachment_list (EDataCal *cal, EServerMethodContext context, GError *error, GSList *attachments)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
gchar **seq;
- GSList *l;
- gint i;
- seq = g_new0 (gchar *, g_slist_length (attachments));
- for (l = attachments, i = 0; l; l = l->next, i++) {
- seq[i] = g_strdup (l->data);
- }
+ seq = create_str_array_from_gslist (attachments);
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Could not retrieve attachment list: %s"));
+ data_cal_return_error (invocation, error, _("Could not retrieve attachment list: %s"));
g_error_free (error);
} else
- dbus_g_method_return (method, seq);
+ e_gdbus_cal_complete_get_attachment_list (cal->priv->gdbus_object, invocation, (const gchar * const *) seq);
+
+ g_free (seq);
}
/**
@@ -992,13 +953,13 @@ e_data_cal_notify_query (EDataCal *cal, EServerMethodContext context, GError *er
* Only have a seperate notify function to follow suit with the rest of this
* file - it'd be much easier to just do the return in the above function
*/
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Could not complete calendar query: %s"));
+ data_cal_return_error (invocation, error, _("Could not complete calendar query: %s"));
g_error_free (error);
} else
- dbus_g_method_return (method, query);
+ e_gdbus_cal_complete_get_query (cal->priv->gdbus_object, invocation, query);
}
/**
@@ -1012,13 +973,13 @@ e_data_cal_notify_query (EDataCal *cal, EServerMethodContext context, GError *er
void
e_data_cal_notify_timezone_requested (EDataCal *cal, EServerMethodContext context, GError *error, const gchar *object)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Could not retrieve calendar time zone: %s"));
+ data_cal_return_error (invocation, error, _("Could not retrieve calendar time zone: %s"));
g_error_free (error);
} else
- dbus_g_method_return (method, object ? object : "");
+ e_gdbus_cal_complete_get_timezone (cal->priv->gdbus_object, invocation, object ? object : "");
}
/**
@@ -1032,13 +993,13 @@ e_data_cal_notify_timezone_requested (EDataCal *cal, EServerMethodContext contex
void
e_data_cal_notify_timezone_added (EDataCal *cal, EServerMethodContext context, GError *error, const gchar *tzid)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Could not add calendar time zone: %s"));
+ data_cal_return_error (invocation, error, _("Could not add calendar time zone: %s"));
g_error_free (error);
} else
- dbus_g_method_return (method, tzid ? tzid : "");
+ e_gdbus_cal_complete_add_timezone (cal->priv->gdbus_object, invocation);
}
/**
@@ -1051,13 +1012,13 @@ e_data_cal_notify_timezone_added (EDataCal *cal, EServerMethodContext context, G
void
e_data_cal_notify_default_timezone_set (EDataCal *cal, EServerMethodContext context, GError *error)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Could not set default calendar time zone: %s"));
+ data_cal_return_error (invocation, error, _("Could not set default calendar time zone: %s"));
g_error_free (error);
} else
- dbus_g_method_return (method);
+ e_gdbus_cal_complete_set_default_timezone (cal->priv->gdbus_object, invocation);
}
/**
@@ -1074,44 +1035,23 @@ void
e_data_cal_notify_changes (EDataCal *cal, EServerMethodContext context, GError *error,
GList *adds, GList *modifies, GList *deletes)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot retrieve calendar changes: %s"));
+ data_cal_return_error (invocation, error, _("Cannot retrieve calendar changes: %s"));
g_error_free (error);
} else {
gchar **additions, **modifications, **removals;
- GList *l;
- gint i;
- additions = NULL;
- if (adds) {
- additions = g_new0 (gchar *, g_list_length (adds) + 1);
- if (additions)
- for (i = 0, l = adds; l; i++, l = l->next)
- additions[i] = g_strdup (l->data);
- }
-
- modifications = NULL;
- if (modifies) {
- modifications = g_new0 (gchar *, g_list_length (modifies) + 1);
- if (modifications)
- for (i = 0, l = modifies; l; i++, l = l->next)
- modifications[i] = g_strdup (l->data);
- }
-
- removals = NULL;
- if (deletes) {
- removals = g_new0 (gchar *, g_list_length (deletes) + 1);
- if (removals)
- for (i = 0, l = deletes; l; i++, l = l->next)
- removals[i] = g_strdup (l->data);
- }
-
- dbus_g_method_return (method, additions, modifications, removals);
- if (additions) g_strfreev (additions);
- if (modifications) g_strfreev (modifications);
- if (removals) g_strfreev (removals);
+ additions = create_str_array_from_glist (adds);
+ modifications = create_str_array_from_glist (modifies);
+ removals = create_str_array_from_glist (deletes);
+
+ e_gdbus_cal_complete_get_changes (cal->priv->gdbus_object, invocation, (const gchar * const *) additions, (const gchar * const *) modifications, (const gchar * const *) removals);
+
+ g_free (additions);
+ g_free (modifications);
+ g_free (removals);
}
}
@@ -1126,23 +1066,19 @@ e_data_cal_notify_changes (EDataCal *cal, EServerMethodContext context, GError *
void
e_data_cal_notify_free_busy (EDataCal *cal, EServerMethodContext context, GError *error, GList *freebusy)
{
- DBusGMethodInvocation *method = context;
+ GDBusMethodInvocation *invocation = context;
if (error) {
/* Translators: The '%s' is replaced with a detailed error message */
- data_cal_return_error (method, error, _("Cannot retrieve calendar free/busy list: %s"));
+ data_cal_return_error (invocation, error, _("Cannot retrieve calendar free/busy list: %s"));
g_error_free (error);
} else {
gchar **seq;
- GList *l;
- gint i;
- seq = g_new0 (gchar *, g_list_length (freebusy) + 1);
- for (i = 0, l = freebusy; l; i++, l = l->next) {
- seq[i] = g_strdup (l->data);
- }
+ seq = create_str_array_from_glist (freebusy);
+
+ e_gdbus_cal_complete_get_free_busy (cal->priv->gdbus_object, invocation, (const gchar * const *) seq);
- dbus_g_method_return (method, seq);
- g_strfreev (seq);
+ g_free (seq);
}
}
@@ -1162,7 +1098,7 @@ e_data_cal_notify_mode (EDataCal *cal,
g_return_if_fail (cal != NULL);
g_return_if_fail (E_IS_DATA_CAL (cal));
- g_signal_emit (cal, signals[MODE], 0, mode);
+ e_gdbus_cal_emit_mode (cal->priv->gdbus_object, mode);
}
/**
@@ -1177,7 +1113,7 @@ e_data_cal_notify_auth_required (EDataCal *cal)
g_return_if_fail (cal != NULL);
g_return_if_fail (E_IS_DATA_CAL (cal));
- g_signal_emit (cal, signals[AUTH_REQUIRED], 0);
+ e_gdbus_cal_emit_auth_required (cal->priv->gdbus_object);
}
/**
@@ -1193,5 +1129,97 @@ e_data_cal_notify_error (EDataCal *cal, const gchar *message)
g_return_if_fail (cal != NULL);
g_return_if_fail (E_IS_DATA_CAL (cal));
- g_signal_emit (cal, signals[BACKEND_ERROR], 0, message);
+ e_gdbus_cal_emit_backend_error (cal->priv->gdbus_object, message);
+}
+
+/* Instance init */
+static void
+e_data_cal_init (EDataCal *ecal)
+{
+ EGdbusCal *gdbus_object;
+
+ ecal->priv = E_DATA_CAL_GET_PRIVATE (ecal);
+
+ ecal->priv->gdbus_object = e_gdbus_cal_stub_new ();
+
+ gdbus_object = ecal->priv->gdbus_object;
+ g_signal_connect (gdbus_object, "handle-get-uri", G_CALLBACK (impl_Cal_getUri), ecal);
+ g_signal_connect (gdbus_object, "handle-get-cache-dir", G_CALLBACK (impl_Cal_getCacheDir), ecal);
+ g_signal_connect (gdbus_object, "handle-open", G_CALLBACK (impl_Cal_open), ecal);
+ g_signal_connect (gdbus_object, "handle-refresh", G_CALLBACK (impl_Cal_refresh), ecal);
+ g_signal_connect (gdbus_object, "handle-close", G_CALLBACK (impl_Cal_close), ecal);
+ g_signal_connect (gdbus_object, "handle-remove", G_CALLBACK (impl_Cal_remove), ecal);
+ g_signal_connect (gdbus_object, "handle-is-read-only", G_CALLBACK (impl_Cal_isReadOnly), ecal);
+ g_signal_connect (gdbus_object, "handle-get-cal-address", G_CALLBACK (impl_Cal_getCalAddress), ecal);
+ g_signal_connect (gdbus_object, "handle-get-alarm-email-address", G_CALLBACK (impl_Cal_getAlarmEmailAddress), ecal);
+ g_signal_connect (gdbus_object, "handle-get-ldap-attribute", G_CALLBACK (impl_Cal_getLdapAttribute), ecal);
+ g_signal_connect (gdbus_object, "handle-get-scheduling-information", G_CALLBACK (impl_Cal_getSchedulingInformation), ecal);
+ g_signal_connect (gdbus_object, "handle-set-mode", G_CALLBACK (impl_Cal_setMode), ecal);
+ g_signal_connect (gdbus_object, "handle-get-default-object", G_CALLBACK (impl_Cal_getDefaultObject), ecal);
+ g_signal_connect (gdbus_object, "handle-get-object", G_CALLBACK (impl_Cal_getObject), ecal);
+ g_signal_connect (gdbus_object, "handle-get-object-list", G_CALLBACK (impl_Cal_getObjectList), ecal);
+ g_signal_connect (gdbus_object, "handle-get-changes", G_CALLBACK (impl_Cal_getChanges), ecal);
+ g_signal_connect (gdbus_object, "handle-get-free-busy", G_CALLBACK (impl_Cal_getFreeBusy), ecal);
+ g_signal_connect (gdbus_object, "handle-discard-alarm", G_CALLBACK (impl_Cal_discardAlarm), ecal);
+ g_signal_connect (gdbus_object, "handle-create-object", G_CALLBACK (impl_Cal_createObject), ecal);
+ g_signal_connect (gdbus_object, "handle-modify-object", G_CALLBACK (impl_Cal_modifyObject), ecal);
+ g_signal_connect (gdbus_object, "handle-remove-object", G_CALLBACK (impl_Cal_removeObject), ecal);
+ g_signal_connect (gdbus_object, "handle-receive-objects", G_CALLBACK (impl_Cal_receiveObjects), ecal);
+ g_signal_connect (gdbus_object, "handle-send-objects", G_CALLBACK (impl_Cal_sendObjects), ecal);
+ g_signal_connect (gdbus_object, "handle-get-attachment-list", G_CALLBACK (impl_Cal_getAttachmentList), ecal);
+ g_signal_connect (gdbus_object, "handle-get-query", G_CALLBACK (impl_Cal_getQuery), ecal);
+ g_signal_connect (gdbus_object, "handle-get-timezone", G_CALLBACK (impl_Cal_getTimezone), ecal);
+ g_signal_connect (gdbus_object, "handle-add-timezone", G_CALLBACK (impl_Cal_addTimezone), ecal);
+ g_signal_connect (gdbus_object, "handle-set-default-timezone", G_CALLBACK (impl_Cal_setDefaultTimezone), ecal);
+}
+
+static void
+e_data_cal_finalize (GObject *object)
+{
+ EDataCal *cal = E_DATA_CAL (object);
+
+ g_return_if_fail (cal != NULL);
+
+ g_object_unref (cal->priv->gdbus_object);
+
+ if (G_OBJECT_CLASS (e_data_cal_parent_class)->finalize)
+ G_OBJECT_CLASS (e_data_cal_parent_class)->finalize (object);
+}
+
+/* Class init */
+static void
+e_data_cal_class_init (EDataCalClass *klass)
+{
+ GObjectClass *object_class;
+
+ g_type_class_add_private (klass, sizeof (EDataCalPrivate));
+
+ object_class = G_OBJECT_CLASS (klass);
+ object_class->finalize = e_data_cal_finalize;
+}
+
+EDataCal *
+e_data_cal_new (ECalBackend *backend, ESource *source)
+{
+ EDataCal *cal;
+ cal = g_object_new (E_TYPE_DATA_CAL, NULL);
+ cal->priv->backend = backend;
+ cal->priv->source = source;
+ return cal;
+}
+
+/**
+ * e_data_cal_register_gdbus_object:
+ *
+ * Registers GDBus object of this EDataCal.
+ **/
+guint
+e_data_cal_register_gdbus_object (EDataCal *cal, GDBusConnection *connection, const gchar *object_path, GError **error)
+{
+ g_return_val_if_fail (cal != NULL, 0);
+ g_return_val_if_fail (E_IS_DATA_CAL (cal), 0);
+ g_return_val_if_fail (connection != NULL, 0);
+ g_return_val_if_fail (object_path != NULL, 0);
+
+ return e_gdbus_cal_register_object (cal->priv->gdbus_object, connection, object_path, error);
}
diff --git a/calendar/libedata-cal/e-data-cal.h b/calendar/libedata-cal/e-data-cal.h
index 81b9940..10eefcf 100644
--- a/calendar/libedata-cal/e-data-cal.h
+++ b/calendar/libedata-cal/e-data-cal.h
@@ -24,7 +24,7 @@
#define E_DATA_CAL_H
#include <glib-object.h>
-#include <dbus/dbus-glib.h>
+#include <gio/gio.h>
#include <libedata-cal/e-data-cal-common.h>
#include <libedata-cal/e-data-cal-view.h>
#include <libedata-cal/e-data-cal-types.h>
@@ -100,6 +100,8 @@ GType e_data_cal_get_type (void);
EDataCal *e_data_cal_new (ECalBackend *backend, ESource *source);
+guint e_data_cal_register_gdbus_object (EDataCal *cal, GDBusConnection *connection, const gchar *object_path, GError **error);
+
ECalBackend *e_data_cal_get_backend (EDataCal *cal);
ESource* e_data_cal_get_source (EDataCal *cal);
diff --git a/calendar/libegdbus/Makefile.am b/calendar/libegdbus/Makefile.am
new file mode 100644
index 0000000..b314368
--- /dev/null
+++ b/calendar/libegdbus/Makefile.am
@@ -0,0 +1,38 @@
+GDBUS_XML_FILES = \
+ ../libedata-cal/e-data-cal-factory.xml \
+ ../libedata-cal/e-data-cal-view.xml \
+ ../libedata-cal/e-data-cal.xml
+
+gdbus-files: $(GDBUS_XML_FILES)
+ gdbus-codegen --namespace=EGdbus --strip-prefix=org.gnome.evolution.dataserver.calendar --output-prefix=e-gdbus $(GDBUS_XML_FILES)
+ rm e-gdbus-bindings.h
+ rm e-gdbus-bindings.stamp
+
+# The library
+noinst_LTLIBRARIES = libegdbus-cal.la
+
+libegdbus_cal_la_CPPFLAGS = \
+ $(AM_CPPFLAGS) \
+ -DG_LOG_DOMAIN=\"libegdbus-cal\" \
+ -I$(top_srcdir)/calendar \
+ $(GNOME_PLATFORM_CFLAGS)
+
+libegdbus_cal_la_SOURCES = \
+ e-gdbus-egdbuscal.h \
+ e-gdbus-egdbuscal.c \
+ e-gdbus-egdbuscalfactory.h \
+ e-gdbus-egdbuscalfactory.c \
+ e-gdbus-egdbuscalview.h \
+ e-gdbus-egdbuscalview.c \
+ e-gdbus-marshallers.h \
+ e-gdbus-marshallers.c \
+ e-gdbus-typemappers.h
+
+libegdbus_cal_la_LIBADD = \
+ $(GNOME_PLATFORM_LIBS)
+
+libegdbus_cal_la_LDFLAGS = $(NO_UNDEFINED)
+
+EXTRA_DIST = e-gdbus-marshallers.list
+
+-include $(top_srcdir)/git.mk
diff --git a/calendar/libegdbus/e-gdbus-egdbuscal.c b/calendar/libegdbus/e-gdbus-egdbuscal.c
new file mode 100644
index 0000000..ff85a77
--- /dev/null
+++ b/calendar/libegdbus/e-gdbus-egdbuscal.c
@@ -0,0 +1,7289 @@
+/* File: e-gdbus-egdbuscal.c
+ *
+ * GType name: EGdbusCal
+ * D-Bus name: org.gnome.evolution.dataserver.calendar.Cal
+ *
+ * Generated by GDBus Binding Tool 0.1. DO NOT EDIT.
+ */
+
+/**
+ * SECTION:e-gdbus-egdbuscal
+ * @title: EGdbusCal
+ * @short_description: Wraps the org.gnome.evolution.dataserver.calendar.Cal D-Bus interface
+ * @include: gio/gio.h
+ *
+ * The abstract #EGdbusCal interface type wraps the <literal>org.gnome.evolution.dataserver.calendar.Cal</literal> D-Bus interface. Two concrete implementations of this type are included: #EGdbusCalProxy and #EGdbusCalStub.
+ *
+ * The generated proxy type #EGdbusCalProxy is typically used with the generated constructors e_gdbus_cal_proxy_new(), e_gdbus_cal_proxy_new_sync() and e_gdbus_cal_proxy_new_for_bus(), e_gdbus_cal_proxy_new_for_bus_sync().
+ *
+ * The generated stub type #EGdbusCalStub takes care of handling properties, method invocations and signal emissions. Simply use e_gdbus_cal_stub_new(), set some properties and connect to any of the handle-* signals to handle method invocations. Finally use e_gdbus_cal_register_object() to export the object on a #GDBusConnection.
+ * |[
+ * /<!-- -->* You can also use g_object_new() with E_GDBUS_TYPE_CAL_STUB
+ * * to set properties at construction time.
+ * *<!-- -->/
+ * object = e_gdbus_cal_stub_new ();
+ * e_gdbus_cal_set_<property_name> (object, <value_for_property>);
+ * [...]
+ *
+ * g_signal_connect (object,
+ * "handle-<method-name>",
+ * G_CALLBACK (on_handle_<method_name>),
+ * some_user_data);
+ * [...]
+ *
+ * error = NULL;
+ * id = e_gdbus_cal_register_object (object,
+ * connection,
+ * "/path/of/object",
+ * &error);
+ * ]|
+ *
+ * You don't <emphasis>have</emphasis> to use the generated stub type to export
+ * objects. Any type implementing the #EGdbusCal interface may be used with
+ * e_gdbus_cal_register_object().
+ *
+ * Once exported, you can make the exported object emit D-Bus signals by simply
+ * emitting the corresponding GType signals. For better type-safety, you can use,
+ * the provided e_gdbus_cal_emit_*() helpers.
+ *
+ * For property changes, #GObject::notify signal emissions on exported objects
+ * will be intercepted and queued. In an idle handler, the queued notifications
+ * are processed and a single <literal>PropertiesChanged</literal> signal (on the
+ * <literal>org.freedesktop.DBus.Properties</literal> interface) will be emitted
+ * for all the properties that changed (possibly containing several properties).
+ * Use e_gdbus_cal_drain_notify() to drain the queue immediately.
+ */
+
+#include "e-gdbus-egdbuscal.h"
+#include "e-gdbus-typemappers.h"
+#include "e-gdbus-marshallers.h"
+
+typedef EGdbusCalIface EGdbusCalInterface;
+G_DEFINE_INTERFACE (EGdbusCal, e_gdbus_cal, G_TYPE_OBJECT);
+
+
+enum
+{
+ _0_SIGNAL,
+ __AUTH_REQUIRED_SIGNAL,
+ __BACKEND_ERROR_SIGNAL,
+ __READONLY_SIGNAL,
+ __MODE_SIGNAL,
+ __GET_URI_METHOD,
+ __GET_CACHE_DIR_METHOD,
+ __OPEN_METHOD,
+ __REFRESH_METHOD,
+ __CLOSE_METHOD,
+ __REMOVE_METHOD,
+ __IS_READ_ONLY_METHOD,
+ __GET_CAL_ADDRESS_METHOD,
+ __GET_ALARM_EMAIL_ADDRESS_METHOD,
+ __GET_LDAP_ATTRIBUTE_METHOD,
+ __GET_SCHEDULING_INFORMATION_METHOD,
+ __SET_MODE_METHOD,
+ __GET_DEFAULT_OBJECT_METHOD,
+ __GET_OBJECT_METHOD,
+ __GET_OBJECT_LIST_METHOD,
+ __GET_CHANGES_METHOD,
+ __GET_FREE_BUSY_METHOD,
+ __DISCARD_ALARM_METHOD,
+ __CREATE_OBJECT_METHOD,
+ __MODIFY_OBJECT_METHOD,
+ __REMOVE_OBJECT_METHOD,
+ __RECEIVE_OBJECTS_METHOD,
+ __SEND_OBJECTS_METHOD,
+ __GET_ATTACHMENT_LIST_METHOD,
+ __GET_QUERY_METHOD,
+ __GET_TIMEZONE_METHOD,
+ __ADD_TIMEZONE_METHOD,
+ __SET_DEFAULT_TIMEZONE_METHOD,
+ __LAST_SIGNAL
+};
+
+static guint signals[__LAST_SIGNAL] = {0};
+
+
+enum
+{
+ PROP_0,
+};
+
+/* ------------------------------------------------------------------------- */
+
+/* Various lookup tables */
+
+static GHashTable *_method_name_to_id = NULL;
+static GHashTable *_signal_name_to_id = NULL;
+static GHashTable *_property_name_to_id = NULL;
+static GHashTable *_property_gname_to_name = NULL;
+static GHashTable *_property_name_to_gname = NULL;
+
+
+static guint
+lookup_method_id_from_method_name (const gchar *method_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_method_name_to_id, method_name));
+}
+
+static guint
+lookup_signal_id_from_signal_name (const gchar *signal_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_signal_name_to_id, signal_name));
+}
+
+static guint
+lookup_property_id_from_property_name (const gchar *property_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_property_name_to_id, property_name));
+}
+
+static const gchar *
+lookup_property_name_from_property_gname (const gchar *property_gname)
+{
+ return g_hash_table_lookup (_property_gname_to_name, property_gname);
+}
+
+static const gchar *
+lookup_property_gname_from_property_name (const gchar *property_name)
+{
+ return g_hash_table_lookup (_property_name_to_gname, property_name);
+}
+
+/* ------------------------------------------------------------------------- */
+static gboolean
+signal_emission_hook_cb_auth_required (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ GObject *object;
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *params;
+
+ if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT))
+ goto out;
+ object = g_value_get_object (¶m_values[0]);
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ params = NULL;
+
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.gnome.evolution.dataserver.calendar.Cal",
+ "auth_required",
+ params,
+ NULL);
+out:
+ return TRUE;
+}
+
+static gboolean
+signal_emission_hook_cb_backend_error (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ GObject *object;
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *params;
+ GVariant *item;
+ GVariantBuilder *builder;
+
+ if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT))
+ goto out;
+ object = g_value_get_object (¶m_values[0]);
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE);
+ g_assert_cmpint (n_param_values - 1, ==, 1);
+ param_values++;
+ item = g_variant_new ("s", g_value_get_string (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ params = g_variant_builder_end (builder);
+ g_variant_builder_unref (builder);
+
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.gnome.evolution.dataserver.calendar.Cal",
+ "backend_error",
+ params,
+ NULL);
+out:
+ return TRUE;
+}
+
+static gboolean
+signal_emission_hook_cb_readonly (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ GObject *object;
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *params;
+ GVariant *item;
+ GVariantBuilder *builder;
+
+ if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT))
+ goto out;
+ object = g_value_get_object (¶m_values[0]);
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE);
+ g_assert_cmpint (n_param_values - 1, ==, 1);
+ param_values++;
+ item = g_variant_new_boolean (g_value_get_boolean (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ params = g_variant_builder_end (builder);
+ g_variant_builder_unref (builder);
+
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.gnome.evolution.dataserver.calendar.Cal",
+ "readonly",
+ params,
+ NULL);
+out:
+ return TRUE;
+}
+
+static gboolean
+signal_emission_hook_cb_mode (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ GObject *object;
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *params;
+ GVariant *item;
+ GVariantBuilder *builder;
+
+ if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT))
+ goto out;
+ object = g_value_get_object (¶m_values[0]);
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE);
+ g_assert_cmpint (n_param_values - 1, ==, 1);
+ param_values++;
+ item = g_variant_new_int32 (g_value_get_int (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ params = g_variant_builder_end (builder);
+ g_variant_builder_unref (builder);
+
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.gnome.evolution.dataserver.calendar.Cal",
+ "mode",
+ params,
+ NULL);
+out:
+ return TRUE;
+}
+
+static void
+e_gdbus_cal_default_init (EGdbusCalIface *iface)
+{
+
+ /* Build lookup structures */
+ _method_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _signal_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_gname_to_name = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_name_to_gname = g_hash_table_new (g_str_hash, g_str_equal);
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getUri", GUINT_TO_POINTER (__GET_URI_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getCacheDir", GUINT_TO_POINTER (__GET_CACHE_DIR_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "open", GUINT_TO_POINTER (__OPEN_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "refresh", GUINT_TO_POINTER (__REFRESH_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "close", GUINT_TO_POINTER (__CLOSE_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "remove", GUINT_TO_POINTER (__REMOVE_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "isReadOnly", GUINT_TO_POINTER (__IS_READ_ONLY_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getCalAddress", GUINT_TO_POINTER (__GET_CAL_ADDRESS_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getAlarmEmailAddress", GUINT_TO_POINTER (__GET_ALARM_EMAIL_ADDRESS_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getLdapAttribute", GUINT_TO_POINTER (__GET_LDAP_ATTRIBUTE_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getSchedulingInformation", GUINT_TO_POINTER (__GET_SCHEDULING_INFORMATION_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "setMode", GUINT_TO_POINTER (__SET_MODE_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getDefaultObject", GUINT_TO_POINTER (__GET_DEFAULT_OBJECT_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getObject", GUINT_TO_POINTER (__GET_OBJECT_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getObjectList", GUINT_TO_POINTER (__GET_OBJECT_LIST_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getChanges", GUINT_TO_POINTER (__GET_CHANGES_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getFreeBusy", GUINT_TO_POINTER (__GET_FREE_BUSY_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "discardAlarm", GUINT_TO_POINTER (__DISCARD_ALARM_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "createObject", GUINT_TO_POINTER (__CREATE_OBJECT_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "modifyObject", GUINT_TO_POINTER (__MODIFY_OBJECT_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "removeObject", GUINT_TO_POINTER (__REMOVE_OBJECT_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "receiveObjects", GUINT_TO_POINTER (__RECEIVE_OBJECTS_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "sendObjects", GUINT_TO_POINTER (__SEND_OBJECTS_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getAttachmentList", GUINT_TO_POINTER (__GET_ATTACHMENT_LIST_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getQuery", GUINT_TO_POINTER (__GET_QUERY_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getTimezone", GUINT_TO_POINTER (__GET_TIMEZONE_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "addTimezone", GUINT_TO_POINTER (__ADD_TIMEZONE_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "setDefaultTimezone", GUINT_TO_POINTER (__SET_DEFAULT_TIMEZONE_METHOD));
+ g_hash_table_insert (_signal_name_to_id, (gpointer) "auth_required", GUINT_TO_POINTER (__AUTH_REQUIRED_SIGNAL));
+ g_hash_table_insert (_signal_name_to_id, (gpointer) "backend_error", GUINT_TO_POINTER (__BACKEND_ERROR_SIGNAL));
+ g_hash_table_insert (_signal_name_to_id, (gpointer) "readonly", GUINT_TO_POINTER (__READONLY_SIGNAL));
+ g_hash_table_insert (_signal_name_to_id, (gpointer) "mode", GUINT_TO_POINTER (__MODE_SIGNAL));
+
+ /* GObject signals definitions for D-Bus signals: */
+ /**
+ * EGdbusCal::auth-required:
+ * @object: The object emitting the signal.
+ *
+ * Represents the D-Bus signal <literal>auth_required</literal>.
+ *
+ * On proxies, connect to this signal to get notified whenever the remote
+ * object instances emits the signal (similar to how the
+ * #GDBusProxy::g-signal works). The signal is emitted in the
+ * thread-default main loop of the thread that the proxy was created in.
+ *
+ * On exported objects, emitting this signal causes the actual D-Bus signal to be emitted. You can use e_gdbus_cal_emit_auth_required() to do this.
+ */ signals[__AUTH_REQUIRED_SIGNAL] =
+ g_signal_new ("auth-required",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, auth_required),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+ g_signal_add_emission_hook (signals[__AUTH_REQUIRED_SIGNAL],
+ 0,
+ signal_emission_hook_cb_auth_required,
+ (gpointer) "auth_required",
+ NULL);
+
+ /**
+ * EGdbusCal::backend-error:
+ * @object: The object emitting the signal.
+ * @error: Parameter.
+ *
+ * Represents the D-Bus signal <literal>backend_error</literal>.
+ *
+ * On proxies, connect to this signal to get notified whenever the remote
+ * object instances emits the signal (similar to how the
+ * #GDBusProxy::g-signal works). The signal is emitted in the
+ * thread-default main loop of the thread that the proxy was created in.
+ *
+ * On exported objects, emitting this signal causes the actual D-Bus signal to be emitted. You can use e_gdbus_cal_emit_backend_error() to do this.
+ */ signals[__BACKEND_ERROR_SIGNAL] =
+ g_signal_new ("backend-error",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, backend_error),
+ NULL,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_VOID__STRING,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_STRING);
+ g_signal_add_emission_hook (signals[__BACKEND_ERROR_SIGNAL],
+ 0,
+ signal_emission_hook_cb_backend_error,
+ (gpointer) "backend_error",
+ NULL);
+
+ /**
+ * EGdbusCal::readonly:
+ * @object: The object emitting the signal.
+ * @is_readonly: Parameter.
+ *
+ * Represents the D-Bus signal <literal>readonly</literal>.
+ *
+ * On proxies, connect to this signal to get notified whenever the remote
+ * object instances emits the signal (similar to how the
+ * #GDBusProxy::g-signal works). The signal is emitted in the
+ * thread-default main loop of the thread that the proxy was created in.
+ *
+ * On exported objects, emitting this signal causes the actual D-Bus signal to be emitted. You can use e_gdbus_cal_emit_readonly() to do this.
+ */ signals[__READONLY_SIGNAL] =
+ g_signal_new ("readonly",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, readonly),
+ NULL,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_VOID__BOOLEAN,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_BOOLEAN);
+ g_signal_add_emission_hook (signals[__READONLY_SIGNAL],
+ 0,
+ signal_emission_hook_cb_readonly,
+ (gpointer) "readonly",
+ NULL);
+
+ /**
+ * EGdbusCal::mode:
+ * @object: The object emitting the signal.
+ * @mode: Parameter.
+ *
+ * Represents the D-Bus signal <literal>mode</literal>.
+ *
+ * On proxies, connect to this signal to get notified whenever the remote
+ * object instances emits the signal (similar to how the
+ * #GDBusProxy::g-signal works). The signal is emitted in the
+ * thread-default main loop of the thread that the proxy was created in.
+ *
+ * On exported objects, emitting this signal causes the actual D-Bus signal to be emitted. You can use e_gdbus_cal_emit_mode() to do this.
+ */ signals[__MODE_SIGNAL] =
+ g_signal_new ("mode",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, mode),
+ NULL,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_VOID__INT,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_INT);
+ g_signal_add_emission_hook (signals[__MODE_SIGNAL],
+ 0,
+ signal_emission_hook_cb_mode,
+ (gpointer) "mode",
+ NULL);
+
+
+ /* GObject signals definitions for D-Bus methods: */
+ /**
+ * EGdbusCal::handle-get-uri:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getUri</literal> D-Bus method on @object. Use e_gdbus_cal_complete_get_uri() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_URI_METHOD] =
+ g_signal_new ("handle-get-uri",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_get_uri),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusCal::handle-get-cache-dir:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getCacheDir</literal> D-Bus method on @object. Use e_gdbus_cal_complete_get_cache_dir() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_CACHE_DIR_METHOD] =
+ g_signal_new ("handle-get-cache-dir",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_get_cache_dir),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusCal::handle-open:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @only_if_exists: Parameter.
+ * @username: Parameter.
+ * @password: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>open</literal> D-Bus method on @object. Use e_gdbus_cal_complete_open() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__OPEN_METHOD] =
+ g_signal_new ("handle-open",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_open),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_BOOLEAN_STRING_STRING,
+ G_TYPE_BOOLEAN,
+ 4,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_BOOLEAN,
+ G_TYPE_STRING,
+ G_TYPE_STRING);
+ /**
+ * EGdbusCal::handle-refresh:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>refresh</literal> D-Bus method on @object. Use e_gdbus_cal_complete_refresh() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__REFRESH_METHOD] =
+ g_signal_new ("handle-refresh",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_refresh),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusCal::handle-close:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>close</literal> D-Bus method on @object. Use e_gdbus_cal_complete_close() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__CLOSE_METHOD] =
+ g_signal_new ("handle-close",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_close),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusCal::handle-remove:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>remove</literal> D-Bus method on @object. Use e_gdbus_cal_complete_remove() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__REMOVE_METHOD] =
+ g_signal_new ("handle-remove",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_remove),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusCal::handle-is-read-only:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>isReadOnly</literal> D-Bus method on @object. Use e_gdbus_cal_complete_is_read_only() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__IS_READ_ONLY_METHOD] =
+ g_signal_new ("handle-is-read-only",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_is_read_only),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusCal::handle-get-cal-address:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getCalAddress</literal> D-Bus method on @object. Use e_gdbus_cal_complete_get_cal_address() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_CAL_ADDRESS_METHOD] =
+ g_signal_new ("handle-get-cal-address",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_get_cal_address),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusCal::handle-get-alarm-email-address:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getAlarmEmailAddress</literal> D-Bus method on @object. Use e_gdbus_cal_complete_get_alarm_email_address() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_ALARM_EMAIL_ADDRESS_METHOD] =
+ g_signal_new ("handle-get-alarm-email-address",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_get_alarm_email_address),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusCal::handle-get-ldap-attribute:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getLdapAttribute</literal> D-Bus method on @object. Use e_gdbus_cal_complete_get_ldap_attribute() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_LDAP_ATTRIBUTE_METHOD] =
+ g_signal_new ("handle-get-ldap-attribute",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_get_ldap_attribute),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusCal::handle-get-scheduling-information:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getSchedulingInformation</literal> D-Bus method on @object. Use e_gdbus_cal_complete_get_scheduling_information() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_SCHEDULING_INFORMATION_METHOD] =
+ g_signal_new ("handle-get-scheduling-information",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_get_scheduling_information),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusCal::handle-set-mode:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @mode: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>setMode</literal> D-Bus method on @object. Use e_gdbus_cal_complete_set_mode() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__SET_MODE_METHOD] =
+ g_signal_new ("handle-set-mode",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_set_mode),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_UINT,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_UINT);
+ /**
+ * EGdbusCal::handle-get-default-object:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getDefaultObject</literal> D-Bus method on @object. Use e_gdbus_cal_complete_get_default_object() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_DEFAULT_OBJECT_METHOD] =
+ g_signal_new ("handle-get-default-object",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_get_default_object),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusCal::handle-get-object:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @uid: Parameter.
+ * @rid: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getObject</literal> D-Bus method on @object. Use e_gdbus_cal_complete_get_object() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_OBJECT_METHOD] =
+ g_signal_new ("handle-get-object",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_get_object),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_STRING,
+ G_TYPE_BOOLEAN,
+ 3,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING,
+ G_TYPE_STRING);
+ /**
+ * EGdbusCal::handle-get-object-list:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @sexp: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getObjectList</literal> D-Bus method on @object. Use e_gdbus_cal_complete_get_object_list() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_OBJECT_LIST_METHOD] =
+ g_signal_new ("handle-get-object-list",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_get_object_list),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING);
+ /**
+ * EGdbusCal::handle-get-changes:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @change_id: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getChanges</literal> D-Bus method on @object. Use e_gdbus_cal_complete_get_changes() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_CHANGES_METHOD] =
+ g_signal_new ("handle-get-changes",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_get_changes),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING);
+ /**
+ * EGdbusCal::handle-get-free-busy:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @user_list: Parameter.
+ * @start: Parameter.
+ * @end: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getFreeBusy</literal> D-Bus method on @object. Use e_gdbus_cal_complete_get_free_busy() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_FREE_BUSY_METHOD] =
+ g_signal_new ("handle-get-free-busy",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_get_free_busy),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_BOXED_UINT_UINT,
+ G_TYPE_BOOLEAN,
+ 4,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRV,
+ G_TYPE_UINT,
+ G_TYPE_UINT);
+ /**
+ * EGdbusCal::handle-discard-alarm:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @uid: Parameter.
+ * @auid: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>discardAlarm</literal> D-Bus method on @object. Use e_gdbus_cal_complete_discard_alarm() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__DISCARD_ALARM_METHOD] =
+ g_signal_new ("handle-discard-alarm",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_discard_alarm),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_STRING,
+ G_TYPE_BOOLEAN,
+ 3,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING,
+ G_TYPE_STRING);
+ /**
+ * EGdbusCal::handle-create-object:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @calobj: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>createObject</literal> D-Bus method on @object. Use e_gdbus_cal_complete_create_object() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__CREATE_OBJECT_METHOD] =
+ g_signal_new ("handle-create-object",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_create_object),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING);
+ /**
+ * EGdbusCal::handle-modify-object:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @calobj: Parameter.
+ * @mod: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>modifyObject</literal> D-Bus method on @object. Use e_gdbus_cal_complete_modify_object() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__MODIFY_OBJECT_METHOD] =
+ g_signal_new ("handle-modify-object",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_modify_object),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_UINT,
+ G_TYPE_BOOLEAN,
+ 3,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING,
+ G_TYPE_UINT);
+ /**
+ * EGdbusCal::handle-remove-object:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @uid: Parameter.
+ * @rid: Parameter.
+ * @mod: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>removeObject</literal> D-Bus method on @object. Use e_gdbus_cal_complete_remove_object() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__REMOVE_OBJECT_METHOD] =
+ g_signal_new ("handle-remove-object",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_remove_object),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_STRING_UINT,
+ G_TYPE_BOOLEAN,
+ 4,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_UINT);
+ /**
+ * EGdbusCal::handle-receive-objects:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @calobj: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>receiveObjects</literal> D-Bus method on @object. Use e_gdbus_cal_complete_receive_objects() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__RECEIVE_OBJECTS_METHOD] =
+ g_signal_new ("handle-receive-objects",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_receive_objects),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING);
+ /**
+ * EGdbusCal::handle-send-objects:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @calobj: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>sendObjects</literal> D-Bus method on @object. Use e_gdbus_cal_complete_send_objects() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__SEND_OBJECTS_METHOD] =
+ g_signal_new ("handle-send-objects",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_send_objects),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING);
+ /**
+ * EGdbusCal::handle-get-attachment-list:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @uid: Parameter.
+ * @rid: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getAttachmentList</literal> D-Bus method on @object. Use e_gdbus_cal_complete_get_attachment_list() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_ATTACHMENT_LIST_METHOD] =
+ g_signal_new ("handle-get-attachment-list",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_get_attachment_list),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_STRING,
+ G_TYPE_BOOLEAN,
+ 3,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING,
+ G_TYPE_STRING);
+ /**
+ * EGdbusCal::handle-get-query:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @sexp: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getQuery</literal> D-Bus method on @object. Use e_gdbus_cal_complete_get_query() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_QUERY_METHOD] =
+ g_signal_new ("handle-get-query",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_get_query),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING);
+ /**
+ * EGdbusCal::handle-get-timezone:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @tzid: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getTimezone</literal> D-Bus method on @object. Use e_gdbus_cal_complete_get_timezone() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_TIMEZONE_METHOD] =
+ g_signal_new ("handle-get-timezone",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_get_timezone),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING);
+ /**
+ * EGdbusCal::handle-add-timezone:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @tz: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>addTimezone</literal> D-Bus method on @object. Use e_gdbus_cal_complete_add_timezone() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__ADD_TIMEZONE_METHOD] =
+ g_signal_new ("handle-add-timezone",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_add_timezone),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING);
+ /**
+ * EGdbusCal::handle-set-default-timezone:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @tz: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>setDefaultTimezone</literal> D-Bus method on @object. Use e_gdbus_cal_complete_set_default_timezone() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__SET_DEFAULT_TIMEZONE_METHOD] =
+ g_signal_new ("handle-set-default-timezone",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalIface, handle_set_default_timezone),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING,
+ G_TYPE_BOOLEAN,
+ 2,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING);
+
+ /* GObject property definitions for D-Bus properties: */
+}
+
+
+/* C Bindings for properties */
+
+/**
+ * e_gdbus_cal_call_get_uri:
+ * @proxy: A #EGdbusCal.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getUri</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_get_uri_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_get_uri_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_get_uri (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getUri",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_get_uri_finish:
+ * @proxy: A #EGdbusCal.
+ * @out_str_uri_copy: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_get_uri().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.getUri</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_uri_finish (
+ EGdbusCal *proxy,
+ gchar **out_str_uri_copy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_str_uri_copy);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_get_uri_sync:
+ * @proxy: A #EGdbusCal.
+ * @out_str_uri_copy: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getUri</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_get_uri() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_uri_sync (
+ EGdbusCal *proxy,
+ gchar **out_str_uri_copy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getUri",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_str_uri_copy);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_get_cache_dir:
+ * @proxy: A #EGdbusCal.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getCacheDir</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_get_cache_dir_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_get_cache_dir_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_get_cache_dir (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getCacheDir",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_get_cache_dir_finish:
+ * @proxy: A #EGdbusCal.
+ * @out_dirname: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_get_cache_dir().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.getCacheDir</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_cache_dir_finish (
+ EGdbusCal *proxy,
+ gchar **out_dirname,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_dirname);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_get_cache_dir_sync:
+ * @proxy: A #EGdbusCal.
+ * @out_dirname: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getCacheDir</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_get_cache_dir() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_cache_dir_sync (
+ EGdbusCal *proxy,
+ gchar **out_dirname,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getCacheDir",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_dirname);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_open:
+ * @proxy: A #EGdbusCal.
+ * @in_only_if_exists: Method parameter.
+ * @in_username: Method parameter.
+ * @in_password: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.open</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_open_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_open_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_open (
+ EGdbusCal *proxy,
+ gboolean in_only_if_exists,
+ const gchar *in_username,
+ const gchar *in_password,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(bss)",
+ in_only_if_exists,
+ in_username,
+ in_password);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "open",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_open_finish:
+ * @proxy: A #EGdbusCal.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_open().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.open</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_open_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_open_sync:
+ * @proxy: A #EGdbusCal.
+ * @in_only_if_exists: Method parameter.
+ * @in_username: Method parameter.
+ * @in_password: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.open</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_open() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_open_sync (
+ EGdbusCal *proxy,
+ gboolean in_only_if_exists,
+ const gchar *in_username,
+ const gchar *in_password,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(bss)",
+ in_only_if_exists,
+ in_username,
+ in_password);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "open",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_refresh:
+ * @proxy: A #EGdbusCal.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.refresh</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_refresh_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_refresh_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_refresh (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "refresh",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_refresh_finish:
+ * @proxy: A #EGdbusCal.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_refresh().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.refresh</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_refresh_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_refresh_sync:
+ * @proxy: A #EGdbusCal.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.refresh</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_refresh() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_refresh_sync (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "refresh",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_close:
+ * @proxy: A #EGdbusCal.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.close</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_close_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_close_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_close (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "close",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_close_finish:
+ * @proxy: A #EGdbusCal.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_close().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.close</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_close_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_close_sync:
+ * @proxy: A #EGdbusCal.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.close</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_close() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_close_sync (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "close",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_remove:
+ * @proxy: A #EGdbusCal.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.remove</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_remove_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_remove_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_remove (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "remove",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_remove_finish:
+ * @proxy: A #EGdbusCal.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_remove().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.remove</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_remove_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_remove_sync:
+ * @proxy: A #EGdbusCal.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.remove</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_remove() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_remove_sync (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "remove",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_is_read_only:
+ * @proxy: A #EGdbusCal.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.isReadOnly</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_is_read_only_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_is_read_only_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_is_read_only (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "isReadOnly",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_is_read_only_finish:
+ * @proxy: A #EGdbusCal.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_is_read_only().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.isReadOnly</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_is_read_only_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_is_read_only_sync:
+ * @proxy: A #EGdbusCal.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.isReadOnly</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_is_read_only() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_is_read_only_sync (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "isReadOnly",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_get_cal_address:
+ * @proxy: A #EGdbusCal.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getCalAddress</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_get_cal_address_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_get_cal_address_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_get_cal_address (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getCalAddress",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_get_cal_address_finish:
+ * @proxy: A #EGdbusCal.
+ * @out_address: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_get_cal_address().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.getCalAddress</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_cal_address_finish (
+ EGdbusCal *proxy,
+ gchar **out_address,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_address);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_get_cal_address_sync:
+ * @proxy: A #EGdbusCal.
+ * @out_address: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getCalAddress</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_get_cal_address() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_cal_address_sync (
+ EGdbusCal *proxy,
+ gchar **out_address,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getCalAddress",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_address);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_get_alarm_email_address:
+ * @proxy: A #EGdbusCal.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getAlarmEmailAddress</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_get_alarm_email_address_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_get_alarm_email_address_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_get_alarm_email_address (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getAlarmEmailAddress",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_get_alarm_email_address_finish:
+ * @proxy: A #EGdbusCal.
+ * @out_address: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_get_alarm_email_address().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.getAlarmEmailAddress</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_alarm_email_address_finish (
+ EGdbusCal *proxy,
+ gchar **out_address,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_address);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_get_alarm_email_address_sync:
+ * @proxy: A #EGdbusCal.
+ * @out_address: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getAlarmEmailAddress</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_get_alarm_email_address() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_alarm_email_address_sync (
+ EGdbusCal *proxy,
+ gchar **out_address,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getAlarmEmailAddress",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_address);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_get_ldap_attribute:
+ * @proxy: A #EGdbusCal.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getLdapAttribute</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_get_ldap_attribute_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_get_ldap_attribute_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_get_ldap_attribute (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getLdapAttribute",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_get_ldap_attribute_finish:
+ * @proxy: A #EGdbusCal.
+ * @out_address: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_get_ldap_attribute().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.getLdapAttribute</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_ldap_attribute_finish (
+ EGdbusCal *proxy,
+ gchar **out_address,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_address);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_get_ldap_attribute_sync:
+ * @proxy: A #EGdbusCal.
+ * @out_address: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getLdapAttribute</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_get_ldap_attribute() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_ldap_attribute_sync (
+ EGdbusCal *proxy,
+ gchar **out_address,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getLdapAttribute",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_address);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_get_scheduling_information:
+ * @proxy: A #EGdbusCal.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getSchedulingInformation</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_get_scheduling_information_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_get_scheduling_information_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_get_scheduling_information (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getSchedulingInformation",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_get_scheduling_information_finish:
+ * @proxy: A #EGdbusCal.
+ * @out_capabilities: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_get_scheduling_information().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.getSchedulingInformation</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_scheduling_information_finish (
+ EGdbusCal *proxy,
+ gchar **out_capabilities,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_capabilities);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_get_scheduling_information_sync:
+ * @proxy: A #EGdbusCal.
+ * @out_capabilities: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getSchedulingInformation</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_get_scheduling_information() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_scheduling_information_sync (
+ EGdbusCal *proxy,
+ gchar **out_capabilities,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getSchedulingInformation",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_capabilities);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_set_mode:
+ * @proxy: A #EGdbusCal.
+ * @in_mode: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.setMode</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_set_mode_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_set_mode_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_set_mode (
+ EGdbusCal *proxy,
+ guint in_mode,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(u)",
+ in_mode);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "setMode",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_set_mode_finish:
+ * @proxy: A #EGdbusCal.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_set_mode().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.setMode</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_set_mode_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_set_mode_sync:
+ * @proxy: A #EGdbusCal.
+ * @in_mode: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.setMode</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_set_mode() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_set_mode_sync (
+ EGdbusCal *proxy,
+ guint in_mode,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(u)",
+ in_mode);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "setMode",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_get_default_object:
+ * @proxy: A #EGdbusCal.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getDefaultObject</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_get_default_object_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_get_default_object_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_get_default_object (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getDefaultObject",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_get_default_object_finish:
+ * @proxy: A #EGdbusCal.
+ * @out_object: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_get_default_object().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.getDefaultObject</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_default_object_finish (
+ EGdbusCal *proxy,
+ gchar **out_object,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_object);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_get_default_object_sync:
+ * @proxy: A #EGdbusCal.
+ * @out_object: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getDefaultObject</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_get_default_object() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_default_object_sync (
+ EGdbusCal *proxy,
+ gchar **out_object,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getDefaultObject",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_object);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_get_object:
+ * @proxy: A #EGdbusCal.
+ * @in_uid: Method parameter.
+ * @in_rid: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getObject</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_get_object_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_get_object_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_get_object (
+ EGdbusCal *proxy,
+ const gchar *in_uid,
+ const gchar *in_rid,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(ss)",
+ in_uid,
+ in_rid);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getObject",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_get_object_finish:
+ * @proxy: A #EGdbusCal.
+ * @out_object: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_get_object().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.getObject</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_object_finish (
+ EGdbusCal *proxy,
+ gchar **out_object,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_object);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_get_object_sync:
+ * @proxy: A #EGdbusCal.
+ * @in_uid: Method parameter.
+ * @in_rid: Method parameter.
+ * @out_object: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getObject</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_get_object() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_object_sync (
+ EGdbusCal *proxy,
+ const gchar *in_uid,
+ const gchar *in_rid,
+ gchar **out_object,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(ss)",
+ in_uid,
+ in_rid);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getObject",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_object);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_get_object_list:
+ * @proxy: A #EGdbusCal.
+ * @in_sexp: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getObjectList</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_get_object_list_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_get_object_list_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_get_object_list (
+ EGdbusCal *proxy,
+ const gchar *in_sexp,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ in_sexp);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getObjectList",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_get_object_list_finish:
+ * @proxy: A #EGdbusCal.
+ * @out_objects: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_get_object_list().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.getObjectList</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_object_list_finish (
+ EGdbusCal *proxy,
+ gchar ***out_objects,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^as)",
+ out_objects);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_get_object_list_sync:
+ * @proxy: A #EGdbusCal.
+ * @in_sexp: Method parameter.
+ * @out_objects: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getObjectList</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_get_object_list() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_object_list_sync (
+ EGdbusCal *proxy,
+ const gchar *in_sexp,
+ gchar ***out_objects,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(s)",
+ in_sexp);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getObjectList",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^as)",
+ out_objects);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_get_changes:
+ * @proxy: A #EGdbusCal.
+ * @in_change_id: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getChanges</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_get_changes_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_get_changes_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_get_changes (
+ EGdbusCal *proxy,
+ const gchar *in_change_id,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ in_change_id);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getChanges",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_get_changes_finish:
+ * @proxy: A #EGdbusCal.
+ * @out_additions: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @out_modifications: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @out_removals: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_get_changes().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.getChanges</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_changes_finish (
+ EGdbusCal *proxy,
+ gchar ***out_additions,
+ gchar ***out_modifications,
+ gchar ***out_removals,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^as^as^as)",
+ out_additions,
+ out_modifications,
+ out_removals);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_get_changes_sync:
+ * @proxy: A #EGdbusCal.
+ * @in_change_id: Method parameter.
+ * @out_additions: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @out_modifications: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @out_removals: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getChanges</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_get_changes() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_changes_sync (
+ EGdbusCal *proxy,
+ const gchar *in_change_id,
+ gchar ***out_additions,
+ gchar ***out_modifications,
+ gchar ***out_removals,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(s)",
+ in_change_id);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getChanges",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^as^as^as)",
+ out_additions,
+ out_modifications,
+ out_removals);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_get_free_busy:
+ * @proxy: A #EGdbusCal.
+ * @in_user_list: Method parameter.
+ * @in_start: Method parameter.
+ * @in_end: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getFreeBusy</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_get_free_busy_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_get_free_busy_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_get_free_busy (
+ EGdbusCal *proxy,
+ const gchar* const *in_user_list,
+ guint in_start,
+ guint in_end,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(^asuu)",
+ in_user_list,
+ in_start,
+ in_end);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getFreeBusy",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_get_free_busy_finish:
+ * @proxy: A #EGdbusCal.
+ * @out_freebusy: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_get_free_busy().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.getFreeBusy</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_free_busy_finish (
+ EGdbusCal *proxy,
+ gchar ***out_freebusy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^as)",
+ out_freebusy);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_get_free_busy_sync:
+ * @proxy: A #EGdbusCal.
+ * @in_user_list: Method parameter.
+ * @in_start: Method parameter.
+ * @in_end: Method parameter.
+ * @out_freebusy: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getFreeBusy</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_get_free_busy() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_free_busy_sync (
+ EGdbusCal *proxy,
+ const gchar* const *in_user_list,
+ guint in_start,
+ guint in_end,
+ gchar ***out_freebusy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(^asuu)",
+ in_user_list,
+ in_start,
+ in_end);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getFreeBusy",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^as)",
+ out_freebusy);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_discard_alarm:
+ * @proxy: A #EGdbusCal.
+ * @in_uid: Method parameter.
+ * @in_auid: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.discardAlarm</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_discard_alarm_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_discard_alarm_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_discard_alarm (
+ EGdbusCal *proxy,
+ const gchar *in_uid,
+ const gchar *in_auid,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(ss)",
+ in_uid,
+ in_auid);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "discardAlarm",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_discard_alarm_finish:
+ * @proxy: A #EGdbusCal.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_discard_alarm().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.discardAlarm</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_discard_alarm_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_discard_alarm_sync:
+ * @proxy: A #EGdbusCal.
+ * @in_uid: Method parameter.
+ * @in_auid: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.discardAlarm</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_discard_alarm() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_discard_alarm_sync (
+ EGdbusCal *proxy,
+ const gchar *in_uid,
+ const gchar *in_auid,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(ss)",
+ in_uid,
+ in_auid);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "discardAlarm",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_create_object:
+ * @proxy: A #EGdbusCal.
+ * @in_calobj: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.createObject</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_create_object_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_create_object_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_create_object (
+ EGdbusCal *proxy,
+ const gchar *in_calobj,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ in_calobj);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "createObject",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_create_object_finish:
+ * @proxy: A #EGdbusCal.
+ * @out_uid: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_create_object().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.createObject</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_create_object_finish (
+ EGdbusCal *proxy,
+ gchar **out_uid,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_uid);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_create_object_sync:
+ * @proxy: A #EGdbusCal.
+ * @in_calobj: Method parameter.
+ * @out_uid: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.createObject</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_create_object() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_create_object_sync (
+ EGdbusCal *proxy,
+ const gchar *in_calobj,
+ gchar **out_uid,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(s)",
+ in_calobj);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "createObject",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_uid);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_modify_object:
+ * @proxy: A #EGdbusCal.
+ * @in_calobj: Method parameter.
+ * @in_mod: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.modifyObject</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_modify_object_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_modify_object_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_modify_object (
+ EGdbusCal *proxy,
+ const gchar *in_calobj,
+ guint in_mod,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(su)",
+ in_calobj,
+ in_mod);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "modifyObject",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_modify_object_finish:
+ * @proxy: A #EGdbusCal.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_modify_object().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.modifyObject</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_modify_object_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_modify_object_sync:
+ * @proxy: A #EGdbusCal.
+ * @in_calobj: Method parameter.
+ * @in_mod: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.modifyObject</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_modify_object() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_modify_object_sync (
+ EGdbusCal *proxy,
+ const gchar *in_calobj,
+ guint in_mod,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(su)",
+ in_calobj,
+ in_mod);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "modifyObject",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_remove_object:
+ * @proxy: A #EGdbusCal.
+ * @in_uid: Method parameter.
+ * @in_rid: Method parameter.
+ * @in_mod: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.removeObject</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_remove_object_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_remove_object_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_remove_object (
+ EGdbusCal *proxy,
+ const gchar *in_uid,
+ const gchar *in_rid,
+ guint in_mod,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(ssu)",
+ in_uid,
+ in_rid,
+ in_mod);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "removeObject",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_remove_object_finish:
+ * @proxy: A #EGdbusCal.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_remove_object().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.removeObject</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_remove_object_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_remove_object_sync:
+ * @proxy: A #EGdbusCal.
+ * @in_uid: Method parameter.
+ * @in_rid: Method parameter.
+ * @in_mod: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.removeObject</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_remove_object() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_remove_object_sync (
+ EGdbusCal *proxy,
+ const gchar *in_uid,
+ const gchar *in_rid,
+ guint in_mod,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(ssu)",
+ in_uid,
+ in_rid,
+ in_mod);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "removeObject",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_receive_objects:
+ * @proxy: A #EGdbusCal.
+ * @in_calobj: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.receiveObjects</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_receive_objects_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_receive_objects_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_receive_objects (
+ EGdbusCal *proxy,
+ const gchar *in_calobj,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ in_calobj);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "receiveObjects",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_receive_objects_finish:
+ * @proxy: A #EGdbusCal.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_receive_objects().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.receiveObjects</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_receive_objects_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_receive_objects_sync:
+ * @proxy: A #EGdbusCal.
+ * @in_calobj: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.receiveObjects</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_receive_objects() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_receive_objects_sync (
+ EGdbusCal *proxy,
+ const gchar *in_calobj,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(s)",
+ in_calobj);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "receiveObjects",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_send_objects:
+ * @proxy: A #EGdbusCal.
+ * @in_calobj: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.sendObjects</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_send_objects_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_send_objects_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_send_objects (
+ EGdbusCal *proxy,
+ const gchar *in_calobj,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ in_calobj);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "sendObjects",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_send_objects_finish:
+ * @proxy: A #EGdbusCal.
+ * @out_users: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @out_calobj: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_send_objects().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.sendObjects</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_send_objects_finish (
+ EGdbusCal *proxy,
+ gchar ***out_users,
+ gchar **out_calobj,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^ass)",
+ out_users,
+ out_calobj);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_send_objects_sync:
+ * @proxy: A #EGdbusCal.
+ * @in_calobj: Method parameter.
+ * @out_users: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @out_calobj: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.sendObjects</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_send_objects() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_send_objects_sync (
+ EGdbusCal *proxy,
+ const gchar *in_calobj,
+ gchar ***out_users,
+ gchar **out_calobj,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(s)",
+ in_calobj);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "sendObjects",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^ass)",
+ out_users,
+ out_calobj);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_get_attachment_list:
+ * @proxy: A #EGdbusCal.
+ * @in_uid: Method parameter.
+ * @in_rid: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getAttachmentList</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_get_attachment_list_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_get_attachment_list_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_get_attachment_list (
+ EGdbusCal *proxy,
+ const gchar *in_uid,
+ const gchar *in_rid,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(ss)",
+ in_uid,
+ in_rid);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getAttachmentList",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_get_attachment_list_finish:
+ * @proxy: A #EGdbusCal.
+ * @out_attachments: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_get_attachment_list().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.getAttachmentList</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_attachment_list_finish (
+ EGdbusCal *proxy,
+ gchar ***out_attachments,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^as)",
+ out_attachments);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_get_attachment_list_sync:
+ * @proxy: A #EGdbusCal.
+ * @in_uid: Method parameter.
+ * @in_rid: Method parameter.
+ * @out_attachments: Return location for out parameter or %NULL. Free with g_strfreev().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getAttachmentList</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_get_attachment_list() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_attachment_list_sync (
+ EGdbusCal *proxy,
+ const gchar *in_uid,
+ const gchar *in_rid,
+ gchar ***out_attachments,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(ss)",
+ in_uid,
+ in_rid);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getAttachmentList",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(^as)",
+ out_attachments);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_get_query:
+ * @proxy: A #EGdbusCal.
+ * @in_sexp: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getQuery</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_get_query_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_get_query_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_get_query (
+ EGdbusCal *proxy,
+ const gchar *in_sexp,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ in_sexp);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getQuery",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_get_query_finish:
+ * @proxy: A #EGdbusCal.
+ * @out_query: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_get_query().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.getQuery</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_query_finish (
+ EGdbusCal *proxy,
+ gchar **out_query,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(o)",
+ out_query);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_get_query_sync:
+ * @proxy: A #EGdbusCal.
+ * @in_sexp: Method parameter.
+ * @out_query: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getQuery</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_get_query() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_query_sync (
+ EGdbusCal *proxy,
+ const gchar *in_sexp,
+ gchar **out_query,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(s)",
+ in_sexp);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getQuery",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(o)",
+ out_query);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_get_timezone:
+ * @proxy: A #EGdbusCal.
+ * @in_tzid: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getTimezone</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_get_timezone_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_get_timezone_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_get_timezone (
+ EGdbusCal *proxy,
+ const gchar *in_tzid,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ in_tzid);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getTimezone",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_get_timezone_finish:
+ * @proxy: A #EGdbusCal.
+ * @out_object: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_get_timezone().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.getTimezone</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_timezone_finish (
+ EGdbusCal *proxy,
+ gchar **out_object,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_object);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_get_timezone_sync:
+ * @proxy: A #EGdbusCal.
+ * @in_tzid: Method parameter.
+ * @out_object: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.getTimezone</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_get_timezone() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_get_timezone_sync (
+ EGdbusCal *proxy,
+ const gchar *in_tzid,
+ gchar **out_object,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(s)",
+ in_tzid);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getTimezone",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(s)",
+ out_object);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_add_timezone:
+ * @proxy: A #EGdbusCal.
+ * @in_tz: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.addTimezone</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_add_timezone_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_add_timezone_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_add_timezone (
+ EGdbusCal *proxy,
+ const gchar *in_tz,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ in_tz);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "addTimezone",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_add_timezone_finish:
+ * @proxy: A #EGdbusCal.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_add_timezone().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.addTimezone</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_add_timezone_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_add_timezone_sync:
+ * @proxy: A #EGdbusCal.
+ * @in_tz: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.addTimezone</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_add_timezone() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_add_timezone_sync (
+ EGdbusCal *proxy,
+ const gchar *in_tz,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(s)",
+ in_tz);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "addTimezone",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_call_set_default_timezone:
+ * @proxy: A #EGdbusCal.
+ * @in_tz: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.setDefaultTimezone</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_call_set_default_timezone_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_call_set_default_timezone_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_call_set_default_timezone (
+ EGdbusCal *proxy,
+ const gchar *in_tz,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ in_tz);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "setDefaultTimezone",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_call_set_default_timezone_finish:
+ * @proxy: A #EGdbusCal.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_call_set_default_timezone().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.Cal.setDefaultTimezone</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_set_default_timezone_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_call_set_default_timezone_sync:
+ * @proxy: A #EGdbusCal.
+ * @in_tz: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.Cal.setDefaultTimezone</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_call_set_default_timezone() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_call_set_default_timezone_sync (
+ EGdbusCal *proxy,
+ const gchar *in_tz,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(s)",
+ in_tz);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "setDefaultTimezone",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_complete_get_uri:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_str_uri_copy: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.getUri</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_get_uri (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_str_uri_copy)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ out_str_uri_copy);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_cal_complete_get_cache_dir:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_dirname: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.getCacheDir</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_get_cache_dir (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_dirname)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ out_dirname);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_cal_complete_open:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.open</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_open (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_cal_complete_refresh:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.refresh</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_refresh (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_cal_complete_close:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.close</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_close (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_cal_complete_remove:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.remove</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_remove (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_cal_complete_is_read_only:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.isReadOnly</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_is_read_only (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_cal_complete_get_cal_address:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_address: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.getCalAddress</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_get_cal_address (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_address)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ out_address);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_cal_complete_get_alarm_email_address:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_address: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.getAlarmEmailAddress</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_get_alarm_email_address (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_address)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ out_address);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_cal_complete_get_ldap_attribute:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_address: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.getLdapAttribute</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_get_ldap_attribute (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_address)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ out_address);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_cal_complete_get_scheduling_information:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_capabilities: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.getSchedulingInformation</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_get_scheduling_information (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_capabilities)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ out_capabilities);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_cal_complete_set_mode:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.setMode</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_set_mode (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_cal_complete_get_default_object:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_object: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.getDefaultObject</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_get_default_object (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_object)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ out_object);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_cal_complete_get_object:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_object: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.getObject</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_get_object (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_object)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ out_object);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_cal_complete_get_object_list:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_objects: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.getObjectList</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_get_object_list (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_objects)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(^as)",
+ out_objects);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_cal_complete_get_changes:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_additions: Value to return.
+ * @out_modifications: Value to return.
+ * @out_removals: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.getChanges</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_get_changes (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_additions,
+ const gchar* const *out_modifications,
+ const gchar* const *out_removals)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(^as^as^as)",
+ out_additions,
+ out_modifications,
+ out_removals);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_cal_complete_get_free_busy:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_freebusy: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.getFreeBusy</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_get_free_busy (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_freebusy)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(^as)",
+ out_freebusy);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_cal_complete_discard_alarm:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.discardAlarm</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_discard_alarm (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_cal_complete_create_object:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_uid: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.createObject</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_create_object (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_uid)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ out_uid);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_cal_complete_modify_object:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.modifyObject</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_modify_object (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_cal_complete_remove_object:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.removeObject</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_remove_object (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_cal_complete_receive_objects:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.receiveObjects</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_receive_objects (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_cal_complete_send_objects:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_users: Value to return.
+ * @out_calobj: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.sendObjects</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_send_objects (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_users,
+ const gchar *out_calobj)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(^ass)",
+ out_users,
+ out_calobj);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_cal_complete_get_attachment_list:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_attachments: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.getAttachmentList</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_get_attachment_list (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_attachments)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(^as)",
+ out_attachments);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_cal_complete_get_query:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_query: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.getQuery</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_get_query (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_query)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(o)",
+ out_query);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_cal_complete_get_timezone:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_object: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.getTimezone</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_get_timezone (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_object)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(s)",
+ out_object);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+/**
+ * e_gdbus_cal_complete_add_timezone:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.addTimezone</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_add_timezone (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_cal_complete_set_default_timezone:
+ * @object: A #EGdbusCal.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.Cal.setDefaultTimezone</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_complete_set_default_timezone (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_cal_emit_auth_required:
+ * @object: A #EGdbusCal.
+ *
+ * Emits the <literal>org.gnome.evolution.dataserver.calendar.Cal.auth_required</literal>
+ * D-Bus signal.
+ */
+void e_gdbus_cal_emit_auth_required (
+ EGdbusCal *object)
+{
+ g_signal_emit (object, signals[__AUTH_REQUIRED_SIGNAL], 0);
+}
+
+
+/**
+ * e_gdbus_cal_emit_backend_error:
+ * @object: A #EGdbusCal.
+ * @arg_error: Signal parameter.
+ *
+ * Emits the <literal>org.gnome.evolution.dataserver.calendar.Cal.backend_error</literal>
+ * D-Bus signal.
+ */
+void e_gdbus_cal_emit_backend_error (
+ EGdbusCal *object,
+ const gchar *arg_error)
+{
+ g_signal_emit (object, signals[__BACKEND_ERROR_SIGNAL], 0, arg_error);
+}
+
+
+/**
+ * e_gdbus_cal_emit_readonly:
+ * @object: A #EGdbusCal.
+ * @arg_is_readonly: Signal parameter.
+ *
+ * Emits the <literal>org.gnome.evolution.dataserver.calendar.Cal.readonly</literal>
+ * D-Bus signal.
+ */
+void e_gdbus_cal_emit_readonly (
+ EGdbusCal *object,
+ gboolean arg_is_readonly)
+{
+ g_signal_emit (object, signals[__READONLY_SIGNAL], 0, arg_is_readonly);
+}
+
+
+/**
+ * e_gdbus_cal_emit_mode:
+ * @object: A #EGdbusCal.
+ * @arg_mode: Signal parameter.
+ *
+ * Emits the <literal>org.gnome.evolution.dataserver.calendar.Cal.mode</literal>
+ * D-Bus signal.
+ */
+void e_gdbus_cal_emit_mode (
+ EGdbusCal *object,
+ gint arg_mode)
+{
+ g_signal_emit (object, signals[__MODE_SIGNAL], 0, arg_mode);
+}
+
+
+static const GDBusSignalInfo e_gdbus_cal_signal_auth_required =
+{
+ -1,
+ (gchar *) "auth_required",
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_signal_backend_error_error =
+{
+ -1,
+ (gchar *) "error",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_signal_backend_error_arg_pointers[] =
+{
+ &e_gdbus_cal_signal_backend_error_error,
+ NULL
+};
+
+static const GDBusSignalInfo e_gdbus_cal_signal_backend_error =
+{
+ -1,
+ (gchar *) "backend_error",
+ (GDBusArgInfo **) &e_gdbus_cal_signal_backend_error_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_signal_readonly_is_readonly =
+{
+ -1,
+ (gchar *) "is_readonly",
+ (gchar *) "b",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_signal_readonly_arg_pointers[] =
+{
+ &e_gdbus_cal_signal_readonly_is_readonly,
+ NULL
+};
+
+static const GDBusSignalInfo e_gdbus_cal_signal_readonly =
+{
+ -1,
+ (gchar *) "readonly",
+ (GDBusArgInfo **) &e_gdbus_cal_signal_readonly_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_signal_mode_mode =
+{
+ -1,
+ (gchar *) "mode",
+ (gchar *) "i",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_signal_mode_arg_pointers[] =
+{
+ &e_gdbus_cal_signal_mode_mode,
+ NULL
+};
+
+static const GDBusSignalInfo e_gdbus_cal_signal_mode =
+{
+ -1,
+ (gchar *) "mode",
+ (GDBusArgInfo **) &e_gdbus_cal_signal_mode_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusSignalInfo * const e_gdbus_cal_signal_info_pointers[] =
+{
+ &e_gdbus_cal_signal_auth_required,
+ &e_gdbus_cal_signal_backend_error,
+ &e_gdbus_cal_signal_readonly,
+ &e_gdbus_cal_signal_mode,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_out_getUri_str_uri_copy =
+{
+ -1,
+ (gchar *) "str_uri_copy",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_out_getUri_arg_pointers[] =
+{
+ &e_gdbus_cal_method_out_getUri_str_uri_copy,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_getUri =
+{
+ -1,
+ (gchar *) "getUri",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) &e_gdbus_cal_method_out_getUri_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_out_getCacheDir_dirname =
+{
+ -1,
+ (gchar *) "dirname",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_out_getCacheDir_arg_pointers[] =
+{
+ &e_gdbus_cal_method_out_getCacheDir_dirname,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_getCacheDir =
+{
+ -1,
+ (gchar *) "getCacheDir",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) &e_gdbus_cal_method_out_getCacheDir_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_in_open_only_if_exists =
+{
+ -1,
+ (gchar *) "only_if_exists",
+ (gchar *) "b",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_cal_method_in_open_username =
+{
+ -1,
+ (gchar *) "username",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_cal_method_in_open_password =
+{
+ -1,
+ (gchar *) "password",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_in_open_arg_pointers[] =
+{
+ &e_gdbus_cal_method_in_open_only_if_exists,
+ &e_gdbus_cal_method_in_open_username,
+ &e_gdbus_cal_method_in_open_password,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_open =
+{
+ -1,
+ (gchar *) "open",
+ (GDBusArgInfo **) &e_gdbus_cal_method_in_open_arg_pointers,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_refresh =
+{
+ -1,
+ (gchar *) "refresh",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_close =
+{
+ -1,
+ (gchar *) "close",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_remove =
+{
+ -1,
+ (gchar *) "remove",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_isReadOnly =
+{
+ -1,
+ (gchar *) "isReadOnly",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_out_getCalAddress_address =
+{
+ -1,
+ (gchar *) "address",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_out_getCalAddress_arg_pointers[] =
+{
+ &e_gdbus_cal_method_out_getCalAddress_address,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_getCalAddress =
+{
+ -1,
+ (gchar *) "getCalAddress",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) &e_gdbus_cal_method_out_getCalAddress_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_out_getAlarmEmailAddress_address =
+{
+ -1,
+ (gchar *) "address",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_out_getAlarmEmailAddress_arg_pointers[] =
+{
+ &e_gdbus_cal_method_out_getAlarmEmailAddress_address,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_getAlarmEmailAddress =
+{
+ -1,
+ (gchar *) "getAlarmEmailAddress",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) &e_gdbus_cal_method_out_getAlarmEmailAddress_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_out_getLdapAttribute_address =
+{
+ -1,
+ (gchar *) "address",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_out_getLdapAttribute_arg_pointers[] =
+{
+ &e_gdbus_cal_method_out_getLdapAttribute_address,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_getLdapAttribute =
+{
+ -1,
+ (gchar *) "getLdapAttribute",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) &e_gdbus_cal_method_out_getLdapAttribute_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_out_getSchedulingInformation_capabilities =
+{
+ -1,
+ (gchar *) "capabilities",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_out_getSchedulingInformation_arg_pointers[] =
+{
+ &e_gdbus_cal_method_out_getSchedulingInformation_capabilities,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_getSchedulingInformation =
+{
+ -1,
+ (gchar *) "getSchedulingInformation",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) &e_gdbus_cal_method_out_getSchedulingInformation_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_in_setMode_mode =
+{
+ -1,
+ (gchar *) "mode",
+ (gchar *) "u",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_in_setMode_arg_pointers[] =
+{
+ &e_gdbus_cal_method_in_setMode_mode,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_setMode =
+{
+ -1,
+ (gchar *) "setMode",
+ (GDBusArgInfo **) &e_gdbus_cal_method_in_setMode_arg_pointers,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_out_getDefaultObject_object =
+{
+ -1,
+ (gchar *) "object",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_out_getDefaultObject_arg_pointers[] =
+{
+ &e_gdbus_cal_method_out_getDefaultObject_object,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_getDefaultObject =
+{
+ -1,
+ (gchar *) "getDefaultObject",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) &e_gdbus_cal_method_out_getDefaultObject_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_in_getObject_uid =
+{
+ -1,
+ (gchar *) "uid",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_cal_method_in_getObject_rid =
+{
+ -1,
+ (gchar *) "rid",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_in_getObject_arg_pointers[] =
+{
+ &e_gdbus_cal_method_in_getObject_uid,
+ &e_gdbus_cal_method_in_getObject_rid,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_out_getObject_object =
+{
+ -1,
+ (gchar *) "object",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_out_getObject_arg_pointers[] =
+{
+ &e_gdbus_cal_method_out_getObject_object,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_getObject =
+{
+ -1,
+ (gchar *) "getObject",
+ (GDBusArgInfo **) &e_gdbus_cal_method_in_getObject_arg_pointers,
+ (GDBusArgInfo **) &e_gdbus_cal_method_out_getObject_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_in_getObjectList_sexp =
+{
+ -1,
+ (gchar *) "sexp",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_in_getObjectList_arg_pointers[] =
+{
+ &e_gdbus_cal_method_in_getObjectList_sexp,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_out_getObjectList_objects =
+{
+ -1,
+ (gchar *) "objects",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_out_getObjectList_arg_pointers[] =
+{
+ &e_gdbus_cal_method_out_getObjectList_objects,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_getObjectList =
+{
+ -1,
+ (gchar *) "getObjectList",
+ (GDBusArgInfo **) &e_gdbus_cal_method_in_getObjectList_arg_pointers,
+ (GDBusArgInfo **) &e_gdbus_cal_method_out_getObjectList_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_in_getChanges_change_id =
+{
+ -1,
+ (gchar *) "change_id",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_in_getChanges_arg_pointers[] =
+{
+ &e_gdbus_cal_method_in_getChanges_change_id,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_out_getChanges_additions =
+{
+ -1,
+ (gchar *) "additions",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_cal_method_out_getChanges_modifications =
+{
+ -1,
+ (gchar *) "modifications",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_cal_method_out_getChanges_removals =
+{
+ -1,
+ (gchar *) "removals",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_out_getChanges_arg_pointers[] =
+{
+ &e_gdbus_cal_method_out_getChanges_additions,
+ &e_gdbus_cal_method_out_getChanges_modifications,
+ &e_gdbus_cal_method_out_getChanges_removals,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_getChanges =
+{
+ -1,
+ (gchar *) "getChanges",
+ (GDBusArgInfo **) &e_gdbus_cal_method_in_getChanges_arg_pointers,
+ (GDBusArgInfo **) &e_gdbus_cal_method_out_getChanges_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_in_getFreeBusy_user_list =
+{
+ -1,
+ (gchar *) "user_list",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_cal_method_in_getFreeBusy_start =
+{
+ -1,
+ (gchar *) "start",
+ (gchar *) "u",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_cal_method_in_getFreeBusy_end =
+{
+ -1,
+ (gchar *) "end",
+ (gchar *) "u",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_in_getFreeBusy_arg_pointers[] =
+{
+ &e_gdbus_cal_method_in_getFreeBusy_user_list,
+ &e_gdbus_cal_method_in_getFreeBusy_start,
+ &e_gdbus_cal_method_in_getFreeBusy_end,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_out_getFreeBusy_freebusy =
+{
+ -1,
+ (gchar *) "freebusy",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_out_getFreeBusy_arg_pointers[] =
+{
+ &e_gdbus_cal_method_out_getFreeBusy_freebusy,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_getFreeBusy =
+{
+ -1,
+ (gchar *) "getFreeBusy",
+ (GDBusArgInfo **) &e_gdbus_cal_method_in_getFreeBusy_arg_pointers,
+ (GDBusArgInfo **) &e_gdbus_cal_method_out_getFreeBusy_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_in_discardAlarm_uid =
+{
+ -1,
+ (gchar *) "uid",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_cal_method_in_discardAlarm_auid =
+{
+ -1,
+ (gchar *) "auid",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_in_discardAlarm_arg_pointers[] =
+{
+ &e_gdbus_cal_method_in_discardAlarm_uid,
+ &e_gdbus_cal_method_in_discardAlarm_auid,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_discardAlarm =
+{
+ -1,
+ (gchar *) "discardAlarm",
+ (GDBusArgInfo **) &e_gdbus_cal_method_in_discardAlarm_arg_pointers,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_in_createObject_calobj =
+{
+ -1,
+ (gchar *) "calobj",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_in_createObject_arg_pointers[] =
+{
+ &e_gdbus_cal_method_in_createObject_calobj,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_out_createObject_uid =
+{
+ -1,
+ (gchar *) "uid",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_out_createObject_arg_pointers[] =
+{
+ &e_gdbus_cal_method_out_createObject_uid,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_createObject =
+{
+ -1,
+ (gchar *) "createObject",
+ (GDBusArgInfo **) &e_gdbus_cal_method_in_createObject_arg_pointers,
+ (GDBusArgInfo **) &e_gdbus_cal_method_out_createObject_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_in_modifyObject_calobj =
+{
+ -1,
+ (gchar *) "calobj",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_cal_method_in_modifyObject_mod =
+{
+ -1,
+ (gchar *) "mod",
+ (gchar *) "u",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_in_modifyObject_arg_pointers[] =
+{
+ &e_gdbus_cal_method_in_modifyObject_calobj,
+ &e_gdbus_cal_method_in_modifyObject_mod,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_modifyObject =
+{
+ -1,
+ (gchar *) "modifyObject",
+ (GDBusArgInfo **) &e_gdbus_cal_method_in_modifyObject_arg_pointers,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_in_removeObject_uid =
+{
+ -1,
+ (gchar *) "uid",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_cal_method_in_removeObject_rid =
+{
+ -1,
+ (gchar *) "rid",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_cal_method_in_removeObject_mod =
+{
+ -1,
+ (gchar *) "mod",
+ (gchar *) "u",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_in_removeObject_arg_pointers[] =
+{
+ &e_gdbus_cal_method_in_removeObject_uid,
+ &e_gdbus_cal_method_in_removeObject_rid,
+ &e_gdbus_cal_method_in_removeObject_mod,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_removeObject =
+{
+ -1,
+ (gchar *) "removeObject",
+ (GDBusArgInfo **) &e_gdbus_cal_method_in_removeObject_arg_pointers,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_in_receiveObjects_calobj =
+{
+ -1,
+ (gchar *) "calobj",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_in_receiveObjects_arg_pointers[] =
+{
+ &e_gdbus_cal_method_in_receiveObjects_calobj,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_receiveObjects =
+{
+ -1,
+ (gchar *) "receiveObjects",
+ (GDBusArgInfo **) &e_gdbus_cal_method_in_receiveObjects_arg_pointers,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_in_sendObjects_calobj =
+{
+ -1,
+ (gchar *) "calobj",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_in_sendObjects_arg_pointers[] =
+{
+ &e_gdbus_cal_method_in_sendObjects_calobj,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_out_sendObjects_users =
+{
+ -1,
+ (gchar *) "users",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_cal_method_out_sendObjects_calobj =
+{
+ -1,
+ (gchar *) "calobj",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_out_sendObjects_arg_pointers[] =
+{
+ &e_gdbus_cal_method_out_sendObjects_users,
+ &e_gdbus_cal_method_out_sendObjects_calobj,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_sendObjects =
+{
+ -1,
+ (gchar *) "sendObjects",
+ (GDBusArgInfo **) &e_gdbus_cal_method_in_sendObjects_arg_pointers,
+ (GDBusArgInfo **) &e_gdbus_cal_method_out_sendObjects_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_in_getAttachmentList_uid =
+{
+ -1,
+ (gchar *) "uid",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_cal_method_in_getAttachmentList_rid =
+{
+ -1,
+ (gchar *) "rid",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_in_getAttachmentList_arg_pointers[] =
+{
+ &e_gdbus_cal_method_in_getAttachmentList_uid,
+ &e_gdbus_cal_method_in_getAttachmentList_rid,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_out_getAttachmentList_attachments =
+{
+ -1,
+ (gchar *) "attachments",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_out_getAttachmentList_arg_pointers[] =
+{
+ &e_gdbus_cal_method_out_getAttachmentList_attachments,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_getAttachmentList =
+{
+ -1,
+ (gchar *) "getAttachmentList",
+ (GDBusArgInfo **) &e_gdbus_cal_method_in_getAttachmentList_arg_pointers,
+ (GDBusArgInfo **) &e_gdbus_cal_method_out_getAttachmentList_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_in_getQuery_sexp =
+{
+ -1,
+ (gchar *) "sexp",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_in_getQuery_arg_pointers[] =
+{
+ &e_gdbus_cal_method_in_getQuery_sexp,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_out_getQuery_query =
+{
+ -1,
+ (gchar *) "query",
+ (gchar *) "o",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_out_getQuery_arg_pointers[] =
+{
+ &e_gdbus_cal_method_out_getQuery_query,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_getQuery =
+{
+ -1,
+ (gchar *) "getQuery",
+ (GDBusArgInfo **) &e_gdbus_cal_method_in_getQuery_arg_pointers,
+ (GDBusArgInfo **) &e_gdbus_cal_method_out_getQuery_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_in_getTimezone_tzid =
+{
+ -1,
+ (gchar *) "tzid",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_in_getTimezone_arg_pointers[] =
+{
+ &e_gdbus_cal_method_in_getTimezone_tzid,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_out_getTimezone_object =
+{
+ -1,
+ (gchar *) "object",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_out_getTimezone_arg_pointers[] =
+{
+ &e_gdbus_cal_method_out_getTimezone_object,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_getTimezone =
+{
+ -1,
+ (gchar *) "getTimezone",
+ (GDBusArgInfo **) &e_gdbus_cal_method_in_getTimezone_arg_pointers,
+ (GDBusArgInfo **) &e_gdbus_cal_method_out_getTimezone_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_in_addTimezone_tz =
+{
+ -1,
+ (gchar *) "tz",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_in_addTimezone_arg_pointers[] =
+{
+ &e_gdbus_cal_method_in_addTimezone_tz,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_addTimezone =
+{
+ -1,
+ (gchar *) "addTimezone",
+ (GDBusArgInfo **) &e_gdbus_cal_method_in_addTimezone_arg_pointers,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_method_in_setDefaultTimezone_tz =
+{
+ -1,
+ (gchar *) "tz",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_method_in_setDefaultTimezone_arg_pointers[] =
+{
+ &e_gdbus_cal_method_in_setDefaultTimezone_tz,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_method_setDefaultTimezone =
+{
+ -1,
+ (gchar *) "setDefaultTimezone",
+ (GDBusArgInfo **) &e_gdbus_cal_method_in_setDefaultTimezone_arg_pointers,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusMethodInfo * const e_gdbus_cal_method_info_pointers[] =
+{
+ &e_gdbus_cal_method_getUri,
+ &e_gdbus_cal_method_getCacheDir,
+ &e_gdbus_cal_method_open,
+ &e_gdbus_cal_method_refresh,
+ &e_gdbus_cal_method_close,
+ &e_gdbus_cal_method_remove,
+ &e_gdbus_cal_method_isReadOnly,
+ &e_gdbus_cal_method_getCalAddress,
+ &e_gdbus_cal_method_getAlarmEmailAddress,
+ &e_gdbus_cal_method_getLdapAttribute,
+ &e_gdbus_cal_method_getSchedulingInformation,
+ &e_gdbus_cal_method_setMode,
+ &e_gdbus_cal_method_getDefaultObject,
+ &e_gdbus_cal_method_getObject,
+ &e_gdbus_cal_method_getObjectList,
+ &e_gdbus_cal_method_getChanges,
+ &e_gdbus_cal_method_getFreeBusy,
+ &e_gdbus_cal_method_discardAlarm,
+ &e_gdbus_cal_method_createObject,
+ &e_gdbus_cal_method_modifyObject,
+ &e_gdbus_cal_method_removeObject,
+ &e_gdbus_cal_method_receiveObjects,
+ &e_gdbus_cal_method_sendObjects,
+ &e_gdbus_cal_method_getAttachmentList,
+ &e_gdbus_cal_method_getQuery,
+ &e_gdbus_cal_method_getTimezone,
+ &e_gdbus_cal_method_addTimezone,
+ &e_gdbus_cal_method_setDefaultTimezone,
+ NULL
+};
+
+static const GDBusInterfaceInfo _e_gdbus_cal_interface_info =
+{
+ -1,
+ (gchar *) "org.gnome.evolution.dataserver.calendar.Cal",
+ (GDBusMethodInfo **) &e_gdbus_cal_method_info_pointers,
+ (GDBusSignalInfo **) &e_gdbus_cal_signal_info_pointers,
+ (GDBusPropertyInfo **) NULL,
+};
+
+static void
+handle_method_call (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *method_name,
+ GVariant *parameters,
+ GDBusMethodInvocation *invocation,
+ gpointer user_data)
+{
+ guint method_id;
+ method_id = lookup_method_id_from_method_name (method_name);
+ switch (method_id)
+ {
+ case __GET_URI_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_CACHE_DIR_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __OPEN_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ gboolean arg_only_if_exists;
+ const gchar *arg_username;
+ const gchar *arg_password;
+ g_variant_get (parameters,
+ "(b&s&s)",
+ &arg_only_if_exists,
+ &arg_username,
+ &arg_password);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_only_if_exists, arg_username, arg_password, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __REFRESH_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __CLOSE_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __REMOVE_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __IS_READ_ONLY_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_CAL_ADDRESS_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_ALARM_EMAIL_ADDRESS_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_LDAP_ATTRIBUTE_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_SCHEDULING_INFORMATION_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __SET_MODE_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ guint arg_mode;
+ g_variant_get (parameters,
+ "(u)",
+ &arg_mode);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_mode, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_DEFAULT_OBJECT_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_OBJECT_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ const gchar *arg_uid;
+ const gchar *arg_rid;
+ g_variant_get (parameters,
+ "(&s&s)",
+ &arg_uid,
+ &arg_rid);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_uid, arg_rid, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_OBJECT_LIST_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ const gchar *arg_sexp;
+ g_variant_get (parameters,
+ "(&s)",
+ &arg_sexp);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_sexp, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_CHANGES_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ const gchar *arg_change_id;
+ g_variant_get (parameters,
+ "(&s)",
+ &arg_change_id);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_change_id, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_FREE_BUSY_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ const gchar* const *arg_user_list;
+ guint arg_start;
+ guint arg_end;
+ g_variant_get (parameters,
+ "(^a&suu)",
+ &arg_user_list,
+ &arg_start,
+ &arg_end);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_user_list, arg_start, arg_end, &handled);
+ g_free ((gpointer) arg_user_list);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __DISCARD_ALARM_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ const gchar *arg_uid;
+ const gchar *arg_auid;
+ g_variant_get (parameters,
+ "(&s&s)",
+ &arg_uid,
+ &arg_auid);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_uid, arg_auid, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __CREATE_OBJECT_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ const gchar *arg_calobj;
+ g_variant_get (parameters,
+ "(&s)",
+ &arg_calobj);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_calobj, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __MODIFY_OBJECT_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ const gchar *arg_calobj;
+ guint arg_mod;
+ g_variant_get (parameters,
+ "(&su)",
+ &arg_calobj,
+ &arg_mod);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_calobj, arg_mod, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __REMOVE_OBJECT_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ const gchar *arg_uid;
+ const gchar *arg_rid;
+ guint arg_mod;
+ g_variant_get (parameters,
+ "(&s&su)",
+ &arg_uid,
+ &arg_rid,
+ &arg_mod);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_uid, arg_rid, arg_mod, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __RECEIVE_OBJECTS_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ const gchar *arg_calobj;
+ g_variant_get (parameters,
+ "(&s)",
+ &arg_calobj);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_calobj, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __SEND_OBJECTS_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ const gchar *arg_calobj;
+ g_variant_get (parameters,
+ "(&s)",
+ &arg_calobj);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_calobj, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_ATTACHMENT_LIST_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ const gchar *arg_uid;
+ const gchar *arg_rid;
+ g_variant_get (parameters,
+ "(&s&s)",
+ &arg_uid,
+ &arg_rid);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_uid, arg_rid, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_QUERY_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ const gchar *arg_sexp;
+ g_variant_get (parameters,
+ "(&s)",
+ &arg_sexp);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_sexp, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __GET_TIMEZONE_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ const gchar *arg_tzid;
+ g_variant_get (parameters,
+ "(&s)",
+ &arg_tzid);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_tzid, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __ADD_TIMEZONE_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ const gchar *arg_tz;
+ g_variant_get (parameters,
+ "(&s)",
+ &arg_tz);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_tz, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __SET_DEFAULT_TIMEZONE_METHOD:
+ {
+ EGdbusCal *object = E_GDBUS_CAL (user_data);
+ gboolean handled;
+ const gchar *arg_tz;
+ g_variant_get (parameters,
+ "(&s)",
+ &arg_tz);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_tz, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ default:
+not_implemented:
+ g_dbus_method_invocation_return_error (invocation,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "Method `%s' is not implemented",
+ method_name);
+ break;
+ }
+};
+
+static GVariant *
+get_property (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *property_name,
+ GError **error,
+ gpointer user_data)
+{
+ GVariant *ret;
+ guint prop_id;
+ prop_id = lookup_property_id_from_property_name (property_name);
+ ret = NULL;
+ switch (prop_id)
+ {
+ default:
+ g_set_error (error,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "This implementation does not support property `%s'",
+ property_name);
+ break;
+ }
+
+ return ret;
+};
+
+static gboolean
+set_property (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *property_name,
+ GVariant *value,
+ GError **error,
+ gpointer user_data)
+{
+ gboolean ret;
+ guint prop_id;
+ prop_id = lookup_property_id_from_property_name (property_name);
+ ret = TRUE;
+ switch (prop_id)
+ {
+ default:
+ g_set_error (error,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "This implementation does not support property `%s'",
+ property_name);
+ ret = FALSE;
+ break;
+ }
+
+ return ret;
+};
+
+static const GDBusInterfaceVTable e_gdbus_cal_interface_vtable =
+{
+ handle_method_call,
+ get_property,
+ set_property,
+};
+
+static gboolean
+emit_notifications_in_idle (gpointer user_data)
+{
+ GObject *object = G_OBJECT (user_data);
+ GDBusConnection *connection;
+ const gchar *path;
+ GHashTable *notification_queue;
+ GHashTableIter iter;
+ const gchar *property_name;
+ GVariant *value;
+ GVariantBuilder *builder;
+ GVariantBuilder *invalidated_builder;
+ GHashTable *pvc;
+ gboolean has_changes;
+
+ notification_queue = g_object_get_data (object, "gdbus-codegen-notification-queue");
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ pvc = g_object_get_data (object, "gdbus-codegen-pvc");
+ g_assert (notification_queue != NULL && path != NULL && connection != NULL && pvc != NULL);
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY);
+ invalidated_builder = g_variant_builder_new (G_VARIANT_TYPE ("as"));
+ g_hash_table_iter_init (&iter, notification_queue);
+ has_changes = FALSE;
+ while (g_hash_table_iter_next (&iter, (gpointer) &property_name, (gpointer) &value))
+ {
+ GVariant *cached_value;
+ cached_value = g_hash_table_lookup (pvc, property_name);
+ if (cached_value == NULL || !g_variant_equal (cached_value, value))
+ {
+ g_hash_table_insert (pvc, (gpointer) property_name, (gpointer) g_variant_ref (value));
+ g_variant_builder_add (builder, "{sv}", property_name, value);
+ has_changes = TRUE;
+ }
+ }
+
+ if (has_changes)
+ {
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.freedesktop.DBus.Properties",
+ "PropertiesChanged",
+ g_variant_new ("(sa{sv}as)",
+ "org.gnome.evolution.dataserver.calendar.Cal",
+ builder,
+ invalidated_builder),
+ NULL);
+ }
+ else
+ {
+ g_variant_builder_unref (builder);
+ g_variant_builder_unref (invalidated_builder);
+ }
+
+ g_hash_table_remove_all (notification_queue);
+ g_object_set_data (object, "gdbus-codegen-notification-idle-id", GUINT_TO_POINTER (0));
+ return FALSE;
+}
+
+static void
+queue_notification (GObject *object,
+ const gchar *property_name,
+ GVariant *value)
+{
+ GHashTable *notification_queue;
+ guint idle_id;
+ notification_queue = g_object_get_data (object, "gdbus-codegen-notification-queue");
+ if (notification_queue == NULL)
+ {
+ notification_queue = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_variant_unref);
+ g_object_set_data_full (object, "gdbus-codegen-notification-queue", notification_queue, (GDestroyNotify) g_hash_table_unref);
+ }
+ g_hash_table_insert (notification_queue, (gpointer) property_name, (gpointer) value); /* adopts value */
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (object, "gdbus-codegen-notification-idle-id"));
+ if (idle_id == 0)
+ {
+ GSource *idle_source;
+ idle_source = g_idle_source_new ();
+ g_source_set_priority (idle_source, G_PRIORITY_DEFAULT);
+ g_source_set_callback (idle_source,
+ emit_notifications_in_idle,
+ g_object_ref (object),
+ (GDestroyNotify) g_object_unref);
+ idle_id = g_source_attach (idle_source, g_main_context_get_thread_default ());
+ g_source_unref (idle_source);
+ g_object_set_data (object, "gdbus-codegen-notification-idle-id", GUINT_TO_POINTER (idle_id));
+ }
+}
+
+/**
+ * e_gdbus_cal_drain_notify:
+ * @object: A #EGdbusCal that is exported.
+ *
+ * If @object has queued notifications, empty the queue forcing
+ * the <literal>PropertiesChanged</literal> signal to be emitted.
+ * See <xref linkend="EGdbusCal.description"/> for more background information.
+ */
+void
+e_gdbus_cal_drain_notify (EGdbusCal *object)
+{
+ gint idle_id;
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (object), "gdbus-codegen-notification-idle-id"));
+ if (idle_id > 0)
+ {
+ emit_notifications_in_idle (object);
+ g_source_remove (idle_id);
+ }
+}
+
+static void
+on_notify (GObject *object,
+ GParamSpec *pspec,
+ gpointer user_data)
+{
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *value;
+ const gchar *property_name;
+ guint prop_id;
+
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ property_name = lookup_property_name_from_property_gname (pspec->name);
+ if (property_name == NULL)
+ goto out;
+ prop_id = lookup_property_id_from_property_name (property_name);
+
+ value = NULL;
+ switch (prop_id)
+ {
+ }
+
+ if (value != NULL && property_name != NULL)
+ {
+ queue_notification (object, property_name, g_variant_ref_sink (value));
+ }
+out:
+ ;
+}
+
+static void
+on_object_unregistered (GObject *object)
+{
+ gint idle_id;
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (object), "gdbus-codegen-notification-idle-id"));
+ if (idle_id > 0)
+ {
+ g_source_remove (idle_id);
+ }
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-path", NULL);
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-connection", NULL);
+ g_signal_handlers_disconnect_by_func (object, on_notify, NULL);
+}
+
+/**
+ * e_gdbus_cal_register_object:
+ * @object: An instance of a #GObject<!-- -->-derived type implementing the #EGdbusCal interface.
+ * @connection: A #GDBusConnection.
+ * @object_path: The object to register the object at.
+ * @error: Return location for error or %NULL.
+ *
+ * Registers @object at @object_path on @connection.
+ *
+ * See <xref linkend="EGdbusCal.description"/>
+ * for how properties, methods and signals are handled.
+ *
+ * Returns: 0 if @error is set, otherwise a registration id (never 0) that can be used with g_dbus_connection_unregister_object().
+ */
+guint
+e_gdbus_cal_register_object (EGdbusCal *object,
+ GDBusConnection *connection,
+ const gchar *object_path,
+ GError **error)
+{
+ G_GNUC_UNUSED GVariant *value;
+ GHashTable *pvc;
+
+ pvc = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_variant_unref);
+
+ g_object_set_data_full (G_OBJECT (object), "gdbus-codegen-path", (gpointer) g_strdup (object_path), g_free);
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-connection", (gpointer) connection);
+ g_object_set_data_full (G_OBJECT (object), "gdbus-codegen-pvc", (gpointer) pvc, (GDestroyNotify) g_hash_table_unref);
+ g_signal_connect (object, "notify", G_CALLBACK (on_notify), NULL);
+ return g_dbus_connection_register_object (connection,
+ object_path,
+ &_e_gdbus_cal_interface_info,
+ &e_gdbus_cal_interface_vtable,
+ object,
+ (GDestroyNotify) on_object_unregistered,
+ error);
+}
+
+/**
+ * e_gdbus_cal_interface_info:
+ *
+ * Gets interface description for the <literal>org.gnome.evolution.dataserver.calendar.Cal</literal> D-Bus interface.
+ *
+ * Returns: A #GDBusInterfaceInfo. Do not free, the object is statically allocated.
+ */
+const GDBusInterfaceInfo *
+e_gdbus_cal_interface_info (void)
+{
+ return &_e_gdbus_cal_interface_info;
+}
+
+
+/* ---------------------------------------------------------------------- */
+
+static void proxy_iface_init (EGdbusCalIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (EGdbusCalProxy, e_gdbus_cal_proxy, G_TYPE_DBUS_PROXY,
+ G_IMPLEMENT_INTERFACE (E_GDBUS_TYPE_CAL, proxy_iface_init));
+
+static void
+e_gdbus_cal_proxy_init (EGdbusCalProxy *proxy)
+{
+ g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy),
+ (GDBusInterfaceInfo *) &_e_gdbus_cal_interface_info);
+}
+
+static void
+g_signal (GDBusProxy *proxy,
+ const gchar *sender_name,
+ const gchar *signal_name,
+ GVariant *parameters)
+{
+ guint signal_id;
+ signal_id = lookup_signal_id_from_signal_name (signal_name);
+ switch (signal_id)
+ {
+ case __AUTH_REQUIRED_SIGNAL:
+ {
+ g_signal_emit (proxy,
+ signals[signal_id],
+ 0);
+ }
+ break;
+
+ case __BACKEND_ERROR_SIGNAL:
+ {
+ const gchar *arg_error;
+ g_variant_get (parameters,
+ "(&s)",
+ &arg_error);
+ g_signal_emit (proxy,
+ signals[signal_id],
+ 0, arg_error);
+ }
+ break;
+
+ case __READONLY_SIGNAL:
+ {
+ gboolean arg_is_readonly;
+ g_variant_get (parameters,
+ "(b)",
+ &arg_is_readonly);
+ g_signal_emit (proxy,
+ signals[signal_id],
+ 0, arg_is_readonly);
+ }
+ break;
+
+ case __MODE_SIGNAL:
+ {
+ gint arg_mode;
+ g_variant_get (parameters,
+ "(i)",
+ &arg_mode);
+ g_signal_emit (proxy,
+ signals[signal_id],
+ 0, arg_mode);
+ }
+ break;
+
+ }
+}
+
+static void
+e_gdbus_cal_proxy_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED GVariant *cached;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+property_set_cb (GDBusProxy *proxy,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ const gchar *property_name = user_data;
+ GError *error;
+ GVariant *result;
+
+ error = NULL;
+ result = g_dbus_proxy_call_finish (proxy, res, &error);
+ if (result == NULL)
+ {
+ g_warning ("Error setting property `%s': %s", property_name, error->message);
+ g_error_free (error);
+ }
+ else
+ {
+ g_variant_unref (result);
+ }
+}
+
+static void
+e_gdbus_cal_proxy_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GVariant *new_value;
+ const gchar *property_name;
+ new_value = NULL;
+ property_name = NULL;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+
+ if (new_value != NULL)
+ {
+ g_variant_ref_sink (new_value);
+ g_dbus_proxy_call (G_DBUS_PROXY (object),
+ "org.freedesktop.DBus.Properties.Set",
+ g_variant_new ("(ssv)",
+ "org.gnome.evolution.dataserver.calendar.Cal",
+ property_name,
+ new_value),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ (GAsyncReadyCallback) property_set_cb,
+ (gpointer) property_name);
+ g_variant_unref (new_value);
+ }
+
+}
+
+static void
+g_properties_changed (GDBusProxy *proxy,
+ GVariant *changed_properties,
+ const gchar* const *invalidated_properties)
+{
+ guint n;
+ const gchar *key;
+ GVariantIter *iter;
+ const gchar *gname;
+
+ g_variant_get (changed_properties, "a{sv}", &iter);
+ while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+ {
+ gname = lookup_property_gname_from_property_name (key);
+ if (gname != NULL)
+ g_object_notify (G_OBJECT (proxy), gname);
+ }
+
+ for (n = 0; invalidated_properties[n] != NULL; n++)
+ {
+ gname = lookup_property_gname_from_property_name (invalidated_properties[n]);
+ if (gname != NULL)
+ g_object_notify (G_OBJECT (proxy), gname);
+ }
+
+}
+
+static void
+e_gdbus_cal_proxy_class_init (EGdbusCalProxyClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusProxyClass *proxy_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->get_property = e_gdbus_cal_proxy_get_property;
+ gobject_class->set_property = e_gdbus_cal_proxy_set_property;
+
+ proxy_class = G_DBUS_PROXY_CLASS (klass);
+ proxy_class->g_signal = g_signal;
+ proxy_class->g_properties_changed = g_properties_changed;
+
+}
+
+static void
+proxy_iface_init (EGdbusCalIface *iface)
+{
+}
+
+
+/**
+ * e_gdbus_cal_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: Callback function to invoke when the proxy is ready.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like g_dbus_proxy_new() but returns a #EGdbusCalProxy.
+ *
+ * This is a failable asynchronous constructor - when the proxy is ready, callback will be invoked and you can use e_gdbus_cal_proxy_new_finish() to get the result.
+ */
+void e_gdbus_cal_proxy_new (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (E_GDBUS_TYPE_CAL_PROXY,
+ G_PRIORITY_DEFAULT,
+ cancellable,
+ callback,
+ user_data,
+ "g-flags", flags,
+ "g-name", name,
+ "g-connection", connection,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.calendar.Cal",
+ NULL);
+}
+
+/**
+ * e_gdbus_cal_proxy_new_finish:
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to e_gdbus_cal_proxy_new().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes creating a #EGdbusCalProxy.
+ *
+ * Returns: A #EGdbusCalProxy or %NULL if @error is set. Free with g_object_unref().
+ */
+EGdbusCal *e_gdbus_cal_proxy_new_finish (GAsyncResult *res,
+ GError **error)
+{
+ GObject *object;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ g_assert (source_object != NULL);
+ object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object),
+ res,
+ error);
+ g_object_unref (source_object);
+ if (object != NULL)
+ return E_GDBUS_CAL (object);
+ else
+ return NULL;
+}
+
+/**
+ * e_gdbus_cal_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Like g_dbus_proxy_new_sync() but returns a #EGdbusCalProxy.
+ *
+ * This is a synchronous failable constructor. See e_gdbus_cal_proxy_new() and e_gdbus_cal_proxy_new_finish() for the asynchronous version.
+ *
+ * Returns: A #EGdbusCalProxy or %NULL if error is set. Free with g_object_unref().
+ */
+EGdbusCal *e_gdbus_cal_proxy_new_sync (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *initable;
+ initable = g_initable_new (E_GDBUS_TYPE_CAL_PROXY,
+ cancellable,
+ error,
+ "g-flags", flags,
+ "g-name", name,
+ "g-connection", connection,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.calendar.Cal",
+ NULL);
+ if (initable != NULL)
+ return E_GDBUS_CAL (initable);
+ else
+ return NULL;
+}
+
+
+/**
+ * e_gdbus_cal_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: Callback function to invoke when the proxy is ready.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like g_dbus_proxy_new_for_bus() but returns a #EGdbusCalProxy.
+ *
+ * This is a failable asynchronous constructor - when the proxy is ready, callback will be invoked and you can use e_gdbus_cal_proxy_new_for_bus_finish() to get the result.
+ */
+void e_gdbus_cal_proxy_new_for_bus (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (E_GDBUS_TYPE_CAL_PROXY,
+ G_PRIORITY_DEFAULT,
+ cancellable,
+ callback,
+ user_data,
+ "g-flags", flags,
+ "g-name", name,
+ "g-bus-type", bus_type,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.calendar.Cal",
+ NULL);
+}
+
+/**
+ * e_gdbus_cal_proxy_new_for_bus_finish:
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to e_gdbus_cal_proxy_new_for_bus().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes creating a #EGdbusCalProxy.
+ *
+ * Returns: A #EGdbusCalProxy or %NULL if @error is set. Free with g_object_unref().
+ */
+EGdbusCal *e_gdbus_cal_proxy_new_for_bus_finish (GAsyncResult *res,
+ GError **error)
+{
+ GObject *object;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ g_assert (source_object != NULL);
+ object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object),
+ res,
+ error);
+ g_object_unref (source_object);
+ if (object != NULL)
+ return E_GDBUS_CAL (object);
+ else
+ return NULL;
+}
+
+/**
+ * e_gdbus_cal_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Like g_dbus_proxy_new_for_bus_sync() but returns a #EGdbusCalProxy.
+ *
+ * This is a synchronous failable constructor. See e_gdbus_cal_proxy_new_for_bus() and e_gdbus_cal_proxy_new_for_bus_finish() for the asynchronous version.
+ *
+ * Returns: A #EGdbusCalProxy or %NULL if error is set. Free with g_object_unref().
+ */
+EGdbusCal *e_gdbus_cal_proxy_new_for_bus_sync (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *initable;
+ initable = g_initable_new (E_GDBUS_TYPE_CAL_PROXY,
+ cancellable,
+ error,
+ "g-flags", flags,
+ "g-name", name,
+ "g-bus-type", bus_type,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.calendar.Cal",
+ NULL);
+ if (initable != NULL)
+ return E_GDBUS_CAL (initable);
+ else
+ return NULL;
+}
+
+
+/* ---------------------------------------------------------------------- */
+
+struct _EGdbusCalStubPrivate
+{
+ gint foo;
+};
+
+static void stub_iface_init (EGdbusCalIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (EGdbusCalStub, e_gdbus_cal_stub, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (E_GDBUS_TYPE_CAL, stub_iface_init));
+
+static void
+e_gdbus_cal_stub_finalize (GObject *object)
+{
+ G_GNUC_UNUSED EGdbusCalStub *stub = (EGdbusCalStub *) object;
+ if (G_OBJECT_CLASS (e_gdbus_cal_stub_parent_class)->finalize != NULL)
+ G_OBJECT_CLASS (e_gdbus_cal_stub_parent_class)->finalize (object);
+}
+
+static void
+e_gdbus_cal_stub_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED static gchar **strv_of_len_zero = {NULL};
+ G_GNUC_UNUSED EGdbusCalStub *stub = (EGdbusCalStub *) object;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+e_gdbus_cal_stub_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED EGdbusCalStub *stub = (EGdbusCalStub *) object;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+e_gdbus_cal_stub_init (EGdbusCalStub *stub)
+{
+ stub->priv = G_TYPE_INSTANCE_GET_PRIVATE (stub, E_GDBUS_TYPE_CAL_STUB, EGdbusCalStubPrivate);
+}
+
+static void
+e_gdbus_cal_stub_class_init (EGdbusCalStubClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = e_gdbus_cal_stub_finalize;
+ gobject_class->get_property = e_gdbus_cal_stub_get_property;
+ gobject_class->set_property = e_gdbus_cal_stub_set_property;
+ g_type_class_add_private (klass, sizeof (EGdbusCalStubPrivate));
+}
+
+static void
+stub_iface_init (EGdbusCalIface *iface)
+{
+}
+
+/**
+ * e_gdbus_cal_stub_new:
+ *
+ * Creates a new stub object that can be exported via e_gdbus_cal_register_object().
+ *
+ * Returns: A #EGdbusCalStub instance. Free with g_object_unref().
+ */
+EGdbusCal *
+e_gdbus_cal_stub_new (void)
+{
+ return E_GDBUS_CAL (g_object_new (E_GDBUS_TYPE_CAL_STUB, NULL));
+}
diff --git a/calendar/libegdbus/e-gdbus-egdbuscal.h b/calendar/libegdbus/e-gdbus-egdbuscal.h
new file mode 100644
index 0000000..f69cbd3
--- /dev/null
+++ b/calendar/libegdbus/e-gdbus-egdbuscal.h
@@ -0,0 +1,1077 @@
+/* File: e-gdbus-egdbuscal.h
+ *
+ * GType name: EGdbusCal
+ * D-Bus name: org.gnome.evolution.dataserver.calendar.Cal
+ *
+ * Generated by GDBus Binding Tool 0.1. DO NOT EDIT.
+ */
+
+#ifndef __E_GDBUS_E_GDBUS_CAL_H__
+#define __E_GDBUS_E_GDBUS_CAL_H__
+
+#include <gio/gio.h>
+
+#include "e-gdbus-typemappers.h"
+G_BEGIN_DECLS
+
+#define E_GDBUS_TYPE_CAL (e_gdbus_cal_get_type ())
+#define E_GDBUS_CAL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), E_GDBUS_TYPE_CAL, EGdbusCal))
+#define E_GDBUS_IS_CAL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_GDBUS_TYPE_CAL))
+#define E_GDBUS_CAL_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), E_GDBUS_TYPE_CAL, EGdbusCalIface))
+
+/**
+ * EGdbusCal:
+ *
+ * Opaque type representing a proxy or an exported object.
+ */
+typedef struct _EGdbusCal EGdbusCal; /* Dummy typedef */
+/**
+ * EGdbusCalIface:
+ * @parent_iface: The parent interface.
+ * @auth_required: Handler for the #EGdbusCal::auth-required signal.
+ * @backend_error: Handler for the #EGdbusCal::backend-error signal.
+ * @readonly: Handler for the #EGdbusCal::readonly signal.
+ * @mode: Handler for the #EGdbusCal::mode signal.
+ * @handle_get_uri: Handler for the #EGdbusCal::handle-get-uri signal.
+ * @handle_get_cache_dir: Handler for the #EGdbusCal::handle-get-cache-dir signal.
+ * @handle_open: Handler for the #EGdbusCal::handle-open signal.
+ * @handle_refresh: Handler for the #EGdbusCal::handle-refresh signal.
+ * @handle_close: Handler for the #EGdbusCal::handle-close signal.
+ * @handle_remove: Handler for the #EGdbusCal::handle-remove signal.
+ * @handle_is_read_only: Handler for the #EGdbusCal::handle-is-read-only signal.
+ * @handle_get_cal_address: Handler for the #EGdbusCal::handle-get-cal-address signal.
+ * @handle_get_alarm_email_address: Handler for the #EGdbusCal::handle-get-alarm-email-address signal.
+ * @handle_get_ldap_attribute: Handler for the #EGdbusCal::handle-get-ldap-attribute signal.
+ * @handle_get_scheduling_information: Handler for the #EGdbusCal::handle-get-scheduling-information signal.
+ * @handle_set_mode: Handler for the #EGdbusCal::handle-set-mode signal.
+ * @handle_get_default_object: Handler for the #EGdbusCal::handle-get-default-object signal.
+ * @handle_get_object: Handler for the #EGdbusCal::handle-get-object signal.
+ * @handle_get_object_list: Handler for the #EGdbusCal::handle-get-object-list signal.
+ * @handle_get_changes: Handler for the #EGdbusCal::handle-get-changes signal.
+ * @handle_get_free_busy: Handler for the #EGdbusCal::handle-get-free-busy signal.
+ * @handle_discard_alarm: Handler for the #EGdbusCal::handle-discard-alarm signal.
+ * @handle_create_object: Handler for the #EGdbusCal::handle-create-object signal.
+ * @handle_modify_object: Handler for the #EGdbusCal::handle-modify-object signal.
+ * @handle_remove_object: Handler for the #EGdbusCal::handle-remove-object signal.
+ * @handle_receive_objects: Handler for the #EGdbusCal::handle-receive-objects signal.
+ * @handle_send_objects: Handler for the #EGdbusCal::handle-send-objects signal.
+ * @handle_get_attachment_list: Handler for the #EGdbusCal::handle-get-attachment-list signal.
+ * @handle_get_query: Handler for the #EGdbusCal::handle-get-query signal.
+ * @handle_get_timezone: Handler for the #EGdbusCal::handle-get-timezone signal.
+ * @handle_add_timezone: Handler for the #EGdbusCal::handle-add-timezone signal.
+ * @handle_set_default_timezone: Handler for the #EGdbusCal::handle-set-default-timezone signal.
+ *
+ * Virtual table.
+ */
+typedef struct _EGdbusCalIface EGdbusCalIface;
+
+GType e_gdbus_cal_get_type (void) G_GNUC_CONST;
+
+/* ---------------------------------------------------------------------- */
+
+typedef struct _EGdbusCalProxy EGdbusCalProxy;
+typedef struct _EGdbusCalProxyClass EGdbusCalProxyClass;
+
+/**
+ * EGdbusCalProxyPrivate:
+ *
+ * The #EGdbusCalProxyPrivate structure contains only private data.
+ */
+typedef struct _EGdbusCalProxyPrivate EGdbusCalProxyPrivate;
+
+/**
+ * EGdbusCalProxy:
+ *
+ * The #EGdbusCalProxy structure contains only private data and
+ * should only be accessed using the provided API.
+ */
+struct _EGdbusCalProxy
+{
+ GDBusProxy parent_instance;
+ EGdbusCalProxyPrivate *priv;
+};
+
+/**
+ * EGdbusCalProxyClass:
+ *
+ * Class structure for #EGdbusCalProxy.
+ */
+struct _EGdbusCalProxyClass
+{
+ GDBusProxyClass parent_class;
+};
+
+#define E_GDBUS_TYPE_CAL_PROXY (e_gdbus_cal_proxy_get_type ())
+GType e_gdbus_cal_proxy_get_type (void) G_GNUC_CONST;
+
+void e_gdbus_cal_proxy_new (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+EGdbusCal *e_gdbus_cal_proxy_new_finish (GAsyncResult *res,
+ GError **error);
+EGdbusCal *e_gdbus_cal_proxy_new_sync (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+void e_gdbus_cal_proxy_new_for_bus (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+EGdbusCal *e_gdbus_cal_proxy_new_for_bus_finish (GAsyncResult *res,
+ GError **error);
+EGdbusCal *e_gdbus_cal_proxy_new_for_bus_sync (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+/* ---------------------------------------------------------------------- */
+
+typedef struct _EGdbusCalStub EGdbusCalStub;
+typedef struct _EGdbusCalStubClass EGdbusCalStubClass;
+
+/**
+ * EGdbusCalStubPrivate:
+ *
+ * The #EGdbusCalStubPrivate structure contains only private data.
+ */
+typedef struct _EGdbusCalStubPrivate EGdbusCalStubPrivate;
+
+/**
+ * EGdbusCalStub:
+ *
+ * The #EGdbusCalStub structure contains only private data and
+ * should only be accessed using the provided API.
+ */
+struct _EGdbusCalStub
+{
+ GObject parent_instance;
+ EGdbusCalStubPrivate *priv;
+};
+
+/**
+ * EGdbusCalStubClass:
+ *
+ * Class structure for #EGdbusCalStub.
+ */
+struct _EGdbusCalStubClass
+{
+ GObjectClass parent_class;
+};
+
+#define E_GDBUS_TYPE_CAL_STUB (e_gdbus_cal_stub_get_type ())
+GType e_gdbus_cal_stub_get_type (void) G_GNUC_CONST;
+
+EGdbusCal *e_gdbus_cal_stub_new (void);
+
+
+guint e_gdbus_cal_register_object (EGdbusCal *object,
+ GDBusConnection *connection,
+ const gchar *object_path,
+ GError **error);
+
+void e_gdbus_cal_drain_notify (EGdbusCal *object);
+
+
+const GDBusInterfaceInfo *e_gdbus_cal_interface_info (void) G_GNUC_CONST;
+
+struct _EGdbusCalIface
+{
+ GTypeInterface parent_iface;
+
+ /* Signal handlers for receiving D-Bus signals: */
+ void (*auth_required) (
+ EGdbusCal *object);
+ void (*backend_error) (
+ EGdbusCal *object,
+ const gchar *arg_error);
+ void (*readonly) (
+ EGdbusCal *object,
+ gboolean arg_is_readonly);
+ void (*mode) (
+ EGdbusCal *object,
+ gint arg_mode);
+
+ /* Signal handlers for handling D-Bus method calls: */
+ gboolean (*handle_get_uri) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_get_cache_dir) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_open) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ gboolean in_only_if_exists,
+ const gchar *in_username,
+ const gchar *in_password);
+ gboolean (*handle_refresh) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_close) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_remove) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_is_read_only) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_get_cal_address) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_get_alarm_email_address) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_get_ldap_attribute) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_get_scheduling_information) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_set_mode) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ guint in_mode);
+ gboolean (*handle_get_default_object) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_get_object) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_uid,
+ const gchar *in_rid);
+ gboolean (*handle_get_object_list) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_sexp);
+ gboolean (*handle_get_changes) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_change_id);
+ gboolean (*handle_get_free_busy) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *in_user_list,
+ guint in_start,
+ guint in_end);
+ gboolean (*handle_discard_alarm) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_uid,
+ const gchar *in_auid);
+ gboolean (*handle_create_object) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_calobj);
+ gboolean (*handle_modify_object) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_calobj,
+ guint in_mod);
+ gboolean (*handle_remove_object) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_uid,
+ const gchar *in_rid,
+ guint in_mod);
+ gboolean (*handle_receive_objects) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_calobj);
+ gboolean (*handle_send_objects) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_calobj);
+ gboolean (*handle_get_attachment_list) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_uid,
+ const gchar *in_rid);
+ gboolean (*handle_get_query) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_sexp);
+ gboolean (*handle_get_timezone) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_tzid);
+ gboolean (*handle_add_timezone) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_tz);
+ gboolean (*handle_set_default_timezone) (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_tz);
+};
+
+/* C Bindings for properties */
+
+
+/* D-Bus Methods */
+void e_gdbus_cal_call_get_uri (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_get_uri_finish (
+ EGdbusCal *proxy,
+ gchar **out_str_uri_copy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_get_uri_sync (
+ EGdbusCal *proxy,
+ gchar **out_str_uri_copy,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_get_cache_dir (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_get_cache_dir_finish (
+ EGdbusCal *proxy,
+ gchar **out_dirname,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_get_cache_dir_sync (
+ EGdbusCal *proxy,
+ gchar **out_dirname,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_open (
+ EGdbusCal *proxy,
+ gboolean in_only_if_exists,
+ const gchar *in_username,
+ const gchar *in_password,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_open_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_open_sync (
+ EGdbusCal *proxy,
+ gboolean in_only_if_exists,
+ const gchar *in_username,
+ const gchar *in_password,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_refresh (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_refresh_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_refresh_sync (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_close (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_close_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_close_sync (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_remove (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_remove_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_remove_sync (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_is_read_only (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_is_read_only_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_is_read_only_sync (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_get_cal_address (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_get_cal_address_finish (
+ EGdbusCal *proxy,
+ gchar **out_address,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_get_cal_address_sync (
+ EGdbusCal *proxy,
+ gchar **out_address,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_get_alarm_email_address (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_get_alarm_email_address_finish (
+ EGdbusCal *proxy,
+ gchar **out_address,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_get_alarm_email_address_sync (
+ EGdbusCal *proxy,
+ gchar **out_address,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_get_ldap_attribute (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_get_ldap_attribute_finish (
+ EGdbusCal *proxy,
+ gchar **out_address,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_get_ldap_attribute_sync (
+ EGdbusCal *proxy,
+ gchar **out_address,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_get_scheduling_information (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_get_scheduling_information_finish (
+ EGdbusCal *proxy,
+ gchar **out_capabilities,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_get_scheduling_information_sync (
+ EGdbusCal *proxy,
+ gchar **out_capabilities,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_set_mode (
+ EGdbusCal *proxy,
+ guint in_mode,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_set_mode_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_set_mode_sync (
+ EGdbusCal *proxy,
+ guint in_mode,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_get_default_object (
+ EGdbusCal *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_get_default_object_finish (
+ EGdbusCal *proxy,
+ gchar **out_object,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_get_default_object_sync (
+ EGdbusCal *proxy,
+ gchar **out_object,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_get_object (
+ EGdbusCal *proxy,
+ const gchar *in_uid,
+ const gchar *in_rid,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_get_object_finish (
+ EGdbusCal *proxy,
+ gchar **out_object,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_get_object_sync (
+ EGdbusCal *proxy,
+ const gchar *in_uid,
+ const gchar *in_rid,
+ gchar **out_object,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_get_object_list (
+ EGdbusCal *proxy,
+ const gchar *in_sexp,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_get_object_list_finish (
+ EGdbusCal *proxy,
+ gchar ***out_objects,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_get_object_list_sync (
+ EGdbusCal *proxy,
+ const gchar *in_sexp,
+ gchar ***out_objects,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_get_changes (
+ EGdbusCal *proxy,
+ const gchar *in_change_id,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_get_changes_finish (
+ EGdbusCal *proxy,
+ gchar ***out_additions,
+ gchar ***out_modifications,
+ gchar ***out_removals,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_get_changes_sync (
+ EGdbusCal *proxy,
+ const gchar *in_change_id,
+ gchar ***out_additions,
+ gchar ***out_modifications,
+ gchar ***out_removals,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_get_free_busy (
+ EGdbusCal *proxy,
+ const gchar* const *in_user_list,
+ guint in_start,
+ guint in_end,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_get_free_busy_finish (
+ EGdbusCal *proxy,
+ gchar ***out_freebusy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_get_free_busy_sync (
+ EGdbusCal *proxy,
+ const gchar* const *in_user_list,
+ guint in_start,
+ guint in_end,
+ gchar ***out_freebusy,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_discard_alarm (
+ EGdbusCal *proxy,
+ const gchar *in_uid,
+ const gchar *in_auid,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_discard_alarm_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_discard_alarm_sync (
+ EGdbusCal *proxy,
+ const gchar *in_uid,
+ const gchar *in_auid,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_create_object (
+ EGdbusCal *proxy,
+ const gchar *in_calobj,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_create_object_finish (
+ EGdbusCal *proxy,
+ gchar **out_uid,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_create_object_sync (
+ EGdbusCal *proxy,
+ const gchar *in_calobj,
+ gchar **out_uid,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_modify_object (
+ EGdbusCal *proxy,
+ const gchar *in_calobj,
+ guint in_mod,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_modify_object_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_modify_object_sync (
+ EGdbusCal *proxy,
+ const gchar *in_calobj,
+ guint in_mod,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_remove_object (
+ EGdbusCal *proxy,
+ const gchar *in_uid,
+ const gchar *in_rid,
+ guint in_mod,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_remove_object_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_remove_object_sync (
+ EGdbusCal *proxy,
+ const gchar *in_uid,
+ const gchar *in_rid,
+ guint in_mod,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_receive_objects (
+ EGdbusCal *proxy,
+ const gchar *in_calobj,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_receive_objects_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_receive_objects_sync (
+ EGdbusCal *proxy,
+ const gchar *in_calobj,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_send_objects (
+ EGdbusCal *proxy,
+ const gchar *in_calobj,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_send_objects_finish (
+ EGdbusCal *proxy,
+ gchar ***out_users,
+ gchar **out_calobj,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_send_objects_sync (
+ EGdbusCal *proxy,
+ const gchar *in_calobj,
+ gchar ***out_users,
+ gchar **out_calobj,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_get_attachment_list (
+ EGdbusCal *proxy,
+ const gchar *in_uid,
+ const gchar *in_rid,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_get_attachment_list_finish (
+ EGdbusCal *proxy,
+ gchar ***out_attachments,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_get_attachment_list_sync (
+ EGdbusCal *proxy,
+ const gchar *in_uid,
+ const gchar *in_rid,
+ gchar ***out_attachments,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_get_query (
+ EGdbusCal *proxy,
+ const gchar *in_sexp,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_get_query_finish (
+ EGdbusCal *proxy,
+ gchar **out_query,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_get_query_sync (
+ EGdbusCal *proxy,
+ const gchar *in_sexp,
+ gchar **out_query,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_get_timezone (
+ EGdbusCal *proxy,
+ const gchar *in_tzid,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_get_timezone_finish (
+ EGdbusCal *proxy,
+ gchar **out_object,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_get_timezone_sync (
+ EGdbusCal *proxy,
+ const gchar *in_tzid,
+ gchar **out_object,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_add_timezone (
+ EGdbusCal *proxy,
+ const gchar *in_tz,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_add_timezone_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_add_timezone_sync (
+ EGdbusCal *proxy,
+ const gchar *in_tz,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_call_set_default_timezone (
+ EGdbusCal *proxy,
+ const gchar *in_tz,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_call_set_default_timezone_finish (
+ EGdbusCal *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_call_set_default_timezone_sync (
+ EGdbusCal *proxy,
+ const gchar *in_tz,
+ GCancellable *cancellable,
+ GError **error);
+
+
+
+/* D-Bus Methods Completion Helpers */
+void e_gdbus_cal_complete_get_uri (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_str_uri_copy);
+
+
+void e_gdbus_cal_complete_get_cache_dir (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_dirname);
+
+
+void e_gdbus_cal_complete_open (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_cal_complete_refresh (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_cal_complete_close (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_cal_complete_remove (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_cal_complete_is_read_only (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_cal_complete_get_cal_address (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_address);
+
+
+void e_gdbus_cal_complete_get_alarm_email_address (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_address);
+
+
+void e_gdbus_cal_complete_get_ldap_attribute (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_address);
+
+
+void e_gdbus_cal_complete_get_scheduling_information (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_capabilities);
+
+
+void e_gdbus_cal_complete_set_mode (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_cal_complete_get_default_object (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_object);
+
+
+void e_gdbus_cal_complete_get_object (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_object);
+
+
+void e_gdbus_cal_complete_get_object_list (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_objects);
+
+
+void e_gdbus_cal_complete_get_changes (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_additions,
+ const gchar* const *out_modifications,
+ const gchar* const *out_removals);
+
+
+void e_gdbus_cal_complete_get_free_busy (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_freebusy);
+
+
+void e_gdbus_cal_complete_discard_alarm (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_cal_complete_create_object (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_uid);
+
+
+void e_gdbus_cal_complete_modify_object (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_cal_complete_remove_object (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_cal_complete_receive_objects (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_cal_complete_send_objects (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_users,
+ const gchar *out_calobj);
+
+
+void e_gdbus_cal_complete_get_attachment_list (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar* const *out_attachments);
+
+
+void e_gdbus_cal_complete_get_query (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_query);
+
+
+void e_gdbus_cal_complete_get_timezone (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_object);
+
+
+void e_gdbus_cal_complete_add_timezone (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_cal_complete_set_default_timezone (
+ EGdbusCal *object,
+ GDBusMethodInvocation *invocation);
+
+
+
+/* D-Bus Signal Emission Helpers */
+void e_gdbus_cal_emit_auth_required (
+ EGdbusCal *object);
+
+
+void e_gdbus_cal_emit_backend_error (
+ EGdbusCal *object,
+ const gchar *arg_error);
+
+
+void e_gdbus_cal_emit_readonly (
+ EGdbusCal *object,
+ gboolean arg_is_readonly);
+
+
+void e_gdbus_cal_emit_mode (
+ EGdbusCal *object,
+ gint arg_mode);
+
+
+
+G_END_DECLS
+
+#endif /* __E_GDBUS_E_GDBUS_CAL_H__ */
diff --git a/calendar/libegdbus/e-gdbus-egdbuscalfactory.c b/calendar/libegdbus/e-gdbus-egdbuscalfactory.c
new file mode 100644
index 0000000..97a7683
--- /dev/null
+++ b/calendar/libegdbus/e-gdbus-egdbuscalfactory.c
@@ -0,0 +1,1138 @@
+/* File: e-gdbus-egdbuscalfactory.c
+ *
+ * GType name: EGdbusCalFactory
+ * D-Bus name: org.gnome.evolution.dataserver.calendar.CalFactory
+ *
+ * Generated by GDBus Binding Tool 0.1. DO NOT EDIT.
+ */
+
+/**
+ * SECTION:e-gdbus-egdbuscalfactory
+ * @title: EGdbusCalFactory
+ * @short_description: Wraps the org.gnome.evolution.dataserver.calendar.CalFactory D-Bus interface
+ * @include: gio/gio.h
+ *
+ * The abstract #EGdbusCalFactory interface type wraps the <literal>org.gnome.evolution.dataserver.calendar.CalFactory</literal> D-Bus interface. Two concrete implementations of this type are included: #EGdbusCalFactoryProxy and #EGdbusCalFactoryStub.
+ *
+ * The generated proxy type #EGdbusCalFactoryProxy is typically used with the generated constructors e_gdbus_cal_factory_proxy_new(), e_gdbus_cal_factory_proxy_new_sync() and e_gdbus_cal_factory_proxy_new_for_bus(), e_gdbus_cal_factory_proxy_new_for_bus_sync().
+ *
+ * The generated stub type #EGdbusCalFactoryStub takes care of handling properties, method invocations and signal emissions. Simply use e_gdbus_cal_factory_stub_new(), set some properties and connect to any of the handle-* signals to handle method invocations. Finally use e_gdbus_cal_factory_register_object() to export the object on a #GDBusConnection.
+ * |[
+ * /<!-- -->* You can also use g_object_new() with E_GDBUS_TYPE_CAL_FACTORY_STUB
+ * * to set properties at construction time.
+ * *<!-- -->/
+ * object = e_gdbus_cal_factory_stub_new ();
+ * e_gdbus_cal_factory_set_<property_name> (object, <value_for_property>);
+ * [...]
+ *
+ * g_signal_connect (object,
+ * "handle-<method-name>",
+ * G_CALLBACK (on_handle_<method_name>),
+ * some_user_data);
+ * [...]
+ *
+ * error = NULL;
+ * id = e_gdbus_cal_factory_register_object (object,
+ * connection,
+ * "/path/of/object",
+ * &error);
+ * ]|
+ *
+ * You don't <emphasis>have</emphasis> to use the generated stub type to export
+ * objects. Any type implementing the #EGdbusCalFactory interface may be used with
+ * e_gdbus_cal_factory_register_object().
+ *
+ * Once exported, you can make the exported object emit D-Bus signals by simply
+ * emitting the corresponding GType signals. For better type-safety, you can use,
+ * the provided e_gdbus_cal_factory_emit_*() helpers.
+ *
+ * For property changes, #GObject::notify signal emissions on exported objects
+ * will be intercepted and queued. In an idle handler, the queued notifications
+ * are processed and a single <literal>PropertiesChanged</literal> signal (on the
+ * <literal>org.freedesktop.DBus.Properties</literal> interface) will be emitted
+ * for all the properties that changed (possibly containing several properties).
+ * Use e_gdbus_cal_factory_drain_notify() to drain the queue immediately.
+ */
+
+#include "e-gdbus-egdbuscalfactory.h"
+#include "e-gdbus-typemappers.h"
+#include "e-gdbus-marshallers.h"
+
+typedef EGdbusCalFactoryIface EGdbusCalFactoryInterface;
+G_DEFINE_INTERFACE (EGdbusCalFactory, e_gdbus_cal_factory, G_TYPE_OBJECT);
+
+
+enum
+{
+ _0_SIGNAL,
+ __GET_CAL_METHOD,
+ __LAST_SIGNAL
+};
+
+static guint signals[__LAST_SIGNAL] = {0};
+
+
+enum
+{
+ PROP_0,
+};
+
+/* ------------------------------------------------------------------------- */
+
+/* Various lookup tables */
+
+static GHashTable *_method_name_to_id = NULL;
+static GHashTable *_signal_name_to_id = NULL;
+static GHashTable *_property_name_to_id = NULL;
+static GHashTable *_property_gname_to_name = NULL;
+static GHashTable *_property_name_to_gname = NULL;
+
+
+static guint
+lookup_method_id_from_method_name (const gchar *method_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_method_name_to_id, method_name));
+}
+
+static guint
+lookup_signal_id_from_signal_name (const gchar *signal_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_signal_name_to_id, signal_name));
+}
+
+static guint
+lookup_property_id_from_property_name (const gchar *property_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_property_name_to_id, property_name));
+}
+
+static const gchar *
+lookup_property_name_from_property_gname (const gchar *property_gname)
+{
+ return g_hash_table_lookup (_property_gname_to_name, property_gname);
+}
+
+static const gchar *
+lookup_property_gname_from_property_name (const gchar *property_name)
+{
+ return g_hash_table_lookup (_property_name_to_gname, property_name);
+}
+
+/* ------------------------------------------------------------------------- */
+static void
+e_gdbus_cal_factory_default_init (EGdbusCalFactoryIface *iface)
+{
+
+ /* Build lookup structures */
+ _method_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _signal_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_gname_to_name = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_name_to_gname = g_hash_table_new (g_str_hash, g_str_equal);
+ g_hash_table_insert (_method_name_to_id, (gpointer) "getCal", GUINT_TO_POINTER (__GET_CAL_METHOD));
+
+ /* GObject signals definitions for D-Bus signals: */
+
+ /* GObject signals definitions for D-Bus methods: */
+ /**
+ * EGdbusCalFactory::handle-get-cal:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ * @source: Parameter.
+ * @type: Parameter.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>getCal</literal> D-Bus method on @object. Use e_gdbus_cal_factory_complete_get_cal() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_factory_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__GET_CAL_METHOD] =
+ g_signal_new ("handle-get-cal",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalFactoryIface, handle_get_cal),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_UINT,
+ G_TYPE_BOOLEAN,
+ 3,
+ G_TYPE_DBUS_METHOD_INVOCATION,
+ G_TYPE_STRING,
+ G_TYPE_UINT);
+
+ /* GObject property definitions for D-Bus properties: */
+}
+
+
+/* C Bindings for properties */
+
+/**
+ * e_gdbus_cal_factory_call_get_cal:
+ * @proxy: A #EGdbusCalFactory.
+ * @in_source: Method parameter.
+ * @in_type: Method parameter.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.CalFactory.getCal</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_factory_call_get_cal_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_factory_call_get_cal_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_factory_call_get_cal (
+ EGdbusCalFactory *proxy,
+ const gchar *in_source,
+ guint in_type,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(su)",
+ in_source,
+ in_type);
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "getCal",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_factory_call_get_cal_finish:
+ * @proxy: A #EGdbusCalFactory.
+ * @out_path: Return location for out parameter or %NULL. Free with g_free().
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_factory_call_get_cal().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.CalFactory.getCal</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_factory_call_get_cal_finish (
+ EGdbusCalFactory *proxy,
+ gchar **out_path,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(o)",
+ out_path);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_factory_call_get_cal_sync:
+ * @proxy: A #EGdbusCalFactory.
+ * @in_source: Method parameter.
+ * @in_type: Method parameter.
+ * @out_path: Return location for out parameter or %NULL. Free with g_free().
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.CalFactory.getCal</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_factory_call_get_cal() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_factory_call_get_cal_sync (
+ EGdbusCalFactory *proxy,
+ const gchar *in_source,
+ guint in_type,
+ gchar **out_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = g_variant_new ("(su)",
+ in_source,
+ in_type);
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "getCal",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ {
+ g_variant_get (_result,
+ "(o)",
+ out_path);
+ }
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_factory_complete_get_cal:
+ * @object: A #EGdbusCalFactory.
+ * @invocation: A #GDBusMethodInvocation.
+ * @out_path: Value to return.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.CalFactory.getCal</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_factory_complete_get_cal (
+ EGdbusCalFactory *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_path)
+{
+ GVariant *_params;
+ _params = g_variant_new ("(o)",
+ out_path);
+ g_dbus_method_invocation_return_value (invocation, _params);
+}
+
+
+static const GDBusArgInfo e_gdbus_cal_factory_method_in_getCal_source =
+{
+ -1,
+ (gchar *) "source",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_cal_factory_method_in_getCal_type =
+{
+ -1,
+ (gchar *) "type",
+ (gchar *) "u",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_factory_method_in_getCal_arg_pointers[] =
+{
+ &e_gdbus_cal_factory_method_in_getCal_source,
+ &e_gdbus_cal_factory_method_in_getCal_type,
+ NULL
+};
+
+static const GDBusArgInfo e_gdbus_cal_factory_method_out_getCal_path =
+{
+ -1,
+ (gchar *) "path",
+ (gchar *) "o",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_factory_method_out_getCal_arg_pointers[] =
+{
+ &e_gdbus_cal_factory_method_out_getCal_path,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_factory_method_getCal =
+{
+ -1,
+ (gchar *) "getCal",
+ (GDBusArgInfo **) &e_gdbus_cal_factory_method_in_getCal_arg_pointers,
+ (GDBusArgInfo **) &e_gdbus_cal_factory_method_out_getCal_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusMethodInfo * const e_gdbus_cal_factory_method_info_pointers[] =
+{
+ &e_gdbus_cal_factory_method_getCal,
+ NULL
+};
+
+static const GDBusInterfaceInfo _e_gdbus_cal_factory_interface_info =
+{
+ -1,
+ (gchar *) "org.gnome.evolution.dataserver.calendar.CalFactory",
+ (GDBusMethodInfo **) &e_gdbus_cal_factory_method_info_pointers,
+ (GDBusSignalInfo **) NULL,
+ (GDBusPropertyInfo **) NULL,
+};
+
+static void
+handle_method_call (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *method_name,
+ GVariant *parameters,
+ GDBusMethodInvocation *invocation,
+ gpointer user_data)
+{
+ guint method_id;
+ method_id = lookup_method_id_from_method_name (method_name);
+ switch (method_id)
+ {
+ case __GET_CAL_METHOD:
+ {
+ EGdbusCalFactory *object = E_GDBUS_CAL_FACTORY (user_data);
+ gboolean handled;
+ const gchar *arg_source;
+ guint arg_type;
+ g_variant_get (parameters,
+ "(&su)",
+ &arg_source,
+ &arg_type);
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, arg_source, arg_type, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ default:
+not_implemented:
+ g_dbus_method_invocation_return_error (invocation,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "Method `%s' is not implemented",
+ method_name);
+ break;
+ }
+};
+
+static GVariant *
+get_property (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *property_name,
+ GError **error,
+ gpointer user_data)
+{
+ GVariant *ret;
+ guint prop_id;
+ prop_id = lookup_property_id_from_property_name (property_name);
+ ret = NULL;
+ switch (prop_id)
+ {
+ default:
+ g_set_error (error,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "This implementation does not support property `%s'",
+ property_name);
+ break;
+ }
+
+ return ret;
+};
+
+static gboolean
+set_property (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *property_name,
+ GVariant *value,
+ GError **error,
+ gpointer user_data)
+{
+ gboolean ret;
+ guint prop_id;
+ prop_id = lookup_property_id_from_property_name (property_name);
+ ret = TRUE;
+ switch (prop_id)
+ {
+ default:
+ g_set_error (error,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "This implementation does not support property `%s'",
+ property_name);
+ ret = FALSE;
+ break;
+ }
+
+ return ret;
+};
+
+static const GDBusInterfaceVTable e_gdbus_cal_factory_interface_vtable =
+{
+ handle_method_call,
+ get_property,
+ set_property,
+};
+
+static gboolean
+emit_notifications_in_idle (gpointer user_data)
+{
+ GObject *object = G_OBJECT (user_data);
+ GDBusConnection *connection;
+ const gchar *path;
+ GHashTable *notification_queue;
+ GHashTableIter iter;
+ const gchar *property_name;
+ GVariant *value;
+ GVariantBuilder *builder;
+ GVariantBuilder *invalidated_builder;
+ GHashTable *pvc;
+ gboolean has_changes;
+
+ notification_queue = g_object_get_data (object, "gdbus-codegen-notification-queue");
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ pvc = g_object_get_data (object, "gdbus-codegen-pvc");
+ g_assert (notification_queue != NULL && path != NULL && connection != NULL && pvc != NULL);
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY);
+ invalidated_builder = g_variant_builder_new (G_VARIANT_TYPE ("as"));
+ g_hash_table_iter_init (&iter, notification_queue);
+ has_changes = FALSE;
+ while (g_hash_table_iter_next (&iter, (gpointer) &property_name, (gpointer) &value))
+ {
+ GVariant *cached_value;
+ cached_value = g_hash_table_lookup (pvc, property_name);
+ if (cached_value == NULL || !g_variant_equal (cached_value, value))
+ {
+ g_hash_table_insert (pvc, (gpointer) property_name, (gpointer) g_variant_ref (value));
+ g_variant_builder_add (builder, "{sv}", property_name, value);
+ has_changes = TRUE;
+ }
+ }
+
+ if (has_changes)
+ {
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.freedesktop.DBus.Properties",
+ "PropertiesChanged",
+ g_variant_new ("(sa{sv}as)",
+ "org.gnome.evolution.dataserver.calendar.CalFactory",
+ builder,
+ invalidated_builder),
+ NULL);
+ }
+ else
+ {
+ g_variant_builder_unref (builder);
+ g_variant_builder_unref (invalidated_builder);
+ }
+
+ g_hash_table_remove_all (notification_queue);
+ g_object_set_data (object, "gdbus-codegen-notification-idle-id", GUINT_TO_POINTER (0));
+ return FALSE;
+}
+
+static void
+queue_notification (GObject *object,
+ const gchar *property_name,
+ GVariant *value)
+{
+ GHashTable *notification_queue;
+ guint idle_id;
+ notification_queue = g_object_get_data (object, "gdbus-codegen-notification-queue");
+ if (notification_queue == NULL)
+ {
+ notification_queue = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_variant_unref);
+ g_object_set_data_full (object, "gdbus-codegen-notification-queue", notification_queue, (GDestroyNotify) g_hash_table_unref);
+ }
+ g_hash_table_insert (notification_queue, (gpointer) property_name, (gpointer) value); /* adopts value */
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (object, "gdbus-codegen-notification-idle-id"));
+ if (idle_id == 0)
+ {
+ GSource *idle_source;
+ idle_source = g_idle_source_new ();
+ g_source_set_priority (idle_source, G_PRIORITY_DEFAULT);
+ g_source_set_callback (idle_source,
+ emit_notifications_in_idle,
+ g_object_ref (object),
+ (GDestroyNotify) g_object_unref);
+ idle_id = g_source_attach (idle_source, g_main_context_get_thread_default ());
+ g_source_unref (idle_source);
+ g_object_set_data (object, "gdbus-codegen-notification-idle-id", GUINT_TO_POINTER (idle_id));
+ }
+}
+
+/**
+ * e_gdbus_cal_factory_drain_notify:
+ * @object: A #EGdbusCalFactory that is exported.
+ *
+ * If @object has queued notifications, empty the queue forcing
+ * the <literal>PropertiesChanged</literal> signal to be emitted.
+ * See <xref linkend="EGdbusCalFactory.description"/> for more background information.
+ */
+void
+e_gdbus_cal_factory_drain_notify (EGdbusCalFactory *object)
+{
+ gint idle_id;
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (object), "gdbus-codegen-notification-idle-id"));
+ if (idle_id > 0)
+ {
+ emit_notifications_in_idle (object);
+ g_source_remove (idle_id);
+ }
+}
+
+static void
+on_notify (GObject *object,
+ GParamSpec *pspec,
+ gpointer user_data)
+{
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *value;
+ const gchar *property_name;
+ guint prop_id;
+
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ property_name = lookup_property_name_from_property_gname (pspec->name);
+ if (property_name == NULL)
+ goto out;
+ prop_id = lookup_property_id_from_property_name (property_name);
+
+ value = NULL;
+ switch (prop_id)
+ {
+ }
+
+ if (value != NULL && property_name != NULL)
+ {
+ queue_notification (object, property_name, g_variant_ref_sink (value));
+ }
+out:
+ ;
+}
+
+static void
+on_object_unregistered (GObject *object)
+{
+ gint idle_id;
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (object), "gdbus-codegen-notification-idle-id"));
+ if (idle_id > 0)
+ {
+ g_source_remove (idle_id);
+ }
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-path", NULL);
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-connection", NULL);
+ g_signal_handlers_disconnect_by_func (object, on_notify, NULL);
+}
+
+/**
+ * e_gdbus_cal_factory_register_object:
+ * @object: An instance of a #GObject<!-- -->-derived type implementing the #EGdbusCalFactory interface.
+ * @connection: A #GDBusConnection.
+ * @object_path: The object to register the object at.
+ * @error: Return location for error or %NULL.
+ *
+ * Registers @object at @object_path on @connection.
+ *
+ * See <xref linkend="EGdbusCalFactory.description"/>
+ * for how properties, methods and signals are handled.
+ *
+ * Returns: 0 if @error is set, otherwise a registration id (never 0) that can be used with g_dbus_connection_unregister_object().
+ */
+guint
+e_gdbus_cal_factory_register_object (EGdbusCalFactory *object,
+ GDBusConnection *connection,
+ const gchar *object_path,
+ GError **error)
+{
+ G_GNUC_UNUSED GVariant *value;
+ GHashTable *pvc;
+
+ pvc = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_variant_unref);
+
+ g_object_set_data_full (G_OBJECT (object), "gdbus-codegen-path", (gpointer) g_strdup (object_path), g_free);
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-connection", (gpointer) connection);
+ g_object_set_data_full (G_OBJECT (object), "gdbus-codegen-pvc", (gpointer) pvc, (GDestroyNotify) g_hash_table_unref);
+ g_signal_connect (object, "notify", G_CALLBACK (on_notify), NULL);
+ return g_dbus_connection_register_object (connection,
+ object_path,
+ &_e_gdbus_cal_factory_interface_info,
+ &e_gdbus_cal_factory_interface_vtable,
+ object,
+ (GDestroyNotify) on_object_unregistered,
+ error);
+}
+
+/**
+ * e_gdbus_cal_factory_interface_info:
+ *
+ * Gets interface description for the <literal>org.gnome.evolution.dataserver.calendar.CalFactory</literal> D-Bus interface.
+ *
+ * Returns: A #GDBusInterfaceInfo. Do not free, the object is statically allocated.
+ */
+const GDBusInterfaceInfo *
+e_gdbus_cal_factory_interface_info (void)
+{
+ return &_e_gdbus_cal_factory_interface_info;
+}
+
+
+/* ---------------------------------------------------------------------- */
+
+static void proxy_iface_init (EGdbusCalFactoryIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (EGdbusCalFactoryProxy, e_gdbus_cal_factory_proxy, G_TYPE_DBUS_PROXY,
+ G_IMPLEMENT_INTERFACE (E_GDBUS_TYPE_CAL_FACTORY, proxy_iface_init));
+
+static void
+e_gdbus_cal_factory_proxy_init (EGdbusCalFactoryProxy *proxy)
+{
+ g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy),
+ (GDBusInterfaceInfo *) &_e_gdbus_cal_factory_interface_info);
+}
+
+static void
+g_signal (GDBusProxy *proxy,
+ const gchar *sender_name,
+ const gchar *signal_name,
+ GVariant *parameters)
+{
+ guint signal_id;
+ signal_id = lookup_signal_id_from_signal_name (signal_name);
+ switch (signal_id)
+ {
+ }
+}
+
+static void
+e_gdbus_cal_factory_proxy_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED GVariant *cached;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+property_set_cb (GDBusProxy *proxy,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ const gchar *property_name = user_data;
+ GError *error;
+ GVariant *result;
+
+ error = NULL;
+ result = g_dbus_proxy_call_finish (proxy, res, &error);
+ if (result == NULL)
+ {
+ g_warning ("Error setting property `%s': %s", property_name, error->message);
+ g_error_free (error);
+ }
+ else
+ {
+ g_variant_unref (result);
+ }
+}
+
+static void
+e_gdbus_cal_factory_proxy_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GVariant *new_value;
+ const gchar *property_name;
+ new_value = NULL;
+ property_name = NULL;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+
+ if (new_value != NULL)
+ {
+ g_variant_ref_sink (new_value);
+ g_dbus_proxy_call (G_DBUS_PROXY (object),
+ "org.freedesktop.DBus.Properties.Set",
+ g_variant_new ("(ssv)",
+ "org.gnome.evolution.dataserver.calendar.CalFactory",
+ property_name,
+ new_value),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ (GAsyncReadyCallback) property_set_cb,
+ (gpointer) property_name);
+ g_variant_unref (new_value);
+ }
+
+}
+
+static void
+g_properties_changed (GDBusProxy *proxy,
+ GVariant *changed_properties,
+ const gchar* const *invalidated_properties)
+{
+ guint n;
+ const gchar *key;
+ GVariantIter *iter;
+ const gchar *gname;
+
+ g_variant_get (changed_properties, "a{sv}", &iter);
+ while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+ {
+ gname = lookup_property_gname_from_property_name (key);
+ if (gname != NULL)
+ g_object_notify (G_OBJECT (proxy), gname);
+ }
+
+ for (n = 0; invalidated_properties[n] != NULL; n++)
+ {
+ gname = lookup_property_gname_from_property_name (invalidated_properties[n]);
+ if (gname != NULL)
+ g_object_notify (G_OBJECT (proxy), gname);
+ }
+
+}
+
+static void
+e_gdbus_cal_factory_proxy_class_init (EGdbusCalFactoryProxyClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusProxyClass *proxy_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->get_property = e_gdbus_cal_factory_proxy_get_property;
+ gobject_class->set_property = e_gdbus_cal_factory_proxy_set_property;
+
+ proxy_class = G_DBUS_PROXY_CLASS (klass);
+ proxy_class->g_signal = g_signal;
+ proxy_class->g_properties_changed = g_properties_changed;
+
+}
+
+static void
+proxy_iface_init (EGdbusCalFactoryIface *iface)
+{
+}
+
+
+/**
+ * e_gdbus_cal_factory_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: Callback function to invoke when the proxy is ready.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like g_dbus_proxy_new() but returns a #EGdbusCalFactoryProxy.
+ *
+ * This is a failable asynchronous constructor - when the proxy is ready, callback will be invoked and you can use e_gdbus_cal_factory_proxy_new_finish() to get the result.
+ */
+void e_gdbus_cal_factory_proxy_new (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (E_GDBUS_TYPE_CAL_FACTORY_PROXY,
+ G_PRIORITY_DEFAULT,
+ cancellable,
+ callback,
+ user_data,
+ "g-flags", flags,
+ "g-name", name,
+ "g-connection", connection,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.calendar.CalFactory",
+ NULL);
+}
+
+/**
+ * e_gdbus_cal_factory_proxy_new_finish:
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to e_gdbus_cal_factory_proxy_new().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes creating a #EGdbusCalFactoryProxy.
+ *
+ * Returns: A #EGdbusCalFactoryProxy or %NULL if @error is set. Free with g_object_unref().
+ */
+EGdbusCalFactory *e_gdbus_cal_factory_proxy_new_finish (GAsyncResult *res,
+ GError **error)
+{
+ GObject *object;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ g_assert (source_object != NULL);
+ object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object),
+ res,
+ error);
+ g_object_unref (source_object);
+ if (object != NULL)
+ return E_GDBUS_CAL_FACTORY (object);
+ else
+ return NULL;
+}
+
+/**
+ * e_gdbus_cal_factory_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Like g_dbus_proxy_new_sync() but returns a #EGdbusCalFactoryProxy.
+ *
+ * This is a synchronous failable constructor. See e_gdbus_cal_factory_proxy_new() and e_gdbus_cal_factory_proxy_new_finish() for the asynchronous version.
+ *
+ * Returns: A #EGdbusCalFactoryProxy or %NULL if error is set. Free with g_object_unref().
+ */
+EGdbusCalFactory *e_gdbus_cal_factory_proxy_new_sync (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *initable;
+ initable = g_initable_new (E_GDBUS_TYPE_CAL_FACTORY_PROXY,
+ cancellable,
+ error,
+ "g-flags", flags,
+ "g-name", name,
+ "g-connection", connection,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.calendar.CalFactory",
+ NULL);
+ if (initable != NULL)
+ return E_GDBUS_CAL_FACTORY (initable);
+ else
+ return NULL;
+}
+
+
+/**
+ * e_gdbus_cal_factory_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: Callback function to invoke when the proxy is ready.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like g_dbus_proxy_new_for_bus() but returns a #EGdbusCalFactoryProxy.
+ *
+ * This is a failable asynchronous constructor - when the proxy is ready, callback will be invoked and you can use e_gdbus_cal_factory_proxy_new_for_bus_finish() to get the result.
+ */
+void e_gdbus_cal_factory_proxy_new_for_bus (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (E_GDBUS_TYPE_CAL_FACTORY_PROXY,
+ G_PRIORITY_DEFAULT,
+ cancellable,
+ callback,
+ user_data,
+ "g-flags", flags,
+ "g-name", name,
+ "g-bus-type", bus_type,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.calendar.CalFactory",
+ NULL);
+}
+
+/**
+ * e_gdbus_cal_factory_proxy_new_for_bus_finish:
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to e_gdbus_cal_factory_proxy_new_for_bus().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes creating a #EGdbusCalFactoryProxy.
+ *
+ * Returns: A #EGdbusCalFactoryProxy or %NULL if @error is set. Free with g_object_unref().
+ */
+EGdbusCalFactory *e_gdbus_cal_factory_proxy_new_for_bus_finish (GAsyncResult *res,
+ GError **error)
+{
+ GObject *object;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ g_assert (source_object != NULL);
+ object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object),
+ res,
+ error);
+ g_object_unref (source_object);
+ if (object != NULL)
+ return E_GDBUS_CAL_FACTORY (object);
+ else
+ return NULL;
+}
+
+/**
+ * e_gdbus_cal_factory_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Like g_dbus_proxy_new_for_bus_sync() but returns a #EGdbusCalFactoryProxy.
+ *
+ * This is a synchronous failable constructor. See e_gdbus_cal_factory_proxy_new_for_bus() and e_gdbus_cal_factory_proxy_new_for_bus_finish() for the asynchronous version.
+ *
+ * Returns: A #EGdbusCalFactoryProxy or %NULL if error is set. Free with g_object_unref().
+ */
+EGdbusCalFactory *e_gdbus_cal_factory_proxy_new_for_bus_sync (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *initable;
+ initable = g_initable_new (E_GDBUS_TYPE_CAL_FACTORY_PROXY,
+ cancellable,
+ error,
+ "g-flags", flags,
+ "g-name", name,
+ "g-bus-type", bus_type,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.calendar.CalFactory",
+ NULL);
+ if (initable != NULL)
+ return E_GDBUS_CAL_FACTORY (initable);
+ else
+ return NULL;
+}
+
+
+/* ---------------------------------------------------------------------- */
+
+struct _EGdbusCalFactoryStubPrivate
+{
+ gint foo;
+};
+
+static void stub_iface_init (EGdbusCalFactoryIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (EGdbusCalFactoryStub, e_gdbus_cal_factory_stub, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (E_GDBUS_TYPE_CAL_FACTORY, stub_iface_init));
+
+static void
+e_gdbus_cal_factory_stub_finalize (GObject *object)
+{
+ G_GNUC_UNUSED EGdbusCalFactoryStub *stub = (EGdbusCalFactoryStub *) object;
+ if (G_OBJECT_CLASS (e_gdbus_cal_factory_stub_parent_class)->finalize != NULL)
+ G_OBJECT_CLASS (e_gdbus_cal_factory_stub_parent_class)->finalize (object);
+}
+
+static void
+e_gdbus_cal_factory_stub_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED static gchar **strv_of_len_zero = {NULL};
+ G_GNUC_UNUSED EGdbusCalFactoryStub *stub = (EGdbusCalFactoryStub *) object;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+e_gdbus_cal_factory_stub_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED EGdbusCalFactoryStub *stub = (EGdbusCalFactoryStub *) object;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+e_gdbus_cal_factory_stub_init (EGdbusCalFactoryStub *stub)
+{
+ stub->priv = G_TYPE_INSTANCE_GET_PRIVATE (stub, E_GDBUS_TYPE_CAL_FACTORY_STUB, EGdbusCalFactoryStubPrivate);
+}
+
+static void
+e_gdbus_cal_factory_stub_class_init (EGdbusCalFactoryStubClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = e_gdbus_cal_factory_stub_finalize;
+ gobject_class->get_property = e_gdbus_cal_factory_stub_get_property;
+ gobject_class->set_property = e_gdbus_cal_factory_stub_set_property;
+ g_type_class_add_private (klass, sizeof (EGdbusCalFactoryStubPrivate));
+}
+
+static void
+stub_iface_init (EGdbusCalFactoryIface *iface)
+{
+}
+
+/**
+ * e_gdbus_cal_factory_stub_new:
+ *
+ * Creates a new stub object that can be exported via e_gdbus_cal_factory_register_object().
+ *
+ * Returns: A #EGdbusCalFactoryStub instance. Free with g_object_unref().
+ */
+EGdbusCalFactory *
+e_gdbus_cal_factory_stub_new (void)
+{
+ return E_GDBUS_CAL_FACTORY (g_object_new (E_GDBUS_TYPE_CAL_FACTORY_STUB, NULL));
+}
diff --git a/calendar/libegdbus/e-gdbus-egdbuscalfactory.h b/calendar/libegdbus/e-gdbus-egdbuscalfactory.h
new file mode 100644
index 0000000..5649ef7
--- /dev/null
+++ b/calendar/libegdbus/e-gdbus-egdbuscalfactory.h
@@ -0,0 +1,212 @@
+/* File: e-gdbus-egdbuscalfactory.h
+ *
+ * GType name: EGdbusCalFactory
+ * D-Bus name: org.gnome.evolution.dataserver.calendar.CalFactory
+ *
+ * Generated by GDBus Binding Tool 0.1. DO NOT EDIT.
+ */
+
+#ifndef __E_GDBUS_E_GDBUS_CAL_FACTORY_H__
+#define __E_GDBUS_E_GDBUS_CAL_FACTORY_H__
+
+#include <gio/gio.h>
+
+#include "e-gdbus-typemappers.h"
+G_BEGIN_DECLS
+
+#define E_GDBUS_TYPE_CAL_FACTORY (e_gdbus_cal_factory_get_type ())
+#define E_GDBUS_CAL_FACTORY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), E_GDBUS_TYPE_CAL_FACTORY, EGdbusCalFactory))
+#define E_GDBUS_IS_CAL_FACTORY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_GDBUS_TYPE_CAL_FACTORY))
+#define E_GDBUS_CAL_FACTORY_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), E_GDBUS_TYPE_CAL_FACTORY, EGdbusCalFactoryIface))
+
+/**
+ * EGdbusCalFactory:
+ *
+ * Opaque type representing a proxy or an exported object.
+ */
+typedef struct _EGdbusCalFactory EGdbusCalFactory; /* Dummy typedef */
+/**
+ * EGdbusCalFactoryIface:
+ * @parent_iface: The parent interface.
+ * @handle_get_cal: Handler for the #EGdbusCalFactory::handle-get-cal signal.
+ *
+ * Virtual table.
+ */
+typedef struct _EGdbusCalFactoryIface EGdbusCalFactoryIface;
+
+GType e_gdbus_cal_factory_get_type (void) G_GNUC_CONST;
+
+/* ---------------------------------------------------------------------- */
+
+typedef struct _EGdbusCalFactoryProxy EGdbusCalFactoryProxy;
+typedef struct _EGdbusCalFactoryProxyClass EGdbusCalFactoryProxyClass;
+
+/**
+ * EGdbusCalFactoryProxyPrivate:
+ *
+ * The #EGdbusCalFactoryProxyPrivate structure contains only private data.
+ */
+typedef struct _EGdbusCalFactoryProxyPrivate EGdbusCalFactoryProxyPrivate;
+
+/**
+ * EGdbusCalFactoryProxy:
+ *
+ * The #EGdbusCalFactoryProxy structure contains only private data and
+ * should only be accessed using the provided API.
+ */
+struct _EGdbusCalFactoryProxy
+{
+ GDBusProxy parent_instance;
+ EGdbusCalFactoryProxyPrivate *priv;
+};
+
+/**
+ * EGdbusCalFactoryProxyClass:
+ *
+ * Class structure for #EGdbusCalFactoryProxy.
+ */
+struct _EGdbusCalFactoryProxyClass
+{
+ GDBusProxyClass parent_class;
+};
+
+#define E_GDBUS_TYPE_CAL_FACTORY_PROXY (e_gdbus_cal_factory_proxy_get_type ())
+GType e_gdbus_cal_factory_proxy_get_type (void) G_GNUC_CONST;
+
+void e_gdbus_cal_factory_proxy_new (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+EGdbusCalFactory *e_gdbus_cal_factory_proxy_new_finish (GAsyncResult *res,
+ GError **error);
+EGdbusCalFactory *e_gdbus_cal_factory_proxy_new_sync (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+void e_gdbus_cal_factory_proxy_new_for_bus (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+EGdbusCalFactory *e_gdbus_cal_factory_proxy_new_for_bus_finish (GAsyncResult *res,
+ GError **error);
+EGdbusCalFactory *e_gdbus_cal_factory_proxy_new_for_bus_sync (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+/* ---------------------------------------------------------------------- */
+
+typedef struct _EGdbusCalFactoryStub EGdbusCalFactoryStub;
+typedef struct _EGdbusCalFactoryStubClass EGdbusCalFactoryStubClass;
+
+/**
+ * EGdbusCalFactoryStubPrivate:
+ *
+ * The #EGdbusCalFactoryStubPrivate structure contains only private data.
+ */
+typedef struct _EGdbusCalFactoryStubPrivate EGdbusCalFactoryStubPrivate;
+
+/**
+ * EGdbusCalFactoryStub:
+ *
+ * The #EGdbusCalFactoryStub structure contains only private data and
+ * should only be accessed using the provided API.
+ */
+struct _EGdbusCalFactoryStub
+{
+ GObject parent_instance;
+ EGdbusCalFactoryStubPrivate *priv;
+};
+
+/**
+ * EGdbusCalFactoryStubClass:
+ *
+ * Class structure for #EGdbusCalFactoryStub.
+ */
+struct _EGdbusCalFactoryStubClass
+{
+ GObjectClass parent_class;
+};
+
+#define E_GDBUS_TYPE_CAL_FACTORY_STUB (e_gdbus_cal_factory_stub_get_type ())
+GType e_gdbus_cal_factory_stub_get_type (void) G_GNUC_CONST;
+
+EGdbusCalFactory *e_gdbus_cal_factory_stub_new (void);
+
+
+guint e_gdbus_cal_factory_register_object (EGdbusCalFactory *object,
+ GDBusConnection *connection,
+ const gchar *object_path,
+ GError **error);
+
+void e_gdbus_cal_factory_drain_notify (EGdbusCalFactory *object);
+
+
+const GDBusInterfaceInfo *e_gdbus_cal_factory_interface_info (void) G_GNUC_CONST;
+
+struct _EGdbusCalFactoryIface
+{
+ GTypeInterface parent_iface;
+
+ /* Signal handlers for receiving D-Bus signals: */
+
+ /* Signal handlers for handling D-Bus method calls: */
+ gboolean (*handle_get_cal) (
+ EGdbusCalFactory *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *in_source,
+ guint in_type);
+};
+
+/* C Bindings for properties */
+
+
+/* D-Bus Methods */
+void e_gdbus_cal_factory_call_get_cal (
+ EGdbusCalFactory *proxy,
+ const gchar *in_source,
+ guint in_type,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_factory_call_get_cal_finish (
+ EGdbusCalFactory *proxy,
+ gchar **out_path,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_factory_call_get_cal_sync (
+ EGdbusCalFactory *proxy,
+ const gchar *in_source,
+ guint in_type,
+ gchar **out_path,
+ GCancellable *cancellable,
+ GError **error);
+
+
+
+/* D-Bus Methods Completion Helpers */
+void e_gdbus_cal_factory_complete_get_cal (
+ EGdbusCalFactory *object,
+ GDBusMethodInvocation *invocation,
+ const gchar *out_path);
+
+
+
+/* D-Bus Signal Emission Helpers */
+
+G_END_DECLS
+
+#endif /* __E_GDBUS_E_GDBUS_CAL_FACTORY_H__ */
diff --git a/calendar/libegdbus/e-gdbus-egdbuscalview.c b/calendar/libegdbus/e-gdbus-egdbuscalview.c
new file mode 100644
index 0000000..c725c42
--- /dev/null
+++ b/calendar/libegdbus/e-gdbus-egdbuscalview.c
@@ -0,0 +1,1890 @@
+/* File: e-gdbus-egdbuscalview.c
+ *
+ * GType name: EGdbusCalView
+ * D-Bus name: org.gnome.evolution.dataserver.calendar.CalView
+ *
+ * Generated by GDBus Binding Tool 0.1. DO NOT EDIT.
+ */
+
+/**
+ * SECTION:e-gdbus-egdbuscalview
+ * @title: EGdbusCalView
+ * @short_description: Wraps the org.gnome.evolution.dataserver.calendar.CalView D-Bus interface
+ * @include: gio/gio.h
+ *
+ * The abstract #EGdbusCalView interface type wraps the <literal>org.gnome.evolution.dataserver.calendar.CalView</literal> D-Bus interface. Two concrete implementations of this type are included: #EGdbusCalViewProxy and #EGdbusCalViewStub.
+ *
+ * The generated proxy type #EGdbusCalViewProxy is typically used with the generated constructors e_gdbus_cal_view_proxy_new(), e_gdbus_cal_view_proxy_new_sync() and e_gdbus_cal_view_proxy_new_for_bus(), e_gdbus_cal_view_proxy_new_for_bus_sync().
+ *
+ * The generated stub type #EGdbusCalViewStub takes care of handling properties, method invocations and signal emissions. Simply use e_gdbus_cal_view_stub_new(), set some properties and connect to any of the handle-* signals to handle method invocations. Finally use e_gdbus_cal_view_register_object() to export the object on a #GDBusConnection.
+ * |[
+ * /<!-- -->* You can also use g_object_new() with E_GDBUS_TYPE_CAL_VIEW_STUB
+ * * to set properties at construction time.
+ * *<!-- -->/
+ * object = e_gdbus_cal_view_stub_new ();
+ * e_gdbus_cal_view_set_<property_name> (object, <value_for_property>);
+ * [...]
+ *
+ * g_signal_connect (object,
+ * "handle-<method-name>",
+ * G_CALLBACK (on_handle_<method_name>),
+ * some_user_data);
+ * [...]
+ *
+ * error = NULL;
+ * id = e_gdbus_cal_view_register_object (object,
+ * connection,
+ * "/path/of/object",
+ * &error);
+ * ]|
+ *
+ * You don't <emphasis>have</emphasis> to use the generated stub type to export
+ * objects. Any type implementing the #EGdbusCalView interface may be used with
+ * e_gdbus_cal_view_register_object().
+ *
+ * Once exported, you can make the exported object emit D-Bus signals by simply
+ * emitting the corresponding GType signals. For better type-safety, you can use,
+ * the provided e_gdbus_cal_view_emit_*() helpers.
+ *
+ * For property changes, #GObject::notify signal emissions on exported objects
+ * will be intercepted and queued. In an idle handler, the queued notifications
+ * are processed and a single <literal>PropertiesChanged</literal> signal (on the
+ * <literal>org.freedesktop.DBus.Properties</literal> interface) will be emitted
+ * for all the properties that changed (possibly containing several properties).
+ * Use e_gdbus_cal_view_drain_notify() to drain the queue immediately.
+ */
+
+#include "e-gdbus-egdbuscalview.h"
+#include "e-gdbus-typemappers.h"
+#include "e-gdbus-marshallers.h"
+
+typedef EGdbusCalViewIface EGdbusCalViewInterface;
+G_DEFINE_INTERFACE (EGdbusCalView, e_gdbus_cal_view, G_TYPE_OBJECT);
+
+
+enum
+{
+ _0_SIGNAL,
+ __OBJECTS_ADDED_SIGNAL,
+ __OBJECTS_MODIFIED_SIGNAL,
+ __OBJECTS_REMOVED_SIGNAL,
+ __PROGRESS_SIGNAL,
+ __DONE_SIGNAL,
+ __START_METHOD,
+ __STOP_METHOD,
+ __LAST_SIGNAL
+};
+
+static guint signals[__LAST_SIGNAL] = {0};
+
+
+enum
+{
+ PROP_0,
+};
+
+/* ------------------------------------------------------------------------- */
+
+/* Various lookup tables */
+
+static GHashTable *_method_name_to_id = NULL;
+static GHashTable *_signal_name_to_id = NULL;
+static GHashTable *_property_name_to_id = NULL;
+static GHashTable *_property_gname_to_name = NULL;
+static GHashTable *_property_name_to_gname = NULL;
+
+
+static guint
+lookup_method_id_from_method_name (const gchar *method_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_method_name_to_id, method_name));
+}
+
+static guint
+lookup_signal_id_from_signal_name (const gchar *signal_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_signal_name_to_id, signal_name));
+}
+
+static guint
+lookup_property_id_from_property_name (const gchar *property_name)
+{
+ return GPOINTER_TO_UINT (g_hash_table_lookup (_property_name_to_id, property_name));
+}
+
+static const gchar *
+lookup_property_name_from_property_gname (const gchar *property_gname)
+{
+ return g_hash_table_lookup (_property_gname_to_name, property_gname);
+}
+
+static const gchar *
+lookup_property_gname_from_property_name (const gchar *property_name)
+{
+ return g_hash_table_lookup (_property_name_to_gname, property_name);
+}
+
+/* ------------------------------------------------------------------------- */
+static gboolean
+signal_emission_hook_cb_objects_added (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ GObject *object;
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *params;
+ GVariant *item;
+ GVariantBuilder *builder;
+
+ if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT))
+ goto out;
+ object = g_value_get_object (¶m_values[0]);
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE);
+ g_assert_cmpint (n_param_values - 1, ==, 1);
+ param_values++;
+ item = g_variant_new ("^as", g_value_get_boxed (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ params = g_variant_builder_end (builder);
+ g_variant_builder_unref (builder);
+
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.gnome.evolution.dataserver.calendar.CalView",
+ "ObjectsAdded",
+ params,
+ NULL);
+out:
+ return TRUE;
+}
+
+static gboolean
+signal_emission_hook_cb_objects_modified (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ GObject *object;
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *params;
+ GVariant *item;
+ GVariantBuilder *builder;
+
+ if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT))
+ goto out;
+ object = g_value_get_object (¶m_values[0]);
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE);
+ g_assert_cmpint (n_param_values - 1, ==, 1);
+ param_values++;
+ item = g_variant_new ("^as", g_value_get_boxed (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ params = g_variant_builder_end (builder);
+ g_variant_builder_unref (builder);
+
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.gnome.evolution.dataserver.calendar.CalView",
+ "ObjectsModified",
+ params,
+ NULL);
+out:
+ return TRUE;
+}
+
+static gboolean
+signal_emission_hook_cb_objects_removed (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ GObject *object;
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *params;
+ GVariant *item;
+ GVariantBuilder *builder;
+
+ if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT))
+ goto out;
+ object = g_value_get_object (¶m_values[0]);
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE);
+ g_assert_cmpint (n_param_values - 1, ==, 1);
+ param_values++;
+ item = g_variant_new ("^as", g_value_get_boxed (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ params = g_variant_builder_end (builder);
+ g_variant_builder_unref (builder);
+
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.gnome.evolution.dataserver.calendar.CalView",
+ "ObjectsRemoved",
+ params,
+ NULL);
+out:
+ return TRUE;
+}
+
+static gboolean
+signal_emission_hook_cb_progress (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ GObject *object;
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *params;
+ GVariant *item;
+ GVariantBuilder *builder;
+
+ if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT))
+ goto out;
+ object = g_value_get_object (¶m_values[0]);
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE);
+ g_assert_cmpint (n_param_values - 1, ==, 2);
+ param_values++;
+ item = g_variant_new ("s", g_value_get_string (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ item = g_variant_new_uint32 (g_value_get_uint (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ params = g_variant_builder_end (builder);
+ g_variant_builder_unref (builder);
+
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.gnome.evolution.dataserver.calendar.CalView",
+ "Progress",
+ params,
+ NULL);
+out:
+ return TRUE;
+}
+
+static gboolean
+signal_emission_hook_cb_done (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer user_data)
+{
+ GObject *object;
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *params;
+ GVariant *item;
+ GVariantBuilder *builder;
+
+ if (n_param_values < 1 || !G_VALUE_HOLDS (¶m_values[0], G_TYPE_OBJECT))
+ goto out;
+ object = g_value_get_object (¶m_values[0]);
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_TUPLE);
+ g_assert_cmpint (n_param_values - 1, ==, 2);
+ param_values++;
+ item = g_variant_new_uint32 (g_value_get_uint (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ item = g_variant_new ("s", g_value_get_string (param_values));
+ g_variant_builder_add_value (builder, item);
+ param_values++;
+ params = g_variant_builder_end (builder);
+ g_variant_builder_unref (builder);
+
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.gnome.evolution.dataserver.calendar.CalView",
+ "Done",
+ params,
+ NULL);
+out:
+ return TRUE;
+}
+
+static void
+e_gdbus_cal_view_default_init (EGdbusCalViewIface *iface)
+{
+
+ /* Build lookup structures */
+ _method_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _signal_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_name_to_id = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_gname_to_name = g_hash_table_new (g_str_hash, g_str_equal);
+ _property_name_to_gname = g_hash_table_new (g_str_hash, g_str_equal);
+ g_hash_table_insert (_method_name_to_id, (gpointer) "start", GUINT_TO_POINTER (__START_METHOD));
+ g_hash_table_insert (_method_name_to_id, (gpointer) "stop", GUINT_TO_POINTER (__STOP_METHOD));
+ g_hash_table_insert (_signal_name_to_id, (gpointer) "ObjectsAdded", GUINT_TO_POINTER (__OBJECTS_ADDED_SIGNAL));
+ g_hash_table_insert (_signal_name_to_id, (gpointer) "ObjectsModified", GUINT_TO_POINTER (__OBJECTS_MODIFIED_SIGNAL));
+ g_hash_table_insert (_signal_name_to_id, (gpointer) "ObjectsRemoved", GUINT_TO_POINTER (__OBJECTS_REMOVED_SIGNAL));
+ g_hash_table_insert (_signal_name_to_id, (gpointer) "Progress", GUINT_TO_POINTER (__PROGRESS_SIGNAL));
+ g_hash_table_insert (_signal_name_to_id, (gpointer) "Done", GUINT_TO_POINTER (__DONE_SIGNAL));
+
+ /* GObject signals definitions for D-Bus signals: */
+ /**
+ * EGdbusCalView::objects-added:
+ * @object: The object emitting the signal.
+ * @objects: Parameter.
+ *
+ * Represents the D-Bus signal <literal>ObjectsAdded</literal>.
+ *
+ * On proxies, connect to this signal to get notified whenever the remote
+ * object instances emits the signal (similar to how the
+ * #GDBusProxy::g-signal works). The signal is emitted in the
+ * thread-default main loop of the thread that the proxy was created in.
+ *
+ * On exported objects, emitting this signal causes the actual D-Bus signal to be emitted. You can use e_gdbus_cal_view_emit_objects_added() to do this.
+ */ signals[__OBJECTS_ADDED_SIGNAL] =
+ g_signal_new ("objects-added",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalViewIface, objects_added),
+ NULL,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_VOID__BOXED,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_STRV);
+ g_signal_add_emission_hook (signals[__OBJECTS_ADDED_SIGNAL],
+ 0,
+ signal_emission_hook_cb_objects_added,
+ (gpointer) "ObjectsAdded",
+ NULL);
+
+ /**
+ * EGdbusCalView::objects-modified:
+ * @object: The object emitting the signal.
+ * @objects: Parameter.
+ *
+ * Represents the D-Bus signal <literal>ObjectsModified</literal>.
+ *
+ * On proxies, connect to this signal to get notified whenever the remote
+ * object instances emits the signal (similar to how the
+ * #GDBusProxy::g-signal works). The signal is emitted in the
+ * thread-default main loop of the thread that the proxy was created in.
+ *
+ * On exported objects, emitting this signal causes the actual D-Bus signal to be emitted. You can use e_gdbus_cal_view_emit_objects_modified() to do this.
+ */ signals[__OBJECTS_MODIFIED_SIGNAL] =
+ g_signal_new ("objects-modified",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalViewIface, objects_modified),
+ NULL,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_VOID__BOXED,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_STRV);
+ g_signal_add_emission_hook (signals[__OBJECTS_MODIFIED_SIGNAL],
+ 0,
+ signal_emission_hook_cb_objects_modified,
+ (gpointer) "ObjectsModified",
+ NULL);
+
+ /**
+ * EGdbusCalView::objects-removed:
+ * @object: The object emitting the signal.
+ * @ids: Parameter.
+ *
+ * Represents the D-Bus signal <literal>ObjectsRemoved</literal>.
+ *
+ * On proxies, connect to this signal to get notified whenever the remote
+ * object instances emits the signal (similar to how the
+ * #GDBusProxy::g-signal works). The signal is emitted in the
+ * thread-default main loop of the thread that the proxy was created in.
+ *
+ * On exported objects, emitting this signal causes the actual D-Bus signal to be emitted. You can use e_gdbus_cal_view_emit_objects_removed() to do this.
+ */ signals[__OBJECTS_REMOVED_SIGNAL] =
+ g_signal_new ("objects-removed",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalViewIface, objects_removed),
+ NULL,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_VOID__BOXED,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_STRV);
+ g_signal_add_emission_hook (signals[__OBJECTS_REMOVED_SIGNAL],
+ 0,
+ signal_emission_hook_cb_objects_removed,
+ (gpointer) "ObjectsRemoved",
+ NULL);
+
+ /**
+ * EGdbusCalView::progress:
+ * @object: The object emitting the signal.
+ * @message: Parameter.
+ * @progress: Parameter.
+ *
+ * Represents the D-Bus signal <literal>Progress</literal>.
+ *
+ * On proxies, connect to this signal to get notified whenever the remote
+ * object instances emits the signal (similar to how the
+ * #GDBusProxy::g-signal works). The signal is emitted in the
+ * thread-default main loop of the thread that the proxy was created in.
+ *
+ * On exported objects, emitting this signal causes the actual D-Bus signal to be emitted. You can use e_gdbus_cal_view_emit_progress() to do this.
+ */ signals[__PROGRESS_SIGNAL] =
+ g_signal_new ("progress",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalViewIface, progress),
+ NULL,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_VOID__STRING_UINT,
+ G_TYPE_NONE,
+ 2,
+ G_TYPE_STRING,
+ G_TYPE_UINT);
+ g_signal_add_emission_hook (signals[__PROGRESS_SIGNAL],
+ 0,
+ signal_emission_hook_cb_progress,
+ (gpointer) "Progress",
+ NULL);
+
+ /**
+ * EGdbusCalView::done:
+ * @object: The object emitting the signal.
+ * @status: Parameter.
+ * @message: Parameter.
+ *
+ * Represents the D-Bus signal <literal>Done</literal>.
+ *
+ * On proxies, connect to this signal to get notified whenever the remote
+ * object instances emits the signal (similar to how the
+ * #GDBusProxy::g-signal works). The signal is emitted in the
+ * thread-default main loop of the thread that the proxy was created in.
+ *
+ * On exported objects, emitting this signal causes the actual D-Bus signal to be emitted. You can use e_gdbus_cal_view_emit_done() to do this.
+ */ signals[__DONE_SIGNAL] =
+ g_signal_new ("done",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalViewIface, done),
+ NULL,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_VOID__UINT_STRING,
+ G_TYPE_NONE,
+ 2,
+ G_TYPE_UINT,
+ G_TYPE_STRING);
+ g_signal_add_emission_hook (signals[__DONE_SIGNAL],
+ 0,
+ signal_emission_hook_cb_done,
+ (gpointer) "Done",
+ NULL);
+
+
+ /* GObject signals definitions for D-Bus methods: */
+ /**
+ * EGdbusCalView::handle-start:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>start</literal> D-Bus method on @object. Use e_gdbus_cal_view_complete_start() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_view_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__START_METHOD] =
+ g_signal_new ("handle-start",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalViewIface, handle_start),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+ /**
+ * EGdbusCalView::handle-stop:
+ * @object: The exported object emitting the signal.
+ * @invocation: A #GDBusMethodInvocation object that can be used to return a value or error.
+ *
+ * On exported objects, this signal is emitted when a remote process (identified by @invocation) invokes the <literal>stop</literal> D-Bus method on @object. Use e_gdbus_cal_view_complete_stop() to return a value or g_dbus_method_invocation_return_error() to return an error.
+ *
+ * The signal is emitted in the thread-default main loop of the thread that e_gdbus_cal_view_register_object() was called from.
+ *
+ * On proxies, this signal is never emitted.
+ *
+ * Returns: %TRUE if you want to handle the method call (will stop further handlers from being called), %FALSE otherwise.
+ */
+ signals[__STOP_METHOD] =
+ g_signal_new ("handle-stop",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (EGdbusCalViewIface, handle_stop),
+ g_signal_accumulator_true_handled,
+ NULL,
+ _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /* GObject property definitions for D-Bus properties: */
+}
+
+
+/* C Bindings for properties */
+
+/**
+ * e_gdbus_cal_view_call_start:
+ * @proxy: A #EGdbusCalView.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.CalView.start</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_view_call_start_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_view_call_start_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_view_call_start (
+ EGdbusCalView *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "start",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_view_call_start_finish:
+ * @proxy: A #EGdbusCalView.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_view_call_start().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.CalView.start</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_view_call_start_finish (
+ EGdbusCalView *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_view_call_start_sync:
+ * @proxy: A #EGdbusCalView.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.CalView.start</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_view_call_start() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_view_call_start_sync (
+ EGdbusCalView *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "start",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_view_call_stop:
+ * @proxy: A #EGdbusCalView.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't care about the result of the method invocation.
+ * @user_data: Data to pass to @callback.
+ *
+ * Invokes the <literal>org.gnome.evolution.dataserver.calendar.CalView.stop</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * callback will be invoked in the thread-default main loop of the
+ * thread you are calling this method from. You can then call
+ * e_gdbus_cal_view_call_stop_finish() to get the result of the operation.
+ *
+ * See e_gdbus_cal_view_call_stop_sync() for the synchronous version of this method.
+ */
+void e_gdbus_cal_view_call_stop (
+ EGdbusCalView *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVariant *_params;
+ _params = NULL;
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "stop",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * e_gdbus_cal_view_call_stop_finish:
+ * @proxy: A #EGdbusCalView.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to e_gdbus_cal_view_call_stop().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes invoking the <literal>org.gnome.evolution.dataserver.calendar.CalView.stop</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_view_call_stop_finish (
+ EGdbusCalView *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_result;
+ _result = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+/**
+ * e_gdbus_cal_view_call_stop_sync:
+ * @proxy: A #EGdbusCalView.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <literal>org.gnome.evolution.dataserver.calendar.CalView.stop</literal>
+ * D-Bus method on the remote object represented by @proxy.
+ *
+ * The calling thread is blocked until a reply is received. See
+ * e_gdbus_cal_view_call_stop() for the asynchronous version of this method.
+ *
+ * Returns: %TRUE if the call succeeded, %FALSE if @error is set.
+ */
+gboolean e_gdbus_cal_view_call_stop_sync (
+ EGdbusCalView *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean _ret = FALSE;
+ GVariant *_params;
+ GVariant *_result;
+ _params = NULL;
+ _result = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "stop",
+ _params,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_result == NULL)
+ goto _out;
+ g_variant_unref (_result);
+ _ret = TRUE;
+_out:
+ return _ret;
+}
+
+
+/**
+ * e_gdbus_cal_view_complete_start:
+ * @object: A #EGdbusCalView.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.CalView.start</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_view_complete_start (
+ EGdbusCalView *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_cal_view_complete_stop:
+ * @object: A #EGdbusCalView.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Completes handling the <literal>org.gnome.evolution.dataserver.calendar.CalView.stop</literal>
+ * D-Bus method invocation by returning a value.
+ *
+ * If you want to return an error, use g_dbus_method_invocation_return_error()
+ * or similar instead.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void e_gdbus_cal_view_complete_stop (
+ EGdbusCalView *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation, NULL);
+}
+
+
+/**
+ * e_gdbus_cal_view_emit_objects_added:
+ * @object: A #EGdbusCalView.
+ * @arg_objects: Signal parameter.
+ *
+ * Emits the <literal>org.gnome.evolution.dataserver.calendar.CalView.ObjectsAdded</literal>
+ * D-Bus signal.
+ */
+void e_gdbus_cal_view_emit_objects_added (
+ EGdbusCalView *object,
+ const gchar* const *arg_objects)
+{
+ g_signal_emit (object, signals[__OBJECTS_ADDED_SIGNAL], 0, arg_objects);
+}
+
+
+/**
+ * e_gdbus_cal_view_emit_objects_modified:
+ * @object: A #EGdbusCalView.
+ * @arg_objects: Signal parameter.
+ *
+ * Emits the <literal>org.gnome.evolution.dataserver.calendar.CalView.ObjectsModified</literal>
+ * D-Bus signal.
+ */
+void e_gdbus_cal_view_emit_objects_modified (
+ EGdbusCalView *object,
+ const gchar* const *arg_objects)
+{
+ g_signal_emit (object, signals[__OBJECTS_MODIFIED_SIGNAL], 0, arg_objects);
+}
+
+
+/**
+ * e_gdbus_cal_view_emit_objects_removed:
+ * @object: A #EGdbusCalView.
+ * @arg_ids: Signal parameter.
+ *
+ * Emits the <literal>org.gnome.evolution.dataserver.calendar.CalView.ObjectsRemoved</literal>
+ * D-Bus signal.
+ */
+void e_gdbus_cal_view_emit_objects_removed (
+ EGdbusCalView *object,
+ const gchar* const *arg_ids)
+{
+ g_signal_emit (object, signals[__OBJECTS_REMOVED_SIGNAL], 0, arg_ids);
+}
+
+
+/**
+ * e_gdbus_cal_view_emit_progress:
+ * @object: A #EGdbusCalView.
+ * @arg_message: Signal parameter.
+ * @arg_progress: Signal parameter.
+ *
+ * Emits the <literal>org.gnome.evolution.dataserver.calendar.CalView.Progress</literal>
+ * D-Bus signal.
+ */
+void e_gdbus_cal_view_emit_progress (
+ EGdbusCalView *object,
+ const gchar *arg_message,
+ guint arg_progress)
+{
+ g_signal_emit (object, signals[__PROGRESS_SIGNAL], 0, arg_message, arg_progress);
+}
+
+
+/**
+ * e_gdbus_cal_view_emit_done:
+ * @object: A #EGdbusCalView.
+ * @arg_status: Signal parameter.
+ * @arg_message: Signal parameter.
+ *
+ * Emits the <literal>org.gnome.evolution.dataserver.calendar.CalView.Done</literal>
+ * D-Bus signal.
+ */
+void e_gdbus_cal_view_emit_done (
+ EGdbusCalView *object,
+ guint arg_status,
+ const gchar *arg_message)
+{
+ g_signal_emit (object, signals[__DONE_SIGNAL], 0, arg_status, arg_message);
+}
+
+
+static const GDBusArgInfo e_gdbus_cal_view_signal_ObjectsAdded_objects =
+{
+ -1,
+ (gchar *) "objects",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_view_signal_ObjectsAdded_arg_pointers[] =
+{
+ &e_gdbus_cal_view_signal_ObjectsAdded_objects,
+ NULL
+};
+
+static const GDBusSignalInfo e_gdbus_cal_view_signal_ObjectsAdded =
+{
+ -1,
+ (gchar *) "ObjectsAdded",
+ (GDBusArgInfo **) &e_gdbus_cal_view_signal_ObjectsAdded_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_view_signal_ObjectsModified_objects =
+{
+ -1,
+ (gchar *) "objects",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_view_signal_ObjectsModified_arg_pointers[] =
+{
+ &e_gdbus_cal_view_signal_ObjectsModified_objects,
+ NULL
+};
+
+static const GDBusSignalInfo e_gdbus_cal_view_signal_ObjectsModified =
+{
+ -1,
+ (gchar *) "ObjectsModified",
+ (GDBusArgInfo **) &e_gdbus_cal_view_signal_ObjectsModified_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_view_signal_ObjectsRemoved_ids =
+{
+ -1,
+ (gchar *) "ids",
+ (gchar *) "as",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_view_signal_ObjectsRemoved_arg_pointers[] =
+{
+ &e_gdbus_cal_view_signal_ObjectsRemoved_ids,
+ NULL
+};
+
+static const GDBusSignalInfo e_gdbus_cal_view_signal_ObjectsRemoved =
+{
+ -1,
+ (gchar *) "ObjectsRemoved",
+ (GDBusArgInfo **) &e_gdbus_cal_view_signal_ObjectsRemoved_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_view_signal_Progress_message =
+{
+ -1,
+ (gchar *) "message",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_cal_view_signal_Progress_progress =
+{
+ -1,
+ (gchar *) "progress",
+ (gchar *) "u",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_view_signal_Progress_arg_pointers[] =
+{
+ &e_gdbus_cal_view_signal_Progress_message,
+ &e_gdbus_cal_view_signal_Progress_progress,
+ NULL
+};
+
+static const GDBusSignalInfo e_gdbus_cal_view_signal_Progress =
+{
+ -1,
+ (gchar *) "Progress",
+ (GDBusArgInfo **) &e_gdbus_cal_view_signal_Progress_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusArgInfo e_gdbus_cal_view_signal_Done_status =
+{
+ -1,
+ (gchar *) "status",
+ (gchar *) "u",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo e_gdbus_cal_view_signal_Done_message =
+{
+ -1,
+ (gchar *) "message",
+ (gchar *) "s",
+ (GDBusAnnotationInfo **) NULL,
+};
+static const GDBusArgInfo * const e_gdbus_cal_view_signal_Done_arg_pointers[] =
+{
+ &e_gdbus_cal_view_signal_Done_status,
+ &e_gdbus_cal_view_signal_Done_message,
+ NULL
+};
+
+static const GDBusSignalInfo e_gdbus_cal_view_signal_Done =
+{
+ -1,
+ (gchar *) "Done",
+ (GDBusArgInfo **) &e_gdbus_cal_view_signal_Done_arg_pointers,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusSignalInfo * const e_gdbus_cal_view_signal_info_pointers[] =
+{
+ &e_gdbus_cal_view_signal_ObjectsAdded,
+ &e_gdbus_cal_view_signal_ObjectsModified,
+ &e_gdbus_cal_view_signal_ObjectsRemoved,
+ &e_gdbus_cal_view_signal_Progress,
+ &e_gdbus_cal_view_signal_Done,
+ NULL
+};
+
+static const GDBusMethodInfo e_gdbus_cal_view_method_start =
+{
+ -1,
+ (gchar *) "start",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusMethodInfo e_gdbus_cal_view_method_stop =
+{
+ -1,
+ (gchar *) "stop",
+ (GDBusArgInfo **) NULL,
+ (GDBusArgInfo **) NULL,
+ (GDBusAnnotationInfo **) NULL,
+};
+
+static const GDBusMethodInfo * const e_gdbus_cal_view_method_info_pointers[] =
+{
+ &e_gdbus_cal_view_method_start,
+ &e_gdbus_cal_view_method_stop,
+ NULL
+};
+
+static const GDBusInterfaceInfo _e_gdbus_cal_view_interface_info =
+{
+ -1,
+ (gchar *) "org.gnome.evolution.dataserver.calendar.CalView",
+ (GDBusMethodInfo **) &e_gdbus_cal_view_method_info_pointers,
+ (GDBusSignalInfo **) &e_gdbus_cal_view_signal_info_pointers,
+ (GDBusPropertyInfo **) NULL,
+};
+
+static void
+handle_method_call (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *method_name,
+ GVariant *parameters,
+ GDBusMethodInvocation *invocation,
+ gpointer user_data)
+{
+ guint method_id;
+ method_id = lookup_method_id_from_method_name (method_name);
+ switch (method_id)
+ {
+ case __START_METHOD:
+ {
+ EGdbusCalView *object = E_GDBUS_CAL_VIEW (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ case __STOP_METHOD:
+ {
+ EGdbusCalView *object = E_GDBUS_CAL_VIEW (user_data);
+ gboolean handled;
+ g_signal_emit (object,
+ signals[method_id],
+ 0, invocation, &handled);
+ if (!handled)
+ goto not_implemented;
+ }
+ break;
+
+ default:
+not_implemented:
+ g_dbus_method_invocation_return_error (invocation,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "Method `%s' is not implemented",
+ method_name);
+ break;
+ }
+};
+
+static GVariant *
+get_property (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *property_name,
+ GError **error,
+ gpointer user_data)
+{
+ GVariant *ret;
+ guint prop_id;
+ prop_id = lookup_property_id_from_property_name (property_name);
+ ret = NULL;
+ switch (prop_id)
+ {
+ default:
+ g_set_error (error,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "This implementation does not support property `%s'",
+ property_name);
+ break;
+ }
+
+ return ret;
+};
+
+static gboolean
+set_property (GDBusConnection *connection,
+ const gchar *sender,
+ const gchar *object_path,
+ const gchar *interface_name,
+ const gchar *property_name,
+ GVariant *value,
+ GError **error,
+ gpointer user_data)
+{
+ gboolean ret;
+ guint prop_id;
+ prop_id = lookup_property_id_from_property_name (property_name);
+ ret = TRUE;
+ switch (prop_id)
+ {
+ default:
+ g_set_error (error,
+ G_DBUS_ERROR,
+ G_DBUS_ERROR_NOT_SUPPORTED,
+ "This implementation does not support property `%s'",
+ property_name);
+ ret = FALSE;
+ break;
+ }
+
+ return ret;
+};
+
+static const GDBusInterfaceVTable e_gdbus_cal_view_interface_vtable =
+{
+ handle_method_call,
+ get_property,
+ set_property,
+};
+
+static gboolean
+emit_notifications_in_idle (gpointer user_data)
+{
+ GObject *object = G_OBJECT (user_data);
+ GDBusConnection *connection;
+ const gchar *path;
+ GHashTable *notification_queue;
+ GHashTableIter iter;
+ const gchar *property_name;
+ GVariant *value;
+ GVariantBuilder *builder;
+ GVariantBuilder *invalidated_builder;
+ GHashTable *pvc;
+ gboolean has_changes;
+
+ notification_queue = g_object_get_data (object, "gdbus-codegen-notification-queue");
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ pvc = g_object_get_data (object, "gdbus-codegen-pvc");
+ g_assert (notification_queue != NULL && path != NULL && connection != NULL && pvc != NULL);
+
+ builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY);
+ invalidated_builder = g_variant_builder_new (G_VARIANT_TYPE ("as"));
+ g_hash_table_iter_init (&iter, notification_queue);
+ has_changes = FALSE;
+ while (g_hash_table_iter_next (&iter, (gpointer) &property_name, (gpointer) &value))
+ {
+ GVariant *cached_value;
+ cached_value = g_hash_table_lookup (pvc, property_name);
+ if (cached_value == NULL || !g_variant_equal (cached_value, value))
+ {
+ g_hash_table_insert (pvc, (gpointer) property_name, (gpointer) g_variant_ref (value));
+ g_variant_builder_add (builder, "{sv}", property_name, value);
+ has_changes = TRUE;
+ }
+ }
+
+ if (has_changes)
+ {
+ g_dbus_connection_emit_signal (connection,
+ NULL,
+ path,
+ "org.freedesktop.DBus.Properties",
+ "PropertiesChanged",
+ g_variant_new ("(sa{sv}as)",
+ "org.gnome.evolution.dataserver.calendar.CalView",
+ builder,
+ invalidated_builder),
+ NULL);
+ }
+ else
+ {
+ g_variant_builder_unref (builder);
+ g_variant_builder_unref (invalidated_builder);
+ }
+
+ g_hash_table_remove_all (notification_queue);
+ g_object_set_data (object, "gdbus-codegen-notification-idle-id", GUINT_TO_POINTER (0));
+ return FALSE;
+}
+
+static void
+queue_notification (GObject *object,
+ const gchar *property_name,
+ GVariant *value)
+{
+ GHashTable *notification_queue;
+ guint idle_id;
+ notification_queue = g_object_get_data (object, "gdbus-codegen-notification-queue");
+ if (notification_queue == NULL)
+ {
+ notification_queue = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_variant_unref);
+ g_object_set_data_full (object, "gdbus-codegen-notification-queue", notification_queue, (GDestroyNotify) g_hash_table_unref);
+ }
+ g_hash_table_insert (notification_queue, (gpointer) property_name, (gpointer) value); /* adopts value */
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (object, "gdbus-codegen-notification-idle-id"));
+ if (idle_id == 0)
+ {
+ GSource *idle_source;
+ idle_source = g_idle_source_new ();
+ g_source_set_priority (idle_source, G_PRIORITY_DEFAULT);
+ g_source_set_callback (idle_source,
+ emit_notifications_in_idle,
+ g_object_ref (object),
+ (GDestroyNotify) g_object_unref);
+ idle_id = g_source_attach (idle_source, g_main_context_get_thread_default ());
+ g_source_unref (idle_source);
+ g_object_set_data (object, "gdbus-codegen-notification-idle-id", GUINT_TO_POINTER (idle_id));
+ }
+}
+
+/**
+ * e_gdbus_cal_view_drain_notify:
+ * @object: A #EGdbusCalView that is exported.
+ *
+ * If @object has queued notifications, empty the queue forcing
+ * the <literal>PropertiesChanged</literal> signal to be emitted.
+ * See <xref linkend="EGdbusCalView.description"/> for more background information.
+ */
+void
+e_gdbus_cal_view_drain_notify (EGdbusCalView *object)
+{
+ gint idle_id;
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (object), "gdbus-codegen-notification-idle-id"));
+ if (idle_id > 0)
+ {
+ emit_notifications_in_idle (object);
+ g_source_remove (idle_id);
+ }
+}
+
+static void
+on_notify (GObject *object,
+ GParamSpec *pspec,
+ gpointer user_data)
+{
+ GDBusConnection *connection;
+ const gchar *path;
+ GVariant *value;
+ const gchar *property_name;
+ guint prop_id;
+
+ path = g_object_get_data (object, "gdbus-codegen-path");
+ connection = g_object_get_data (object, "gdbus-codegen-connection");
+ if (connection == NULL || path == NULL)
+ goto out;
+
+ property_name = lookup_property_name_from_property_gname (pspec->name);
+ if (property_name == NULL)
+ goto out;
+ prop_id = lookup_property_id_from_property_name (property_name);
+
+ value = NULL;
+ switch (prop_id)
+ {
+ }
+
+ if (value != NULL && property_name != NULL)
+ {
+ queue_notification (object, property_name, g_variant_ref_sink (value));
+ }
+out:
+ ;
+}
+
+static void
+on_object_unregistered (GObject *object)
+{
+ gint idle_id;
+ idle_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (object), "gdbus-codegen-notification-idle-id"));
+ if (idle_id > 0)
+ {
+ g_source_remove (idle_id);
+ }
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-path", NULL);
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-connection", NULL);
+ g_signal_handlers_disconnect_by_func (object, on_notify, NULL);
+}
+
+/**
+ * e_gdbus_cal_view_register_object:
+ * @object: An instance of a #GObject<!-- -->-derived type implementing the #EGdbusCalView interface.
+ * @connection: A #GDBusConnection.
+ * @object_path: The object to register the object at.
+ * @error: Return location for error or %NULL.
+ *
+ * Registers @object at @object_path on @connection.
+ *
+ * See <xref linkend="EGdbusCalView.description"/>
+ * for how properties, methods and signals are handled.
+ *
+ * Returns: 0 if @error is set, otherwise a registration id (never 0) that can be used with g_dbus_connection_unregister_object().
+ */
+guint
+e_gdbus_cal_view_register_object (EGdbusCalView *object,
+ GDBusConnection *connection,
+ const gchar *object_path,
+ GError **error)
+{
+ G_GNUC_UNUSED GVariant *value;
+ GHashTable *pvc;
+
+ pvc = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_variant_unref);
+
+ g_object_set_data_full (G_OBJECT (object), "gdbus-codegen-path", (gpointer) g_strdup (object_path), g_free);
+ g_object_set_data (G_OBJECT (object), "gdbus-codegen-connection", (gpointer) connection);
+ g_object_set_data_full (G_OBJECT (object), "gdbus-codegen-pvc", (gpointer) pvc, (GDestroyNotify) g_hash_table_unref);
+ g_signal_connect (object, "notify", G_CALLBACK (on_notify), NULL);
+ return g_dbus_connection_register_object (connection,
+ object_path,
+ &_e_gdbus_cal_view_interface_info,
+ &e_gdbus_cal_view_interface_vtable,
+ object,
+ (GDestroyNotify) on_object_unregistered,
+ error);
+}
+
+/**
+ * e_gdbus_cal_view_interface_info:
+ *
+ * Gets interface description for the <literal>org.gnome.evolution.dataserver.calendar.CalView</literal> D-Bus interface.
+ *
+ * Returns: A #GDBusInterfaceInfo. Do not free, the object is statically allocated.
+ */
+const GDBusInterfaceInfo *
+e_gdbus_cal_view_interface_info (void)
+{
+ return &_e_gdbus_cal_view_interface_info;
+}
+
+
+/* ---------------------------------------------------------------------- */
+
+static void proxy_iface_init (EGdbusCalViewIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (EGdbusCalViewProxy, e_gdbus_cal_view_proxy, G_TYPE_DBUS_PROXY,
+ G_IMPLEMENT_INTERFACE (E_GDBUS_TYPE_CAL_VIEW, proxy_iface_init));
+
+static void
+e_gdbus_cal_view_proxy_init (EGdbusCalViewProxy *proxy)
+{
+ g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy),
+ (GDBusInterfaceInfo *) &_e_gdbus_cal_view_interface_info);
+}
+
+static void
+g_signal (GDBusProxy *proxy,
+ const gchar *sender_name,
+ const gchar *signal_name,
+ GVariant *parameters)
+{
+ guint signal_id;
+ signal_id = lookup_signal_id_from_signal_name (signal_name);
+ switch (signal_id)
+ {
+ case __OBJECTS_ADDED_SIGNAL:
+ {
+ const gchar* const *arg_objects;
+ g_variant_get (parameters,
+ "(^a&s)",
+ &arg_objects);
+ g_signal_emit (proxy,
+ signals[signal_id],
+ 0, arg_objects);
+ g_free ((gpointer) arg_objects);
+ }
+ break;
+
+ case __OBJECTS_MODIFIED_SIGNAL:
+ {
+ const gchar* const *arg_objects;
+ g_variant_get (parameters,
+ "(^a&s)",
+ &arg_objects);
+ g_signal_emit (proxy,
+ signals[signal_id],
+ 0, arg_objects);
+ g_free ((gpointer) arg_objects);
+ }
+ break;
+
+ case __OBJECTS_REMOVED_SIGNAL:
+ {
+ const gchar* const *arg_ids;
+ g_variant_get (parameters,
+ "(^a&s)",
+ &arg_ids);
+ g_signal_emit (proxy,
+ signals[signal_id],
+ 0, arg_ids);
+ g_free ((gpointer) arg_ids);
+ }
+ break;
+
+ case __PROGRESS_SIGNAL:
+ {
+ const gchar *arg_message;
+ guint arg_progress;
+ g_variant_get (parameters,
+ "(&su)",
+ &arg_message,
+ &arg_progress);
+ g_signal_emit (proxy,
+ signals[signal_id],
+ 0, arg_message, arg_progress);
+ }
+ break;
+
+ case __DONE_SIGNAL:
+ {
+ guint arg_status;
+ const gchar *arg_message;
+ g_variant_get (parameters,
+ "(u&s)",
+ &arg_status,
+ &arg_message);
+ g_signal_emit (proxy,
+ signals[signal_id],
+ 0, arg_status, arg_message);
+ }
+ break;
+
+ }
+}
+
+static void
+e_gdbus_cal_view_proxy_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED GVariant *cached;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+property_set_cb (GDBusProxy *proxy,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ const gchar *property_name = user_data;
+ GError *error;
+ GVariant *result;
+
+ error = NULL;
+ result = g_dbus_proxy_call_finish (proxy, res, &error);
+ if (result == NULL)
+ {
+ g_warning ("Error setting property `%s': %s", property_name, error->message);
+ g_error_free (error);
+ }
+ else
+ {
+ g_variant_unref (result);
+ }
+}
+
+static void
+e_gdbus_cal_view_proxy_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GVariant *new_value;
+ const gchar *property_name;
+ new_value = NULL;
+ property_name = NULL;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+
+ if (new_value != NULL)
+ {
+ g_variant_ref_sink (new_value);
+ g_dbus_proxy_call (G_DBUS_PROXY (object),
+ "org.freedesktop.DBus.Properties.Set",
+ g_variant_new ("(ssv)",
+ "org.gnome.evolution.dataserver.calendar.CalView",
+ property_name,
+ new_value),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ (GAsyncReadyCallback) property_set_cb,
+ (gpointer) property_name);
+ g_variant_unref (new_value);
+ }
+
+}
+
+static void
+g_properties_changed (GDBusProxy *proxy,
+ GVariant *changed_properties,
+ const gchar* const *invalidated_properties)
+{
+ guint n;
+ const gchar *key;
+ GVariantIter *iter;
+ const gchar *gname;
+
+ g_variant_get (changed_properties, "a{sv}", &iter);
+ while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+ {
+ gname = lookup_property_gname_from_property_name (key);
+ if (gname != NULL)
+ g_object_notify (G_OBJECT (proxy), gname);
+ }
+
+ for (n = 0; invalidated_properties[n] != NULL; n++)
+ {
+ gname = lookup_property_gname_from_property_name (invalidated_properties[n]);
+ if (gname != NULL)
+ g_object_notify (G_OBJECT (proxy), gname);
+ }
+
+}
+
+static void
+e_gdbus_cal_view_proxy_class_init (EGdbusCalViewProxyClass *klass)
+{
+ GObjectClass *gobject_class;
+ GDBusProxyClass *proxy_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->get_property = e_gdbus_cal_view_proxy_get_property;
+ gobject_class->set_property = e_gdbus_cal_view_proxy_set_property;
+
+ proxy_class = G_DBUS_PROXY_CLASS (klass);
+ proxy_class->g_signal = g_signal;
+ proxy_class->g_properties_changed = g_properties_changed;
+
+}
+
+static void
+proxy_iface_init (EGdbusCalViewIface *iface)
+{
+}
+
+
+/**
+ * e_gdbus_cal_view_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: Callback function to invoke when the proxy is ready.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like g_dbus_proxy_new() but returns a #EGdbusCalViewProxy.
+ *
+ * This is a failable asynchronous constructor - when the proxy is ready, callback will be invoked and you can use e_gdbus_cal_view_proxy_new_finish() to get the result.
+ */
+void e_gdbus_cal_view_proxy_new (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (E_GDBUS_TYPE_CAL_VIEW_PROXY,
+ G_PRIORITY_DEFAULT,
+ cancellable,
+ callback,
+ user_data,
+ "g-flags", flags,
+ "g-name", name,
+ "g-connection", connection,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.calendar.CalView",
+ NULL);
+}
+
+/**
+ * e_gdbus_cal_view_proxy_new_finish:
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to e_gdbus_cal_view_proxy_new().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes creating a #EGdbusCalViewProxy.
+ *
+ * Returns: A #EGdbusCalViewProxy or %NULL if @error is set. Free with g_object_unref().
+ */
+EGdbusCalView *e_gdbus_cal_view_proxy_new_finish (GAsyncResult *res,
+ GError **error)
+{
+ GObject *object;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ g_assert (source_object != NULL);
+ object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object),
+ res,
+ error);
+ g_object_unref (source_object);
+ if (object != NULL)
+ return E_GDBUS_CAL_VIEW (object);
+ else
+ return NULL;
+}
+
+/**
+ * e_gdbus_cal_view_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Like g_dbus_proxy_new_sync() but returns a #EGdbusCalViewProxy.
+ *
+ * This is a synchronous failable constructor. See e_gdbus_cal_view_proxy_new() and e_gdbus_cal_view_proxy_new_finish() for the asynchronous version.
+ *
+ * Returns: A #EGdbusCalViewProxy or %NULL if error is set. Free with g_object_unref().
+ */
+EGdbusCalView *e_gdbus_cal_view_proxy_new_sync (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *initable;
+ initable = g_initable_new (E_GDBUS_TYPE_CAL_VIEW_PROXY,
+ cancellable,
+ error,
+ "g-flags", flags,
+ "g-name", name,
+ "g-connection", connection,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.calendar.CalView",
+ NULL);
+ if (initable != NULL)
+ return E_GDBUS_CAL_VIEW (initable);
+ else
+ return NULL;
+}
+
+
+/**
+ * e_gdbus_cal_view_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: Callback function to invoke when the proxy is ready.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like g_dbus_proxy_new_for_bus() but returns a #EGdbusCalViewProxy.
+ *
+ * This is a failable asynchronous constructor - when the proxy is ready, callback will be invoked and you can use e_gdbus_cal_view_proxy_new_for_bus_finish() to get the result.
+ */
+void e_gdbus_cal_view_proxy_new_for_bus (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (E_GDBUS_TYPE_CAL_VIEW_PROXY,
+ G_PRIORITY_DEFAULT,
+ cancellable,
+ callback,
+ user_data,
+ "g-flags", flags,
+ "g-name", name,
+ "g-bus-type", bus_type,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.calendar.CalView",
+ NULL);
+}
+
+/**
+ * e_gdbus_cal_view_proxy_new_for_bus_finish:
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to e_gdbus_cal_view_proxy_new_for_bus().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes creating a #EGdbusCalViewProxy.
+ *
+ * Returns: A #EGdbusCalViewProxy or %NULL if @error is set. Free with g_object_unref().
+ */
+EGdbusCalView *e_gdbus_cal_view_proxy_new_for_bus_finish (GAsyncResult *res,
+ GError **error)
+{
+ GObject *object;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ g_assert (source_object != NULL);
+ object = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object),
+ res,
+ error);
+ g_object_unref (source_object);
+ if (object != NULL)
+ return E_GDBUS_CAL_VIEW (object);
+ else
+ return NULL;
+}
+
+/**
+ * e_gdbus_cal_view_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags used when constructing the proxy.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Like g_dbus_proxy_new_for_bus_sync() but returns a #EGdbusCalViewProxy.
+ *
+ * This is a synchronous failable constructor. See e_gdbus_cal_view_proxy_new_for_bus() and e_gdbus_cal_view_proxy_new_for_bus_finish() for the asynchronous version.
+ *
+ * Returns: A #EGdbusCalViewProxy or %NULL if error is set. Free with g_object_unref().
+ */
+EGdbusCalView *e_gdbus_cal_view_proxy_new_for_bus_sync (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *initable;
+ initable = g_initable_new (E_GDBUS_TYPE_CAL_VIEW_PROXY,
+ cancellable,
+ error,
+ "g-flags", flags,
+ "g-name", name,
+ "g-bus-type", bus_type,
+ "g-object-path", object_path,
+ "g-interface-name", "org.gnome.evolution.dataserver.calendar.CalView",
+ NULL);
+ if (initable != NULL)
+ return E_GDBUS_CAL_VIEW (initable);
+ else
+ return NULL;
+}
+
+
+/* ---------------------------------------------------------------------- */
+
+struct _EGdbusCalViewStubPrivate
+{
+ gint foo;
+};
+
+static void stub_iface_init (EGdbusCalViewIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (EGdbusCalViewStub, e_gdbus_cal_view_stub, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (E_GDBUS_TYPE_CAL_VIEW, stub_iface_init));
+
+static void
+e_gdbus_cal_view_stub_finalize (GObject *object)
+{
+ G_GNUC_UNUSED EGdbusCalViewStub *stub = (EGdbusCalViewStub *) object;
+ if (G_OBJECT_CLASS (e_gdbus_cal_view_stub_parent_class)->finalize != NULL)
+ G_OBJECT_CLASS (e_gdbus_cal_view_stub_parent_class)->finalize (object);
+}
+
+static void
+e_gdbus_cal_view_stub_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED static gchar **strv_of_len_zero = {NULL};
+ G_GNUC_UNUSED EGdbusCalViewStub *stub = (EGdbusCalViewStub *) object;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+e_gdbus_cal_view_stub_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ G_GNUC_UNUSED EGdbusCalViewStub *stub = (EGdbusCalViewStub *) object;
+ switch (prop_id)
+ {
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+e_gdbus_cal_view_stub_init (EGdbusCalViewStub *stub)
+{
+ stub->priv = G_TYPE_INSTANCE_GET_PRIVATE (stub, E_GDBUS_TYPE_CAL_VIEW_STUB, EGdbusCalViewStubPrivate);
+}
+
+static void
+e_gdbus_cal_view_stub_class_init (EGdbusCalViewStubClass *klass)
+{
+ GObjectClass *gobject_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = e_gdbus_cal_view_stub_finalize;
+ gobject_class->get_property = e_gdbus_cal_view_stub_get_property;
+ gobject_class->set_property = e_gdbus_cal_view_stub_set_property;
+ g_type_class_add_private (klass, sizeof (EGdbusCalViewStubPrivate));
+}
+
+static void
+stub_iface_init (EGdbusCalViewIface *iface)
+{
+}
+
+/**
+ * e_gdbus_cal_view_stub_new:
+ *
+ * Creates a new stub object that can be exported via e_gdbus_cal_view_register_object().
+ *
+ * Returns: A #EGdbusCalViewStub instance. Free with g_object_unref().
+ */
+EGdbusCalView *
+e_gdbus_cal_view_stub_new (void)
+{
+ return E_GDBUS_CAL_VIEW (g_object_new (E_GDBUS_TYPE_CAL_VIEW_STUB, NULL));
+}
diff --git a/calendar/libegdbus/e-gdbus-egdbuscalview.h b/calendar/libegdbus/e-gdbus-egdbuscalview.h
new file mode 100644
index 0000000..2af1be1
--- /dev/null
+++ b/calendar/libegdbus/e-gdbus-egdbuscalview.h
@@ -0,0 +1,278 @@
+/* File: e-gdbus-egdbuscalview.h
+ *
+ * GType name: EGdbusCalView
+ * D-Bus name: org.gnome.evolution.dataserver.calendar.CalView
+ *
+ * Generated by GDBus Binding Tool 0.1. DO NOT EDIT.
+ */
+
+#ifndef __E_GDBUS_E_GDBUS_CAL_VIEW_H__
+#define __E_GDBUS_E_GDBUS_CAL_VIEW_H__
+
+#include <gio/gio.h>
+
+#include "e-gdbus-typemappers.h"
+G_BEGIN_DECLS
+
+#define E_GDBUS_TYPE_CAL_VIEW (e_gdbus_cal_view_get_type ())
+#define E_GDBUS_CAL_VIEW(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), E_GDBUS_TYPE_CAL_VIEW, EGdbusCalView))
+#define E_GDBUS_IS_CAL_VIEW(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_GDBUS_TYPE_CAL_VIEW))
+#define E_GDBUS_CAL_VIEW_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), E_GDBUS_TYPE_CAL_VIEW, EGdbusCalViewIface))
+
+/**
+ * EGdbusCalView:
+ *
+ * Opaque type representing a proxy or an exported object.
+ */
+typedef struct _EGdbusCalView EGdbusCalView; /* Dummy typedef */
+/**
+ * EGdbusCalViewIface:
+ * @parent_iface: The parent interface.
+ * @objects_added: Handler for the #EGdbusCalView::objects-added signal.
+ * @objects_modified: Handler for the #EGdbusCalView::objects-modified signal.
+ * @objects_removed: Handler for the #EGdbusCalView::objects-removed signal.
+ * @progress: Handler for the #EGdbusCalView::progress signal.
+ * @done: Handler for the #EGdbusCalView::done signal.
+ * @handle_start: Handler for the #EGdbusCalView::handle-start signal.
+ * @handle_stop: Handler for the #EGdbusCalView::handle-stop signal.
+ *
+ * Virtual table.
+ */
+typedef struct _EGdbusCalViewIface EGdbusCalViewIface;
+
+GType e_gdbus_cal_view_get_type (void) G_GNUC_CONST;
+
+/* ---------------------------------------------------------------------- */
+
+typedef struct _EGdbusCalViewProxy EGdbusCalViewProxy;
+typedef struct _EGdbusCalViewProxyClass EGdbusCalViewProxyClass;
+
+/**
+ * EGdbusCalViewProxyPrivate:
+ *
+ * The #EGdbusCalViewProxyPrivate structure contains only private data.
+ */
+typedef struct _EGdbusCalViewProxyPrivate EGdbusCalViewProxyPrivate;
+
+/**
+ * EGdbusCalViewProxy:
+ *
+ * The #EGdbusCalViewProxy structure contains only private data and
+ * should only be accessed using the provided API.
+ */
+struct _EGdbusCalViewProxy
+{
+ GDBusProxy parent_instance;
+ EGdbusCalViewProxyPrivate *priv;
+};
+
+/**
+ * EGdbusCalViewProxyClass:
+ *
+ * Class structure for #EGdbusCalViewProxy.
+ */
+struct _EGdbusCalViewProxyClass
+{
+ GDBusProxyClass parent_class;
+};
+
+#define E_GDBUS_TYPE_CAL_VIEW_PROXY (e_gdbus_cal_view_proxy_get_type ())
+GType e_gdbus_cal_view_proxy_get_type (void) G_GNUC_CONST;
+
+void e_gdbus_cal_view_proxy_new (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+EGdbusCalView *e_gdbus_cal_view_proxy_new_finish (GAsyncResult *res,
+ GError **error);
+EGdbusCalView *e_gdbus_cal_view_proxy_new_sync (GDBusConnection *connection,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+void e_gdbus_cal_view_proxy_new_for_bus (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+EGdbusCalView *e_gdbus_cal_view_proxy_new_for_bus_finish (GAsyncResult *res,
+ GError **error);
+EGdbusCalView *e_gdbus_cal_view_proxy_new_for_bus_sync (GBusType bus_type,
+ GDBusProxyFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error);
+
+/* ---------------------------------------------------------------------- */
+
+typedef struct _EGdbusCalViewStub EGdbusCalViewStub;
+typedef struct _EGdbusCalViewStubClass EGdbusCalViewStubClass;
+
+/**
+ * EGdbusCalViewStubPrivate:
+ *
+ * The #EGdbusCalViewStubPrivate structure contains only private data.
+ */
+typedef struct _EGdbusCalViewStubPrivate EGdbusCalViewStubPrivate;
+
+/**
+ * EGdbusCalViewStub:
+ *
+ * The #EGdbusCalViewStub structure contains only private data and
+ * should only be accessed using the provided API.
+ */
+struct _EGdbusCalViewStub
+{
+ GObject parent_instance;
+ EGdbusCalViewStubPrivate *priv;
+};
+
+/**
+ * EGdbusCalViewStubClass:
+ *
+ * Class structure for #EGdbusCalViewStub.
+ */
+struct _EGdbusCalViewStubClass
+{
+ GObjectClass parent_class;
+};
+
+#define E_GDBUS_TYPE_CAL_VIEW_STUB (e_gdbus_cal_view_stub_get_type ())
+GType e_gdbus_cal_view_stub_get_type (void) G_GNUC_CONST;
+
+EGdbusCalView *e_gdbus_cal_view_stub_new (void);
+
+
+guint e_gdbus_cal_view_register_object (EGdbusCalView *object,
+ GDBusConnection *connection,
+ const gchar *object_path,
+ GError **error);
+
+void e_gdbus_cal_view_drain_notify (EGdbusCalView *object);
+
+
+const GDBusInterfaceInfo *e_gdbus_cal_view_interface_info (void) G_GNUC_CONST;
+
+struct _EGdbusCalViewIface
+{
+ GTypeInterface parent_iface;
+
+ /* Signal handlers for receiving D-Bus signals: */
+ void (*objects_added) (
+ EGdbusCalView *object,
+ const gchar* const *arg_objects);
+ void (*objects_modified) (
+ EGdbusCalView *object,
+ const gchar* const *arg_objects);
+ void (*objects_removed) (
+ EGdbusCalView *object,
+ const gchar* const *arg_ids);
+ void (*progress) (
+ EGdbusCalView *object,
+ const gchar *arg_message,
+ guint arg_progress);
+ void (*done) (
+ EGdbusCalView *object,
+ guint arg_status,
+ const gchar *arg_message);
+
+ /* Signal handlers for handling D-Bus method calls: */
+ gboolean (*handle_start) (
+ EGdbusCalView *object,
+ GDBusMethodInvocation *invocation);
+ gboolean (*handle_stop) (
+ EGdbusCalView *object,
+ GDBusMethodInvocation *invocation);
+};
+
+/* C Bindings for properties */
+
+
+/* D-Bus Methods */
+void e_gdbus_cal_view_call_start (
+ EGdbusCalView *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_view_call_start_finish (
+ EGdbusCalView *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_view_call_start_sync (
+ EGdbusCalView *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+
+void e_gdbus_cal_view_call_stop (
+ EGdbusCalView *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean e_gdbus_cal_view_call_stop_finish (
+ EGdbusCalView *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean e_gdbus_cal_view_call_stop_sync (
+ EGdbusCalView *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
+
+
+/* D-Bus Methods Completion Helpers */
+void e_gdbus_cal_view_complete_start (
+ EGdbusCalView *object,
+ GDBusMethodInvocation *invocation);
+
+
+void e_gdbus_cal_view_complete_stop (
+ EGdbusCalView *object,
+ GDBusMethodInvocation *invocation);
+
+
+
+/* D-Bus Signal Emission Helpers */
+void e_gdbus_cal_view_emit_objects_added (
+ EGdbusCalView *object,
+ const gchar* const *arg_objects);
+
+
+void e_gdbus_cal_view_emit_objects_modified (
+ EGdbusCalView *object,
+ const gchar* const *arg_objects);
+
+
+void e_gdbus_cal_view_emit_objects_removed (
+ EGdbusCalView *object,
+ const gchar* const *arg_ids);
+
+
+void e_gdbus_cal_view_emit_progress (
+ EGdbusCalView *object,
+ const gchar *arg_message,
+ guint arg_progress);
+
+
+void e_gdbus_cal_view_emit_done (
+ EGdbusCalView *object,
+ guint arg_status,
+ const gchar *arg_message);
+
+
+
+G_END_DECLS
+
+#endif /* __E_GDBUS_E_GDBUS_CAL_VIEW_H__ */
diff --git a/calendar/libegdbus/e-gdbus-marshallers.c b/calendar/libegdbus/e-gdbus-marshallers.c
new file mode 100644
index 0000000..3e2ccb0
--- /dev/null
+++ b/calendar/libegdbus/e-gdbus-marshallers.c
@@ -0,0 +1,476 @@
+#include "e-gdbus-marshallers.h"
+
+#include <glib-object.h>
+
+
+#ifdef G_ENABLE_DEBUG
+#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v)
+#define g_marshal_value_peek_char(v) g_value_get_char (v)
+#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v)
+#define g_marshal_value_peek_int(v) g_value_get_int (v)
+#define g_marshal_value_peek_uint(v) g_value_get_uint (v)
+#define g_marshal_value_peek_long(v) g_value_get_long (v)
+#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v)
+#define g_marshal_value_peek_int64(v) g_value_get_int64 (v)
+#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v)
+#define g_marshal_value_peek_enum(v) g_value_get_enum (v)
+#define g_marshal_value_peek_flags(v) g_value_get_flags (v)
+#define g_marshal_value_peek_float(v) g_value_get_float (v)
+#define g_marshal_value_peek_double(v) g_value_get_double (v)
+#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v)
+#define g_marshal_value_peek_param(v) g_value_get_param (v)
+#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v)
+#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v)
+#define g_marshal_value_peek_object(v) g_value_get_object (v)
+#define g_marshal_value_peek_variant(v) g_value_get_variant (v)
+#else /* !G_ENABLE_DEBUG */
+/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
+ * Do not access GValues directly in your code. Instead, use the
+ * g_value_get_*() functions
+ */
+#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int
+#define g_marshal_value_peek_char(v) (v)->data[0].v_int
+#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint
+#define g_marshal_value_peek_int(v) (v)->data[0].v_int
+#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint
+#define g_marshal_value_peek_long(v) (v)->data[0].v_long
+#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong
+#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64
+#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64
+#define g_marshal_value_peek_enum(v) (v)->data[0].v_long
+#define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong
+#define g_marshal_value_peek_float(v) (v)->data[0].v_float
+#define g_marshal_value_peek_double(v) (v)->data[0].v_double
+#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_variant(v) (v)->data[0].v_pointer
+#endif /* !G_ENABLE_DEBUG */
+
+
+/* BOOLEAN:OBJECT,STRING,UINT (e-gdbus-marshallers.list:1) */
+void
+_e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_UINT (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__OBJECT_STRING_UINT) (gpointer data1,
+ gpointer arg_1,
+ gpointer arg_2,
+ guint arg_3,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__OBJECT_STRING_UINT callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 4);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__OBJECT_STRING_UINT) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_object (param_values + 1),
+ g_marshal_value_peek_string (param_values + 2),
+ g_marshal_value_peek_uint (param_values + 3),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* VOID:BOXED (e-gdbus-marshallers.list:2) */
+
+/* VOID:STRING,UINT (e-gdbus-marshallers.list:3) */
+void
+_e_gdbus_gdbus_cclosure_marshaller_VOID__STRING_UINT (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef void (*GMarshalFunc_VOID__STRING_UINT) (gpointer data1,
+ gpointer arg_1,
+ guint arg_2,
+ gpointer data2);
+ register GMarshalFunc_VOID__STRING_UINT callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+
+ g_return_if_fail (n_param_values == 3);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_VOID__STRING_UINT) (marshal_data ? marshal_data : cc->callback);
+
+ callback (data1,
+ g_marshal_value_peek_string (param_values + 1),
+ g_marshal_value_peek_uint (param_values + 2),
+ data2);
+}
+
+/* VOID:UINT,STRING (e-gdbus-marshallers.list:4) */
+void
+_e_gdbus_gdbus_cclosure_marshaller_VOID__UINT_STRING (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef void (*GMarshalFunc_VOID__UINT_STRING) (gpointer data1,
+ guint arg_1,
+ gpointer arg_2,
+ gpointer data2);
+ register GMarshalFunc_VOID__UINT_STRING callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+
+ g_return_if_fail (n_param_values == 3);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_VOID__UINT_STRING) (marshal_data ? marshal_data : cc->callback);
+
+ callback (data1,
+ g_marshal_value_peek_uint (param_values + 1),
+ g_marshal_value_peek_string (param_values + 2),
+ data2);
+}
+
+/* BOOLEAN:OBJECT (e-gdbus-marshallers.list:5) */
+void
+_e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__OBJECT) (gpointer data1,
+ gpointer arg_1,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__OBJECT callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 2);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__OBJECT) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_object (param_values + 1),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* VOID:STRING (e-gdbus-marshallers.list:6) */
+
+/* VOID:BOOLEAN (e-gdbus-marshallers.list:7) */
+
+/* VOID:INT (e-gdbus-marshallers.list:8) */
+
+/* BOOLEAN:OBJECT,BOOLEAN,STRING,STRING (e-gdbus-marshallers.list:9) */
+void
+_e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_BOOLEAN_STRING_STRING (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__OBJECT_BOOLEAN_STRING_STRING) (gpointer data1,
+ gpointer arg_1,
+ gboolean arg_2,
+ gpointer arg_3,
+ gpointer arg_4,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__OBJECT_BOOLEAN_STRING_STRING callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 5);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__OBJECT_BOOLEAN_STRING_STRING) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_object (param_values + 1),
+ g_marshal_value_peek_boolean (param_values + 2),
+ g_marshal_value_peek_string (param_values + 3),
+ g_marshal_value_peek_string (param_values + 4),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* BOOLEAN:OBJECT,UINT (e-gdbus-marshallers.list:10) */
+void
+_e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_UINT (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__OBJECT_UINT) (gpointer data1,
+ gpointer arg_1,
+ guint arg_2,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__OBJECT_UINT callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 3);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__OBJECT_UINT) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_object (param_values + 1),
+ g_marshal_value_peek_uint (param_values + 2),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* BOOLEAN:OBJECT,STRING,STRING (e-gdbus-marshallers.list:11) */
+void
+_e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_STRING (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__OBJECT_STRING_STRING) (gpointer data1,
+ gpointer arg_1,
+ gpointer arg_2,
+ gpointer arg_3,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__OBJECT_STRING_STRING callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 4);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__OBJECT_STRING_STRING) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_object (param_values + 1),
+ g_marshal_value_peek_string (param_values + 2),
+ g_marshal_value_peek_string (param_values + 3),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* BOOLEAN:OBJECT,STRING (e-gdbus-marshallers.list:12) */
+void
+_e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__OBJECT_STRING) (gpointer data1,
+ gpointer arg_1,
+ gpointer arg_2,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__OBJECT_STRING callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 3);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__OBJECT_STRING) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_object (param_values + 1),
+ g_marshal_value_peek_string (param_values + 2),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* BOOLEAN:OBJECT,BOXED,UINT,UINT (e-gdbus-marshallers.list:13) */
+void
+_e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_BOXED_UINT_UINT (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__OBJECT_BOXED_UINT_UINT) (gpointer data1,
+ gpointer arg_1,
+ gpointer arg_2,
+ guint arg_3,
+ guint arg_4,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__OBJECT_BOXED_UINT_UINT callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 5);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__OBJECT_BOXED_UINT_UINT) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_object (param_values + 1),
+ g_marshal_value_peek_boxed (param_values + 2),
+ g_marshal_value_peek_uint (param_values + 3),
+ g_marshal_value_peek_uint (param_values + 4),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
+/* BOOLEAN:OBJECT,STRING,STRING,UINT (e-gdbus-marshallers.list:14) */
+void
+_e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_STRING_UINT (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef gboolean (*GMarshalFunc_BOOLEAN__OBJECT_STRING_STRING_UINT) (gpointer data1,
+ gpointer arg_1,
+ gpointer arg_2,
+ gpointer arg_3,
+ guint arg_4,
+ gpointer data2);
+ register GMarshalFunc_BOOLEAN__OBJECT_STRING_STRING_UINT callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gboolean v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 5);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_BOOLEAN__OBJECT_STRING_STRING_UINT) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_object (param_values + 1),
+ g_marshal_value_peek_string (param_values + 2),
+ g_marshal_value_peek_string (param_values + 3),
+ g_marshal_value_peek_uint (param_values + 4),
+ data2);
+
+ g_value_set_boolean (return_value, v_return);
+}
+
diff --git a/calendar/libegdbus/e-gdbus-marshallers.h b/calendar/libegdbus/e-gdbus-marshallers.h
new file mode 100644
index 0000000..1c1bc52
--- /dev/null
+++ b/calendar/libegdbus/e-gdbus-marshallers.h
@@ -0,0 +1,104 @@
+
+#ifndef ___e_gdbus_gdbus_cclosure_marshaller_MARSHAL_H__
+#define ___e_gdbus_gdbus_cclosure_marshaller_MARSHAL_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* BOOLEAN:OBJECT,STRING,UINT (e-gdbus-marshallers.list:1) */
+extern void _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_UINT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* VOID:BOXED (e-gdbus-marshallers.list:2) */
+#define _e_gdbus_gdbus_cclosure_marshaller_VOID__BOXED g_cclosure_marshal_VOID__BOXED
+
+/* VOID:STRING,UINT (e-gdbus-marshallers.list:3) */
+extern void _e_gdbus_gdbus_cclosure_marshaller_VOID__STRING_UINT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* VOID:UINT,STRING (e-gdbus-marshallers.list:4) */
+extern void _e_gdbus_gdbus_cclosure_marshaller_VOID__UINT_STRING (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* BOOLEAN:OBJECT (e-gdbus-marshallers.list:5) */
+extern void _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* VOID:STRING (e-gdbus-marshallers.list:6) */
+#define _e_gdbus_gdbus_cclosure_marshaller_VOID__STRING g_cclosure_marshal_VOID__STRING
+
+/* VOID:BOOLEAN (e-gdbus-marshallers.list:7) */
+#define _e_gdbus_gdbus_cclosure_marshaller_VOID__BOOLEAN g_cclosure_marshal_VOID__BOOLEAN
+
+/* VOID:INT (e-gdbus-marshallers.list:8) */
+#define _e_gdbus_gdbus_cclosure_marshaller_VOID__INT g_cclosure_marshal_VOID__INT
+
+/* BOOLEAN:OBJECT,BOOLEAN,STRING,STRING (e-gdbus-marshallers.list:9) */
+extern void _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_BOOLEAN_STRING_STRING (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* BOOLEAN:OBJECT,UINT (e-gdbus-marshallers.list:10) */
+extern void _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_UINT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* BOOLEAN:OBJECT,STRING,STRING (e-gdbus-marshallers.list:11) */
+extern void _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_STRING (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* BOOLEAN:OBJECT,STRING (e-gdbus-marshallers.list:12) */
+extern void _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* BOOLEAN:OBJECT,BOXED,UINT,UINT (e-gdbus-marshallers.list:13) */
+extern void _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_BOXED_UINT_UINT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* BOOLEAN:OBJECT,STRING,STRING,UINT (e-gdbus-marshallers.list:14) */
+extern void _e_gdbus_gdbus_cclosure_marshaller_BOOLEAN__OBJECT_STRING_STRING_UINT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+G_END_DECLS
+
+#endif /* ___e_gdbus_gdbus_cclosure_marshaller_MARSHAL_H__ */
+
diff --git a/calendar/libegdbus/e-gdbus-marshallers.list b/calendar/libegdbus/e-gdbus-marshallers.list
new file mode 100644
index 0000000..c133202
--- /dev/null
+++ b/calendar/libegdbus/e-gdbus-marshallers.list
@@ -0,0 +1,14 @@
+BOOLEAN:OBJECT,STRING,UINT
+VOID:BOXED
+VOID:STRING,UINT
+VOID:UINT,STRING
+BOOLEAN:OBJECT
+VOID:STRING
+VOID:BOOLEAN
+VOID:INT
+BOOLEAN:OBJECT,BOOLEAN,STRING,STRING
+BOOLEAN:OBJECT,UINT
+BOOLEAN:OBJECT,STRING,STRING
+BOOLEAN:OBJECT,STRING
+BOOLEAN:OBJECT,BOXED,UINT,UINT
+BOOLEAN:OBJECT,STRING,STRING,UINT
diff --git a/calendar/libegdbus/e-gdbus-typemappers.h b/calendar/libegdbus/e-gdbus-typemappers.h
new file mode 100644
index 0000000..d99ad9c
--- /dev/null
+++ b/calendar/libegdbus/e-gdbus-typemappers.h
@@ -0,0 +1,12 @@
+/* File: e-gdbus-typemappers.h
+ *
+ * Generated by GDBus Binding Tool 0.1. DO NOT EDIT.
+ */
+
+#ifndef __E_GDBUS_TYPE_MAPPERS_H__
+#define __E_GDBUS_TYPE_MAPPERS_H__
+
+#include <gio/gio.h>
+
+
+#endif /* __E_GDBUS_TYPE_MAPPERS_H__ */
diff --git a/calendar/tests/ecal/ecal-test-utils.c b/calendar/tests/ecal/ecal-test-utils.c
index b40c128..bae6a6e 100644
--- a/calendar/tests/ecal/ecal-test-utils.c
+++ b/calendar/tests/ecal/ecal-test-utils.c
@@ -69,7 +69,6 @@ ecal_test_utils_cal_new_temp (gchar **uri,
ECalSourceType type)
{
ECal *cal;
- GError *error = NULL;
gchar *file_template;
gchar *uri_result;
@@ -77,10 +76,9 @@ ecal_test_utils_cal_new_temp (gchar **uri,
"ecal-test-XXXXXX/", NULL);
g_mkstemp (file_template);
- uri_result = g_filename_to_uri (file_template, NULL, &error);
+ uri_result = g_strconcat ("local:", file_template, NULL);
if (!uri_result) {
- g_error ("failed to convert %s to an URI: %s", file_template,
- error->message);
+ g_error ("failed to convert %s to a 'local:' URI", file_template);
}
g_free (file_template);
diff --git a/camel/Makefile.am b/camel/Makefile.am
index 9a687ce..6c7e4fb 100644
--- a/camel/Makefile.am
+++ b/camel/Makefile.am
@@ -43,8 +43,7 @@ libcamel_provider_1_2_la_CPPFLAGS = \
-DE_DATA_SERVER_PREFIX=\"$(prefix)\" \
-DLOCALEDIR=\""$(localedir)"\" \
-DCAMEL_COMPILATION \
- $(CAMEL_CFLAGS) \
- $(DBUS_GLIB_CFLAGS)
+ $(CAMEL_CFLAGS)
libcamel_provider_1_2_la_SOURCES = \
camel-cipher-context.c \
@@ -144,8 +143,7 @@ libcamel_provider_1_2_la_LIBADD = \
libcamel-1.2.la \
$(CAMEL_LIBS) \
$(SOCKET_LIBS) \
- $(REGEX_LIBS) \
- $(DBUS_GLIB_LIBS)
+ $(REGEX_LIBS)
libcamel_1_2_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
diff --git a/camel/camel-sasl-gssapi.c b/camel/camel-sasl-gssapi.c
index d556300..f5a3202 100644
--- a/camel/camel-sasl-gssapi.c
+++ b/camel/camel-sasl-gssapi.c
@@ -62,9 +62,7 @@ extern gss_OID gss_nt_service_name;
#endif
#include <glib/gi18n-lib.h>
-
-#include <dbus/dbus.h>
-#include <dbus/dbus-glib-lowlevel.h>
+#include <gio/gio.h>
#include "camel-net-utils.h"
#include "camel-sasl-gssapi.h"
@@ -190,54 +188,52 @@ sasl_gssapi_finalize (GObject *object)
static gboolean
send_dbus_message (gchar *name)
{
- DBusMessage *message, *reply;
- DBusError dbus_error;
gint success = FALSE;
- DBusConnection *bus = NULL;
+ GError *error = NULL;
+ GDBusConnection *connection;
+ GDBusMessage *message, *reply;
+
+ connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
+ if (error) {
+ g_warning ("could not get system bus: %s\n", error->message);
+ g_error_free (error);
- dbus_error_init (&dbus_error);
- if (!(bus = dbus_bus_get (DBUS_BUS_SESSION, &dbus_error))) {
- g_warning ("could not get system bus: %s\n", dbus_error.message);
- dbus_error_free (&dbus_error);
return FALSE;
}
- dbus_error_free (&dbus_error);
-
- dbus_connection_setup_with_g_main (bus, NULL);
- dbus_connection_set_exit_on_disconnect (bus, FALSE);
+ g_dbus_connection_set_exit_on_close (connection, FALSE);
/* Create a new message on the DBUS_INTERFACE */
- if (!(message = dbus_message_new_method_call (DBUS_INTERFACE, DBUS_PATH, DBUS_INTERFACE, "acquireTgt"))) {
- g_object_unref (bus);
+ message = g_dbus_message_new_method_call (DBUS_INTERFACE, DBUS_PATH, DBUS_INTERFACE, "acquireTgt");
+ if (!message) {
+ g_object_unref (connection);
return FALSE;
}
+
/* Appends the data as an argument to the message */
- if (strchr(name, '\\'))
- name = strchr(name, '\\');
- dbus_message_append_args (message,
- DBUS_TYPE_STRING, &name,
- DBUS_TYPE_INVALID);
- dbus_error_init(&dbus_error);
+ if (strchr (name, '\\'))
+ name = strchr (name, '\\');
+ g_dbus_message_set_body (message, g_variant_new ("(s)", name));
/* Sends the message: Have a 300 sec wait timeout */
- reply = dbus_connection_send_with_reply_and_block (bus, message, 300 * 1000, &dbus_error);
-
- if (dbus_error_is_set(&dbus_error))
- g_warning ("%s: %s\n", dbus_error.name, dbus_error.message);
- dbus_error_free(&dbus_error);
-
- if (reply)
- {
- dbus_error_init(&dbus_error);
- dbus_message_get_args(reply, &dbus_error, DBUS_TYPE_BOOLEAN, &success, DBUS_TYPE_INVALID);
- dbus_error_free(&dbus_error);
- dbus_message_unref(reply);
+ reply = g_dbus_connection_send_message_with_reply_sync (connection, message, 300 * 1000, NULL, NULL, &error);
+
+ if (error) {
+ g_warning ("%s: %s\n", G_STRFUNC, error->message);
+ g_error_free (error);
+ }
+
+ if (reply) {
+ GVariant *body = g_dbus_message_get_body (reply);
+
+ success = body && g_variant_get_boolean (body);
+
+ g_object_unref (reply);
}
/* Free the message */
- dbus_message_unref (message);
- dbus_connection_unref (bus);
+ g_object_unref (message);
+ g_object_unref (connection);
return success;
}
diff --git a/configure.ac b/configure.ac
index bbfbfb5..788148c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -32,7 +32,7 @@ dnl Automake 1.11 - Silent Build Rules
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
dnl Required Package Versions
-m4_define([glib_minimum_version], [2.16.1])
+m4_define([glib_minimum_version], [2.25.11])
m4_define([gconf_minimum_version], [2.0.0]) dnl XXX Just a Guess
m4_define([libxml_minimum_version], [2.0.0]) dnl XXX Just a Guess
m4_define([libsoup_minimum_version], [2.3.0])
@@ -40,7 +40,6 @@ m4_define([libgdata_minimum_version], [0.6.3])
m4_define([gnome_keyring_minimum_version], [2.20.1])
m4_define([sqlite_minimum_version], [3.5])
m4_define([libical_minimum_version], [0.43])
-m4_define([dbus_glib_minimum_version], [0.6])
dnl **********************************
dnl Gtk-3 compatibility
@@ -1128,9 +1127,6 @@ else
msg_ldap="yes"
fi
-DBUS_GLIB_REQUIRED=dbus_glib_minimum_version
-AC_SUBST(DBUS_GLIB_REQUIRED)
-
dnl ******************************
dnl GObject marshalling
dnl ******************************
@@ -1146,18 +1142,6 @@ dnl ******************************
AC_DEFINE(ENABLE_THREADS,1,[Required])
-dnl ******************************
-dnl DBus stuff
-dnl ******************************
-PKG_CHECK_MODULES(DBUS_GLIB, dbus-glib-1 >= dbus_glib_minimum_version)
-AC_SUBST(DBUS_GLIB_CFLAGS)
-AC_SUBST(DBUS_GLIB_LIBS)
-
-AC_PATH_PROG(DBUS_BINDING_TOOL, dbus-binding-tool, [no])
-if test "x$DBUS_BINDING_TOOL" = "xno"; then
- AC_MSG_ERROR([You need dbus-binding-tools to build evolution-data-server])
-fi
-
dnl ***********************
dnl Gnome keyring support
dnl ***********************
@@ -1216,7 +1200,7 @@ AC_SUBST(E_BACKEND_LIBS)
dnl ******************************
dnl evolution-addressbook flags
dnl ******************************
-EVOLUTION_ADDRESSBOOK_DEPS="libxml-2.0 dbus-glib-1 gobject-2.0 gthread-2.0 gconf-2.0"
+EVOLUTION_ADDRESSBOOK_DEPS="libxml-2.0 gobject-2.0 gthread-2.0 gconf-2.0"
EVO_SET_COMPILE_FLAGS(EVOLUTION_ADDRESSBOOK, $EVOLUTION_ADDRESSBOOK_DEPS)
AC_SUBST(EVOLUTION_ADDRESSBOOK_CFLAGS)
@@ -1226,7 +1210,7 @@ dnl ******************************
dnl evolution-calendar flags
dnl ******************************
if test "x${enable_calendar}" = "xyes"; then
- EVOLUTION_CALENDAR_DEPS="libical >= libical_minimum_version libxml-2.0 dbus-glib-1 gio-2.0 gobject-2.0 gthread-2.0 gconf-2.0"
+ EVOLUTION_CALENDAR_DEPS="libical >= libical_minimum_version libxml-2.0 gio-2.0 gobject-2.0 gthread-2.0 gconf-2.0"
dnl *****
dnl libical.pc from libical-0.43 has a bug in it's CFlags.
@@ -1421,6 +1405,7 @@ addressbook/libebook/Makefile
addressbook/libebook/libebook.pc
addressbook/libedata-book/Makefile
addressbook/libedata-book/libedata-book.pc
+addressbook/libegdbus/Makefile
addressbook/backends/Makefile
addressbook/backends/file/Makefile
addressbook/backends/vcf/Makefile
@@ -1437,6 +1422,7 @@ calendar/libecal/Makefile
calendar/libecal/libecal.pc
calendar/libedata-cal/Makefile
calendar/libedata-cal/libedata-cal.pc
+calendar/libegdbus/Makefile
calendar/backends/Makefile
calendar/backends/caldav/Makefile
calendar/backends/file/Makefile
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]