From: José Dapena Paz Date: Tue, 9 Feb 2010 16:51:14 +0000 (+0100) Subject: Move asdbus stuff to src/hildon2, as it's hildon/maemo specific. X-Git-Tag: 3.2.12-5~2 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=87ea6dda57f8b8e19a048c90c670751d63e54fe6 Move asdbus stuff to src/hildon2, as it's hildon/maemo specific. --- diff --git a/src/dbus_api/Makefile.am b/src/dbus_api/Makefile.am index 3eb1f9f..be23501 100644 --- a/src/dbus_api/Makefile.am +++ b/src/dbus_api/Makefile.am @@ -51,11 +51,6 @@ libmodest_dbus_api_la_SOURCES= \ modest-dbus-callbacks.h modest-dbus-callbacks.c \ modest-dbus-api.h -if MODEST_BUILD_ASDBUS -libmodest_dbus_api_la_SOURCES+= \ - asdbus.h asdbus.c asdbus-bindings.h -endif - LDADD = \ $(LIBMODEST_DBUS_CLIENT_LIBS) $(MODEST_GSTUFF_LIBS) \ diff --git a/src/dbus_api/asdbus-bindings.h b/src/dbus_api/asdbus-bindings.h deleted file mode 100644 index 64f9aaf..0000000 --- a/src/dbus_api/asdbus-bindings.h +++ /dev/null @@ -1,80 +0,0 @@ -/* Generated by dbus-binding-tool; - - - - - - - - - - - -*/ - -#include -#include - -G_BEGIN_DECLS - -#ifndef DBUS_GLIB_CLIENT_WRAPPERS_com_nokia_asdbus -#define DBUS_GLIB_CLIENT_WRAPPERS_com_nokia_asdbus - -static -#ifdef G_HAVE_INLINE -inline -#endif -gboolean -com_nokia_asdbus_resolve_recipients (DBusGProxy *proxy, const char ** IN_names, GValueArray** OUT_reply, GError **error) -{ - return dbus_g_proxy_call (proxy, "resolveRecipients", error, - G_TYPE_STRV, IN_names, G_TYPE_INVALID, - dbus_g_type_get_struct ("GValueArray", - G_TYPE_INT, // status - dbus_g_type_get_collection ("GPtrArray", // responces - dbus_g_type_get_struct ("GValueArray", - G_TYPE_STRING, // to - G_TYPE_INT, // status - G_TYPE_INT, // num - dbus_g_type_get_collection ("GPtrArray", // recipients - dbus_g_type_get_struct ("GValueArray", - G_TYPE_INT, - G_TYPE_STRING, - G_TYPE_STRING, - G_TYPE_INVALID)), - G_TYPE_INVALID)), - G_TYPE_INVALID), - OUT_reply, - G_TYPE_INVALID); -} - -typedef void (*com_nokia_asdbus_resolve_recipients_reply) (DBusGProxy *proxy, GValueArray *OUT_reply, GError *error, gpointer userdata); - -static void -com_nokia_asdbus_resolve_recipients_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) -{ - DBusGAsyncData *data = (DBusGAsyncData*) user_data; - GError *error = NULL; - GValueArray* OUT_reply; - dbus_g_proxy_end_call (proxy, call, &error, dbus_g_type_get_struct ("GValueArray", G_TYPE_INT, dbus_g_type_get_collection ("GPtrArray", dbus_g_type_get_struct ("GValueArray", G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT, dbus_g_type_get_collection ("GPtrArray", dbus_g_type_get_struct ("GValueArray", G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID)), G_TYPE_INVALID)), G_TYPE_INVALID), &OUT_reply, G_TYPE_INVALID); - (*(com_nokia_asdbus_resolve_recipients_reply)data->cb) (proxy, OUT_reply, error, data->userdata); - return; -} - -static -#ifdef G_HAVE_INLINE -inline -#endif -DBusGProxyCall* -com_nokia_asdbus_resolve_recipients_async (DBusGProxy *proxy, const char ** IN_names, com_nokia_asdbus_resolve_recipients_reply callback, gpointer userdata) - -{ - DBusGAsyncData *stuff; - stuff = g_new (DBusGAsyncData, 1); - stuff->cb = G_CALLBACK (callback); - stuff->userdata = userdata; - return dbus_g_proxy_begin_call (proxy, "resolveRecipients", com_nokia_asdbus_resolve_recipients_async_callback, stuff, g_free, G_TYPE_STRV, IN_names, G_TYPE_INVALID); -} -#endif /* defined DBUS_GLIB_CLIENT_WRAPPERS_com_nokia_asdbus */ - -G_END_DECLS diff --git a/src/dbus_api/asdbus.c b/src/dbus_api/asdbus.c deleted file mode 100644 index 38aef5f..0000000 --- a/src/dbus_api/asdbus.c +++ /dev/null @@ -1,78 +0,0 @@ -#include "asdbus.h" -#include "asdbus-bindings.h" - -#include -#include - - -static -void recipient_iter (const GValue *value, gpointer user_data) -{ - AsDbusRecipient *recipient = g_new0 (AsDbusRecipient, 1); - g_return_if_fail (dbus_g_type_is_struct (G_VALUE_TYPE (value))); - g_return_if_fail (3 >= dbus_g_type_get_struct_size (G_VALUE_TYPE (value))); - g_return_if_fail (G_TYPE_STRING == dbus_g_type_get_struct_member_type (G_VALUE_TYPE (value), 1)); - g_return_if_fail (G_TYPE_STRING == dbus_g_type_get_struct_member_type (G_VALUE_TYPE (value), 2)); - g_return_if_fail (dbus_g_type_struct_get (value, - 1, &recipient->display_name, - 2, &recipient->email_address, - G_MAXUINT)); - *((GList **)user_data) = g_list_append (*((GList **)user_data), recipient); -} - - -static -void response_iter (const GValue *value, gpointer user_data) -{ - GValue recipients = {0,}; - g_return_if_fail (dbus_g_type_is_struct (G_VALUE_TYPE (value))); - g_return_if_fail (4 >= dbus_g_type_get_struct_size (G_VALUE_TYPE (value))); - g_return_if_fail (dbus_g_type_is_collection (dbus_g_type_get_struct_member_type (G_VALUE_TYPE (value), 3))); - g_return_if_fail (dbus_g_type_struct_get_member (value, 3, g_value_init (&recipients, dbus_g_type_get_struct_member_type (G_VALUE_TYPE (value), 3)))); - dbus_g_type_collection_value_iterate (&recipients, recipient_iter, user_data); -} - -GList * asdbus_resolve_recipients (const gchar *name) -{ - GList *result = NULL; - DBusGConnection *bus = NULL; - GError *error = NULL; - DBusGProxy *asdbus = NULL; - GValueArray* reply = NULL; - - - ///g_type_init (); - - const gchar *names[2]; - names[0] = name; - names[1] = NULL; - - bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error); - if (bus == NULL) { - /** FIXME: proper log */ - g_printerr ("Failed to open connection to bus: %s\n", error->message); - g_error_free (error); - goto CLEANUP; - } - - asdbus = dbus_g_proxy_new_for_name (bus, "com.nokia.asdbus", "/com/nokia/asdbus", "com.nokia.asdbus"); - - if (!com_nokia_asdbus_resolve_recipients (asdbus, names, &reply, &error)) { - g_printerr ("com_nokia_asdbus_many_args failed: %s\n", error->message); - g_error_free (error); - goto CLEANUP; - } - - if (!reply) goto CLEANUP; - if (2 != reply->n_values) goto CLEANUP; - if (G_TYPE_INT != G_VALUE_TYPE (&reply->values[0])) goto CLEANUP; - if (!dbus_g_type_is_collection (G_VALUE_TYPE (&reply->values[1]))) goto CLEANUP; - - dbus_g_type_collection_value_iterate (&reply->values[1], response_iter, &result); - -CLEANUP: - g_value_array_free (reply); - g_object_unref (asdbus); - - return result; -} diff --git a/src/dbus_api/asdbus.h b/src/dbus_api/asdbus.h deleted file mode 100644 index 588fbff..0000000 --- a/src/dbus_api/asdbus.h +++ /dev/null @@ -1,8 +0,0 @@ -#include - -typedef struct { - gchar *display_name; - gchar *email_address; -} AsDbusRecipient; - -GList * asdbus_resolve_recipients (const gchar *name); diff --git a/src/hildon2/Makefile.am b/src/hildon2/Makefile.am index 6dd61f2..7936212 100644 --- a/src/hildon2/Makefile.am +++ b/src/hildon2/Makefile.am @@ -103,9 +103,15 @@ if MODEST_USE_DUMMY_ADDRESS_BOOK # nothing else libmodest_ui_la_SOURCES += modest-address-book.c + +if MODEST_BUILD_ASDBUS +libmodest_ui_la_SOURCES+= \ + asdbus.h asdbus.c asdbus-bindings.h +endif endif + libmodest_ui_la_LIBADD = \ $(MODEST_GSTUFF_LIBS) \ $(MODEST_ABOOK_LIBS) \ diff --git a/src/hildon2/asdbus-bindings.h b/src/hildon2/asdbus-bindings.h new file mode 100644 index 0000000..64f9aaf --- /dev/null +++ b/src/hildon2/asdbus-bindings.h @@ -0,0 +1,80 @@ +/* Generated by dbus-binding-tool; + + + + + + + + + + + +*/ + +#include +#include + +G_BEGIN_DECLS + +#ifndef DBUS_GLIB_CLIENT_WRAPPERS_com_nokia_asdbus +#define DBUS_GLIB_CLIENT_WRAPPERS_com_nokia_asdbus + +static +#ifdef G_HAVE_INLINE +inline +#endif +gboolean +com_nokia_asdbus_resolve_recipients (DBusGProxy *proxy, const char ** IN_names, GValueArray** OUT_reply, GError **error) +{ + return dbus_g_proxy_call (proxy, "resolveRecipients", error, + G_TYPE_STRV, IN_names, G_TYPE_INVALID, + dbus_g_type_get_struct ("GValueArray", + G_TYPE_INT, // status + dbus_g_type_get_collection ("GPtrArray", // responces + dbus_g_type_get_struct ("GValueArray", + G_TYPE_STRING, // to + G_TYPE_INT, // status + G_TYPE_INT, // num + dbus_g_type_get_collection ("GPtrArray", // recipients + dbus_g_type_get_struct ("GValueArray", + G_TYPE_INT, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_INVALID)), + G_TYPE_INVALID)), + G_TYPE_INVALID), + OUT_reply, + G_TYPE_INVALID); +} + +typedef void (*com_nokia_asdbus_resolve_recipients_reply) (DBusGProxy *proxy, GValueArray *OUT_reply, GError *error, gpointer userdata); + +static void +com_nokia_asdbus_resolve_recipients_async_callback (DBusGProxy *proxy, DBusGProxyCall *call, void *user_data) +{ + DBusGAsyncData *data = (DBusGAsyncData*) user_data; + GError *error = NULL; + GValueArray* OUT_reply; + dbus_g_proxy_end_call (proxy, call, &error, dbus_g_type_get_struct ("GValueArray", G_TYPE_INT, dbus_g_type_get_collection ("GPtrArray", dbus_g_type_get_struct ("GValueArray", G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT, dbus_g_type_get_collection ("GPtrArray", dbus_g_type_get_struct ("GValueArray", G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID)), G_TYPE_INVALID)), G_TYPE_INVALID), &OUT_reply, G_TYPE_INVALID); + (*(com_nokia_asdbus_resolve_recipients_reply)data->cb) (proxy, OUT_reply, error, data->userdata); + return; +} + +static +#ifdef G_HAVE_INLINE +inline +#endif +DBusGProxyCall* +com_nokia_asdbus_resolve_recipients_async (DBusGProxy *proxy, const char ** IN_names, com_nokia_asdbus_resolve_recipients_reply callback, gpointer userdata) + +{ + DBusGAsyncData *stuff; + stuff = g_new (DBusGAsyncData, 1); + stuff->cb = G_CALLBACK (callback); + stuff->userdata = userdata; + return dbus_g_proxy_begin_call (proxy, "resolveRecipients", com_nokia_asdbus_resolve_recipients_async_callback, stuff, g_free, G_TYPE_STRV, IN_names, G_TYPE_INVALID); +} +#endif /* defined DBUS_GLIB_CLIENT_WRAPPERS_com_nokia_asdbus */ + +G_END_DECLS diff --git a/src/hildon2/asdbus.c b/src/hildon2/asdbus.c new file mode 100644 index 0000000..38aef5f --- /dev/null +++ b/src/hildon2/asdbus.c @@ -0,0 +1,78 @@ +#include "asdbus.h" +#include "asdbus-bindings.h" + +#include +#include + + +static +void recipient_iter (const GValue *value, gpointer user_data) +{ + AsDbusRecipient *recipient = g_new0 (AsDbusRecipient, 1); + g_return_if_fail (dbus_g_type_is_struct (G_VALUE_TYPE (value))); + g_return_if_fail (3 >= dbus_g_type_get_struct_size (G_VALUE_TYPE (value))); + g_return_if_fail (G_TYPE_STRING == dbus_g_type_get_struct_member_type (G_VALUE_TYPE (value), 1)); + g_return_if_fail (G_TYPE_STRING == dbus_g_type_get_struct_member_type (G_VALUE_TYPE (value), 2)); + g_return_if_fail (dbus_g_type_struct_get (value, + 1, &recipient->display_name, + 2, &recipient->email_address, + G_MAXUINT)); + *((GList **)user_data) = g_list_append (*((GList **)user_data), recipient); +} + + +static +void response_iter (const GValue *value, gpointer user_data) +{ + GValue recipients = {0,}; + g_return_if_fail (dbus_g_type_is_struct (G_VALUE_TYPE (value))); + g_return_if_fail (4 >= dbus_g_type_get_struct_size (G_VALUE_TYPE (value))); + g_return_if_fail (dbus_g_type_is_collection (dbus_g_type_get_struct_member_type (G_VALUE_TYPE (value), 3))); + g_return_if_fail (dbus_g_type_struct_get_member (value, 3, g_value_init (&recipients, dbus_g_type_get_struct_member_type (G_VALUE_TYPE (value), 3)))); + dbus_g_type_collection_value_iterate (&recipients, recipient_iter, user_data); +} + +GList * asdbus_resolve_recipients (const gchar *name) +{ + GList *result = NULL; + DBusGConnection *bus = NULL; + GError *error = NULL; + DBusGProxy *asdbus = NULL; + GValueArray* reply = NULL; + + + ///g_type_init (); + + const gchar *names[2]; + names[0] = name; + names[1] = NULL; + + bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error); + if (bus == NULL) { + /** FIXME: proper log */ + g_printerr ("Failed to open connection to bus: %s\n", error->message); + g_error_free (error); + goto CLEANUP; + } + + asdbus = dbus_g_proxy_new_for_name (bus, "com.nokia.asdbus", "/com/nokia/asdbus", "com.nokia.asdbus"); + + if (!com_nokia_asdbus_resolve_recipients (asdbus, names, &reply, &error)) { + g_printerr ("com_nokia_asdbus_many_args failed: %s\n", error->message); + g_error_free (error); + goto CLEANUP; + } + + if (!reply) goto CLEANUP; + if (2 != reply->n_values) goto CLEANUP; + if (G_TYPE_INT != G_VALUE_TYPE (&reply->values[0])) goto CLEANUP; + if (!dbus_g_type_is_collection (G_VALUE_TYPE (&reply->values[1]))) goto CLEANUP; + + dbus_g_type_collection_value_iterate (&reply->values[1], response_iter, &result); + +CLEANUP: + g_value_array_free (reply); + g_object_unref (asdbus); + + return result; +} diff --git a/src/hildon2/asdbus.h b/src/hildon2/asdbus.h new file mode 100644 index 0000000..588fbff --- /dev/null +++ b/src/hildon2/asdbus.h @@ -0,0 +1,8 @@ +#include + +typedef struct { + gchar *display_name; + gchar *email_address; +} AsDbusRecipient; + +GList * asdbus_resolve_recipients (const gchar *name); diff --git a/src/hildon2/modest-address-book.c b/src/hildon2/modest-address-book.c index 9da5e18..5653bc6 100644 --- a/src/hildon2/modest-address-book.c +++ b/src/hildon2/modest-address-book.c @@ -52,7 +52,7 @@ #include #include #ifdef MODEST_PLATFORM_MAEMO -#include +#include #endif static OssoABookContactModel *contact_model = NULL;