/* * Generated by gdbus-codegen 2.56.4. DO NOT EDIT. * * The license of this code is the same as for the D-Bus interface description * it was derived from. */ #ifdef HAVE_CONFIG_H # include "config.h" #endif #include "goa-generated.h" #include #ifdef G_OS_UNIX # include #endif typedef struct { GDBusArgInfo parent_struct; gboolean use_gvariant; } _ExtendedGDBusArgInfo; typedef struct { GDBusMethodInfo parent_struct; const gchar *signal_name; gboolean pass_fdlist; } _ExtendedGDBusMethodInfo; typedef struct { GDBusSignalInfo parent_struct; const gchar *signal_name; } _ExtendedGDBusSignalInfo; typedef struct { GDBusPropertyInfo parent_struct; const gchar *hyphen_name; gboolean use_gvariant; } _ExtendedGDBusPropertyInfo; typedef struct { GDBusInterfaceInfo parent_struct; const gchar *hyphen_name; } _ExtendedGDBusInterfaceInfo; typedef struct { const _ExtendedGDBusPropertyInfo *info; guint prop_id; GValue orig_value; /* the value before the change */ } ChangedProperty; static void _changed_property_free (ChangedProperty *data) { g_value_unset (&data->orig_value); g_free (data); } static gboolean _g_strv_equal0 (gchar **a, gchar **b) { gboolean ret = FALSE; guint n; if (a == NULL && b == NULL) { ret = TRUE; goto out; } if (a == NULL || b == NULL) goto out; if (g_strv_length (a) != g_strv_length (b)) goto out; for (n = 0; a[n] != NULL; n++) if (g_strcmp0 (a[n], b[n]) != 0) goto out; ret = TRUE; out: return ret; } static gboolean _g_variant_equal0 (GVariant *a, GVariant *b) { gboolean ret = FALSE; if (a == NULL && b == NULL) { ret = TRUE; goto out; } if (a == NULL || b == NULL) goto out; ret = g_variant_equal (a, b); out: return ret; } G_GNUC_UNUSED static gboolean _g_value_equal (const GValue *a, const GValue *b) { gboolean ret = FALSE; g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b)); switch (G_VALUE_TYPE (a)) { case G_TYPE_BOOLEAN: ret = (g_value_get_boolean (a) == g_value_get_boolean (b)); break; case G_TYPE_UCHAR: ret = (g_value_get_uchar (a) == g_value_get_uchar (b)); break; case G_TYPE_INT: ret = (g_value_get_int (a) == g_value_get_int (b)); break; case G_TYPE_UINT: ret = (g_value_get_uint (a) == g_value_get_uint (b)); break; case G_TYPE_INT64: ret = (g_value_get_int64 (a) == g_value_get_int64 (b)); break; case G_TYPE_UINT64: ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b)); break; case G_TYPE_DOUBLE: { /* Avoid -Wfloat-equal warnings by doing a direct bit compare */ gdouble da = g_value_get_double (a); gdouble db = g_value_get_double (b); ret = memcmp (&da, &db, sizeof (gdouble)) == 0; } break; case G_TYPE_STRING: ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0); break; case G_TYPE_VARIANT: ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b)); break; default: if (G_VALUE_TYPE (a) == G_TYPE_STRV) ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b)); else g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a))); break; } return ret; } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.Account * ------------------------------------------------------------------------ */ /** * SECTION:GoaAccount * @title: GoaAccount * @short_description: Generated C code for the org.gnome.OnlineAccounts.Account D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.Account D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.Account ---- */ static const _ExtendedGDBusMethodInfo _goa_account_method_info_remove = { { -1, (gchar *) "Remove", NULL, NULL, NULL }, "handle-remove", FALSE }; static const _ExtendedGDBusArgInfo _goa_account_method_info_ensure_credentials_OUT_ARG_expires_in = { { -1, (gchar *) "expires_in", (gchar *) "i", NULL }, FALSE }; static const _ExtendedGDBusArgInfo * const _goa_account_method_info_ensure_credentials_OUT_ARG_pointers[] = { &_goa_account_method_info_ensure_credentials_OUT_ARG_expires_in, NULL }; static const _ExtendedGDBusMethodInfo _goa_account_method_info_ensure_credentials = { { -1, (gchar *) "EnsureCredentials", NULL, (GDBusArgInfo **) &_goa_account_method_info_ensure_credentials_OUT_ARG_pointers, NULL }, "handle-ensure-credentials", FALSE }; static const _ExtendedGDBusMethodInfo * const _goa_account_method_info_pointers[] = { &_goa_account_method_info_remove, &_goa_account_method_info_ensure_credentials, NULL }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_provider_type = { { -1, (gchar *) "ProviderType", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "provider-type", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_provider_name = { { -1, (gchar *) "ProviderName", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "provider-name", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_provider_icon = { { -1, (gchar *) "ProviderIcon", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "provider-icon", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_id = { { -1, (gchar *) "Id", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "id", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_is_locked = { { -1, (gchar *) "IsLocked", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "is-locked", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_is_temporary = { { -1, (gchar *) "IsTemporary", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "is-temporary", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_attention_needed = { { -1, (gchar *) "AttentionNeeded", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "attention-needed", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_identity = { { -1, (gchar *) "Identity", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "identity", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_presentation_identity = { { -1, (gchar *) "PresentationIdentity", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "presentation-identity", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_mail_disabled = { { -1, (gchar *) "MailDisabled", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "mail-disabled", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_calendar_disabled = { { -1, (gchar *) "CalendarDisabled", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "calendar-disabled", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_contacts_disabled = { { -1, (gchar *) "ContactsDisabled", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "contacts-disabled", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_chat_disabled = { { -1, (gchar *) "ChatDisabled", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "chat-disabled", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_documents_disabled = { { -1, (gchar *) "DocumentsDisabled", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "documents-disabled", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_maps_disabled = { { -1, (gchar *) "MapsDisabled", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "maps-disabled", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_music_disabled = { { -1, (gchar *) "MusicDisabled", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "music-disabled", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_printers_disabled = { { -1, (gchar *) "PrintersDisabled", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "printers-disabled", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_photos_disabled = { { -1, (gchar *) "PhotosDisabled", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "photos-disabled", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_files_disabled = { { -1, (gchar *) "FilesDisabled", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "files-disabled", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_ticketing_disabled = { { -1, (gchar *) "TicketingDisabled", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "ticketing-disabled", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_todo_disabled = { { -1, (gchar *) "TodoDisabled", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "todo-disabled", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_account_property_info_read_later_disabled = { { -1, (gchar *) "ReadLaterDisabled", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "read-later-disabled", FALSE }; static const _ExtendedGDBusPropertyInfo * const _goa_account_property_info_pointers[] = { &_goa_account_property_info_provider_type, &_goa_account_property_info_provider_name, &_goa_account_property_info_provider_icon, &_goa_account_property_info_id, &_goa_account_property_info_is_locked, &_goa_account_property_info_is_temporary, &_goa_account_property_info_attention_needed, &_goa_account_property_info_identity, &_goa_account_property_info_presentation_identity, &_goa_account_property_info_mail_disabled, &_goa_account_property_info_calendar_disabled, &_goa_account_property_info_contacts_disabled, &_goa_account_property_info_chat_disabled, &_goa_account_property_info_documents_disabled, &_goa_account_property_info_maps_disabled, &_goa_account_property_info_music_disabled, &_goa_account_property_info_printers_disabled, &_goa_account_property_info_photos_disabled, &_goa_account_property_info_files_disabled, &_goa_account_property_info_ticketing_disabled, &_goa_account_property_info_todo_disabled, &_goa_account_property_info_read_later_disabled, NULL }; static const _ExtendedGDBusInterfaceInfo _goa_account_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.Account", (GDBusMethodInfo **) &_goa_account_method_info_pointers, NULL, (GDBusPropertyInfo **) &_goa_account_property_info_pointers, NULL }, "account", }; /** * goa_account_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.Account D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. */ GDBusInterfaceInfo * goa_account_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_account_interface_info.parent_struct; } /** * goa_account_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaAccount interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. */ guint goa_account_override_properties (GObjectClass *klass, guint property_id_begin) { g_object_class_override_property (klass, property_id_begin++, "provider-type"); g_object_class_override_property (klass, property_id_begin++, "provider-name"); g_object_class_override_property (klass, property_id_begin++, "provider-icon"); g_object_class_override_property (klass, property_id_begin++, "id"); g_object_class_override_property (klass, property_id_begin++, "is-locked"); g_object_class_override_property (klass, property_id_begin++, "is-temporary"); g_object_class_override_property (klass, property_id_begin++, "attention-needed"); g_object_class_override_property (klass, property_id_begin++, "identity"); g_object_class_override_property (klass, property_id_begin++, "presentation-identity"); g_object_class_override_property (klass, property_id_begin++, "mail-disabled"); g_object_class_override_property (klass, property_id_begin++, "calendar-disabled"); g_object_class_override_property (klass, property_id_begin++, "contacts-disabled"); g_object_class_override_property (klass, property_id_begin++, "chat-disabled"); g_object_class_override_property (klass, property_id_begin++, "documents-disabled"); g_object_class_override_property (klass, property_id_begin++, "maps-disabled"); g_object_class_override_property (klass, property_id_begin++, "music-disabled"); g_object_class_override_property (klass, property_id_begin++, "printers-disabled"); g_object_class_override_property (klass, property_id_begin++, "photos-disabled"); g_object_class_override_property (klass, property_id_begin++, "files-disabled"); g_object_class_override_property (klass, property_id_begin++, "ticketing-disabled"); g_object_class_override_property (klass, property_id_begin++, "todo-disabled"); g_object_class_override_property (klass, property_id_begin++, "read-later-disabled"); return property_id_begin - 1; } /** * GoaAccount: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.Account. */ /** * GoaAccountIface: * @parent_iface: The parent interface. * @handle_ensure_credentials: Handler for the #GoaAccount::handle-ensure-credentials signal. * @handle_remove: Handler for the #GoaAccount::handle-remove signal. * @get_attention_needed: Getter for the #GoaAccount:attention-needed property. * @get_calendar_disabled: Getter for the #GoaAccount:calendar-disabled property. * @get_chat_disabled: Getter for the #GoaAccount:chat-disabled property. * @get_contacts_disabled: Getter for the #GoaAccount:contacts-disabled property. * @get_documents_disabled: Getter for the #GoaAccount:documents-disabled property. * @get_id: Getter for the #GoaAccount:id property. * @get_identity: Getter for the #GoaAccount:identity property. * @get_is_temporary: Getter for the #GoaAccount:is-temporary property. * @get_mail_disabled: Getter for the #GoaAccount:mail-disabled property. * @get_presentation_identity: Getter for the #GoaAccount:presentation-identity property. * @get_provider_icon: Getter for the #GoaAccount:provider-icon property. * @get_provider_name: Getter for the #GoaAccount:provider-name property. * @get_provider_type: Getter for the #GoaAccount:provider-type property. * @get_ticketing_disabled: Getter for the #GoaAccount:ticketing-disabled property. * @get_files_disabled: Getter for the #GoaAccount:files-disabled property. * @get_photos_disabled: Getter for the #GoaAccount:photos-disabled property. * @get_printers_disabled: Getter for the #GoaAccount:printers-disabled property. * @get_read_later_disabled: Getter for the #GoaAccount:read-later-disabled property. * @get_maps_disabled: Getter for the #GoaAccount:maps-disabled property. * @get_is_locked: Getter for the #GoaAccount:is-locked property. * @get_music_disabled: Getter for the #GoaAccount:music-disabled property. * @get_todo_disabled: Getter for the #GoaAccount:todo-disabled property. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.Account. */ typedef GoaAccountIface GoaAccountInterface; G_DEFINE_INTERFACE (GoaAccount, goa_account, G_TYPE_OBJECT) static void goa_account_default_init (GoaAccountIface *iface) { /* GObject signals for incoming D-Bus method calls: */ /** * GoaAccount::handle-remove: * @object: A #GoaAccount. * @invocation: A #GDBusMethodInvocation. * * Signal emitted when a remote caller is invoking the Remove() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call goa_account_complete_remove() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-remove", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GoaAccountIface, handle_remove), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 1, G_TYPE_DBUS_METHOD_INVOCATION); /** * GoaAccount::handle-ensure-credentials: * @object: A #GoaAccount. * @invocation: A #GDBusMethodInvocation. * * Signal emitted when a remote caller is invoking the EnsureCredentials() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call goa_account_complete_ensure_credentials() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-ensure-credentials", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GoaAccountIface, handle_ensure_credentials), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 1, G_TYPE_DBUS_METHOD_INVOCATION); /* GObject properties for D-Bus properties: */ /** * GoaAccount:provider-type: * * Represents the D-Bus property "ProviderType". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_string ("provider-type", "ProviderType", "ProviderType", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:provider-name: * * Represents the D-Bus property "ProviderName". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_string ("provider-name", "ProviderName", "ProviderName", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:provider-icon: * * Represents the D-Bus property "ProviderIcon". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_string ("provider-icon", "ProviderIcon", "ProviderIcon", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:id: * * Represents the D-Bus property "Id". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_string ("id", "Id", "Id", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:is-locked: * * Represents the D-Bus property "IsLocked". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.16.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("is-locked", "IsLocked", "IsLocked", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:is-temporary: * * Represents the D-Bus property "IsTemporary". * * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. */ g_object_interface_install_property (iface, g_param_spec_boolean ("is-temporary", "IsTemporary", "IsTemporary", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:attention-needed: * * Represents the D-Bus property "AttentionNeeded". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_boolean ("attention-needed", "AttentionNeeded", "AttentionNeeded", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:identity: * * Represents the D-Bus property "Identity". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_string ("identity", "Identity", "Identity", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:presentation-identity: * * Represents the D-Bus property "PresentationIdentity". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_string ("presentation-identity", "PresentationIdentity", "PresentationIdentity", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:mail-disabled: * * Represents the D-Bus property "MailDisabled". * * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. */ g_object_interface_install_property (iface, g_param_spec_boolean ("mail-disabled", "MailDisabled", "MailDisabled", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:calendar-disabled: * * Represents the D-Bus property "CalendarDisabled". * * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. */ g_object_interface_install_property (iface, g_param_spec_boolean ("calendar-disabled", "CalendarDisabled", "CalendarDisabled", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:contacts-disabled: * * Represents the D-Bus property "ContactsDisabled". * * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. */ g_object_interface_install_property (iface, g_param_spec_boolean ("contacts-disabled", "ContactsDisabled", "ContactsDisabled", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:chat-disabled: * * Represents the D-Bus property "ChatDisabled". * * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. */ g_object_interface_install_property (iface, g_param_spec_boolean ("chat-disabled", "ChatDisabled", "ChatDisabled", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:documents-disabled: * * Represents the D-Bus property "DocumentsDisabled". * * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. */ g_object_interface_install_property (iface, g_param_spec_boolean ("documents-disabled", "DocumentsDisabled", "DocumentsDisabled", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:maps-disabled: * * Represents the D-Bus property "MapsDisabled". * * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. * * Since: 3.14.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("maps-disabled", "MapsDisabled", "MapsDisabled", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:music-disabled: * * Represents the D-Bus property "MusicDisabled". * * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. * * Since: 3.18.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("music-disabled", "MusicDisabled", "MusicDisabled", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:printers-disabled: * * Represents the D-Bus property "PrintersDisabled". * * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. * * Since: 3.12.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("printers-disabled", "PrintersDisabled", "PrintersDisabled", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:photos-disabled: * * Represents the D-Bus property "PhotosDisabled". * * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. * * Since: 3.8.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("photos-disabled", "PhotosDisabled", "PhotosDisabled", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:files-disabled: * * Represents the D-Bus property "FilesDisabled". * * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. * * Since: 3.8.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("files-disabled", "FilesDisabled", "FilesDisabled", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:ticketing-disabled: * * Represents the D-Bus property "TicketingDisabled". * * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. * * Since: 3.6.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("ticketing-disabled", "TicketingDisabled", "TicketingDisabled", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:todo-disabled: * * Represents the D-Bus property "TodoDisabled". * * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. * * Since: 3.26.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("todo-disabled", "TodoDisabled", "TodoDisabled", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaAccount:read-later-disabled: * * Represents the D-Bus property "ReadLaterDisabled". * * Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side. * * Since: 3.12.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("read-later-disabled", "ReadLaterDisabled", "ReadLaterDisabled", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } /** * goa_account_get_provider_type: (skip) * @object: A #GoaAccount. * * Gets the value of the "ProviderType" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_account_dup_provider_type() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ const gchar * goa_account_get_provider_type (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_provider_type (object); } /** * goa_account_dup_provider_type: (skip) * @object: A #GoaAccount. * * Gets a copy of the "ProviderType" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). */ gchar * goa_account_dup_provider_type (GoaAccount *object) { gchar *value; g_object_get (G_OBJECT (object), "provider-type", &value, NULL); return value; } /** * goa_account_set_provider_type: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "ProviderType" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_account_set_provider_type (GoaAccount *object, const gchar *value) { g_object_set (G_OBJECT (object), "provider-type", value, NULL); } /** * goa_account_get_provider_name: (skip) * @object: A #GoaAccount. * * Gets the value of the "ProviderName" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_account_dup_provider_name() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ const gchar * goa_account_get_provider_name (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_provider_name (object); } /** * goa_account_dup_provider_name: (skip) * @object: A #GoaAccount. * * Gets a copy of the "ProviderName" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). */ gchar * goa_account_dup_provider_name (GoaAccount *object) { gchar *value; g_object_get (G_OBJECT (object), "provider-name", &value, NULL); return value; } /** * goa_account_set_provider_name: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "ProviderName" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_account_set_provider_name (GoaAccount *object, const gchar *value) { g_object_set (G_OBJECT (object), "provider-name", value, NULL); } /** * goa_account_get_provider_icon: (skip) * @object: A #GoaAccount. * * Gets the value of the "ProviderIcon" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_account_dup_provider_icon() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ const gchar * goa_account_get_provider_icon (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_provider_icon (object); } /** * goa_account_dup_provider_icon: (skip) * @object: A #GoaAccount. * * Gets a copy of the "ProviderIcon" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). */ gchar * goa_account_dup_provider_icon (GoaAccount *object) { gchar *value; g_object_get (G_OBJECT (object), "provider-icon", &value, NULL); return value; } /** * goa_account_set_provider_icon: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "ProviderIcon" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_account_set_provider_icon (GoaAccount *object, const gchar *value) { g_object_set (G_OBJECT (object), "provider-icon", value, NULL); } /** * goa_account_get_id: (skip) * @object: A #GoaAccount. * * Gets the value of the "Id" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_account_dup_id() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ const gchar * goa_account_get_id (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_id (object); } /** * goa_account_dup_id: (skip) * @object: A #GoaAccount. * * Gets a copy of the "Id" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). */ gchar * goa_account_dup_id (GoaAccount *object) { gchar *value; g_object_get (G_OBJECT (object), "id", &value, NULL); return value; } /** * goa_account_set_id: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "Id" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_account_set_id (GoaAccount *object, const gchar *value) { g_object_set (G_OBJECT (object), "id", value, NULL); } /** * goa_account_get_is_locked: (skip) * @object: A #GoaAccount. * * Gets the value of the "IsLocked" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.16.0 */ gboolean goa_account_get_is_locked (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_is_locked (object); } /** * goa_account_set_is_locked: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "IsLocked" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.16.0 */ void goa_account_set_is_locked (GoaAccount *object, gboolean value) { g_object_set (G_OBJECT (object), "is-locked", value, NULL); } /** * goa_account_get_is_temporary: (skip) * @object: A #GoaAccount. * * Gets the value of the "IsTemporary" D-Bus property. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. */ gboolean goa_account_get_is_temporary (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_is_temporary (object); } /** * goa_account_set_is_temporary: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "IsTemporary" D-Bus property to @value. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. */ void goa_account_set_is_temporary (GoaAccount *object, gboolean value) { g_object_set (G_OBJECT (object), "is-temporary", value, NULL); } /** * goa_account_get_attention_needed: (skip) * @object: A #GoaAccount. * * Gets the value of the "AttentionNeeded" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. */ gboolean goa_account_get_attention_needed (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_attention_needed (object); } /** * goa_account_set_attention_needed: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "AttentionNeeded" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_account_set_attention_needed (GoaAccount *object, gboolean value) { g_object_set (G_OBJECT (object), "attention-needed", value, NULL); } /** * goa_account_get_identity: (skip) * @object: A #GoaAccount. * * Gets the value of the "Identity" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_account_dup_identity() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ const gchar * goa_account_get_identity (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_identity (object); } /** * goa_account_dup_identity: (skip) * @object: A #GoaAccount. * * Gets a copy of the "Identity" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). */ gchar * goa_account_dup_identity (GoaAccount *object) { gchar *value; g_object_get (G_OBJECT (object), "identity", &value, NULL); return value; } /** * goa_account_set_identity: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "Identity" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_account_set_identity (GoaAccount *object, const gchar *value) { g_object_set (G_OBJECT (object), "identity", value, NULL); } /** * goa_account_get_presentation_identity: (skip) * @object: A #GoaAccount. * * Gets the value of the "PresentationIdentity" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_account_dup_presentation_identity() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ const gchar * goa_account_get_presentation_identity (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_presentation_identity (object); } /** * goa_account_dup_presentation_identity: (skip) * @object: A #GoaAccount. * * Gets a copy of the "PresentationIdentity" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). */ gchar * goa_account_dup_presentation_identity (GoaAccount *object) { gchar *value; g_object_get (G_OBJECT (object), "presentation-identity", &value, NULL); return value; } /** * goa_account_set_presentation_identity: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "PresentationIdentity" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_account_set_presentation_identity (GoaAccount *object, const gchar *value) { g_object_set (G_OBJECT (object), "presentation-identity", value, NULL); } /** * goa_account_get_mail_disabled: (skip) * @object: A #GoaAccount. * * Gets the value of the "MailDisabled" D-Bus property. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. */ gboolean goa_account_get_mail_disabled (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_mail_disabled (object); } /** * goa_account_set_mail_disabled: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "MailDisabled" D-Bus property to @value. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. */ void goa_account_set_mail_disabled (GoaAccount *object, gboolean value) { g_object_set (G_OBJECT (object), "mail-disabled", value, NULL); } /** * goa_account_get_calendar_disabled: (skip) * @object: A #GoaAccount. * * Gets the value of the "CalendarDisabled" D-Bus property. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. */ gboolean goa_account_get_calendar_disabled (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_calendar_disabled (object); } /** * goa_account_set_calendar_disabled: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "CalendarDisabled" D-Bus property to @value. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. */ void goa_account_set_calendar_disabled (GoaAccount *object, gboolean value) { g_object_set (G_OBJECT (object), "calendar-disabled", value, NULL); } /** * goa_account_get_contacts_disabled: (skip) * @object: A #GoaAccount. * * Gets the value of the "ContactsDisabled" D-Bus property. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. */ gboolean goa_account_get_contacts_disabled (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_contacts_disabled (object); } /** * goa_account_set_contacts_disabled: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "ContactsDisabled" D-Bus property to @value. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. */ void goa_account_set_contacts_disabled (GoaAccount *object, gboolean value) { g_object_set (G_OBJECT (object), "contacts-disabled", value, NULL); } /** * goa_account_get_chat_disabled: (skip) * @object: A #GoaAccount. * * Gets the value of the "ChatDisabled" D-Bus property. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. */ gboolean goa_account_get_chat_disabled (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_chat_disabled (object); } /** * goa_account_set_chat_disabled: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "ChatDisabled" D-Bus property to @value. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. */ void goa_account_set_chat_disabled (GoaAccount *object, gboolean value) { g_object_set (G_OBJECT (object), "chat-disabled", value, NULL); } /** * goa_account_get_documents_disabled: (skip) * @object: A #GoaAccount. * * Gets the value of the "DocumentsDisabled" D-Bus property. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. */ gboolean goa_account_get_documents_disabled (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_documents_disabled (object); } /** * goa_account_set_documents_disabled: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "DocumentsDisabled" D-Bus property to @value. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. */ void goa_account_set_documents_disabled (GoaAccount *object, gboolean value) { g_object_set (G_OBJECT (object), "documents-disabled", value, NULL); } /** * goa_account_get_maps_disabled: (skip) * @object: A #GoaAccount. * * Gets the value of the "MapsDisabled" D-Bus property. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.14.0 */ gboolean goa_account_get_maps_disabled (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_maps_disabled (object); } /** * goa_account_set_maps_disabled: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "MapsDisabled" D-Bus property to @value. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Since: 3.14.0 */ void goa_account_set_maps_disabled (GoaAccount *object, gboolean value) { g_object_set (G_OBJECT (object), "maps-disabled", value, NULL); } /** * goa_account_get_music_disabled: (skip) * @object: A #GoaAccount. * * Gets the value of the "MusicDisabled" D-Bus property. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.18.0 */ gboolean goa_account_get_music_disabled (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_music_disabled (object); } /** * goa_account_set_music_disabled: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "MusicDisabled" D-Bus property to @value. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Since: 3.18.0 */ void goa_account_set_music_disabled (GoaAccount *object, gboolean value) { g_object_set (G_OBJECT (object), "music-disabled", value, NULL); } /** * goa_account_get_printers_disabled: (skip) * @object: A #GoaAccount. * * Gets the value of the "PrintersDisabled" D-Bus property. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.12.0 */ gboolean goa_account_get_printers_disabled (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_printers_disabled (object); } /** * goa_account_set_printers_disabled: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "PrintersDisabled" D-Bus property to @value. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Since: 3.12.0 */ void goa_account_set_printers_disabled (GoaAccount *object, gboolean value) { g_object_set (G_OBJECT (object), "printers-disabled", value, NULL); } /** * goa_account_get_photos_disabled: (skip) * @object: A #GoaAccount. * * Gets the value of the "PhotosDisabled" D-Bus property. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.8.0 */ gboolean goa_account_get_photos_disabled (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_photos_disabled (object); } /** * goa_account_set_photos_disabled: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "PhotosDisabled" D-Bus property to @value. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Since: 3.8.0 */ void goa_account_set_photos_disabled (GoaAccount *object, gboolean value) { g_object_set (G_OBJECT (object), "photos-disabled", value, NULL); } /** * goa_account_get_files_disabled: (skip) * @object: A #GoaAccount. * * Gets the value of the "FilesDisabled" D-Bus property. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.8.0 */ gboolean goa_account_get_files_disabled (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_files_disabled (object); } /** * goa_account_set_files_disabled: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "FilesDisabled" D-Bus property to @value. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Since: 3.8.0 */ void goa_account_set_files_disabled (GoaAccount *object, gboolean value) { g_object_set (G_OBJECT (object), "files-disabled", value, NULL); } /** * goa_account_get_ticketing_disabled: (skip) * @object: A #GoaAccount. * * Gets the value of the "TicketingDisabled" D-Bus property. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.6.0 */ gboolean goa_account_get_ticketing_disabled (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_ticketing_disabled (object); } /** * goa_account_set_ticketing_disabled: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "TicketingDisabled" D-Bus property to @value. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Since: 3.6.0 */ void goa_account_set_ticketing_disabled (GoaAccount *object, gboolean value) { g_object_set (G_OBJECT (object), "ticketing-disabled", value, NULL); } /** * goa_account_get_todo_disabled: (skip) * @object: A #GoaAccount. * * Gets the value of the "TodoDisabled" D-Bus property. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.26.0 */ gboolean goa_account_get_todo_disabled (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_todo_disabled (object); } /** * goa_account_set_todo_disabled: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "TodoDisabled" D-Bus property to @value. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Since: 3.26.0 */ void goa_account_set_todo_disabled (GoaAccount *object, gboolean value) { g_object_set (G_OBJECT (object), "todo-disabled", value, NULL); } /** * goa_account_get_read_later_disabled: (skip) * @object: A #GoaAccount. * * Gets the value of the "ReadLaterDisabled" D-Bus property. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.12.0 */ gboolean goa_account_get_read_later_disabled (GoaAccount *object) { return GOA_ACCOUNT_GET_IFACE (object)->get_read_later_disabled (object); } /** * goa_account_set_read_later_disabled: (skip) * @object: A #GoaAccount. * @value: The value to set. * * Sets the "ReadLaterDisabled" D-Bus property to @value. * * Since this D-Bus property is both readable and writable, it is meaningful to use this function on both the client- and service-side. * * Since: 3.12.0 */ void goa_account_set_read_later_disabled (GoaAccount *object, gboolean value) { g_object_set (G_OBJECT (object), "read-later-disabled", value, NULL); } /** * goa_account_call_remove: * @proxy: A #GoaAccountProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the Remove() D-Bus method on @proxy. * 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 goa_account_call_remove_finish() to get the result of the operation. * * See goa_account_call_remove_sync() for the synchronous, blocking version of this method. */ void goa_account_call_remove ( GoaAccount *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "Remove", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * goa_account_call_remove_finish: * @proxy: A #GoaAccountProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_account_call_remove(). * @error: Return location for error or %NULL. * * Finishes an operation started with goa_account_call_remove(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean goa_account_call_remove_finish ( GoaAccount *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * goa_account_call_remove_sync: * @proxy: A #GoaAccountProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the Remove() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See goa_account_call_remove() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean goa_account_call_remove_sync ( GoaAccount *proxy, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "Remove", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * goa_account_call_ensure_credentials: * @proxy: A #GoaAccountProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the EnsureCredentials() D-Bus method on @proxy. * 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 goa_account_call_ensure_credentials_finish() to get the result of the operation. * * See goa_account_call_ensure_credentials_sync() for the synchronous, blocking version of this method. */ void goa_account_call_ensure_credentials ( GoaAccount *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "EnsureCredentials", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * goa_account_call_ensure_credentials_finish: * @proxy: A #GoaAccountProxy. * @out_expires_in: (out): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_account_call_ensure_credentials(). * @error: Return location for error or %NULL. * * Finishes an operation started with goa_account_call_ensure_credentials(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean goa_account_call_ensure_credentials_finish ( GoaAccount *proxy, gint *out_expires_in, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(i)", out_expires_in); g_variant_unref (_ret); _out: return _ret != NULL; } /** * goa_account_call_ensure_credentials_sync: * @proxy: A #GoaAccountProxy. * @out_expires_in: (out): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the EnsureCredentials() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See goa_account_call_ensure_credentials() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean goa_account_call_ensure_credentials_sync ( GoaAccount *proxy, gint *out_expires_in, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "EnsureCredentials", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(i)", out_expires_in); g_variant_unref (_ret); _out: return _ret != NULL; } /** * goa_account_complete_remove: * @object: A #GoaAccount. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the Remove() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void goa_account_complete_remove ( GoaAccount *object, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /** * goa_account_complete_ensure_credentials: * @object: A #GoaAccount. * @invocation: (transfer full): A #GDBusMethodInvocation. * @expires_in: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the EnsureCredentials() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void goa_account_complete_ensure_credentials ( GoaAccount *object, GDBusMethodInvocation *invocation, gint expires_in) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(i)", expires_in)); } /* ------------------------------------------------------------------------ */ /** * GoaAccountProxy: * * The #GoaAccountProxy structure contains only private data and should only be accessed using the provided API. */ /** * GoaAccountProxyClass: * @parent_class: The parent class. * * Class structure for #GoaAccountProxy. */ struct _GoaAccountProxyPrivate { GData *qdata; }; static void goa_account_proxy_iface_init (GoaAccountIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaAccountProxy, goa_account_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaAccountProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_ACCOUNT, goa_account_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaAccountProxy, goa_account_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_ACCOUNT, goa_account_proxy_iface_init)) #endif static void goa_account_proxy_finalize (GObject *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_account_proxy_parent_class)->finalize (object); } static void goa_account_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 22); info = _goa_account_property_info_pointers[prop_id - 1]; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name); if (info->use_gvariant) { g_value_set_variant (value, variant); } else { if (variant != NULL) g_dbus_gvariant_to_gvalue (variant, value); } if (variant != NULL) g_variant_unref (variant); } static void goa_account_proxy_set_property_cb (GDBusProxy *proxy, GAsyncResult *res, gpointer user_data) { const _ExtendedGDBusPropertyInfo *info = user_data; GError *error; GVariant *_ret; error = NULL; _ret = g_dbus_proxy_call_finish (proxy, res, &error); if (!_ret) { g_warning ("Error setting property '%s' on interface org.gnome.OnlineAccounts.Account: %s (%s, %d)", info->parent_struct.name, error->message, g_quark_to_string (error->domain), error->code); g_error_free (error); } else { g_variant_unref (_ret); } } static void goa_account_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 22); info = _goa_account_property_info_pointers[prop_id - 1]; variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature)); g_dbus_proxy_call (G_DBUS_PROXY (object), "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", "org.gnome.OnlineAccounts.Account", info->parent_struct.name, variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) goa_account_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct); g_variant_unref (variant); } static void goa_account_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_account_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_ACCOUNT); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_ACCOUNT); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_account_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_account_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_account_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static const gchar * goa_account_proxy_get_provider_type (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ProviderType"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static const gchar * goa_account_proxy_get_provider_name (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ProviderName"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static const gchar * goa_account_proxy_get_provider_icon (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ProviderIcon"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static const gchar * goa_account_proxy_get_id (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Id"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static gboolean goa_account_proxy_get_is_locked (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "IsLocked"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_account_proxy_get_is_temporary (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "IsTemporary"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_account_proxy_get_attention_needed (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "AttentionNeeded"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static const gchar * goa_account_proxy_get_identity (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Identity"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static const gchar * goa_account_proxy_get_presentation_identity (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "PresentationIdentity"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static gboolean goa_account_proxy_get_mail_disabled (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "MailDisabled"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_account_proxy_get_calendar_disabled (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "CalendarDisabled"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_account_proxy_get_contacts_disabled (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ContactsDisabled"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_account_proxy_get_chat_disabled (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ChatDisabled"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_account_proxy_get_documents_disabled (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "DocumentsDisabled"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_account_proxy_get_maps_disabled (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "MapsDisabled"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_account_proxy_get_music_disabled (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "MusicDisabled"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_account_proxy_get_printers_disabled (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "PrintersDisabled"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_account_proxy_get_photos_disabled (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "PhotosDisabled"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_account_proxy_get_files_disabled (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "FilesDisabled"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_account_proxy_get_ticketing_disabled (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "TicketingDisabled"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_account_proxy_get_todo_disabled (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "TodoDisabled"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_account_proxy_get_read_later_disabled (GoaAccount *object) { GoaAccountProxy *proxy = GOA_ACCOUNT_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ReadLaterDisabled"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static void goa_account_proxy_init (GoaAccountProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_account_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_ACCOUNT_PROXY, GoaAccountProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_account_interface_info ()); } static void goa_account_proxy_class_init (GoaAccountProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_account_proxy_finalize; gobject_class->get_property = goa_account_proxy_get_property; gobject_class->set_property = goa_account_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_account_proxy_g_signal; proxy_class->g_properties_changed = goa_account_proxy_g_properties_changed; goa_account_override_properties (gobject_class, 1); #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaAccountProxyPrivate)); #endif } static void goa_account_proxy_iface_init (GoaAccountIface *iface) { iface->get_provider_type = goa_account_proxy_get_provider_type; iface->get_provider_name = goa_account_proxy_get_provider_name; iface->get_provider_icon = goa_account_proxy_get_provider_icon; iface->get_id = goa_account_proxy_get_id; iface->get_is_locked = goa_account_proxy_get_is_locked; iface->get_is_temporary = goa_account_proxy_get_is_temporary; iface->get_attention_needed = goa_account_proxy_get_attention_needed; iface->get_identity = goa_account_proxy_get_identity; iface->get_presentation_identity = goa_account_proxy_get_presentation_identity; iface->get_mail_disabled = goa_account_proxy_get_mail_disabled; iface->get_calendar_disabled = goa_account_proxy_get_calendar_disabled; iface->get_contacts_disabled = goa_account_proxy_get_contacts_disabled; iface->get_chat_disabled = goa_account_proxy_get_chat_disabled; iface->get_documents_disabled = goa_account_proxy_get_documents_disabled; iface->get_maps_disabled = goa_account_proxy_get_maps_disabled; iface->get_music_disabled = goa_account_proxy_get_music_disabled; iface->get_printers_disabled = goa_account_proxy_get_printers_disabled; iface->get_photos_disabled = goa_account_proxy_get_photos_disabled; iface->get_files_disabled = goa_account_proxy_get_files_disabled; iface->get_ticketing_disabled = goa_account_proxy_get_ticketing_disabled; iface->get_todo_disabled = goa_account_proxy_get_todo_disabled; iface->get_read_later_disabled = goa_account_proxy_get_read_later_disabled; } /** * goa_account_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Account. See g_dbus_proxy_new() for more details. * * 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 goa_account_proxy_new_finish() to get the result of the operation. * * See goa_account_proxy_new_sync() for the synchronous, blocking version of this constructor. */ void goa_account_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 (GOA_TYPE_ACCOUNT_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.OnlineAccounts.Account", NULL); } /** * goa_account_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_account_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_account_proxy_new(). * * Returns: (transfer full) (type GoaAccountProxy): The constructed proxy object or %NULL if @error is set. */ GoaAccount * goa_account_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_ACCOUNT (ret); else return NULL; } /** * goa_account_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Account. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_account_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaAccountProxy): The constructed proxy object or %NULL if @error is set. */ GoaAccount * goa_account_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_ACCOUNT_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Account", NULL); if (ret != NULL) return GOA_ACCOUNT (ret); else return NULL; } /** * goa_account_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_account_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_account_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_account_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. */ void goa_account_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 (GOA_TYPE_ACCOUNT_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.OnlineAccounts.Account", NULL); } /** * goa_account_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_account_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_account_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaAccountProxy): The constructed proxy object or %NULL if @error is set. */ GoaAccount * goa_account_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_ACCOUNT (ret); else return NULL; } /** * goa_account_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_account_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_account_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaAccountProxy): The constructed proxy object or %NULL if @error is set. */ GoaAccount * goa_account_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_ACCOUNT_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Account", NULL); if (ret != NULL) return GOA_ACCOUNT (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaAccountSkeleton: * * The #GoaAccountSkeleton structure contains only private data and should only be accessed using the provided API. */ /** * GoaAccountSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaAccountSkeleton. */ struct _GoaAccountSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_account_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_ACCOUNT); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_ACCOUNT); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_account_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_account_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_account_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_account_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_account_skeleton_vtable = { _goa_account_skeleton_handle_method_call, _goa_account_skeleton_handle_get_property, _goa_account_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_account_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_account_interface_info (); } static GDBusInterfaceVTable * goa_account_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_account_skeleton_vtable; } static GVariant * goa_account_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_account_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_account_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_account_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_account_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.Account", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static gboolean _goa_account_emit_changed (gpointer user_data); static void goa_account_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (_skeleton); gboolean emit_changed = FALSE; g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties_idle_source != NULL) { g_source_destroy (skeleton->priv->changed_properties_idle_source); skeleton->priv->changed_properties_idle_source = NULL; emit_changed = TRUE; } g_mutex_unlock (&skeleton->priv->lock); if (emit_changed) _goa_account_emit_changed (skeleton); } static void goa_account_skeleton_iface_init (GoaAccountIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaAccountSkeleton, goa_account_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaAccountSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_ACCOUNT, goa_account_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaAccountSkeleton, goa_account_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_ACCOUNT, goa_account_skeleton_iface_init)) #endif static void goa_account_skeleton_finalize (GObject *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); guint n; for (n = 0; n < 22; n++) g_value_unset (&skeleton->priv->properties[n]); g_free (skeleton->priv->properties); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_account_skeleton_parent_class)->finalize (object); } static void goa_account_skeleton_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 22); g_mutex_lock (&skeleton->priv->lock); g_value_copy (&skeleton->priv->properties[prop_id - 1], value); g_mutex_unlock (&skeleton->priv->lock); } static gboolean _goa_account_emit_changed (gpointer user_data) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (user_data); GList *l; GVariantBuilder builder; GVariantBuilder invalidated_builder; guint num_changes; g_mutex_lock (&skeleton->priv->lock); g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next) { ChangedProperty *cp = l->data; GVariant *variant; const GValue *cur_value; cur_value = &skeleton->priv->properties[cp->prop_id - 1]; if (!_g_value_equal (cur_value, &cp->orig_value)) { variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature)); g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant); g_variant_unref (variant); num_changes++; } } if (num_changes > 0) { GList *connections, *ll; GVariant *signal_variant; signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.gnome.OnlineAccounts.Account", &builder, &invalidated_builder)); connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); for (ll = connections; ll != NULL; ll = ll->next) { GDBusConnection *connection = ll->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", "PropertiesChanged", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } else { g_variant_builder_clear (&builder); g_variant_builder_clear (&invalidated_builder); } g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); skeleton->priv->changed_properties = NULL; skeleton->priv->changed_properties_idle_source = NULL; g_mutex_unlock (&skeleton->priv->lock); return FALSE; } static void _goa_account_schedule_emit_changed (GoaAccountSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value) { ChangedProperty *cp; GList *l; cp = NULL; for (l = skeleton->priv->changed_properties; l != NULL; l = l->next) { ChangedProperty *i_cp = l->data; if (i_cp->info == info) { cp = i_cp; break; } } if (cp == NULL) { cp = g_new0 (ChangedProperty, 1); cp->prop_id = prop_id; cp->info = info; skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp); g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value)); g_value_copy (orig_value, &cp->orig_value); } } static void goa_account_skeleton_notify (GObject *object, GParamSpec *pspec G_GNUC_UNUSED) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties != NULL && skeleton->priv->changed_properties_idle_source == NULL) { skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _goa_account_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _goa_account_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } g_mutex_unlock (&skeleton->priv->lock); } static void goa_account_skeleton_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 22); g_mutex_lock (&skeleton->priv->lock); g_object_freeze_notify (object); if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1])) { if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL) _goa_account_schedule_emit_changed (skeleton, _goa_account_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]); g_value_copy (value, &skeleton->priv->properties[prop_id - 1]); g_object_notify_by_pspec (object, pspec); } g_mutex_unlock (&skeleton->priv->lock); g_object_thaw_notify (object); } static void goa_account_skeleton_init (GoaAccountSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_account_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_ACCOUNT_SKELETON, GoaAccountSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); skeleton->priv->properties = g_new0 (GValue, 22); g_value_init (&skeleton->priv->properties[0], G_TYPE_STRING); g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING); g_value_init (&skeleton->priv->properties[2], G_TYPE_STRING); g_value_init (&skeleton->priv->properties[3], G_TYPE_STRING); g_value_init (&skeleton->priv->properties[4], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[5], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[6], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[7], G_TYPE_STRING); g_value_init (&skeleton->priv->properties[8], G_TYPE_STRING); g_value_init (&skeleton->priv->properties[9], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[10], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[11], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[12], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[13], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[14], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[15], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[16], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[17], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[18], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[19], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[20], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[21], G_TYPE_BOOLEAN); } static const gchar * goa_account_skeleton_get_provider_type (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[0])); g_mutex_unlock (&skeleton->priv->lock); return value; } static const gchar * goa_account_skeleton_get_provider_name (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[1])); g_mutex_unlock (&skeleton->priv->lock); return value; } static const gchar * goa_account_skeleton_get_provider_icon (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[2])); g_mutex_unlock (&skeleton->priv->lock); return value; } static const gchar * goa_account_skeleton_get_id (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[3])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_account_skeleton_get_is_locked (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[4])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_account_skeleton_get_is_temporary (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[5])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_account_skeleton_get_attention_needed (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[6])); g_mutex_unlock (&skeleton->priv->lock); return value; } static const gchar * goa_account_skeleton_get_identity (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[7])); g_mutex_unlock (&skeleton->priv->lock); return value; } static const gchar * goa_account_skeleton_get_presentation_identity (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[8])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_account_skeleton_get_mail_disabled (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[9])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_account_skeleton_get_calendar_disabled (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[10])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_account_skeleton_get_contacts_disabled (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[11])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_account_skeleton_get_chat_disabled (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[12])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_account_skeleton_get_documents_disabled (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[13])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_account_skeleton_get_maps_disabled (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[14])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_account_skeleton_get_music_disabled (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[15])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_account_skeleton_get_printers_disabled (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[16])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_account_skeleton_get_photos_disabled (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[17])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_account_skeleton_get_files_disabled (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[18])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_account_skeleton_get_ticketing_disabled (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[19])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_account_skeleton_get_todo_disabled (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[20])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_account_skeleton_get_read_later_disabled (GoaAccount *object) { GoaAccountSkeleton *skeleton = GOA_ACCOUNT_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[21])); g_mutex_unlock (&skeleton->priv->lock); return value; } static void goa_account_skeleton_class_init (GoaAccountSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_account_skeleton_finalize; gobject_class->get_property = goa_account_skeleton_get_property; gobject_class->set_property = goa_account_skeleton_set_property; gobject_class->notify = goa_account_skeleton_notify; goa_account_override_properties (gobject_class, 1); skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_account_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_account_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_account_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_account_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaAccountSkeletonPrivate)); #endif } static void goa_account_skeleton_iface_init (GoaAccountIface *iface) { iface->get_provider_type = goa_account_skeleton_get_provider_type; iface->get_provider_name = goa_account_skeleton_get_provider_name; iface->get_provider_icon = goa_account_skeleton_get_provider_icon; iface->get_id = goa_account_skeleton_get_id; iface->get_is_locked = goa_account_skeleton_get_is_locked; iface->get_is_temporary = goa_account_skeleton_get_is_temporary; iface->get_attention_needed = goa_account_skeleton_get_attention_needed; iface->get_identity = goa_account_skeleton_get_identity; iface->get_presentation_identity = goa_account_skeleton_get_presentation_identity; iface->get_mail_disabled = goa_account_skeleton_get_mail_disabled; iface->get_calendar_disabled = goa_account_skeleton_get_calendar_disabled; iface->get_contacts_disabled = goa_account_skeleton_get_contacts_disabled; iface->get_chat_disabled = goa_account_skeleton_get_chat_disabled; iface->get_documents_disabled = goa_account_skeleton_get_documents_disabled; iface->get_maps_disabled = goa_account_skeleton_get_maps_disabled; iface->get_music_disabled = goa_account_skeleton_get_music_disabled; iface->get_printers_disabled = goa_account_skeleton_get_printers_disabled; iface->get_photos_disabled = goa_account_skeleton_get_photos_disabled; iface->get_files_disabled = goa_account_skeleton_get_files_disabled; iface->get_ticketing_disabled = goa_account_skeleton_get_ticketing_disabled; iface->get_todo_disabled = goa_account_skeleton_get_todo_disabled; iface->get_read_later_disabled = goa_account_skeleton_get_read_later_disabled; } /** * goa_account_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.Account. * * Returns: (transfer full) (type GoaAccountSkeleton): The skeleton object. */ GoaAccount * goa_account_skeleton_new (void) { return GOA_ACCOUNT (g_object_new (GOA_TYPE_ACCOUNT_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.OAuth2Based * ------------------------------------------------------------------------ */ /** * SECTION:GoaOAuth2Based * @title: GoaOAuth2Based * @short_description: Generated C code for the org.gnome.OnlineAccounts.OAuth2Based D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.OAuth2Based D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.OAuth2Based ---- */ static const _ExtendedGDBusArgInfo _goa_oauth2_based_method_info_get_access_token_OUT_ARG_access_token = { { -1, (gchar *) "access_token", (gchar *) "s", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _goa_oauth2_based_method_info_get_access_token_OUT_ARG_expires_in = { { -1, (gchar *) "expires_in", (gchar *) "i", NULL }, FALSE }; static const _ExtendedGDBusArgInfo * const _goa_oauth2_based_method_info_get_access_token_OUT_ARG_pointers[] = { &_goa_oauth2_based_method_info_get_access_token_OUT_ARG_access_token, &_goa_oauth2_based_method_info_get_access_token_OUT_ARG_expires_in, NULL }; static const _ExtendedGDBusMethodInfo _goa_oauth2_based_method_info_get_access_token = { { -1, (gchar *) "GetAccessToken", NULL, (GDBusArgInfo **) &_goa_oauth2_based_method_info_get_access_token_OUT_ARG_pointers, NULL }, "handle-get-access-token", FALSE }; static const _ExtendedGDBusMethodInfo * const _goa_oauth2_based_method_info_pointers[] = { &_goa_oauth2_based_method_info_get_access_token, NULL }; static const _ExtendedGDBusPropertyInfo _goa_oauth2_based_property_info_client_id = { { -1, (gchar *) "ClientId", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "client-id", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_oauth2_based_property_info_client_secret = { { -1, (gchar *) "ClientSecret", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "client-secret", FALSE }; static const _ExtendedGDBusPropertyInfo * const _goa_oauth2_based_property_info_pointers[] = { &_goa_oauth2_based_property_info_client_id, &_goa_oauth2_based_property_info_client_secret, NULL }; static const _ExtendedGDBusInterfaceInfo _goa_oauth2_based_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.OAuth2Based", (GDBusMethodInfo **) &_goa_oauth2_based_method_info_pointers, NULL, (GDBusPropertyInfo **) &_goa_oauth2_based_property_info_pointers, NULL }, "oauth2-based", }; /** * goa_oauth2_based_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.OAuth2Based D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. */ GDBusInterfaceInfo * goa_oauth2_based_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_oauth2_based_interface_info.parent_struct; } /** * goa_oauth2_based_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaOAuth2Based interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. */ guint goa_oauth2_based_override_properties (GObjectClass *klass, guint property_id_begin) { g_object_class_override_property (klass, property_id_begin++, "client-id"); g_object_class_override_property (klass, property_id_begin++, "client-secret"); return property_id_begin - 1; } /** * GoaOAuth2Based: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.OAuth2Based. */ /** * GoaOAuth2BasedIface: * @parent_iface: The parent interface. * @handle_get_access_token: Handler for the #GoaOAuth2Based::handle-get-access-token signal. * @get_client_id: Getter for the #GoaOAuth2Based:client-id property. * @get_client_secret: Getter for the #GoaOAuth2Based:client-secret property. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.OAuth2Based. */ typedef GoaOAuth2BasedIface GoaOAuth2BasedInterface; G_DEFINE_INTERFACE (GoaOAuth2Based, goa_oauth2_based, G_TYPE_OBJECT) static void goa_oauth2_based_default_init (GoaOAuth2BasedIface *iface) { /* GObject signals for incoming D-Bus method calls: */ /** * GoaOAuth2Based::handle-get-access-token: * @object: A #GoaOAuth2Based. * @invocation: A #GDBusMethodInvocation. * * Signal emitted when a remote caller is invoking the GetAccessToken() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call goa_oauth2_based_complete_get_access_token() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-get-access-token", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GoaOAuth2BasedIface, handle_get_access_token), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 1, G_TYPE_DBUS_METHOD_INVOCATION); /* GObject properties for D-Bus properties: */ /** * GoaOAuth2Based:client-id: * * Represents the D-Bus property "ClientId". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_string ("client-id", "ClientId", "ClientId", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaOAuth2Based:client-secret: * * Represents the D-Bus property "ClientSecret". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_string ("client-secret", "ClientSecret", "ClientSecret", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } /** * goa_oauth2_based_get_client_id: (skip) * @object: A #GoaOAuth2Based. * * Gets the value of the "ClientId" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_oauth2_based_dup_client_id() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ const gchar * goa_oauth2_based_get_client_id (GoaOAuth2Based *object) { return GOA_OAUTH2_BASED_GET_IFACE (object)->get_client_id (object); } /** * goa_oauth2_based_dup_client_id: (skip) * @object: A #GoaOAuth2Based. * * Gets a copy of the "ClientId" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). */ gchar * goa_oauth2_based_dup_client_id (GoaOAuth2Based *object) { gchar *value; g_object_get (G_OBJECT (object), "client-id", &value, NULL); return value; } /** * goa_oauth2_based_set_client_id: (skip) * @object: A #GoaOAuth2Based. * @value: The value to set. * * Sets the "ClientId" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_oauth2_based_set_client_id (GoaOAuth2Based *object, const gchar *value) { g_object_set (G_OBJECT (object), "client-id", value, NULL); } /** * goa_oauth2_based_get_client_secret: (skip) * @object: A #GoaOAuth2Based. * * Gets the value of the "ClientSecret" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_oauth2_based_dup_client_secret() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ const gchar * goa_oauth2_based_get_client_secret (GoaOAuth2Based *object) { return GOA_OAUTH2_BASED_GET_IFACE (object)->get_client_secret (object); } /** * goa_oauth2_based_dup_client_secret: (skip) * @object: A #GoaOAuth2Based. * * Gets a copy of the "ClientSecret" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). */ gchar * goa_oauth2_based_dup_client_secret (GoaOAuth2Based *object) { gchar *value; g_object_get (G_OBJECT (object), "client-secret", &value, NULL); return value; } /** * goa_oauth2_based_set_client_secret: (skip) * @object: A #GoaOAuth2Based. * @value: The value to set. * * Sets the "ClientSecret" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_oauth2_based_set_client_secret (GoaOAuth2Based *object, const gchar *value) { g_object_set (G_OBJECT (object), "client-secret", value, NULL); } /** * goa_oauth2_based_call_get_access_token: * @proxy: A #GoaOAuth2BasedProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the GetAccessToken() D-Bus method on @proxy. * 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 goa_oauth2_based_call_get_access_token_finish() to get the result of the operation. * * See goa_oauth2_based_call_get_access_token_sync() for the synchronous, blocking version of this method. */ void goa_oauth2_based_call_get_access_token ( GoaOAuth2Based *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "GetAccessToken", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * goa_oauth2_based_call_get_access_token_finish: * @proxy: A #GoaOAuth2BasedProxy. * @out_access_token: (out): Return location for return parameter or %NULL to ignore. * @out_expires_in: (out): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_oauth2_based_call_get_access_token(). * @error: Return location for error or %NULL. * * Finishes an operation started with goa_oauth2_based_call_get_access_token(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean goa_oauth2_based_call_get_access_token_finish ( GoaOAuth2Based *proxy, gchar **out_access_token, gint *out_expires_in, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(si)", out_access_token, out_expires_in); g_variant_unref (_ret); _out: return _ret != NULL; } /** * goa_oauth2_based_call_get_access_token_sync: * @proxy: A #GoaOAuth2BasedProxy. * @out_access_token: (out): Return location for return parameter or %NULL to ignore. * @out_expires_in: (out): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the GetAccessToken() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See goa_oauth2_based_call_get_access_token() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean goa_oauth2_based_call_get_access_token_sync ( GoaOAuth2Based *proxy, gchar **out_access_token, gint *out_expires_in, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "GetAccessToken", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(si)", out_access_token, out_expires_in); g_variant_unref (_ret); _out: return _ret != NULL; } /** * goa_oauth2_based_complete_get_access_token: * @object: A #GoaOAuth2Based. * @invocation: (transfer full): A #GDBusMethodInvocation. * @access_token: Parameter to return. * @expires_in: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the GetAccessToken() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void goa_oauth2_based_complete_get_access_token ( GoaOAuth2Based *object, GDBusMethodInvocation *invocation, const gchar *access_token, gint expires_in) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(si)", access_token, expires_in)); } /* ------------------------------------------------------------------------ */ /** * GoaOAuth2BasedProxy: * * The #GoaOAuth2BasedProxy structure contains only private data and should only be accessed using the provided API. */ /** * GoaOAuth2BasedProxyClass: * @parent_class: The parent class. * * Class structure for #GoaOAuth2BasedProxy. */ struct _GoaOAuth2BasedProxyPrivate { GData *qdata; }; static void goa_oauth2_based_proxy_iface_init (GoaOAuth2BasedIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaOAuth2BasedProxy, goa_oauth2_based_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaOAuth2BasedProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_OAUTH2_BASED, goa_oauth2_based_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaOAuth2BasedProxy, goa_oauth2_based_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_OAUTH2_BASED, goa_oauth2_based_proxy_iface_init)) #endif static void goa_oauth2_based_proxy_finalize (GObject *object) { GoaOAuth2BasedProxy *proxy = GOA_OAUTH2_BASED_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_oauth2_based_proxy_parent_class)->finalize (object); } static void goa_oauth2_based_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = _goa_oauth2_based_property_info_pointers[prop_id - 1]; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name); if (info->use_gvariant) { g_value_set_variant (value, variant); } else { if (variant != NULL) g_dbus_gvariant_to_gvalue (variant, value); } if (variant != NULL) g_variant_unref (variant); } static void goa_oauth2_based_proxy_set_property_cb (GDBusProxy *proxy, GAsyncResult *res, gpointer user_data) { const _ExtendedGDBusPropertyInfo *info = user_data; GError *error; GVariant *_ret; error = NULL; _ret = g_dbus_proxy_call_finish (proxy, res, &error); if (!_ret) { g_warning ("Error setting property '%s' on interface org.gnome.OnlineAccounts.OAuth2Based: %s (%s, %d)", info->parent_struct.name, error->message, g_quark_to_string (error->domain), error->code); g_error_free (error); } else { g_variant_unref (_ret); } } static void goa_oauth2_based_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = _goa_oauth2_based_property_info_pointers[prop_id - 1]; variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature)); g_dbus_proxy_call (G_DBUS_PROXY (object), "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", "org.gnome.OnlineAccounts.OAuth2Based", info->parent_struct.name, variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) goa_oauth2_based_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct); g_variant_unref (variant); } static void goa_oauth2_based_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_oauth2_based_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_OAUTH2_BASED); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_OAUTH2_BASED); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_oauth2_based_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaOAuth2BasedProxy *proxy = GOA_OAUTH2_BASED_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_oauth2_based_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_oauth2_based_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static const gchar * goa_oauth2_based_proxy_get_client_id (GoaOAuth2Based *object) { GoaOAuth2BasedProxy *proxy = GOA_OAUTH2_BASED_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ClientId"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static const gchar * goa_oauth2_based_proxy_get_client_secret (GoaOAuth2Based *object) { GoaOAuth2BasedProxy *proxy = GOA_OAUTH2_BASED_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ClientSecret"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static void goa_oauth2_based_proxy_init (GoaOAuth2BasedProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_oauth2_based_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_OAUTH2_BASED_PROXY, GoaOAuth2BasedProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_oauth2_based_interface_info ()); } static void goa_oauth2_based_proxy_class_init (GoaOAuth2BasedProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_oauth2_based_proxy_finalize; gobject_class->get_property = goa_oauth2_based_proxy_get_property; gobject_class->set_property = goa_oauth2_based_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_oauth2_based_proxy_g_signal; proxy_class->g_properties_changed = goa_oauth2_based_proxy_g_properties_changed; goa_oauth2_based_override_properties (gobject_class, 1); #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaOAuth2BasedProxyPrivate)); #endif } static void goa_oauth2_based_proxy_iface_init (GoaOAuth2BasedIface *iface) { iface->get_client_id = goa_oauth2_based_proxy_get_client_id; iface->get_client_secret = goa_oauth2_based_proxy_get_client_secret; } /** * goa_oauth2_based_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.OAuth2Based. See g_dbus_proxy_new() for more details. * * 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 goa_oauth2_based_proxy_new_finish() to get the result of the operation. * * See goa_oauth2_based_proxy_new_sync() for the synchronous, blocking version of this constructor. */ void goa_oauth2_based_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 (GOA_TYPE_OAUTH2_BASED_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.OnlineAccounts.OAuth2Based", NULL); } /** * goa_oauth2_based_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_oauth2_based_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_oauth2_based_proxy_new(). * * Returns: (transfer full) (type GoaOAuth2BasedProxy): The constructed proxy object or %NULL if @error is set. */ GoaOAuth2Based * goa_oauth2_based_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_OAUTH2_BASED (ret); else return NULL; } /** * goa_oauth2_based_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.OAuth2Based. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_oauth2_based_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaOAuth2BasedProxy): The constructed proxy object or %NULL if @error is set. */ GoaOAuth2Based * goa_oauth2_based_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_OAUTH2_BASED_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.OAuth2Based", NULL); if (ret != NULL) return GOA_OAUTH2_BASED (ret); else return NULL; } /** * goa_oauth2_based_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_oauth2_based_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_oauth2_based_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_oauth2_based_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. */ void goa_oauth2_based_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 (GOA_TYPE_OAUTH2_BASED_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.OnlineAccounts.OAuth2Based", NULL); } /** * goa_oauth2_based_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_oauth2_based_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_oauth2_based_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaOAuth2BasedProxy): The constructed proxy object or %NULL if @error is set. */ GoaOAuth2Based * goa_oauth2_based_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_OAUTH2_BASED (ret); else return NULL; } /** * goa_oauth2_based_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_oauth2_based_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_oauth2_based_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaOAuth2BasedProxy): The constructed proxy object or %NULL if @error is set. */ GoaOAuth2Based * goa_oauth2_based_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_OAUTH2_BASED_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.OAuth2Based", NULL); if (ret != NULL) return GOA_OAUTH2_BASED (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaOAuth2BasedSkeleton: * * The #GoaOAuth2BasedSkeleton structure contains only private data and should only be accessed using the provided API. */ /** * GoaOAuth2BasedSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaOAuth2BasedSkeleton. */ struct _GoaOAuth2BasedSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_oauth2_based_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaOAuth2BasedSkeleton *skeleton = GOA_OAUTH2_BASED_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_OAUTH2_BASED); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_OAUTH2_BASED); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_oauth2_based_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaOAuth2BasedSkeleton *skeleton = GOA_OAUTH2_BASED_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_oauth2_based_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_oauth2_based_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaOAuth2BasedSkeleton *skeleton = GOA_OAUTH2_BASED_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_oauth2_based_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_oauth2_based_skeleton_vtable = { _goa_oauth2_based_skeleton_handle_method_call, _goa_oauth2_based_skeleton_handle_get_property, _goa_oauth2_based_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_oauth2_based_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_oauth2_based_interface_info (); } static GDBusInterfaceVTable * goa_oauth2_based_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_oauth2_based_skeleton_vtable; } static GVariant * goa_oauth2_based_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaOAuth2BasedSkeleton *skeleton = GOA_OAUTH2_BASED_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_oauth2_based_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_oauth2_based_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_oauth2_based_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_oauth2_based_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.OAuth2Based", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static gboolean _goa_oauth2_based_emit_changed (gpointer user_data); static void goa_oauth2_based_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { GoaOAuth2BasedSkeleton *skeleton = GOA_OAUTH2_BASED_SKELETON (_skeleton); gboolean emit_changed = FALSE; g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties_idle_source != NULL) { g_source_destroy (skeleton->priv->changed_properties_idle_source); skeleton->priv->changed_properties_idle_source = NULL; emit_changed = TRUE; } g_mutex_unlock (&skeleton->priv->lock); if (emit_changed) _goa_oauth2_based_emit_changed (skeleton); } static void goa_oauth2_based_skeleton_iface_init (GoaOAuth2BasedIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaOAuth2BasedSkeleton, goa_oauth2_based_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaOAuth2BasedSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_OAUTH2_BASED, goa_oauth2_based_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaOAuth2BasedSkeleton, goa_oauth2_based_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_OAUTH2_BASED, goa_oauth2_based_skeleton_iface_init)) #endif static void goa_oauth2_based_skeleton_finalize (GObject *object) { GoaOAuth2BasedSkeleton *skeleton = GOA_OAUTH2_BASED_SKELETON (object); guint n; for (n = 0; n < 2; n++) g_value_unset (&skeleton->priv->properties[n]); g_free (skeleton->priv->properties); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_oauth2_based_skeleton_parent_class)->finalize (object); } static void goa_oauth2_based_skeleton_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { GoaOAuth2BasedSkeleton *skeleton = GOA_OAUTH2_BASED_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); g_mutex_lock (&skeleton->priv->lock); g_value_copy (&skeleton->priv->properties[prop_id - 1], value); g_mutex_unlock (&skeleton->priv->lock); } static gboolean _goa_oauth2_based_emit_changed (gpointer user_data) { GoaOAuth2BasedSkeleton *skeleton = GOA_OAUTH2_BASED_SKELETON (user_data); GList *l; GVariantBuilder builder; GVariantBuilder invalidated_builder; guint num_changes; g_mutex_lock (&skeleton->priv->lock); g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next) { ChangedProperty *cp = l->data; GVariant *variant; const GValue *cur_value; cur_value = &skeleton->priv->properties[cp->prop_id - 1]; if (!_g_value_equal (cur_value, &cp->orig_value)) { variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature)); g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant); g_variant_unref (variant); num_changes++; } } if (num_changes > 0) { GList *connections, *ll; GVariant *signal_variant; signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.gnome.OnlineAccounts.OAuth2Based", &builder, &invalidated_builder)); connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); for (ll = connections; ll != NULL; ll = ll->next) { GDBusConnection *connection = ll->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", "PropertiesChanged", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } else { g_variant_builder_clear (&builder); g_variant_builder_clear (&invalidated_builder); } g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); skeleton->priv->changed_properties = NULL; skeleton->priv->changed_properties_idle_source = NULL; g_mutex_unlock (&skeleton->priv->lock); return FALSE; } static void _goa_oauth2_based_schedule_emit_changed (GoaOAuth2BasedSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value) { ChangedProperty *cp; GList *l; cp = NULL; for (l = skeleton->priv->changed_properties; l != NULL; l = l->next) { ChangedProperty *i_cp = l->data; if (i_cp->info == info) { cp = i_cp; break; } } if (cp == NULL) { cp = g_new0 (ChangedProperty, 1); cp->prop_id = prop_id; cp->info = info; skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp); g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value)); g_value_copy (orig_value, &cp->orig_value); } } static void goa_oauth2_based_skeleton_notify (GObject *object, GParamSpec *pspec G_GNUC_UNUSED) { GoaOAuth2BasedSkeleton *skeleton = GOA_OAUTH2_BASED_SKELETON (object); g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties != NULL && skeleton->priv->changed_properties_idle_source == NULL) { skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _goa_oauth2_based_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _goa_oauth2_based_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } g_mutex_unlock (&skeleton->priv->lock); } static void goa_oauth2_based_skeleton_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GoaOAuth2BasedSkeleton *skeleton = GOA_OAUTH2_BASED_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); g_mutex_lock (&skeleton->priv->lock); g_object_freeze_notify (object); if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1])) { if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL) _goa_oauth2_based_schedule_emit_changed (skeleton, _goa_oauth2_based_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]); g_value_copy (value, &skeleton->priv->properties[prop_id - 1]); g_object_notify_by_pspec (object, pspec); } g_mutex_unlock (&skeleton->priv->lock); g_object_thaw_notify (object); } static void goa_oauth2_based_skeleton_init (GoaOAuth2BasedSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_oauth2_based_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_OAUTH2_BASED_SKELETON, GoaOAuth2BasedSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); skeleton->priv->properties = g_new0 (GValue, 2); g_value_init (&skeleton->priv->properties[0], G_TYPE_STRING); g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING); } static const gchar * goa_oauth2_based_skeleton_get_client_id (GoaOAuth2Based *object) { GoaOAuth2BasedSkeleton *skeleton = GOA_OAUTH2_BASED_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[0])); g_mutex_unlock (&skeleton->priv->lock); return value; } static const gchar * goa_oauth2_based_skeleton_get_client_secret (GoaOAuth2Based *object) { GoaOAuth2BasedSkeleton *skeleton = GOA_OAUTH2_BASED_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[1])); g_mutex_unlock (&skeleton->priv->lock); return value; } static void goa_oauth2_based_skeleton_class_init (GoaOAuth2BasedSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_oauth2_based_skeleton_finalize; gobject_class->get_property = goa_oauth2_based_skeleton_get_property; gobject_class->set_property = goa_oauth2_based_skeleton_set_property; gobject_class->notify = goa_oauth2_based_skeleton_notify; goa_oauth2_based_override_properties (gobject_class, 1); skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_oauth2_based_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_oauth2_based_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_oauth2_based_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_oauth2_based_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaOAuth2BasedSkeletonPrivate)); #endif } static void goa_oauth2_based_skeleton_iface_init (GoaOAuth2BasedIface *iface) { iface->get_client_id = goa_oauth2_based_skeleton_get_client_id; iface->get_client_secret = goa_oauth2_based_skeleton_get_client_secret; } /** * goa_oauth2_based_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.OAuth2Based. * * Returns: (transfer full) (type GoaOAuth2BasedSkeleton): The skeleton object. */ GoaOAuth2Based * goa_oauth2_based_skeleton_new (void) { return GOA_OAUTH2_BASED (g_object_new (GOA_TYPE_OAUTH2_BASED_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.OAuthBased * ------------------------------------------------------------------------ */ /** * SECTION:GoaOAuthBased * @title: GoaOAuthBased * @short_description: Generated C code for the org.gnome.OnlineAccounts.OAuthBased D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.OAuthBased D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.OAuthBased ---- */ static const _ExtendedGDBusArgInfo _goa_oauth_based_method_info_get_access_token_OUT_ARG_access_token = { { -1, (gchar *) "access_token", (gchar *) "s", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _goa_oauth_based_method_info_get_access_token_OUT_ARG_access_token_secret = { { -1, (gchar *) "access_token_secret", (gchar *) "s", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _goa_oauth_based_method_info_get_access_token_OUT_ARG_expires_in = { { -1, (gchar *) "expires_in", (gchar *) "i", NULL }, FALSE }; static const _ExtendedGDBusArgInfo * const _goa_oauth_based_method_info_get_access_token_OUT_ARG_pointers[] = { &_goa_oauth_based_method_info_get_access_token_OUT_ARG_access_token, &_goa_oauth_based_method_info_get_access_token_OUT_ARG_access_token_secret, &_goa_oauth_based_method_info_get_access_token_OUT_ARG_expires_in, NULL }; static const _ExtendedGDBusMethodInfo _goa_oauth_based_method_info_get_access_token = { { -1, (gchar *) "GetAccessToken", NULL, (GDBusArgInfo **) &_goa_oauth_based_method_info_get_access_token_OUT_ARG_pointers, NULL }, "handle-get-access-token", FALSE }; static const _ExtendedGDBusMethodInfo * const _goa_oauth_based_method_info_pointers[] = { &_goa_oauth_based_method_info_get_access_token, NULL }; static const _ExtendedGDBusPropertyInfo _goa_oauth_based_property_info_consumer_key = { { -1, (gchar *) "ConsumerKey", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "consumer-key", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_oauth_based_property_info_consumer_secret = { { -1, (gchar *) "ConsumerSecret", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "consumer-secret", FALSE }; static const _ExtendedGDBusPropertyInfo * const _goa_oauth_based_property_info_pointers[] = { &_goa_oauth_based_property_info_consumer_key, &_goa_oauth_based_property_info_consumer_secret, NULL }; static const _ExtendedGDBusInterfaceInfo _goa_oauth_based_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.OAuthBased", (GDBusMethodInfo **) &_goa_oauth_based_method_info_pointers, NULL, (GDBusPropertyInfo **) &_goa_oauth_based_property_info_pointers, NULL }, "oauth-based", }; /** * goa_oauth_based_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.OAuthBased D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. */ GDBusInterfaceInfo * goa_oauth_based_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_oauth_based_interface_info.parent_struct; } /** * goa_oauth_based_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaOAuthBased interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. */ guint goa_oauth_based_override_properties (GObjectClass *klass, guint property_id_begin) { g_object_class_override_property (klass, property_id_begin++, "consumer-key"); g_object_class_override_property (klass, property_id_begin++, "consumer-secret"); return property_id_begin - 1; } /** * GoaOAuthBased: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.OAuthBased. */ /** * GoaOAuthBasedIface: * @parent_iface: The parent interface. * @handle_get_access_token: Handler for the #GoaOAuthBased::handle-get-access-token signal. * @get_consumer_key: Getter for the #GoaOAuthBased:consumer-key property. * @get_consumer_secret: Getter for the #GoaOAuthBased:consumer-secret property. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.OAuthBased. */ typedef GoaOAuthBasedIface GoaOAuthBasedInterface; G_DEFINE_INTERFACE (GoaOAuthBased, goa_oauth_based, G_TYPE_OBJECT) static void goa_oauth_based_default_init (GoaOAuthBasedIface *iface) { /* GObject signals for incoming D-Bus method calls: */ /** * GoaOAuthBased::handle-get-access-token: * @object: A #GoaOAuthBased. * @invocation: A #GDBusMethodInvocation. * * Signal emitted when a remote caller is invoking the GetAccessToken() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call goa_oauth_based_complete_get_access_token() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-get-access-token", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GoaOAuthBasedIface, handle_get_access_token), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 1, G_TYPE_DBUS_METHOD_INVOCATION); /* GObject properties for D-Bus properties: */ /** * GoaOAuthBased:consumer-key: * * Represents the D-Bus property "ConsumerKey". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_string ("consumer-key", "ConsumerKey", "ConsumerKey", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaOAuthBased:consumer-secret: * * Represents the D-Bus property "ConsumerSecret". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_string ("consumer-secret", "ConsumerSecret", "ConsumerSecret", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } /** * goa_oauth_based_get_consumer_key: (skip) * @object: A #GoaOAuthBased. * * Gets the value of the "ConsumerKey" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_oauth_based_dup_consumer_key() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ const gchar * goa_oauth_based_get_consumer_key (GoaOAuthBased *object) { return GOA_OAUTH_BASED_GET_IFACE (object)->get_consumer_key (object); } /** * goa_oauth_based_dup_consumer_key: (skip) * @object: A #GoaOAuthBased. * * Gets a copy of the "ConsumerKey" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). */ gchar * goa_oauth_based_dup_consumer_key (GoaOAuthBased *object) { gchar *value; g_object_get (G_OBJECT (object), "consumer-key", &value, NULL); return value; } /** * goa_oauth_based_set_consumer_key: (skip) * @object: A #GoaOAuthBased. * @value: The value to set. * * Sets the "ConsumerKey" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_oauth_based_set_consumer_key (GoaOAuthBased *object, const gchar *value) { g_object_set (G_OBJECT (object), "consumer-key", value, NULL); } /** * goa_oauth_based_get_consumer_secret: (skip) * @object: A #GoaOAuthBased. * * Gets the value of the "ConsumerSecret" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_oauth_based_dup_consumer_secret() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ const gchar * goa_oauth_based_get_consumer_secret (GoaOAuthBased *object) { return GOA_OAUTH_BASED_GET_IFACE (object)->get_consumer_secret (object); } /** * goa_oauth_based_dup_consumer_secret: (skip) * @object: A #GoaOAuthBased. * * Gets a copy of the "ConsumerSecret" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). */ gchar * goa_oauth_based_dup_consumer_secret (GoaOAuthBased *object) { gchar *value; g_object_get (G_OBJECT (object), "consumer-secret", &value, NULL); return value; } /** * goa_oauth_based_set_consumer_secret: (skip) * @object: A #GoaOAuthBased. * @value: The value to set. * * Sets the "ConsumerSecret" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_oauth_based_set_consumer_secret (GoaOAuthBased *object, const gchar *value) { g_object_set (G_OBJECT (object), "consumer-secret", value, NULL); } /** * goa_oauth_based_call_get_access_token: * @proxy: A #GoaOAuthBasedProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the GetAccessToken() D-Bus method on @proxy. * 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 goa_oauth_based_call_get_access_token_finish() to get the result of the operation. * * See goa_oauth_based_call_get_access_token_sync() for the synchronous, blocking version of this method. */ void goa_oauth_based_call_get_access_token ( GoaOAuthBased *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "GetAccessToken", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * goa_oauth_based_call_get_access_token_finish: * @proxy: A #GoaOAuthBasedProxy. * @out_access_token: (out): Return location for return parameter or %NULL to ignore. * @out_access_token_secret: (out): Return location for return parameter or %NULL to ignore. * @out_expires_in: (out): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_oauth_based_call_get_access_token(). * @error: Return location for error or %NULL. * * Finishes an operation started with goa_oauth_based_call_get_access_token(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean goa_oauth_based_call_get_access_token_finish ( GoaOAuthBased *proxy, gchar **out_access_token, gchar **out_access_token_secret, gint *out_expires_in, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(ssi)", out_access_token, out_access_token_secret, out_expires_in); g_variant_unref (_ret); _out: return _ret != NULL; } /** * goa_oauth_based_call_get_access_token_sync: * @proxy: A #GoaOAuthBasedProxy. * @out_access_token: (out): Return location for return parameter or %NULL to ignore. * @out_access_token_secret: (out): Return location for return parameter or %NULL to ignore. * @out_expires_in: (out): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the GetAccessToken() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See goa_oauth_based_call_get_access_token() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean goa_oauth_based_call_get_access_token_sync ( GoaOAuthBased *proxy, gchar **out_access_token, gchar **out_access_token_secret, gint *out_expires_in, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "GetAccessToken", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(ssi)", out_access_token, out_access_token_secret, out_expires_in); g_variant_unref (_ret); _out: return _ret != NULL; } /** * goa_oauth_based_complete_get_access_token: * @object: A #GoaOAuthBased. * @invocation: (transfer full): A #GDBusMethodInvocation. * @access_token: Parameter to return. * @access_token_secret: Parameter to return. * @expires_in: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the GetAccessToken() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void goa_oauth_based_complete_get_access_token ( GoaOAuthBased *object, GDBusMethodInvocation *invocation, const gchar *access_token, const gchar *access_token_secret, gint expires_in) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(ssi)", access_token, access_token_secret, expires_in)); } /* ------------------------------------------------------------------------ */ /** * GoaOAuthBasedProxy: * * The #GoaOAuthBasedProxy structure contains only private data and should only be accessed using the provided API. */ /** * GoaOAuthBasedProxyClass: * @parent_class: The parent class. * * Class structure for #GoaOAuthBasedProxy. */ struct _GoaOAuthBasedProxyPrivate { GData *qdata; }; static void goa_oauth_based_proxy_iface_init (GoaOAuthBasedIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaOAuthBasedProxy, goa_oauth_based_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaOAuthBasedProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_OAUTH_BASED, goa_oauth_based_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaOAuthBasedProxy, goa_oauth_based_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_OAUTH_BASED, goa_oauth_based_proxy_iface_init)) #endif static void goa_oauth_based_proxy_finalize (GObject *object) { GoaOAuthBasedProxy *proxy = GOA_OAUTH_BASED_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_oauth_based_proxy_parent_class)->finalize (object); } static void goa_oauth_based_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = _goa_oauth_based_property_info_pointers[prop_id - 1]; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name); if (info->use_gvariant) { g_value_set_variant (value, variant); } else { if (variant != NULL) g_dbus_gvariant_to_gvalue (variant, value); } if (variant != NULL) g_variant_unref (variant); } static void goa_oauth_based_proxy_set_property_cb (GDBusProxy *proxy, GAsyncResult *res, gpointer user_data) { const _ExtendedGDBusPropertyInfo *info = user_data; GError *error; GVariant *_ret; error = NULL; _ret = g_dbus_proxy_call_finish (proxy, res, &error); if (!_ret) { g_warning ("Error setting property '%s' on interface org.gnome.OnlineAccounts.OAuthBased: %s (%s, %d)", info->parent_struct.name, error->message, g_quark_to_string (error->domain), error->code); g_error_free (error); } else { g_variant_unref (_ret); } } static void goa_oauth_based_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = _goa_oauth_based_property_info_pointers[prop_id - 1]; variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature)); g_dbus_proxy_call (G_DBUS_PROXY (object), "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", "org.gnome.OnlineAccounts.OAuthBased", info->parent_struct.name, variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) goa_oauth_based_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct); g_variant_unref (variant); } static void goa_oauth_based_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_oauth_based_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_OAUTH_BASED); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_OAUTH_BASED); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_oauth_based_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaOAuthBasedProxy *proxy = GOA_OAUTH_BASED_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_oauth_based_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_oauth_based_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static const gchar * goa_oauth_based_proxy_get_consumer_key (GoaOAuthBased *object) { GoaOAuthBasedProxy *proxy = GOA_OAUTH_BASED_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ConsumerKey"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static const gchar * goa_oauth_based_proxy_get_consumer_secret (GoaOAuthBased *object) { GoaOAuthBasedProxy *proxy = GOA_OAUTH_BASED_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ConsumerSecret"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static void goa_oauth_based_proxy_init (GoaOAuthBasedProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_oauth_based_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_OAUTH_BASED_PROXY, GoaOAuthBasedProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_oauth_based_interface_info ()); } static void goa_oauth_based_proxy_class_init (GoaOAuthBasedProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_oauth_based_proxy_finalize; gobject_class->get_property = goa_oauth_based_proxy_get_property; gobject_class->set_property = goa_oauth_based_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_oauth_based_proxy_g_signal; proxy_class->g_properties_changed = goa_oauth_based_proxy_g_properties_changed; goa_oauth_based_override_properties (gobject_class, 1); #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaOAuthBasedProxyPrivate)); #endif } static void goa_oauth_based_proxy_iface_init (GoaOAuthBasedIface *iface) { iface->get_consumer_key = goa_oauth_based_proxy_get_consumer_key; iface->get_consumer_secret = goa_oauth_based_proxy_get_consumer_secret; } /** * goa_oauth_based_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.OAuthBased. See g_dbus_proxy_new() for more details. * * 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 goa_oauth_based_proxy_new_finish() to get the result of the operation. * * See goa_oauth_based_proxy_new_sync() for the synchronous, blocking version of this constructor. */ void goa_oauth_based_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 (GOA_TYPE_OAUTH_BASED_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.OnlineAccounts.OAuthBased", NULL); } /** * goa_oauth_based_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_oauth_based_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_oauth_based_proxy_new(). * * Returns: (transfer full) (type GoaOAuthBasedProxy): The constructed proxy object or %NULL if @error is set. */ GoaOAuthBased * goa_oauth_based_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_OAUTH_BASED (ret); else return NULL; } /** * goa_oauth_based_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.OAuthBased. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_oauth_based_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaOAuthBasedProxy): The constructed proxy object or %NULL if @error is set. */ GoaOAuthBased * goa_oauth_based_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_OAUTH_BASED_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.OAuthBased", NULL); if (ret != NULL) return GOA_OAUTH_BASED (ret); else return NULL; } /** * goa_oauth_based_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_oauth_based_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_oauth_based_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_oauth_based_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. */ void goa_oauth_based_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 (GOA_TYPE_OAUTH_BASED_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.OnlineAccounts.OAuthBased", NULL); } /** * goa_oauth_based_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_oauth_based_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_oauth_based_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaOAuthBasedProxy): The constructed proxy object or %NULL if @error is set. */ GoaOAuthBased * goa_oauth_based_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_OAUTH_BASED (ret); else return NULL; } /** * goa_oauth_based_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_oauth_based_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_oauth_based_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaOAuthBasedProxy): The constructed proxy object or %NULL if @error is set. */ GoaOAuthBased * goa_oauth_based_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_OAUTH_BASED_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.OAuthBased", NULL); if (ret != NULL) return GOA_OAUTH_BASED (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaOAuthBasedSkeleton: * * The #GoaOAuthBasedSkeleton structure contains only private data and should only be accessed using the provided API. */ /** * GoaOAuthBasedSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaOAuthBasedSkeleton. */ struct _GoaOAuthBasedSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_oauth_based_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaOAuthBasedSkeleton *skeleton = GOA_OAUTH_BASED_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_OAUTH_BASED); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_OAUTH_BASED); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_oauth_based_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaOAuthBasedSkeleton *skeleton = GOA_OAUTH_BASED_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_oauth_based_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_oauth_based_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaOAuthBasedSkeleton *skeleton = GOA_OAUTH_BASED_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_oauth_based_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_oauth_based_skeleton_vtable = { _goa_oauth_based_skeleton_handle_method_call, _goa_oauth_based_skeleton_handle_get_property, _goa_oauth_based_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_oauth_based_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_oauth_based_interface_info (); } static GDBusInterfaceVTable * goa_oauth_based_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_oauth_based_skeleton_vtable; } static GVariant * goa_oauth_based_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaOAuthBasedSkeleton *skeleton = GOA_OAUTH_BASED_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_oauth_based_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_oauth_based_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_oauth_based_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_oauth_based_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.OAuthBased", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static gboolean _goa_oauth_based_emit_changed (gpointer user_data); static void goa_oauth_based_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { GoaOAuthBasedSkeleton *skeleton = GOA_OAUTH_BASED_SKELETON (_skeleton); gboolean emit_changed = FALSE; g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties_idle_source != NULL) { g_source_destroy (skeleton->priv->changed_properties_idle_source); skeleton->priv->changed_properties_idle_source = NULL; emit_changed = TRUE; } g_mutex_unlock (&skeleton->priv->lock); if (emit_changed) _goa_oauth_based_emit_changed (skeleton); } static void goa_oauth_based_skeleton_iface_init (GoaOAuthBasedIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaOAuthBasedSkeleton, goa_oauth_based_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaOAuthBasedSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_OAUTH_BASED, goa_oauth_based_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaOAuthBasedSkeleton, goa_oauth_based_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_OAUTH_BASED, goa_oauth_based_skeleton_iface_init)) #endif static void goa_oauth_based_skeleton_finalize (GObject *object) { GoaOAuthBasedSkeleton *skeleton = GOA_OAUTH_BASED_SKELETON (object); guint n; for (n = 0; n < 2; n++) g_value_unset (&skeleton->priv->properties[n]); g_free (skeleton->priv->properties); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_oauth_based_skeleton_parent_class)->finalize (object); } static void goa_oauth_based_skeleton_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { GoaOAuthBasedSkeleton *skeleton = GOA_OAUTH_BASED_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); g_mutex_lock (&skeleton->priv->lock); g_value_copy (&skeleton->priv->properties[prop_id - 1], value); g_mutex_unlock (&skeleton->priv->lock); } static gboolean _goa_oauth_based_emit_changed (gpointer user_data) { GoaOAuthBasedSkeleton *skeleton = GOA_OAUTH_BASED_SKELETON (user_data); GList *l; GVariantBuilder builder; GVariantBuilder invalidated_builder; guint num_changes; g_mutex_lock (&skeleton->priv->lock); g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next) { ChangedProperty *cp = l->data; GVariant *variant; const GValue *cur_value; cur_value = &skeleton->priv->properties[cp->prop_id - 1]; if (!_g_value_equal (cur_value, &cp->orig_value)) { variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature)); g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant); g_variant_unref (variant); num_changes++; } } if (num_changes > 0) { GList *connections, *ll; GVariant *signal_variant; signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.gnome.OnlineAccounts.OAuthBased", &builder, &invalidated_builder)); connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); for (ll = connections; ll != NULL; ll = ll->next) { GDBusConnection *connection = ll->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", "PropertiesChanged", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } else { g_variant_builder_clear (&builder); g_variant_builder_clear (&invalidated_builder); } g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); skeleton->priv->changed_properties = NULL; skeleton->priv->changed_properties_idle_source = NULL; g_mutex_unlock (&skeleton->priv->lock); return FALSE; } static void _goa_oauth_based_schedule_emit_changed (GoaOAuthBasedSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value) { ChangedProperty *cp; GList *l; cp = NULL; for (l = skeleton->priv->changed_properties; l != NULL; l = l->next) { ChangedProperty *i_cp = l->data; if (i_cp->info == info) { cp = i_cp; break; } } if (cp == NULL) { cp = g_new0 (ChangedProperty, 1); cp->prop_id = prop_id; cp->info = info; skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp); g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value)); g_value_copy (orig_value, &cp->orig_value); } } static void goa_oauth_based_skeleton_notify (GObject *object, GParamSpec *pspec G_GNUC_UNUSED) { GoaOAuthBasedSkeleton *skeleton = GOA_OAUTH_BASED_SKELETON (object); g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties != NULL && skeleton->priv->changed_properties_idle_source == NULL) { skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _goa_oauth_based_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _goa_oauth_based_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } g_mutex_unlock (&skeleton->priv->lock); } static void goa_oauth_based_skeleton_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GoaOAuthBasedSkeleton *skeleton = GOA_OAUTH_BASED_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); g_mutex_lock (&skeleton->priv->lock); g_object_freeze_notify (object); if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1])) { if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL) _goa_oauth_based_schedule_emit_changed (skeleton, _goa_oauth_based_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]); g_value_copy (value, &skeleton->priv->properties[prop_id - 1]); g_object_notify_by_pspec (object, pspec); } g_mutex_unlock (&skeleton->priv->lock); g_object_thaw_notify (object); } static void goa_oauth_based_skeleton_init (GoaOAuthBasedSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_oauth_based_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_OAUTH_BASED_SKELETON, GoaOAuthBasedSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); skeleton->priv->properties = g_new0 (GValue, 2); g_value_init (&skeleton->priv->properties[0], G_TYPE_STRING); g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING); } static const gchar * goa_oauth_based_skeleton_get_consumer_key (GoaOAuthBased *object) { GoaOAuthBasedSkeleton *skeleton = GOA_OAUTH_BASED_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[0])); g_mutex_unlock (&skeleton->priv->lock); return value; } static const gchar * goa_oauth_based_skeleton_get_consumer_secret (GoaOAuthBased *object) { GoaOAuthBasedSkeleton *skeleton = GOA_OAUTH_BASED_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[1])); g_mutex_unlock (&skeleton->priv->lock); return value; } static void goa_oauth_based_skeleton_class_init (GoaOAuthBasedSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_oauth_based_skeleton_finalize; gobject_class->get_property = goa_oauth_based_skeleton_get_property; gobject_class->set_property = goa_oauth_based_skeleton_set_property; gobject_class->notify = goa_oauth_based_skeleton_notify; goa_oauth_based_override_properties (gobject_class, 1); skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_oauth_based_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_oauth_based_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_oauth_based_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_oauth_based_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaOAuthBasedSkeletonPrivate)); #endif } static void goa_oauth_based_skeleton_iface_init (GoaOAuthBasedIface *iface) { iface->get_consumer_key = goa_oauth_based_skeleton_get_consumer_key; iface->get_consumer_secret = goa_oauth_based_skeleton_get_consumer_secret; } /** * goa_oauth_based_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.OAuthBased. * * Returns: (transfer full) (type GoaOAuthBasedSkeleton): The skeleton object. */ GoaOAuthBased * goa_oauth_based_skeleton_new (void) { return GOA_OAUTH_BASED (g_object_new (GOA_TYPE_OAUTH_BASED_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.PasswordBased * ------------------------------------------------------------------------ */ /** * SECTION:GoaPasswordBased * @title: GoaPasswordBased * @short_description: Generated C code for the org.gnome.OnlineAccounts.PasswordBased D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.PasswordBased D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.PasswordBased ---- */ static const _ExtendedGDBusArgInfo _goa_password_based_method_info_get_password_IN_ARG_id = { { -1, (gchar *) "id", (gchar *) "s", NULL }, FALSE }; static const _ExtendedGDBusArgInfo * const _goa_password_based_method_info_get_password_IN_ARG_pointers[] = { &_goa_password_based_method_info_get_password_IN_ARG_id, NULL }; static const _ExtendedGDBusArgInfo _goa_password_based_method_info_get_password_OUT_ARG_password = { { -1, (gchar *) "password", (gchar *) "s", NULL }, FALSE }; static const _ExtendedGDBusArgInfo * const _goa_password_based_method_info_get_password_OUT_ARG_pointers[] = { &_goa_password_based_method_info_get_password_OUT_ARG_password, NULL }; static const _ExtendedGDBusMethodInfo _goa_password_based_method_info_get_password = { { -1, (gchar *) "GetPassword", (GDBusArgInfo **) &_goa_password_based_method_info_get_password_IN_ARG_pointers, (GDBusArgInfo **) &_goa_password_based_method_info_get_password_OUT_ARG_pointers, NULL }, "handle-get-password", FALSE }; static const _ExtendedGDBusMethodInfo * const _goa_password_based_method_info_pointers[] = { &_goa_password_based_method_info_get_password, NULL }; static const _ExtendedGDBusInterfaceInfo _goa_password_based_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.PasswordBased", (GDBusMethodInfo **) &_goa_password_based_method_info_pointers, NULL, NULL, NULL }, "password-based", }; /** * goa_password_based_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.PasswordBased D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. * * Since: 3.6.0 */ GDBusInterfaceInfo * goa_password_based_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_password_based_interface_info.parent_struct; } /** * goa_password_based_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaPasswordBased interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. * * Since: 3.6.0 */ guint goa_password_based_override_properties (GObjectClass *klass, guint property_id_begin) { return property_id_begin - 1; } /** * GoaPasswordBased: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.PasswordBased. * * Since: 3.6.0 */ /** * GoaPasswordBasedIface: * @parent_iface: The parent interface. * @handle_get_password: Handler for the #GoaPasswordBased::handle-get-password signal. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.PasswordBased. * * Since: 3.6.0 */ typedef GoaPasswordBasedIface GoaPasswordBasedInterface; G_DEFINE_INTERFACE (GoaPasswordBased, goa_password_based, G_TYPE_OBJECT) static void goa_password_based_default_init (GoaPasswordBasedIface *iface) { /* GObject signals for incoming D-Bus method calls: */ /** * GoaPasswordBased::handle-get-password: * @object: A #GoaPasswordBased. * @invocation: A #GDBusMethodInvocation. * @arg_id: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the GetPassword() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call goa_password_based_complete_get_password() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. * * Since: 3.6.0 */ g_signal_new ("handle-get-password", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GoaPasswordBasedIface, handle_get_password), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); } /** * goa_password_based_call_get_password: * @proxy: A #GoaPasswordBasedProxy. * @arg_id: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the GetPassword() D-Bus method on @proxy. * 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 goa_password_based_call_get_password_finish() to get the result of the operation. * * See goa_password_based_call_get_password_sync() for the synchronous, blocking version of this method. * * Since: 3.6.0 */ void goa_password_based_call_get_password ( GoaPasswordBased *proxy, const gchar *arg_id, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "GetPassword", g_variant_new ("(s)", arg_id), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * goa_password_based_call_get_password_finish: * @proxy: A #GoaPasswordBasedProxy. * @out_password: (out): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_password_based_call_get_password(). * @error: Return location for error or %NULL. * * Finishes an operation started with goa_password_based_call_get_password(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. * * Since: 3.6.0 */ gboolean goa_password_based_call_get_password_finish ( GoaPasswordBased *proxy, gchar **out_password, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(s)", out_password); g_variant_unref (_ret); _out: return _ret != NULL; } /** * goa_password_based_call_get_password_sync: * @proxy: A #GoaPasswordBasedProxy. * @arg_id: Argument to pass with the method invocation. * @out_password: (out): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the GetPassword() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See goa_password_based_call_get_password() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. * * Since: 3.6.0 */ gboolean goa_password_based_call_get_password_sync ( GoaPasswordBased *proxy, const gchar *arg_id, gchar **out_password, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "GetPassword", g_variant_new ("(s)", arg_id), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(s)", out_password); g_variant_unref (_ret); _out: return _ret != NULL; } /** * goa_password_based_complete_get_password: * @object: A #GoaPasswordBased. * @invocation: (transfer full): A #GDBusMethodInvocation. * @password: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the GetPassword() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. * * Since: 3.6.0 */ void goa_password_based_complete_get_password ( GoaPasswordBased *object, GDBusMethodInvocation *invocation, const gchar *password) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(s)", password)); } /* ------------------------------------------------------------------------ */ /** * GoaPasswordBasedProxy: * * The #GoaPasswordBasedProxy structure contains only private data and should only be accessed using the provided API. * * Since: 3.6.0 */ /** * GoaPasswordBasedProxyClass: * @parent_class: The parent class. * * Class structure for #GoaPasswordBasedProxy. * * Since: 3.6.0 */ struct _GoaPasswordBasedProxyPrivate { GData *qdata; }; static void goa_password_based_proxy_iface_init (GoaPasswordBasedIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaPasswordBasedProxy, goa_password_based_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaPasswordBasedProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_PASSWORD_BASED, goa_password_based_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaPasswordBasedProxy, goa_password_based_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_PASSWORD_BASED, goa_password_based_proxy_iface_init)) #endif static void goa_password_based_proxy_finalize (GObject *object) { GoaPasswordBasedProxy *proxy = GOA_PASSWORD_BASED_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_password_based_proxy_parent_class)->finalize (object); } static void goa_password_based_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_password_based_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_password_based_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_password_based_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_PASSWORD_BASED); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_PASSWORD_BASED); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_password_based_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaPasswordBasedProxy *proxy = GOA_PASSWORD_BASED_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_password_based_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_password_based_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static void goa_password_based_proxy_init (GoaPasswordBasedProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_password_based_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_PASSWORD_BASED_PROXY, GoaPasswordBasedProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_password_based_interface_info ()); } static void goa_password_based_proxy_class_init (GoaPasswordBasedProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_password_based_proxy_finalize; gobject_class->get_property = goa_password_based_proxy_get_property; gobject_class->set_property = goa_password_based_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_password_based_proxy_g_signal; proxy_class->g_properties_changed = goa_password_based_proxy_g_properties_changed; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaPasswordBasedProxyPrivate)); #endif } static void goa_password_based_proxy_iface_init (GoaPasswordBasedIface *iface) { } /** * goa_password_based_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.PasswordBased. See g_dbus_proxy_new() for more details. * * 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 goa_password_based_proxy_new_finish() to get the result of the operation. * * See goa_password_based_proxy_new_sync() for the synchronous, blocking version of this constructor. * * Since: 3.6.0 */ void goa_password_based_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 (GOA_TYPE_PASSWORD_BASED_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.OnlineAccounts.PasswordBased", NULL); } /** * goa_password_based_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_password_based_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_password_based_proxy_new(). * * Returns: (transfer full) (type GoaPasswordBasedProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.6.0 */ GoaPasswordBased * goa_password_based_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_PASSWORD_BASED (ret); else return NULL; } /** * goa_password_based_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.PasswordBased. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_password_based_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaPasswordBasedProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.6.0 */ GoaPasswordBased * goa_password_based_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_PASSWORD_BASED_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.PasswordBased", NULL); if (ret != NULL) return GOA_PASSWORD_BASED (ret); else return NULL; } /** * goa_password_based_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_password_based_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_password_based_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_password_based_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. * * Since: 3.6.0 */ void goa_password_based_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 (GOA_TYPE_PASSWORD_BASED_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.OnlineAccounts.PasswordBased", NULL); } /** * goa_password_based_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_password_based_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_password_based_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaPasswordBasedProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.6.0 */ GoaPasswordBased * goa_password_based_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_PASSWORD_BASED (ret); else return NULL; } /** * goa_password_based_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_password_based_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_password_based_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaPasswordBasedProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.6.0 */ GoaPasswordBased * goa_password_based_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_PASSWORD_BASED_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.PasswordBased", NULL); if (ret != NULL) return GOA_PASSWORD_BASED (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaPasswordBasedSkeleton: * * The #GoaPasswordBasedSkeleton structure contains only private data and should only be accessed using the provided API. * * Since: 3.6.0 */ /** * GoaPasswordBasedSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaPasswordBasedSkeleton. * * Since: 3.6.0 */ struct _GoaPasswordBasedSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_password_based_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaPasswordBasedSkeleton *skeleton = GOA_PASSWORD_BASED_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_PASSWORD_BASED); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_PASSWORD_BASED); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_password_based_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaPasswordBasedSkeleton *skeleton = GOA_PASSWORD_BASED_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_password_based_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_password_based_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaPasswordBasedSkeleton *skeleton = GOA_PASSWORD_BASED_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_password_based_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_password_based_skeleton_vtable = { _goa_password_based_skeleton_handle_method_call, _goa_password_based_skeleton_handle_get_property, _goa_password_based_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_password_based_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_password_based_interface_info (); } static GDBusInterfaceVTable * goa_password_based_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_password_based_skeleton_vtable; } static GVariant * goa_password_based_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaPasswordBasedSkeleton *skeleton = GOA_PASSWORD_BASED_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_password_based_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_password_based_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_password_based_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_password_based_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.PasswordBased", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static void goa_password_based_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { } static void goa_password_based_skeleton_iface_init (GoaPasswordBasedIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaPasswordBasedSkeleton, goa_password_based_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaPasswordBasedSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_PASSWORD_BASED, goa_password_based_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaPasswordBasedSkeleton, goa_password_based_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_PASSWORD_BASED, goa_password_based_skeleton_iface_init)) #endif static void goa_password_based_skeleton_finalize (GObject *object) { GoaPasswordBasedSkeleton *skeleton = GOA_PASSWORD_BASED_SKELETON (object); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_password_based_skeleton_parent_class)->finalize (object); } static void goa_password_based_skeleton_init (GoaPasswordBasedSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_password_based_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_PASSWORD_BASED_SKELETON, GoaPasswordBasedSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); } static void goa_password_based_skeleton_class_init (GoaPasswordBasedSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_password_based_skeleton_finalize; skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_password_based_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_password_based_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_password_based_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_password_based_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaPasswordBasedSkeletonPrivate)); #endif } static void goa_password_based_skeleton_iface_init (GoaPasswordBasedIface *iface) { } /** * goa_password_based_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.PasswordBased. * * Returns: (transfer full) (type GoaPasswordBasedSkeleton): The skeleton object. * * Since: 3.6.0 */ GoaPasswordBased * goa_password_based_skeleton_new (void) { return GOA_PASSWORD_BASED (g_object_new (GOA_TYPE_PASSWORD_BASED_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.Manager * ------------------------------------------------------------------------ */ /** * SECTION:GoaManager * @title: GoaManager * @short_description: Generated C code for the org.gnome.OnlineAccounts.Manager D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.Manager D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.Manager ---- */ static const _ExtendedGDBusArgInfo _goa_manager_method_info_add_account_IN_ARG_provider = { { -1, (gchar *) "provider", (gchar *) "s", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _goa_manager_method_info_add_account_IN_ARG_identity = { { -1, (gchar *) "identity", (gchar *) "s", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _goa_manager_method_info_add_account_IN_ARG_presentation_identity = { { -1, (gchar *) "presentation_identity", (gchar *) "s", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _goa_manager_method_info_add_account_IN_ARG_credentials = { { -1, (gchar *) "credentials", (gchar *) "a{sv}", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _goa_manager_method_info_add_account_IN_ARG_details = { { -1, (gchar *) "details", (gchar *) "a{ss}", NULL }, FALSE }; static const _ExtendedGDBusArgInfo * const _goa_manager_method_info_add_account_IN_ARG_pointers[] = { &_goa_manager_method_info_add_account_IN_ARG_provider, &_goa_manager_method_info_add_account_IN_ARG_identity, &_goa_manager_method_info_add_account_IN_ARG_presentation_identity, &_goa_manager_method_info_add_account_IN_ARG_credentials, &_goa_manager_method_info_add_account_IN_ARG_details, NULL }; static const _ExtendedGDBusArgInfo _goa_manager_method_info_add_account_OUT_ARG_account_object_path = { { -1, (gchar *) "account_object_path", (gchar *) "o", NULL }, FALSE }; static const _ExtendedGDBusArgInfo * const _goa_manager_method_info_add_account_OUT_ARG_pointers[] = { &_goa_manager_method_info_add_account_OUT_ARG_account_object_path, NULL }; static const _ExtendedGDBusMethodInfo _goa_manager_method_info_add_account = { { -1, (gchar *) "AddAccount", (GDBusArgInfo **) &_goa_manager_method_info_add_account_IN_ARG_pointers, (GDBusArgInfo **) &_goa_manager_method_info_add_account_OUT_ARG_pointers, NULL }, "handle-add-account", FALSE }; static const _ExtendedGDBusMethodInfo * const _goa_manager_method_info_pointers[] = { &_goa_manager_method_info_add_account, NULL }; static const _ExtendedGDBusInterfaceInfo _goa_manager_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.Manager", (GDBusMethodInfo **) &_goa_manager_method_info_pointers, NULL, NULL, NULL }, "manager", }; /** * goa_manager_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.Manager D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. */ GDBusInterfaceInfo * goa_manager_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_manager_interface_info.parent_struct; } /** * goa_manager_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaManager interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. */ guint goa_manager_override_properties (GObjectClass *klass, guint property_id_begin) { return property_id_begin - 1; } /** * GoaManager: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.Manager. */ /** * GoaManagerIface: * @parent_iface: The parent interface. * @handle_add_account: Handler for the #GoaManager::handle-add-account signal. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.Manager. */ typedef GoaManagerIface GoaManagerInterface; G_DEFINE_INTERFACE (GoaManager, goa_manager, G_TYPE_OBJECT) static void goa_manager_default_init (GoaManagerIface *iface) { /* GObject signals for incoming D-Bus method calls: */ /** * GoaManager::handle-add-account: * @object: A #GoaManager. * @invocation: A #GDBusMethodInvocation. * @arg_provider: Argument passed by remote caller. * @arg_identity: Argument passed by remote caller. * @arg_presentation_identity: Argument passed by remote caller. * @arg_credentials: Argument passed by remote caller. * @arg_details: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the AddAccount() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call goa_manager_complete_add_account() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-add-account", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GoaManagerIface, handle_add_account), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 6, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_VARIANT, G_TYPE_VARIANT); } /** * goa_manager_call_add_account: * @proxy: A #GoaManagerProxy. * @arg_provider: Argument to pass with the method invocation. * @arg_identity: Argument to pass with the method invocation. * @arg_presentation_identity: Argument to pass with the method invocation. * @arg_credentials: Argument to pass with the method invocation. * @arg_details: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the AddAccount() D-Bus method on @proxy. * 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 goa_manager_call_add_account_finish() to get the result of the operation. * * See goa_manager_call_add_account_sync() for the synchronous, blocking version of this method. */ void goa_manager_call_add_account ( GoaManager *proxy, const gchar *arg_provider, const gchar *arg_identity, const gchar *arg_presentation_identity, GVariant *arg_credentials, GVariant *arg_details, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "AddAccount", g_variant_new ("(sss@a{sv}@a{ss})", arg_provider, arg_identity, arg_presentation_identity, arg_credentials, arg_details), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * goa_manager_call_add_account_finish: * @proxy: A #GoaManagerProxy. * @out_account_object_path: (out): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_manager_call_add_account(). * @error: Return location for error or %NULL. * * Finishes an operation started with goa_manager_call_add_account(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean goa_manager_call_add_account_finish ( GoaManager *proxy, gchar **out_account_object_path, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(o)", out_account_object_path); g_variant_unref (_ret); _out: return _ret != NULL; } /** * goa_manager_call_add_account_sync: * @proxy: A #GoaManagerProxy. * @arg_provider: Argument to pass with the method invocation. * @arg_identity: Argument to pass with the method invocation. * @arg_presentation_identity: Argument to pass with the method invocation. * @arg_credentials: Argument to pass with the method invocation. * @arg_details: Argument to pass with the method invocation. * @out_account_object_path: (out): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the AddAccount() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See goa_manager_call_add_account() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean goa_manager_call_add_account_sync ( GoaManager *proxy, const gchar *arg_provider, const gchar *arg_identity, const gchar *arg_presentation_identity, GVariant *arg_credentials, GVariant *arg_details, gchar **out_account_object_path, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "AddAccount", g_variant_new ("(sss@a{sv}@a{ss})", arg_provider, arg_identity, arg_presentation_identity, arg_credentials, arg_details), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(o)", out_account_object_path); g_variant_unref (_ret); _out: return _ret != NULL; } /** * goa_manager_complete_add_account: * @object: A #GoaManager. * @invocation: (transfer full): A #GDBusMethodInvocation. * @account_object_path: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the AddAccount() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void goa_manager_complete_add_account ( GoaManager *object, GDBusMethodInvocation *invocation, const gchar *account_object_path) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(o)", account_object_path)); } /* ------------------------------------------------------------------------ */ /** * GoaManagerProxy: * * The #GoaManagerProxy structure contains only private data and should only be accessed using the provided API. */ /** * GoaManagerProxyClass: * @parent_class: The parent class. * * Class structure for #GoaManagerProxy. */ struct _GoaManagerProxyPrivate { GData *qdata; }; static void goa_manager_proxy_iface_init (GoaManagerIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaManagerProxy, goa_manager_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaManagerProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_MANAGER, goa_manager_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaManagerProxy, goa_manager_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_MANAGER, goa_manager_proxy_iface_init)) #endif static void goa_manager_proxy_finalize (GObject *object) { GoaManagerProxy *proxy = GOA_MANAGER_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_manager_proxy_parent_class)->finalize (object); } static void goa_manager_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_manager_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_manager_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_manager_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_MANAGER); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_MANAGER); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_manager_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaManagerProxy *proxy = GOA_MANAGER_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_manager_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_manager_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static void goa_manager_proxy_init (GoaManagerProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_manager_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_MANAGER_PROXY, GoaManagerProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_manager_interface_info ()); } static void goa_manager_proxy_class_init (GoaManagerProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_manager_proxy_finalize; gobject_class->get_property = goa_manager_proxy_get_property; gobject_class->set_property = goa_manager_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_manager_proxy_g_signal; proxy_class->g_properties_changed = goa_manager_proxy_g_properties_changed; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaManagerProxyPrivate)); #endif } static void goa_manager_proxy_iface_init (GoaManagerIface *iface) { } /** * goa_manager_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Manager. See g_dbus_proxy_new() for more details. * * 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 goa_manager_proxy_new_finish() to get the result of the operation. * * See goa_manager_proxy_new_sync() for the synchronous, blocking version of this constructor. */ void goa_manager_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 (GOA_TYPE_MANAGER_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.OnlineAccounts.Manager", NULL); } /** * goa_manager_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_manager_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_manager_proxy_new(). * * Returns: (transfer full) (type GoaManagerProxy): The constructed proxy object or %NULL if @error is set. */ GoaManager * goa_manager_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_MANAGER (ret); else return NULL; } /** * goa_manager_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Manager. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_manager_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaManagerProxy): The constructed proxy object or %NULL if @error is set. */ GoaManager * goa_manager_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_MANAGER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Manager", NULL); if (ret != NULL) return GOA_MANAGER (ret); else return NULL; } /** * goa_manager_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_manager_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_manager_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_manager_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. */ void goa_manager_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 (GOA_TYPE_MANAGER_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.OnlineAccounts.Manager", NULL); } /** * goa_manager_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_manager_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_manager_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaManagerProxy): The constructed proxy object or %NULL if @error is set. */ GoaManager * goa_manager_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_MANAGER (ret); else return NULL; } /** * goa_manager_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_manager_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_manager_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaManagerProxy): The constructed proxy object or %NULL if @error is set. */ GoaManager * goa_manager_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_MANAGER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Manager", NULL); if (ret != NULL) return GOA_MANAGER (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaManagerSkeleton: * * The #GoaManagerSkeleton structure contains only private data and should only be accessed using the provided API. */ /** * GoaManagerSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaManagerSkeleton. */ struct _GoaManagerSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_manager_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaManagerSkeleton *skeleton = GOA_MANAGER_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_MANAGER); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_MANAGER); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_manager_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaManagerSkeleton *skeleton = GOA_MANAGER_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_manager_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_manager_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaManagerSkeleton *skeleton = GOA_MANAGER_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_manager_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_manager_skeleton_vtable = { _goa_manager_skeleton_handle_method_call, _goa_manager_skeleton_handle_get_property, _goa_manager_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_manager_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_manager_interface_info (); } static GDBusInterfaceVTable * goa_manager_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_manager_skeleton_vtable; } static GVariant * goa_manager_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaManagerSkeleton *skeleton = GOA_MANAGER_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_manager_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_manager_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_manager_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_manager_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.Manager", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static void goa_manager_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { } static void goa_manager_skeleton_iface_init (GoaManagerIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaManagerSkeleton, goa_manager_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaManagerSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_MANAGER, goa_manager_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaManagerSkeleton, goa_manager_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_MANAGER, goa_manager_skeleton_iface_init)) #endif static void goa_manager_skeleton_finalize (GObject *object) { GoaManagerSkeleton *skeleton = GOA_MANAGER_SKELETON (object); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_manager_skeleton_parent_class)->finalize (object); } static void goa_manager_skeleton_init (GoaManagerSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_manager_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_MANAGER_SKELETON, GoaManagerSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); } static void goa_manager_skeleton_class_init (GoaManagerSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_manager_skeleton_finalize; skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_manager_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_manager_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_manager_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_manager_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaManagerSkeletonPrivate)); #endif } static void goa_manager_skeleton_iface_init (GoaManagerIface *iface) { } /** * goa_manager_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.Manager. * * Returns: (transfer full) (type GoaManagerSkeleton): The skeleton object. */ GoaManager * goa_manager_skeleton_new (void) { return GOA_MANAGER (g_object_new (GOA_TYPE_MANAGER_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.Mail * ------------------------------------------------------------------------ */ /** * SECTION:GoaMail * @title: GoaMail * @short_description: Generated C code for the org.gnome.OnlineAccounts.Mail D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.Mail D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.Mail ---- */ static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_email_address = { { -1, (gchar *) "EmailAddress", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "email-address", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_name = { { -1, (gchar *) "Name", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "name", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_imap_supported = { { -1, (gchar *) "ImapSupported", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "imap-supported", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_imap_accept_ssl_errors = { { -1, (gchar *) "ImapAcceptSslErrors", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "imap-accept-ssl-errors", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_imap_host = { { -1, (gchar *) "ImapHost", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "imap-host", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_imap_use_ssl = { { -1, (gchar *) "ImapUseSsl", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "imap-use-ssl", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_imap_use_tls = { { -1, (gchar *) "ImapUseTls", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "imap-use-tls", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_imap_user_name = { { -1, (gchar *) "ImapUserName", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "imap-user-name", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_smtp_supported = { { -1, (gchar *) "SmtpSupported", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "smtp-supported", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_smtp_accept_ssl_errors = { { -1, (gchar *) "SmtpAcceptSslErrors", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "smtp-accept-ssl-errors", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_smtp_host = { { -1, (gchar *) "SmtpHost", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "smtp-host", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_smtp_use_auth = { { -1, (gchar *) "SmtpUseAuth", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "smtp-use-auth", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_smtp_auth_login = { { -1, (gchar *) "SmtpAuthLogin", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "smtp-auth-login", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_smtp_auth_plain = { { -1, (gchar *) "SmtpAuthPlain", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "smtp-auth-plain", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_smtp_auth_xoauth2 = { { -1, (gchar *) "SmtpAuthXoauth2", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "smtp-auth-xoauth2", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_smtp_use_ssl = { { -1, (gchar *) "SmtpUseSsl", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "smtp-use-ssl", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_smtp_use_tls = { { -1, (gchar *) "SmtpUseTls", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "smtp-use-tls", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_mail_property_info_smtp_user_name = { { -1, (gchar *) "SmtpUserName", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "smtp-user-name", FALSE }; static const _ExtendedGDBusPropertyInfo * const _goa_mail_property_info_pointers[] = { &_goa_mail_property_info_email_address, &_goa_mail_property_info_name, &_goa_mail_property_info_imap_supported, &_goa_mail_property_info_imap_accept_ssl_errors, &_goa_mail_property_info_imap_host, &_goa_mail_property_info_imap_use_ssl, &_goa_mail_property_info_imap_use_tls, &_goa_mail_property_info_imap_user_name, &_goa_mail_property_info_smtp_supported, &_goa_mail_property_info_smtp_accept_ssl_errors, &_goa_mail_property_info_smtp_host, &_goa_mail_property_info_smtp_use_auth, &_goa_mail_property_info_smtp_auth_login, &_goa_mail_property_info_smtp_auth_plain, &_goa_mail_property_info_smtp_auth_xoauth2, &_goa_mail_property_info_smtp_use_ssl, &_goa_mail_property_info_smtp_use_tls, &_goa_mail_property_info_smtp_user_name, NULL }; static const _ExtendedGDBusInterfaceInfo _goa_mail_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.Mail", NULL, NULL, (GDBusPropertyInfo **) &_goa_mail_property_info_pointers, NULL }, "mail", }; /** * goa_mail_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.Mail D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. */ GDBusInterfaceInfo * goa_mail_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_mail_interface_info.parent_struct; } /** * goa_mail_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaMail interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. */ guint goa_mail_override_properties (GObjectClass *klass, guint property_id_begin) { g_object_class_override_property (klass, property_id_begin++, "email-address"); g_object_class_override_property (klass, property_id_begin++, "name"); g_object_class_override_property (klass, property_id_begin++, "imap-supported"); g_object_class_override_property (klass, property_id_begin++, "imap-accept-ssl-errors"); g_object_class_override_property (klass, property_id_begin++, "imap-host"); g_object_class_override_property (klass, property_id_begin++, "imap-use-ssl"); g_object_class_override_property (klass, property_id_begin++, "imap-use-tls"); g_object_class_override_property (klass, property_id_begin++, "imap-user-name"); g_object_class_override_property (klass, property_id_begin++, "smtp-supported"); g_object_class_override_property (klass, property_id_begin++, "smtp-accept-ssl-errors"); g_object_class_override_property (klass, property_id_begin++, "smtp-host"); g_object_class_override_property (klass, property_id_begin++, "smtp-use-auth"); g_object_class_override_property (klass, property_id_begin++, "smtp-auth-login"); g_object_class_override_property (klass, property_id_begin++, "smtp-auth-plain"); g_object_class_override_property (klass, property_id_begin++, "smtp-auth-xoauth2"); g_object_class_override_property (klass, property_id_begin++, "smtp-use-ssl"); g_object_class_override_property (klass, property_id_begin++, "smtp-use-tls"); g_object_class_override_property (klass, property_id_begin++, "smtp-user-name"); return property_id_begin - 1; } /** * GoaMail: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.Mail. */ /** * GoaMailIface: * @parent_iface: The parent interface. * @get_email_address: Getter for the #GoaMail:email-address property. * @get_imap_host: Getter for the #GoaMail:imap-host property. * @get_imap_supported: Getter for the #GoaMail:imap-supported property. * @get_imap_use_tls: Getter for the #GoaMail:imap-use-tls property. * @get_imap_user_name: Getter for the #GoaMail:imap-user-name property. * @get_smtp_host: Getter for the #GoaMail:smtp-host property. * @get_smtp_supported: Getter for the #GoaMail:smtp-supported property. * @get_smtp_use_tls: Getter for the #GoaMail:smtp-use-tls property. * @get_smtp_user_name: Getter for the #GoaMail:smtp-user-name property. * @get_imap_accept_ssl_errors: Getter for the #GoaMail:imap-accept-ssl-errors property. * @get_imap_use_ssl: Getter for the #GoaMail:imap-use-ssl property. * @get_name: Getter for the #GoaMail:name property. * @get_smtp_accept_ssl_errors: Getter for the #GoaMail:smtp-accept-ssl-errors property. * @get_smtp_use_auth: Getter for the #GoaMail:smtp-use-auth property. * @get_smtp_use_ssl: Getter for the #GoaMail:smtp-use-ssl property. * @get_smtp_auth_login: Getter for the #GoaMail:smtp-auth-login property. * @get_smtp_auth_plain: Getter for the #GoaMail:smtp-auth-plain property. * @get_smtp_auth_xoauth2: Getter for the #GoaMail:smtp-auth-xoauth2 property. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.Mail. */ typedef GoaMailIface GoaMailInterface; G_DEFINE_INTERFACE (GoaMail, goa_mail, G_TYPE_OBJECT) static void goa_mail_default_init (GoaMailIface *iface) { /* GObject properties for D-Bus properties: */ /** * GoaMail:email-address: * * Represents the D-Bus property "EmailAddress". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_string ("email-address", "EmailAddress", "EmailAddress", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMail:name: * * Represents the D-Bus property "Name". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.8.0 */ g_object_interface_install_property (iface, g_param_spec_string ("name", "Name", "Name", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMail:imap-supported: * * Represents the D-Bus property "ImapSupported". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_boolean ("imap-supported", "ImapSupported", "ImapSupported", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMail:imap-accept-ssl-errors: * * Represents the D-Bus property "ImapAcceptSslErrors". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.8.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("imap-accept-ssl-errors", "ImapAcceptSslErrors", "ImapAcceptSslErrors", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMail:imap-host: * * Represents the D-Bus property "ImapHost". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_string ("imap-host", "ImapHost", "ImapHost", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMail:imap-use-ssl: * * Represents the D-Bus property "ImapUseSsl". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.8.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("imap-use-ssl", "ImapUseSsl", "ImapUseSsl", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMail:imap-use-tls: * * Represents the D-Bus property "ImapUseTls". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_boolean ("imap-use-tls", "ImapUseTls", "ImapUseTls", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMail:imap-user-name: * * Represents the D-Bus property "ImapUserName". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_string ("imap-user-name", "ImapUserName", "ImapUserName", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMail:smtp-supported: * * Represents the D-Bus property "SmtpSupported". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_boolean ("smtp-supported", "SmtpSupported", "SmtpSupported", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMail:smtp-accept-ssl-errors: * * Represents the D-Bus property "SmtpAcceptSslErrors". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.8.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("smtp-accept-ssl-errors", "SmtpAcceptSslErrors", "SmtpAcceptSslErrors", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMail:smtp-host: * * Represents the D-Bus property "SmtpHost". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_string ("smtp-host", "SmtpHost", "SmtpHost", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMail:smtp-use-auth: * * Represents the D-Bus property "SmtpUseAuth". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.8.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("smtp-use-auth", "SmtpUseAuth", "SmtpUseAuth", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMail:smtp-auth-login: * * Represents the D-Bus property "SmtpAuthLogin". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.12.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("smtp-auth-login", "SmtpAuthLogin", "SmtpAuthLogin", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMail:smtp-auth-plain: * * Represents the D-Bus property "SmtpAuthPlain". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.12.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("smtp-auth-plain", "SmtpAuthPlain", "SmtpAuthPlain", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMail:smtp-auth-xoauth2: * * Represents the D-Bus property "SmtpAuthXoauth2". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.12.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("smtp-auth-xoauth2", "SmtpAuthXoauth2", "SmtpAuthXoauth2", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMail:smtp-use-ssl: * * Represents the D-Bus property "SmtpUseSsl". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.8.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("smtp-use-ssl", "SmtpUseSsl", "SmtpUseSsl", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMail:smtp-use-tls: * * Represents the D-Bus property "SmtpUseTls". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_boolean ("smtp-use-tls", "SmtpUseTls", "SmtpUseTls", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMail:smtp-user-name: * * Represents the D-Bus property "SmtpUserName". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_string ("smtp-user-name", "SmtpUserName", "SmtpUserName", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } /** * goa_mail_get_email_address: (skip) * @object: A #GoaMail. * * Gets the value of the "EmailAddress" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_mail_dup_email_address() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ const gchar * goa_mail_get_email_address (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_email_address (object); } /** * goa_mail_dup_email_address: (skip) * @object: A #GoaMail. * * Gets a copy of the "EmailAddress" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). */ gchar * goa_mail_dup_email_address (GoaMail *object) { gchar *value; g_object_get (G_OBJECT (object), "email-address", &value, NULL); return value; } /** * goa_mail_set_email_address: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "EmailAddress" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_mail_set_email_address (GoaMail *object, const gchar *value) { g_object_set (G_OBJECT (object), "email-address", value, NULL); } /** * goa_mail_get_name: (skip) * @object: A #GoaMail. * * Gets the value of the "Name" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_mail_dup_name() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. * * Since: 3.8.0 */ const gchar * goa_mail_get_name (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_name (object); } /** * goa_mail_dup_name: (skip) * @object: A #GoaMail. * * Gets a copy of the "Name" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). * * Since: 3.8.0 */ gchar * goa_mail_dup_name (GoaMail *object) { gchar *value; g_object_get (G_OBJECT (object), "name", &value, NULL); return value; } /** * goa_mail_set_name: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "Name" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.8.0 */ void goa_mail_set_name (GoaMail *object, const gchar *value) { g_object_set (G_OBJECT (object), "name", value, NULL); } /** * goa_mail_get_imap_supported: (skip) * @object: A #GoaMail. * * Gets the value of the "ImapSupported" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. */ gboolean goa_mail_get_imap_supported (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_imap_supported (object); } /** * goa_mail_set_imap_supported: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "ImapSupported" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_mail_set_imap_supported (GoaMail *object, gboolean value) { g_object_set (G_OBJECT (object), "imap-supported", value, NULL); } /** * goa_mail_get_imap_accept_ssl_errors: (skip) * @object: A #GoaMail. * * Gets the value of the "ImapAcceptSslErrors" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.8.0 */ gboolean goa_mail_get_imap_accept_ssl_errors (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_imap_accept_ssl_errors (object); } /** * goa_mail_set_imap_accept_ssl_errors: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "ImapAcceptSslErrors" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.8.0 */ void goa_mail_set_imap_accept_ssl_errors (GoaMail *object, gboolean value) { g_object_set (G_OBJECT (object), "imap-accept-ssl-errors", value, NULL); } /** * goa_mail_get_imap_host: (skip) * @object: A #GoaMail. * * Gets the value of the "ImapHost" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_mail_dup_imap_host() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ const gchar * goa_mail_get_imap_host (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_imap_host (object); } /** * goa_mail_dup_imap_host: (skip) * @object: A #GoaMail. * * Gets a copy of the "ImapHost" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). */ gchar * goa_mail_dup_imap_host (GoaMail *object) { gchar *value; g_object_get (G_OBJECT (object), "imap-host", &value, NULL); return value; } /** * goa_mail_set_imap_host: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "ImapHost" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_mail_set_imap_host (GoaMail *object, const gchar *value) { g_object_set (G_OBJECT (object), "imap-host", value, NULL); } /** * goa_mail_get_imap_use_ssl: (skip) * @object: A #GoaMail. * * Gets the value of the "ImapUseSsl" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.8.0 */ gboolean goa_mail_get_imap_use_ssl (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_imap_use_ssl (object); } /** * goa_mail_set_imap_use_ssl: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "ImapUseSsl" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.8.0 */ void goa_mail_set_imap_use_ssl (GoaMail *object, gboolean value) { g_object_set (G_OBJECT (object), "imap-use-ssl", value, NULL); } /** * goa_mail_get_imap_use_tls: (skip) * @object: A #GoaMail. * * Gets the value of the "ImapUseTls" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. */ gboolean goa_mail_get_imap_use_tls (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_imap_use_tls (object); } /** * goa_mail_set_imap_use_tls: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "ImapUseTls" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_mail_set_imap_use_tls (GoaMail *object, gboolean value) { g_object_set (G_OBJECT (object), "imap-use-tls", value, NULL); } /** * goa_mail_get_imap_user_name: (skip) * @object: A #GoaMail. * * Gets the value of the "ImapUserName" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_mail_dup_imap_user_name() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ const gchar * goa_mail_get_imap_user_name (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_imap_user_name (object); } /** * goa_mail_dup_imap_user_name: (skip) * @object: A #GoaMail. * * Gets a copy of the "ImapUserName" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). */ gchar * goa_mail_dup_imap_user_name (GoaMail *object) { gchar *value; g_object_get (G_OBJECT (object), "imap-user-name", &value, NULL); return value; } /** * goa_mail_set_imap_user_name: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "ImapUserName" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_mail_set_imap_user_name (GoaMail *object, const gchar *value) { g_object_set (G_OBJECT (object), "imap-user-name", value, NULL); } /** * goa_mail_get_smtp_supported: (skip) * @object: A #GoaMail. * * Gets the value of the "SmtpSupported" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. */ gboolean goa_mail_get_smtp_supported (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_smtp_supported (object); } /** * goa_mail_set_smtp_supported: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "SmtpSupported" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_mail_set_smtp_supported (GoaMail *object, gboolean value) { g_object_set (G_OBJECT (object), "smtp-supported", value, NULL); } /** * goa_mail_get_smtp_accept_ssl_errors: (skip) * @object: A #GoaMail. * * Gets the value of the "SmtpAcceptSslErrors" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.8.0 */ gboolean goa_mail_get_smtp_accept_ssl_errors (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_smtp_accept_ssl_errors (object); } /** * goa_mail_set_smtp_accept_ssl_errors: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "SmtpAcceptSslErrors" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.8.0 */ void goa_mail_set_smtp_accept_ssl_errors (GoaMail *object, gboolean value) { g_object_set (G_OBJECT (object), "smtp-accept-ssl-errors", value, NULL); } /** * goa_mail_get_smtp_host: (skip) * @object: A #GoaMail. * * Gets the value of the "SmtpHost" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_mail_dup_smtp_host() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ const gchar * goa_mail_get_smtp_host (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_smtp_host (object); } /** * goa_mail_dup_smtp_host: (skip) * @object: A #GoaMail. * * Gets a copy of the "SmtpHost" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). */ gchar * goa_mail_dup_smtp_host (GoaMail *object) { gchar *value; g_object_get (G_OBJECT (object), "smtp-host", &value, NULL); return value; } /** * goa_mail_set_smtp_host: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "SmtpHost" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_mail_set_smtp_host (GoaMail *object, const gchar *value) { g_object_set (G_OBJECT (object), "smtp-host", value, NULL); } /** * goa_mail_get_smtp_use_auth: (skip) * @object: A #GoaMail. * * Gets the value of the "SmtpUseAuth" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.8.0 */ gboolean goa_mail_get_smtp_use_auth (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_smtp_use_auth (object); } /** * goa_mail_set_smtp_use_auth: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "SmtpUseAuth" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.8.0 */ void goa_mail_set_smtp_use_auth (GoaMail *object, gboolean value) { g_object_set (G_OBJECT (object), "smtp-use-auth", value, NULL); } /** * goa_mail_get_smtp_auth_login: (skip) * @object: A #GoaMail. * * Gets the value of the "SmtpAuthLogin" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.12.0 */ gboolean goa_mail_get_smtp_auth_login (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_smtp_auth_login (object); } /** * goa_mail_set_smtp_auth_login: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "SmtpAuthLogin" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.12.0 */ void goa_mail_set_smtp_auth_login (GoaMail *object, gboolean value) { g_object_set (G_OBJECT (object), "smtp-auth-login", value, NULL); } /** * goa_mail_get_smtp_auth_plain: (skip) * @object: A #GoaMail. * * Gets the value of the "SmtpAuthPlain" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.12.0 */ gboolean goa_mail_get_smtp_auth_plain (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_smtp_auth_plain (object); } /** * goa_mail_set_smtp_auth_plain: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "SmtpAuthPlain" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.12.0 */ void goa_mail_set_smtp_auth_plain (GoaMail *object, gboolean value) { g_object_set (G_OBJECT (object), "smtp-auth-plain", value, NULL); } /** * goa_mail_get_smtp_auth_xoauth2: (skip) * @object: A #GoaMail. * * Gets the value of the "SmtpAuthXoauth2" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.12.0 */ gboolean goa_mail_get_smtp_auth_xoauth2 (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_smtp_auth_xoauth2 (object); } /** * goa_mail_set_smtp_auth_xoauth2: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "SmtpAuthXoauth2" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.12.0 */ void goa_mail_set_smtp_auth_xoauth2 (GoaMail *object, gboolean value) { g_object_set (G_OBJECT (object), "smtp-auth-xoauth2", value, NULL); } /** * goa_mail_get_smtp_use_ssl: (skip) * @object: A #GoaMail. * * Gets the value of the "SmtpUseSsl" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.8.0 */ gboolean goa_mail_get_smtp_use_ssl (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_smtp_use_ssl (object); } /** * goa_mail_set_smtp_use_ssl: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "SmtpUseSsl" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.8.0 */ void goa_mail_set_smtp_use_ssl (GoaMail *object, gboolean value) { g_object_set (G_OBJECT (object), "smtp-use-ssl", value, NULL); } /** * goa_mail_get_smtp_use_tls: (skip) * @object: A #GoaMail. * * Gets the value of the "SmtpUseTls" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. */ gboolean goa_mail_get_smtp_use_tls (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_smtp_use_tls (object); } /** * goa_mail_set_smtp_use_tls: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "SmtpUseTls" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_mail_set_smtp_use_tls (GoaMail *object, gboolean value) { g_object_set (G_OBJECT (object), "smtp-use-tls", value, NULL); } /** * goa_mail_get_smtp_user_name: (skip) * @object: A #GoaMail. * * Gets the value of the "SmtpUserName" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_mail_dup_smtp_user_name() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ const gchar * goa_mail_get_smtp_user_name (GoaMail *object) { return GOA_MAIL_GET_IFACE (object)->get_smtp_user_name (object); } /** * goa_mail_dup_smtp_user_name: (skip) * @object: A #GoaMail. * * Gets a copy of the "SmtpUserName" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). */ gchar * goa_mail_dup_smtp_user_name (GoaMail *object) { gchar *value; g_object_get (G_OBJECT (object), "smtp-user-name", &value, NULL); return value; } /** * goa_mail_set_smtp_user_name: (skip) * @object: A #GoaMail. * @value: The value to set. * * Sets the "SmtpUserName" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. */ void goa_mail_set_smtp_user_name (GoaMail *object, const gchar *value) { g_object_set (G_OBJECT (object), "smtp-user-name", value, NULL); } /* ------------------------------------------------------------------------ */ /** * GoaMailProxy: * * The #GoaMailProxy structure contains only private data and should only be accessed using the provided API. */ /** * GoaMailProxyClass: * @parent_class: The parent class. * * Class structure for #GoaMailProxy. */ struct _GoaMailProxyPrivate { GData *qdata; }; static void goa_mail_proxy_iface_init (GoaMailIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaMailProxy, goa_mail_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaMailProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_MAIL, goa_mail_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaMailProxy, goa_mail_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_MAIL, goa_mail_proxy_iface_init)) #endif static void goa_mail_proxy_finalize (GObject *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_mail_proxy_parent_class)->finalize (object); } static void goa_mail_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 18); info = _goa_mail_property_info_pointers[prop_id - 1]; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name); if (info->use_gvariant) { g_value_set_variant (value, variant); } else { if (variant != NULL) g_dbus_gvariant_to_gvalue (variant, value); } if (variant != NULL) g_variant_unref (variant); } static void goa_mail_proxy_set_property_cb (GDBusProxy *proxy, GAsyncResult *res, gpointer user_data) { const _ExtendedGDBusPropertyInfo *info = user_data; GError *error; GVariant *_ret; error = NULL; _ret = g_dbus_proxy_call_finish (proxy, res, &error); if (!_ret) { g_warning ("Error setting property '%s' on interface org.gnome.OnlineAccounts.Mail: %s (%s, %d)", info->parent_struct.name, error->message, g_quark_to_string (error->domain), error->code); g_error_free (error); } else { g_variant_unref (_ret); } } static void goa_mail_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 18); info = _goa_mail_property_info_pointers[prop_id - 1]; variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature)); g_dbus_proxy_call (G_DBUS_PROXY (object), "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", "org.gnome.OnlineAccounts.Mail", info->parent_struct.name, variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) goa_mail_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct); g_variant_unref (variant); } static void goa_mail_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_mail_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_MAIL); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_MAIL); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_mail_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaMailProxy *proxy = GOA_MAIL_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_mail_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_mail_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static const gchar * goa_mail_proxy_get_email_address (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "EmailAddress"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static const gchar * goa_mail_proxy_get_name (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Name"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static gboolean goa_mail_proxy_get_imap_supported (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ImapSupported"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_mail_proxy_get_imap_accept_ssl_errors (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ImapAcceptSslErrors"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static const gchar * goa_mail_proxy_get_imap_host (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ImapHost"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static gboolean goa_mail_proxy_get_imap_use_ssl (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ImapUseSsl"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_mail_proxy_get_imap_use_tls (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ImapUseTls"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static const gchar * goa_mail_proxy_get_imap_user_name (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ImapUserName"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static gboolean goa_mail_proxy_get_smtp_supported (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "SmtpSupported"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_mail_proxy_get_smtp_accept_ssl_errors (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "SmtpAcceptSslErrors"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static const gchar * goa_mail_proxy_get_smtp_host (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "SmtpHost"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static gboolean goa_mail_proxy_get_smtp_use_auth (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "SmtpUseAuth"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_mail_proxy_get_smtp_auth_login (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "SmtpAuthLogin"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_mail_proxy_get_smtp_auth_plain (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "SmtpAuthPlain"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_mail_proxy_get_smtp_auth_xoauth2 (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "SmtpAuthXoauth2"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_mail_proxy_get_smtp_use_ssl (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "SmtpUseSsl"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static gboolean goa_mail_proxy_get_smtp_use_tls (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "SmtpUseTls"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static const gchar * goa_mail_proxy_get_smtp_user_name (GoaMail *object) { GoaMailProxy *proxy = GOA_MAIL_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "SmtpUserName"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static void goa_mail_proxy_init (GoaMailProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_mail_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_MAIL_PROXY, GoaMailProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_mail_interface_info ()); } static void goa_mail_proxy_class_init (GoaMailProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_mail_proxy_finalize; gobject_class->get_property = goa_mail_proxy_get_property; gobject_class->set_property = goa_mail_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_mail_proxy_g_signal; proxy_class->g_properties_changed = goa_mail_proxy_g_properties_changed; goa_mail_override_properties (gobject_class, 1); #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaMailProxyPrivate)); #endif } static void goa_mail_proxy_iface_init (GoaMailIface *iface) { iface->get_email_address = goa_mail_proxy_get_email_address; iface->get_name = goa_mail_proxy_get_name; iface->get_imap_supported = goa_mail_proxy_get_imap_supported; iface->get_imap_accept_ssl_errors = goa_mail_proxy_get_imap_accept_ssl_errors; iface->get_imap_host = goa_mail_proxy_get_imap_host; iface->get_imap_use_ssl = goa_mail_proxy_get_imap_use_ssl; iface->get_imap_use_tls = goa_mail_proxy_get_imap_use_tls; iface->get_imap_user_name = goa_mail_proxy_get_imap_user_name; iface->get_smtp_supported = goa_mail_proxy_get_smtp_supported; iface->get_smtp_accept_ssl_errors = goa_mail_proxy_get_smtp_accept_ssl_errors; iface->get_smtp_host = goa_mail_proxy_get_smtp_host; iface->get_smtp_use_auth = goa_mail_proxy_get_smtp_use_auth; iface->get_smtp_auth_login = goa_mail_proxy_get_smtp_auth_login; iface->get_smtp_auth_plain = goa_mail_proxy_get_smtp_auth_plain; iface->get_smtp_auth_xoauth2 = goa_mail_proxy_get_smtp_auth_xoauth2; iface->get_smtp_use_ssl = goa_mail_proxy_get_smtp_use_ssl; iface->get_smtp_use_tls = goa_mail_proxy_get_smtp_use_tls; iface->get_smtp_user_name = goa_mail_proxy_get_smtp_user_name; } /** * goa_mail_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Mail. See g_dbus_proxy_new() for more details. * * 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 goa_mail_proxy_new_finish() to get the result of the operation. * * See goa_mail_proxy_new_sync() for the synchronous, blocking version of this constructor. */ void goa_mail_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 (GOA_TYPE_MAIL_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.OnlineAccounts.Mail", NULL); } /** * goa_mail_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_mail_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_mail_proxy_new(). * * Returns: (transfer full) (type GoaMailProxy): The constructed proxy object or %NULL if @error is set. */ GoaMail * goa_mail_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_MAIL (ret); else return NULL; } /** * goa_mail_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Mail. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_mail_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaMailProxy): The constructed proxy object or %NULL if @error is set. */ GoaMail * goa_mail_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_MAIL_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Mail", NULL); if (ret != NULL) return GOA_MAIL (ret); else return NULL; } /** * goa_mail_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_mail_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_mail_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_mail_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. */ void goa_mail_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 (GOA_TYPE_MAIL_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.OnlineAccounts.Mail", NULL); } /** * goa_mail_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_mail_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_mail_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaMailProxy): The constructed proxy object or %NULL if @error is set. */ GoaMail * goa_mail_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_MAIL (ret); else return NULL; } /** * goa_mail_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_mail_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_mail_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaMailProxy): The constructed proxy object or %NULL if @error is set. */ GoaMail * goa_mail_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_MAIL_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Mail", NULL); if (ret != NULL) return GOA_MAIL (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaMailSkeleton: * * The #GoaMailSkeleton structure contains only private data and should only be accessed using the provided API. */ /** * GoaMailSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaMailSkeleton. */ struct _GoaMailSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_mail_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_MAIL); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_MAIL); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_mail_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_mail_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_mail_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_mail_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_mail_skeleton_vtable = { _goa_mail_skeleton_handle_method_call, _goa_mail_skeleton_handle_get_property, _goa_mail_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_mail_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_mail_interface_info (); } static GDBusInterfaceVTable * goa_mail_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_mail_skeleton_vtable; } static GVariant * goa_mail_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_mail_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_mail_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_mail_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_mail_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.Mail", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static gboolean _goa_mail_emit_changed (gpointer user_data); static void goa_mail_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (_skeleton); gboolean emit_changed = FALSE; g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties_idle_source != NULL) { g_source_destroy (skeleton->priv->changed_properties_idle_source); skeleton->priv->changed_properties_idle_source = NULL; emit_changed = TRUE; } g_mutex_unlock (&skeleton->priv->lock); if (emit_changed) _goa_mail_emit_changed (skeleton); } static void goa_mail_skeleton_iface_init (GoaMailIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaMailSkeleton, goa_mail_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaMailSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_MAIL, goa_mail_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaMailSkeleton, goa_mail_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_MAIL, goa_mail_skeleton_iface_init)) #endif static void goa_mail_skeleton_finalize (GObject *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); guint n; for (n = 0; n < 18; n++) g_value_unset (&skeleton->priv->properties[n]); g_free (skeleton->priv->properties); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_mail_skeleton_parent_class)->finalize (object); } static void goa_mail_skeleton_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 18); g_mutex_lock (&skeleton->priv->lock); g_value_copy (&skeleton->priv->properties[prop_id - 1], value); g_mutex_unlock (&skeleton->priv->lock); } static gboolean _goa_mail_emit_changed (gpointer user_data) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (user_data); GList *l; GVariantBuilder builder; GVariantBuilder invalidated_builder; guint num_changes; g_mutex_lock (&skeleton->priv->lock); g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next) { ChangedProperty *cp = l->data; GVariant *variant; const GValue *cur_value; cur_value = &skeleton->priv->properties[cp->prop_id - 1]; if (!_g_value_equal (cur_value, &cp->orig_value)) { variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature)); g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant); g_variant_unref (variant); num_changes++; } } if (num_changes > 0) { GList *connections, *ll; GVariant *signal_variant; signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.gnome.OnlineAccounts.Mail", &builder, &invalidated_builder)); connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); for (ll = connections; ll != NULL; ll = ll->next) { GDBusConnection *connection = ll->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", "PropertiesChanged", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } else { g_variant_builder_clear (&builder); g_variant_builder_clear (&invalidated_builder); } g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); skeleton->priv->changed_properties = NULL; skeleton->priv->changed_properties_idle_source = NULL; g_mutex_unlock (&skeleton->priv->lock); return FALSE; } static void _goa_mail_schedule_emit_changed (GoaMailSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value) { ChangedProperty *cp; GList *l; cp = NULL; for (l = skeleton->priv->changed_properties; l != NULL; l = l->next) { ChangedProperty *i_cp = l->data; if (i_cp->info == info) { cp = i_cp; break; } } if (cp == NULL) { cp = g_new0 (ChangedProperty, 1); cp->prop_id = prop_id; cp->info = info; skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp); g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value)); g_value_copy (orig_value, &cp->orig_value); } } static void goa_mail_skeleton_notify (GObject *object, GParamSpec *pspec G_GNUC_UNUSED) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties != NULL && skeleton->priv->changed_properties_idle_source == NULL) { skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _goa_mail_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _goa_mail_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } g_mutex_unlock (&skeleton->priv->lock); } static void goa_mail_skeleton_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 18); g_mutex_lock (&skeleton->priv->lock); g_object_freeze_notify (object); if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1])) { if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL) _goa_mail_schedule_emit_changed (skeleton, _goa_mail_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]); g_value_copy (value, &skeleton->priv->properties[prop_id - 1]); g_object_notify_by_pspec (object, pspec); } g_mutex_unlock (&skeleton->priv->lock); g_object_thaw_notify (object); } static void goa_mail_skeleton_init (GoaMailSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_mail_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_MAIL_SKELETON, GoaMailSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); skeleton->priv->properties = g_new0 (GValue, 18); g_value_init (&skeleton->priv->properties[0], G_TYPE_STRING); g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING); g_value_init (&skeleton->priv->properties[2], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[3], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[4], G_TYPE_STRING); g_value_init (&skeleton->priv->properties[5], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[6], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[7], G_TYPE_STRING); g_value_init (&skeleton->priv->properties[8], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[9], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[10], G_TYPE_STRING); g_value_init (&skeleton->priv->properties[11], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[12], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[13], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[14], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[15], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[16], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[17], G_TYPE_STRING); } static const gchar * goa_mail_skeleton_get_email_address (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[0])); g_mutex_unlock (&skeleton->priv->lock); return value; } static const gchar * goa_mail_skeleton_get_name (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[1])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_mail_skeleton_get_imap_supported (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[2])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_mail_skeleton_get_imap_accept_ssl_errors (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[3])); g_mutex_unlock (&skeleton->priv->lock); return value; } static const gchar * goa_mail_skeleton_get_imap_host (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[4])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_mail_skeleton_get_imap_use_ssl (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[5])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_mail_skeleton_get_imap_use_tls (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[6])); g_mutex_unlock (&skeleton->priv->lock); return value; } static const gchar * goa_mail_skeleton_get_imap_user_name (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[7])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_mail_skeleton_get_smtp_supported (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[8])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_mail_skeleton_get_smtp_accept_ssl_errors (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[9])); g_mutex_unlock (&skeleton->priv->lock); return value; } static const gchar * goa_mail_skeleton_get_smtp_host (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[10])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_mail_skeleton_get_smtp_use_auth (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[11])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_mail_skeleton_get_smtp_auth_login (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[12])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_mail_skeleton_get_smtp_auth_plain (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[13])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_mail_skeleton_get_smtp_auth_xoauth2 (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[14])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_mail_skeleton_get_smtp_use_ssl (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[15])); g_mutex_unlock (&skeleton->priv->lock); return value; } static gboolean goa_mail_skeleton_get_smtp_use_tls (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[16])); g_mutex_unlock (&skeleton->priv->lock); return value; } static const gchar * goa_mail_skeleton_get_smtp_user_name (GoaMail *object) { GoaMailSkeleton *skeleton = GOA_MAIL_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[17])); g_mutex_unlock (&skeleton->priv->lock); return value; } static void goa_mail_skeleton_class_init (GoaMailSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_mail_skeleton_finalize; gobject_class->get_property = goa_mail_skeleton_get_property; gobject_class->set_property = goa_mail_skeleton_set_property; gobject_class->notify = goa_mail_skeleton_notify; goa_mail_override_properties (gobject_class, 1); skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_mail_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_mail_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_mail_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_mail_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaMailSkeletonPrivate)); #endif } static void goa_mail_skeleton_iface_init (GoaMailIface *iface) { iface->get_email_address = goa_mail_skeleton_get_email_address; iface->get_name = goa_mail_skeleton_get_name; iface->get_imap_supported = goa_mail_skeleton_get_imap_supported; iface->get_imap_accept_ssl_errors = goa_mail_skeleton_get_imap_accept_ssl_errors; iface->get_imap_host = goa_mail_skeleton_get_imap_host; iface->get_imap_use_ssl = goa_mail_skeleton_get_imap_use_ssl; iface->get_imap_use_tls = goa_mail_skeleton_get_imap_use_tls; iface->get_imap_user_name = goa_mail_skeleton_get_imap_user_name; iface->get_smtp_supported = goa_mail_skeleton_get_smtp_supported; iface->get_smtp_accept_ssl_errors = goa_mail_skeleton_get_smtp_accept_ssl_errors; iface->get_smtp_host = goa_mail_skeleton_get_smtp_host; iface->get_smtp_use_auth = goa_mail_skeleton_get_smtp_use_auth; iface->get_smtp_auth_login = goa_mail_skeleton_get_smtp_auth_login; iface->get_smtp_auth_plain = goa_mail_skeleton_get_smtp_auth_plain; iface->get_smtp_auth_xoauth2 = goa_mail_skeleton_get_smtp_auth_xoauth2; iface->get_smtp_use_ssl = goa_mail_skeleton_get_smtp_use_ssl; iface->get_smtp_use_tls = goa_mail_skeleton_get_smtp_use_tls; iface->get_smtp_user_name = goa_mail_skeleton_get_smtp_user_name; } /** * goa_mail_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.Mail. * * Returns: (transfer full) (type GoaMailSkeleton): The skeleton object. */ GoaMail * goa_mail_skeleton_new (void) { return GOA_MAIL (g_object_new (GOA_TYPE_MAIL_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.Calendar * ------------------------------------------------------------------------ */ /** * SECTION:GoaCalendar * @title: GoaCalendar * @short_description: Generated C code for the org.gnome.OnlineAccounts.Calendar D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.Calendar D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.Calendar ---- */ static const _ExtendedGDBusPropertyInfo _goa_calendar_property_info_accept_ssl_errors = { { -1, (gchar *) "AcceptSslErrors", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "accept-ssl-errors", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_calendar_property_info_uri = { { -1, (gchar *) "Uri", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "uri", FALSE }; static const _ExtendedGDBusPropertyInfo * const _goa_calendar_property_info_pointers[] = { &_goa_calendar_property_info_accept_ssl_errors, &_goa_calendar_property_info_uri, NULL }; static const _ExtendedGDBusInterfaceInfo _goa_calendar_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.Calendar", NULL, NULL, (GDBusPropertyInfo **) &_goa_calendar_property_info_pointers, NULL }, "calendar", }; /** * goa_calendar_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.Calendar D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. */ GDBusInterfaceInfo * goa_calendar_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_calendar_interface_info.parent_struct; } /** * goa_calendar_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaCalendar interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. */ guint goa_calendar_override_properties (GObjectClass *klass, guint property_id_begin) { g_object_class_override_property (klass, property_id_begin++, "accept-ssl-errors"); g_object_class_override_property (klass, property_id_begin++, "uri"); return property_id_begin - 1; } /** * GoaCalendar: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.Calendar. */ /** * GoaCalendarIface: * @parent_iface: The parent interface. * @get_accept_ssl_errors: Getter for the #GoaCalendar:accept-ssl-errors property. * @get_uri: Getter for the #GoaCalendar:uri property. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.Calendar. */ typedef GoaCalendarIface GoaCalendarInterface; G_DEFINE_INTERFACE (GoaCalendar, goa_calendar, G_TYPE_OBJECT) static void goa_calendar_default_init (GoaCalendarIface *iface) { /* GObject properties for D-Bus properties: */ /** * GoaCalendar:accept-ssl-errors: * * Represents the D-Bus property "AcceptSslErrors". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.8.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("accept-ssl-errors", "AcceptSslErrors", "AcceptSslErrors", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaCalendar:uri: * * Represents the D-Bus property "Uri". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.8.0 */ g_object_interface_install_property (iface, g_param_spec_string ("uri", "Uri", "Uri", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } /** * goa_calendar_get_accept_ssl_errors: (skip) * @object: A #GoaCalendar. * * Gets the value of the "AcceptSslErrors" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.8.0 */ gboolean goa_calendar_get_accept_ssl_errors (GoaCalendar *object) { return GOA_CALENDAR_GET_IFACE (object)->get_accept_ssl_errors (object); } /** * goa_calendar_set_accept_ssl_errors: (skip) * @object: A #GoaCalendar. * @value: The value to set. * * Sets the "AcceptSslErrors" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.8.0 */ void goa_calendar_set_accept_ssl_errors (GoaCalendar *object, gboolean value) { g_object_set (G_OBJECT (object), "accept-ssl-errors", value, NULL); } /** * goa_calendar_get_uri: (skip) * @object: A #GoaCalendar. * * Gets the value of the "Uri" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_calendar_dup_uri() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. * * Since: 3.8.0 */ const gchar * goa_calendar_get_uri (GoaCalendar *object) { return GOA_CALENDAR_GET_IFACE (object)->get_uri (object); } /** * goa_calendar_dup_uri: (skip) * @object: A #GoaCalendar. * * Gets a copy of the "Uri" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). * * Since: 3.8.0 */ gchar * goa_calendar_dup_uri (GoaCalendar *object) { gchar *value; g_object_get (G_OBJECT (object), "uri", &value, NULL); return value; } /** * goa_calendar_set_uri: (skip) * @object: A #GoaCalendar. * @value: The value to set. * * Sets the "Uri" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.8.0 */ void goa_calendar_set_uri (GoaCalendar *object, const gchar *value) { g_object_set (G_OBJECT (object), "uri", value, NULL); } /* ------------------------------------------------------------------------ */ /** * GoaCalendarProxy: * * The #GoaCalendarProxy structure contains only private data and should only be accessed using the provided API. */ /** * GoaCalendarProxyClass: * @parent_class: The parent class. * * Class structure for #GoaCalendarProxy. */ struct _GoaCalendarProxyPrivate { GData *qdata; }; static void goa_calendar_proxy_iface_init (GoaCalendarIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaCalendarProxy, goa_calendar_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaCalendarProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_CALENDAR, goa_calendar_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaCalendarProxy, goa_calendar_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_CALENDAR, goa_calendar_proxy_iface_init)) #endif static void goa_calendar_proxy_finalize (GObject *object) { GoaCalendarProxy *proxy = GOA_CALENDAR_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_calendar_proxy_parent_class)->finalize (object); } static void goa_calendar_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = _goa_calendar_property_info_pointers[prop_id - 1]; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name); if (info->use_gvariant) { g_value_set_variant (value, variant); } else { if (variant != NULL) g_dbus_gvariant_to_gvalue (variant, value); } if (variant != NULL) g_variant_unref (variant); } static void goa_calendar_proxy_set_property_cb (GDBusProxy *proxy, GAsyncResult *res, gpointer user_data) { const _ExtendedGDBusPropertyInfo *info = user_data; GError *error; GVariant *_ret; error = NULL; _ret = g_dbus_proxy_call_finish (proxy, res, &error); if (!_ret) { g_warning ("Error setting property '%s' on interface org.gnome.OnlineAccounts.Calendar: %s (%s, %d)", info->parent_struct.name, error->message, g_quark_to_string (error->domain), error->code); g_error_free (error); } else { g_variant_unref (_ret); } } static void goa_calendar_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = _goa_calendar_property_info_pointers[prop_id - 1]; variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature)); g_dbus_proxy_call (G_DBUS_PROXY (object), "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", "org.gnome.OnlineAccounts.Calendar", info->parent_struct.name, variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) goa_calendar_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct); g_variant_unref (variant); } static void goa_calendar_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_calendar_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_CALENDAR); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_CALENDAR); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_calendar_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaCalendarProxy *proxy = GOA_CALENDAR_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_calendar_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_calendar_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static gboolean goa_calendar_proxy_get_accept_ssl_errors (GoaCalendar *object) { GoaCalendarProxy *proxy = GOA_CALENDAR_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "AcceptSslErrors"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static const gchar * goa_calendar_proxy_get_uri (GoaCalendar *object) { GoaCalendarProxy *proxy = GOA_CALENDAR_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Uri"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static void goa_calendar_proxy_init (GoaCalendarProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_calendar_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_CALENDAR_PROXY, GoaCalendarProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_calendar_interface_info ()); } static void goa_calendar_proxy_class_init (GoaCalendarProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_calendar_proxy_finalize; gobject_class->get_property = goa_calendar_proxy_get_property; gobject_class->set_property = goa_calendar_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_calendar_proxy_g_signal; proxy_class->g_properties_changed = goa_calendar_proxy_g_properties_changed; goa_calendar_override_properties (gobject_class, 1); #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaCalendarProxyPrivate)); #endif } static void goa_calendar_proxy_iface_init (GoaCalendarIface *iface) { iface->get_accept_ssl_errors = goa_calendar_proxy_get_accept_ssl_errors; iface->get_uri = goa_calendar_proxy_get_uri; } /** * goa_calendar_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Calendar. See g_dbus_proxy_new() for more details. * * 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 goa_calendar_proxy_new_finish() to get the result of the operation. * * See goa_calendar_proxy_new_sync() for the synchronous, blocking version of this constructor. */ void goa_calendar_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 (GOA_TYPE_CALENDAR_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.OnlineAccounts.Calendar", NULL); } /** * goa_calendar_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_calendar_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_calendar_proxy_new(). * * Returns: (transfer full) (type GoaCalendarProxy): The constructed proxy object or %NULL if @error is set. */ GoaCalendar * goa_calendar_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_CALENDAR (ret); else return NULL; } /** * goa_calendar_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Calendar. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_calendar_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaCalendarProxy): The constructed proxy object or %NULL if @error is set. */ GoaCalendar * goa_calendar_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_CALENDAR_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Calendar", NULL); if (ret != NULL) return GOA_CALENDAR (ret); else return NULL; } /** * goa_calendar_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_calendar_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_calendar_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_calendar_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. */ void goa_calendar_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 (GOA_TYPE_CALENDAR_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.OnlineAccounts.Calendar", NULL); } /** * goa_calendar_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_calendar_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_calendar_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaCalendarProxy): The constructed proxy object or %NULL if @error is set. */ GoaCalendar * goa_calendar_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_CALENDAR (ret); else return NULL; } /** * goa_calendar_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_calendar_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_calendar_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaCalendarProxy): The constructed proxy object or %NULL if @error is set. */ GoaCalendar * goa_calendar_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_CALENDAR_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Calendar", NULL); if (ret != NULL) return GOA_CALENDAR (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaCalendarSkeleton: * * The #GoaCalendarSkeleton structure contains only private data and should only be accessed using the provided API. */ /** * GoaCalendarSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaCalendarSkeleton. */ struct _GoaCalendarSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_calendar_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaCalendarSkeleton *skeleton = GOA_CALENDAR_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_CALENDAR); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_CALENDAR); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_calendar_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaCalendarSkeleton *skeleton = GOA_CALENDAR_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_calendar_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_calendar_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaCalendarSkeleton *skeleton = GOA_CALENDAR_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_calendar_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_calendar_skeleton_vtable = { _goa_calendar_skeleton_handle_method_call, _goa_calendar_skeleton_handle_get_property, _goa_calendar_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_calendar_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_calendar_interface_info (); } static GDBusInterfaceVTable * goa_calendar_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_calendar_skeleton_vtable; } static GVariant * goa_calendar_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaCalendarSkeleton *skeleton = GOA_CALENDAR_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_calendar_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_calendar_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_calendar_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_calendar_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.Calendar", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static gboolean _goa_calendar_emit_changed (gpointer user_data); static void goa_calendar_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { GoaCalendarSkeleton *skeleton = GOA_CALENDAR_SKELETON (_skeleton); gboolean emit_changed = FALSE; g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties_idle_source != NULL) { g_source_destroy (skeleton->priv->changed_properties_idle_source); skeleton->priv->changed_properties_idle_source = NULL; emit_changed = TRUE; } g_mutex_unlock (&skeleton->priv->lock); if (emit_changed) _goa_calendar_emit_changed (skeleton); } static void goa_calendar_skeleton_iface_init (GoaCalendarIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaCalendarSkeleton, goa_calendar_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaCalendarSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_CALENDAR, goa_calendar_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaCalendarSkeleton, goa_calendar_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_CALENDAR, goa_calendar_skeleton_iface_init)) #endif static void goa_calendar_skeleton_finalize (GObject *object) { GoaCalendarSkeleton *skeleton = GOA_CALENDAR_SKELETON (object); guint n; for (n = 0; n < 2; n++) g_value_unset (&skeleton->priv->properties[n]); g_free (skeleton->priv->properties); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_calendar_skeleton_parent_class)->finalize (object); } static void goa_calendar_skeleton_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { GoaCalendarSkeleton *skeleton = GOA_CALENDAR_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); g_mutex_lock (&skeleton->priv->lock); g_value_copy (&skeleton->priv->properties[prop_id - 1], value); g_mutex_unlock (&skeleton->priv->lock); } static gboolean _goa_calendar_emit_changed (gpointer user_data) { GoaCalendarSkeleton *skeleton = GOA_CALENDAR_SKELETON (user_data); GList *l; GVariantBuilder builder; GVariantBuilder invalidated_builder; guint num_changes; g_mutex_lock (&skeleton->priv->lock); g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next) { ChangedProperty *cp = l->data; GVariant *variant; const GValue *cur_value; cur_value = &skeleton->priv->properties[cp->prop_id - 1]; if (!_g_value_equal (cur_value, &cp->orig_value)) { variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature)); g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant); g_variant_unref (variant); num_changes++; } } if (num_changes > 0) { GList *connections, *ll; GVariant *signal_variant; signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.gnome.OnlineAccounts.Calendar", &builder, &invalidated_builder)); connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); for (ll = connections; ll != NULL; ll = ll->next) { GDBusConnection *connection = ll->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", "PropertiesChanged", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } else { g_variant_builder_clear (&builder); g_variant_builder_clear (&invalidated_builder); } g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); skeleton->priv->changed_properties = NULL; skeleton->priv->changed_properties_idle_source = NULL; g_mutex_unlock (&skeleton->priv->lock); return FALSE; } static void _goa_calendar_schedule_emit_changed (GoaCalendarSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value) { ChangedProperty *cp; GList *l; cp = NULL; for (l = skeleton->priv->changed_properties; l != NULL; l = l->next) { ChangedProperty *i_cp = l->data; if (i_cp->info == info) { cp = i_cp; break; } } if (cp == NULL) { cp = g_new0 (ChangedProperty, 1); cp->prop_id = prop_id; cp->info = info; skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp); g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value)); g_value_copy (orig_value, &cp->orig_value); } } static void goa_calendar_skeleton_notify (GObject *object, GParamSpec *pspec G_GNUC_UNUSED) { GoaCalendarSkeleton *skeleton = GOA_CALENDAR_SKELETON (object); g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties != NULL && skeleton->priv->changed_properties_idle_source == NULL) { skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _goa_calendar_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _goa_calendar_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } g_mutex_unlock (&skeleton->priv->lock); } static void goa_calendar_skeleton_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GoaCalendarSkeleton *skeleton = GOA_CALENDAR_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); g_mutex_lock (&skeleton->priv->lock); g_object_freeze_notify (object); if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1])) { if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL) _goa_calendar_schedule_emit_changed (skeleton, _goa_calendar_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]); g_value_copy (value, &skeleton->priv->properties[prop_id - 1]); g_object_notify_by_pspec (object, pspec); } g_mutex_unlock (&skeleton->priv->lock); g_object_thaw_notify (object); } static void goa_calendar_skeleton_init (GoaCalendarSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_calendar_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_CALENDAR_SKELETON, GoaCalendarSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); skeleton->priv->properties = g_new0 (GValue, 2); g_value_init (&skeleton->priv->properties[0], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING); } static gboolean goa_calendar_skeleton_get_accept_ssl_errors (GoaCalendar *object) { GoaCalendarSkeleton *skeleton = GOA_CALENDAR_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[0])); g_mutex_unlock (&skeleton->priv->lock); return value; } static const gchar * goa_calendar_skeleton_get_uri (GoaCalendar *object) { GoaCalendarSkeleton *skeleton = GOA_CALENDAR_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[1])); g_mutex_unlock (&skeleton->priv->lock); return value; } static void goa_calendar_skeleton_class_init (GoaCalendarSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_calendar_skeleton_finalize; gobject_class->get_property = goa_calendar_skeleton_get_property; gobject_class->set_property = goa_calendar_skeleton_set_property; gobject_class->notify = goa_calendar_skeleton_notify; goa_calendar_override_properties (gobject_class, 1); skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_calendar_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_calendar_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_calendar_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_calendar_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaCalendarSkeletonPrivate)); #endif } static void goa_calendar_skeleton_iface_init (GoaCalendarIface *iface) { iface->get_accept_ssl_errors = goa_calendar_skeleton_get_accept_ssl_errors; iface->get_uri = goa_calendar_skeleton_get_uri; } /** * goa_calendar_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.Calendar. * * Returns: (transfer full) (type GoaCalendarSkeleton): The skeleton object. */ GoaCalendar * goa_calendar_skeleton_new (void) { return GOA_CALENDAR (g_object_new (GOA_TYPE_CALENDAR_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.Contacts * ------------------------------------------------------------------------ */ /** * SECTION:GoaContacts * @title: GoaContacts * @short_description: Generated C code for the org.gnome.OnlineAccounts.Contacts D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.Contacts D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.Contacts ---- */ static const _ExtendedGDBusPropertyInfo _goa_contacts_property_info_accept_ssl_errors = { { -1, (gchar *) "AcceptSslErrors", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "accept-ssl-errors", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_contacts_property_info_uri = { { -1, (gchar *) "Uri", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "uri", FALSE }; static const _ExtendedGDBusPropertyInfo * const _goa_contacts_property_info_pointers[] = { &_goa_contacts_property_info_accept_ssl_errors, &_goa_contacts_property_info_uri, NULL }; static const _ExtendedGDBusInterfaceInfo _goa_contacts_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.Contacts", NULL, NULL, (GDBusPropertyInfo **) &_goa_contacts_property_info_pointers, NULL }, "contacts", }; /** * goa_contacts_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.Contacts D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. */ GDBusInterfaceInfo * goa_contacts_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_contacts_interface_info.parent_struct; } /** * goa_contacts_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaContacts interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. */ guint goa_contacts_override_properties (GObjectClass *klass, guint property_id_begin) { g_object_class_override_property (klass, property_id_begin++, "accept-ssl-errors"); g_object_class_override_property (klass, property_id_begin++, "uri"); return property_id_begin - 1; } /** * GoaContacts: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.Contacts. */ /** * GoaContactsIface: * @parent_iface: The parent interface. * @get_accept_ssl_errors: Getter for the #GoaContacts:accept-ssl-errors property. * @get_uri: Getter for the #GoaContacts:uri property. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.Contacts. */ typedef GoaContactsIface GoaContactsInterface; G_DEFINE_INTERFACE (GoaContacts, goa_contacts, G_TYPE_OBJECT) static void goa_contacts_default_init (GoaContactsIface *iface) { /* GObject properties for D-Bus properties: */ /** * GoaContacts:accept-ssl-errors: * * Represents the D-Bus property "AcceptSslErrors". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.8.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("accept-ssl-errors", "AcceptSslErrors", "AcceptSslErrors", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaContacts:uri: * * Represents the D-Bus property "Uri". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.8.0 */ g_object_interface_install_property (iface, g_param_spec_string ("uri", "Uri", "Uri", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } /** * goa_contacts_get_accept_ssl_errors: (skip) * @object: A #GoaContacts. * * Gets the value of the "AcceptSslErrors" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.8.0 */ gboolean goa_contacts_get_accept_ssl_errors (GoaContacts *object) { return GOA_CONTACTS_GET_IFACE (object)->get_accept_ssl_errors (object); } /** * goa_contacts_set_accept_ssl_errors: (skip) * @object: A #GoaContacts. * @value: The value to set. * * Sets the "AcceptSslErrors" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.8.0 */ void goa_contacts_set_accept_ssl_errors (GoaContacts *object, gboolean value) { g_object_set (G_OBJECT (object), "accept-ssl-errors", value, NULL); } /** * goa_contacts_get_uri: (skip) * @object: A #GoaContacts. * * Gets the value of the "Uri" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_contacts_dup_uri() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. * * Since: 3.8.0 */ const gchar * goa_contacts_get_uri (GoaContacts *object) { return GOA_CONTACTS_GET_IFACE (object)->get_uri (object); } /** * goa_contacts_dup_uri: (skip) * @object: A #GoaContacts. * * Gets a copy of the "Uri" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). * * Since: 3.8.0 */ gchar * goa_contacts_dup_uri (GoaContacts *object) { gchar *value; g_object_get (G_OBJECT (object), "uri", &value, NULL); return value; } /** * goa_contacts_set_uri: (skip) * @object: A #GoaContacts. * @value: The value to set. * * Sets the "Uri" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.8.0 */ void goa_contacts_set_uri (GoaContacts *object, const gchar *value) { g_object_set (G_OBJECT (object), "uri", value, NULL); } /* ------------------------------------------------------------------------ */ /** * GoaContactsProxy: * * The #GoaContactsProxy structure contains only private data and should only be accessed using the provided API. */ /** * GoaContactsProxyClass: * @parent_class: The parent class. * * Class structure for #GoaContactsProxy. */ struct _GoaContactsProxyPrivate { GData *qdata; }; static void goa_contacts_proxy_iface_init (GoaContactsIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaContactsProxy, goa_contacts_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaContactsProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_CONTACTS, goa_contacts_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaContactsProxy, goa_contacts_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_CONTACTS, goa_contacts_proxy_iface_init)) #endif static void goa_contacts_proxy_finalize (GObject *object) { GoaContactsProxy *proxy = GOA_CONTACTS_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_contacts_proxy_parent_class)->finalize (object); } static void goa_contacts_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = _goa_contacts_property_info_pointers[prop_id - 1]; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name); if (info->use_gvariant) { g_value_set_variant (value, variant); } else { if (variant != NULL) g_dbus_gvariant_to_gvalue (variant, value); } if (variant != NULL) g_variant_unref (variant); } static void goa_contacts_proxy_set_property_cb (GDBusProxy *proxy, GAsyncResult *res, gpointer user_data) { const _ExtendedGDBusPropertyInfo *info = user_data; GError *error; GVariant *_ret; error = NULL; _ret = g_dbus_proxy_call_finish (proxy, res, &error); if (!_ret) { g_warning ("Error setting property '%s' on interface org.gnome.OnlineAccounts.Contacts: %s (%s, %d)", info->parent_struct.name, error->message, g_quark_to_string (error->domain), error->code); g_error_free (error); } else { g_variant_unref (_ret); } } static void goa_contacts_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = _goa_contacts_property_info_pointers[prop_id - 1]; variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature)); g_dbus_proxy_call (G_DBUS_PROXY (object), "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", "org.gnome.OnlineAccounts.Contacts", info->parent_struct.name, variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) goa_contacts_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct); g_variant_unref (variant); } static void goa_contacts_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_contacts_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_CONTACTS); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_CONTACTS); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_contacts_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaContactsProxy *proxy = GOA_CONTACTS_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_contacts_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_contacts_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static gboolean goa_contacts_proxy_get_accept_ssl_errors (GoaContacts *object) { GoaContactsProxy *proxy = GOA_CONTACTS_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "AcceptSslErrors"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static const gchar * goa_contacts_proxy_get_uri (GoaContacts *object) { GoaContactsProxy *proxy = GOA_CONTACTS_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Uri"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static void goa_contacts_proxy_init (GoaContactsProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_contacts_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_CONTACTS_PROXY, GoaContactsProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_contacts_interface_info ()); } static void goa_contacts_proxy_class_init (GoaContactsProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_contacts_proxy_finalize; gobject_class->get_property = goa_contacts_proxy_get_property; gobject_class->set_property = goa_contacts_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_contacts_proxy_g_signal; proxy_class->g_properties_changed = goa_contacts_proxy_g_properties_changed; goa_contacts_override_properties (gobject_class, 1); #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaContactsProxyPrivate)); #endif } static void goa_contacts_proxy_iface_init (GoaContactsIface *iface) { iface->get_accept_ssl_errors = goa_contacts_proxy_get_accept_ssl_errors; iface->get_uri = goa_contacts_proxy_get_uri; } /** * goa_contacts_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Contacts. See g_dbus_proxy_new() for more details. * * 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 goa_contacts_proxy_new_finish() to get the result of the operation. * * See goa_contacts_proxy_new_sync() for the synchronous, blocking version of this constructor. */ void goa_contacts_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 (GOA_TYPE_CONTACTS_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.OnlineAccounts.Contacts", NULL); } /** * goa_contacts_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_contacts_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_contacts_proxy_new(). * * Returns: (transfer full) (type GoaContactsProxy): The constructed proxy object or %NULL if @error is set. */ GoaContacts * goa_contacts_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_CONTACTS (ret); else return NULL; } /** * goa_contacts_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Contacts. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_contacts_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaContactsProxy): The constructed proxy object or %NULL if @error is set. */ GoaContacts * goa_contacts_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_CONTACTS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Contacts", NULL); if (ret != NULL) return GOA_CONTACTS (ret); else return NULL; } /** * goa_contacts_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_contacts_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_contacts_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_contacts_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. */ void goa_contacts_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 (GOA_TYPE_CONTACTS_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.OnlineAccounts.Contacts", NULL); } /** * goa_contacts_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_contacts_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_contacts_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaContactsProxy): The constructed proxy object or %NULL if @error is set. */ GoaContacts * goa_contacts_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_CONTACTS (ret); else return NULL; } /** * goa_contacts_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_contacts_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_contacts_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaContactsProxy): The constructed proxy object or %NULL if @error is set. */ GoaContacts * goa_contacts_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_CONTACTS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Contacts", NULL); if (ret != NULL) return GOA_CONTACTS (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaContactsSkeleton: * * The #GoaContactsSkeleton structure contains only private data and should only be accessed using the provided API. */ /** * GoaContactsSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaContactsSkeleton. */ struct _GoaContactsSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_contacts_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaContactsSkeleton *skeleton = GOA_CONTACTS_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_CONTACTS); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_CONTACTS); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_contacts_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaContactsSkeleton *skeleton = GOA_CONTACTS_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_contacts_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_contacts_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaContactsSkeleton *skeleton = GOA_CONTACTS_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_contacts_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_contacts_skeleton_vtable = { _goa_contacts_skeleton_handle_method_call, _goa_contacts_skeleton_handle_get_property, _goa_contacts_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_contacts_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_contacts_interface_info (); } static GDBusInterfaceVTable * goa_contacts_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_contacts_skeleton_vtable; } static GVariant * goa_contacts_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaContactsSkeleton *skeleton = GOA_CONTACTS_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_contacts_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_contacts_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_contacts_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_contacts_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.Contacts", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static gboolean _goa_contacts_emit_changed (gpointer user_data); static void goa_contacts_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { GoaContactsSkeleton *skeleton = GOA_CONTACTS_SKELETON (_skeleton); gboolean emit_changed = FALSE; g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties_idle_source != NULL) { g_source_destroy (skeleton->priv->changed_properties_idle_source); skeleton->priv->changed_properties_idle_source = NULL; emit_changed = TRUE; } g_mutex_unlock (&skeleton->priv->lock); if (emit_changed) _goa_contacts_emit_changed (skeleton); } static void goa_contacts_skeleton_iface_init (GoaContactsIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaContactsSkeleton, goa_contacts_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaContactsSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_CONTACTS, goa_contacts_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaContactsSkeleton, goa_contacts_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_CONTACTS, goa_contacts_skeleton_iface_init)) #endif static void goa_contacts_skeleton_finalize (GObject *object) { GoaContactsSkeleton *skeleton = GOA_CONTACTS_SKELETON (object); guint n; for (n = 0; n < 2; n++) g_value_unset (&skeleton->priv->properties[n]); g_free (skeleton->priv->properties); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_contacts_skeleton_parent_class)->finalize (object); } static void goa_contacts_skeleton_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { GoaContactsSkeleton *skeleton = GOA_CONTACTS_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); g_mutex_lock (&skeleton->priv->lock); g_value_copy (&skeleton->priv->properties[prop_id - 1], value); g_mutex_unlock (&skeleton->priv->lock); } static gboolean _goa_contacts_emit_changed (gpointer user_data) { GoaContactsSkeleton *skeleton = GOA_CONTACTS_SKELETON (user_data); GList *l; GVariantBuilder builder; GVariantBuilder invalidated_builder; guint num_changes; g_mutex_lock (&skeleton->priv->lock); g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next) { ChangedProperty *cp = l->data; GVariant *variant; const GValue *cur_value; cur_value = &skeleton->priv->properties[cp->prop_id - 1]; if (!_g_value_equal (cur_value, &cp->orig_value)) { variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature)); g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant); g_variant_unref (variant); num_changes++; } } if (num_changes > 0) { GList *connections, *ll; GVariant *signal_variant; signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.gnome.OnlineAccounts.Contacts", &builder, &invalidated_builder)); connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); for (ll = connections; ll != NULL; ll = ll->next) { GDBusConnection *connection = ll->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", "PropertiesChanged", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } else { g_variant_builder_clear (&builder); g_variant_builder_clear (&invalidated_builder); } g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); skeleton->priv->changed_properties = NULL; skeleton->priv->changed_properties_idle_source = NULL; g_mutex_unlock (&skeleton->priv->lock); return FALSE; } static void _goa_contacts_schedule_emit_changed (GoaContactsSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value) { ChangedProperty *cp; GList *l; cp = NULL; for (l = skeleton->priv->changed_properties; l != NULL; l = l->next) { ChangedProperty *i_cp = l->data; if (i_cp->info == info) { cp = i_cp; break; } } if (cp == NULL) { cp = g_new0 (ChangedProperty, 1); cp->prop_id = prop_id; cp->info = info; skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp); g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value)); g_value_copy (orig_value, &cp->orig_value); } } static void goa_contacts_skeleton_notify (GObject *object, GParamSpec *pspec G_GNUC_UNUSED) { GoaContactsSkeleton *skeleton = GOA_CONTACTS_SKELETON (object); g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties != NULL && skeleton->priv->changed_properties_idle_source == NULL) { skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _goa_contacts_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _goa_contacts_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } g_mutex_unlock (&skeleton->priv->lock); } static void goa_contacts_skeleton_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GoaContactsSkeleton *skeleton = GOA_CONTACTS_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); g_mutex_lock (&skeleton->priv->lock); g_object_freeze_notify (object); if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1])) { if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL) _goa_contacts_schedule_emit_changed (skeleton, _goa_contacts_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]); g_value_copy (value, &skeleton->priv->properties[prop_id - 1]); g_object_notify_by_pspec (object, pspec); } g_mutex_unlock (&skeleton->priv->lock); g_object_thaw_notify (object); } static void goa_contacts_skeleton_init (GoaContactsSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_contacts_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_CONTACTS_SKELETON, GoaContactsSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); skeleton->priv->properties = g_new0 (GValue, 2); g_value_init (&skeleton->priv->properties[0], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING); } static gboolean goa_contacts_skeleton_get_accept_ssl_errors (GoaContacts *object) { GoaContactsSkeleton *skeleton = GOA_CONTACTS_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[0])); g_mutex_unlock (&skeleton->priv->lock); return value; } static const gchar * goa_contacts_skeleton_get_uri (GoaContacts *object) { GoaContactsSkeleton *skeleton = GOA_CONTACTS_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[1])); g_mutex_unlock (&skeleton->priv->lock); return value; } static void goa_contacts_skeleton_class_init (GoaContactsSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_contacts_skeleton_finalize; gobject_class->get_property = goa_contacts_skeleton_get_property; gobject_class->set_property = goa_contacts_skeleton_set_property; gobject_class->notify = goa_contacts_skeleton_notify; goa_contacts_override_properties (gobject_class, 1); skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_contacts_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_contacts_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_contacts_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_contacts_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaContactsSkeletonPrivate)); #endif } static void goa_contacts_skeleton_iface_init (GoaContactsIface *iface) { iface->get_accept_ssl_errors = goa_contacts_skeleton_get_accept_ssl_errors; iface->get_uri = goa_contacts_skeleton_get_uri; } /** * goa_contacts_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.Contacts. * * Returns: (transfer full) (type GoaContactsSkeleton): The skeleton object. */ GoaContacts * goa_contacts_skeleton_new (void) { return GOA_CONTACTS (g_object_new (GOA_TYPE_CONTACTS_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.Chat * ------------------------------------------------------------------------ */ /** * SECTION:GoaChat * @title: GoaChat * @short_description: Generated C code for the org.gnome.OnlineAccounts.Chat D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.Chat D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.Chat ---- */ static const _ExtendedGDBusInterfaceInfo _goa_chat_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.Chat", NULL, NULL, NULL, NULL }, "chat", }; /** * goa_chat_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.Chat D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. */ GDBusInterfaceInfo * goa_chat_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_chat_interface_info.parent_struct; } /** * goa_chat_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaChat interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. */ guint goa_chat_override_properties (GObjectClass *klass, guint property_id_begin) { return property_id_begin - 1; } /** * GoaChat: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.Chat. */ /** * GoaChatIface: * @parent_iface: The parent interface. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.Chat. */ typedef GoaChatIface GoaChatInterface; G_DEFINE_INTERFACE (GoaChat, goa_chat, G_TYPE_OBJECT) static void goa_chat_default_init (GoaChatIface *iface) { } /* ------------------------------------------------------------------------ */ /** * GoaChatProxy: * * The #GoaChatProxy structure contains only private data and should only be accessed using the provided API. */ /** * GoaChatProxyClass: * @parent_class: The parent class. * * Class structure for #GoaChatProxy. */ struct _GoaChatProxyPrivate { GData *qdata; }; static void goa_chat_proxy_iface_init (GoaChatIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaChatProxy, goa_chat_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaChatProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_CHAT, goa_chat_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaChatProxy, goa_chat_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_CHAT, goa_chat_proxy_iface_init)) #endif static void goa_chat_proxy_finalize (GObject *object) { GoaChatProxy *proxy = GOA_CHAT_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_chat_proxy_parent_class)->finalize (object); } static void goa_chat_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_chat_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_chat_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_chat_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_CHAT); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_CHAT); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_chat_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaChatProxy *proxy = GOA_CHAT_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_chat_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_chat_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static void goa_chat_proxy_init (GoaChatProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_chat_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_CHAT_PROXY, GoaChatProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_chat_interface_info ()); } static void goa_chat_proxy_class_init (GoaChatProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_chat_proxy_finalize; gobject_class->get_property = goa_chat_proxy_get_property; gobject_class->set_property = goa_chat_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_chat_proxy_g_signal; proxy_class->g_properties_changed = goa_chat_proxy_g_properties_changed; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaChatProxyPrivate)); #endif } static void goa_chat_proxy_iface_init (GoaChatIface *iface) { } /** * goa_chat_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Chat. See g_dbus_proxy_new() for more details. * * 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 goa_chat_proxy_new_finish() to get the result of the operation. * * See goa_chat_proxy_new_sync() for the synchronous, blocking version of this constructor. */ void goa_chat_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 (GOA_TYPE_CHAT_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.OnlineAccounts.Chat", NULL); } /** * goa_chat_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_chat_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_chat_proxy_new(). * * Returns: (transfer full) (type GoaChatProxy): The constructed proxy object or %NULL if @error is set. */ GoaChat * goa_chat_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_CHAT (ret); else return NULL; } /** * goa_chat_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Chat. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_chat_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaChatProxy): The constructed proxy object or %NULL if @error is set. */ GoaChat * goa_chat_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_CHAT_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Chat", NULL); if (ret != NULL) return GOA_CHAT (ret); else return NULL; } /** * goa_chat_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_chat_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_chat_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_chat_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. */ void goa_chat_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 (GOA_TYPE_CHAT_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.OnlineAccounts.Chat", NULL); } /** * goa_chat_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_chat_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_chat_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaChatProxy): The constructed proxy object or %NULL if @error is set. */ GoaChat * goa_chat_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_CHAT (ret); else return NULL; } /** * goa_chat_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_chat_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_chat_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaChatProxy): The constructed proxy object or %NULL if @error is set. */ GoaChat * goa_chat_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_CHAT_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Chat", NULL); if (ret != NULL) return GOA_CHAT (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaChatSkeleton: * * The #GoaChatSkeleton structure contains only private data and should only be accessed using the provided API. */ /** * GoaChatSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaChatSkeleton. */ struct _GoaChatSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_chat_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaChatSkeleton *skeleton = GOA_CHAT_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_CHAT); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_CHAT); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_chat_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaChatSkeleton *skeleton = GOA_CHAT_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_chat_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_chat_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaChatSkeleton *skeleton = GOA_CHAT_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_chat_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_chat_skeleton_vtable = { _goa_chat_skeleton_handle_method_call, _goa_chat_skeleton_handle_get_property, _goa_chat_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_chat_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_chat_interface_info (); } static GDBusInterfaceVTable * goa_chat_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_chat_skeleton_vtable; } static GVariant * goa_chat_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaChatSkeleton *skeleton = GOA_CHAT_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_chat_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_chat_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_chat_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_chat_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.Chat", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static void goa_chat_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { } static void goa_chat_skeleton_iface_init (GoaChatIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaChatSkeleton, goa_chat_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaChatSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_CHAT, goa_chat_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaChatSkeleton, goa_chat_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_CHAT, goa_chat_skeleton_iface_init)) #endif static void goa_chat_skeleton_finalize (GObject *object) { GoaChatSkeleton *skeleton = GOA_CHAT_SKELETON (object); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_chat_skeleton_parent_class)->finalize (object); } static void goa_chat_skeleton_init (GoaChatSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_chat_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_CHAT_SKELETON, GoaChatSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); } static void goa_chat_skeleton_class_init (GoaChatSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_chat_skeleton_finalize; skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_chat_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_chat_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_chat_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_chat_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaChatSkeletonPrivate)); #endif } static void goa_chat_skeleton_iface_init (GoaChatIface *iface) { } /** * goa_chat_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.Chat. * * Returns: (transfer full) (type GoaChatSkeleton): The skeleton object. */ GoaChat * goa_chat_skeleton_new (void) { return GOA_CHAT (g_object_new (GOA_TYPE_CHAT_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.Documents * ------------------------------------------------------------------------ */ /** * SECTION:GoaDocuments * @title: GoaDocuments * @short_description: Generated C code for the org.gnome.OnlineAccounts.Documents D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.Documents D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.Documents ---- */ static const _ExtendedGDBusInterfaceInfo _goa_documents_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.Documents", NULL, NULL, NULL, NULL }, "documents", }; /** * goa_documents_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.Documents D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. */ GDBusInterfaceInfo * goa_documents_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_documents_interface_info.parent_struct; } /** * goa_documents_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaDocuments interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. */ guint goa_documents_override_properties (GObjectClass *klass, guint property_id_begin) { return property_id_begin - 1; } /** * GoaDocuments: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.Documents. */ /** * GoaDocumentsIface: * @parent_iface: The parent interface. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.Documents. */ typedef GoaDocumentsIface GoaDocumentsInterface; G_DEFINE_INTERFACE (GoaDocuments, goa_documents, G_TYPE_OBJECT) static void goa_documents_default_init (GoaDocumentsIface *iface) { } /* ------------------------------------------------------------------------ */ /** * GoaDocumentsProxy: * * The #GoaDocumentsProxy structure contains only private data and should only be accessed using the provided API. */ /** * GoaDocumentsProxyClass: * @parent_class: The parent class. * * Class structure for #GoaDocumentsProxy. */ struct _GoaDocumentsProxyPrivate { GData *qdata; }; static void goa_documents_proxy_iface_init (GoaDocumentsIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaDocumentsProxy, goa_documents_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaDocumentsProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_DOCUMENTS, goa_documents_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaDocumentsProxy, goa_documents_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_DOCUMENTS, goa_documents_proxy_iface_init)) #endif static void goa_documents_proxy_finalize (GObject *object) { GoaDocumentsProxy *proxy = GOA_DOCUMENTS_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_documents_proxy_parent_class)->finalize (object); } static void goa_documents_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_documents_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_documents_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_documents_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_DOCUMENTS); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_DOCUMENTS); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_documents_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaDocumentsProxy *proxy = GOA_DOCUMENTS_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_documents_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_documents_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static void goa_documents_proxy_init (GoaDocumentsProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_documents_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_DOCUMENTS_PROXY, GoaDocumentsProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_documents_interface_info ()); } static void goa_documents_proxy_class_init (GoaDocumentsProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_documents_proxy_finalize; gobject_class->get_property = goa_documents_proxy_get_property; gobject_class->set_property = goa_documents_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_documents_proxy_g_signal; proxy_class->g_properties_changed = goa_documents_proxy_g_properties_changed; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaDocumentsProxyPrivate)); #endif } static void goa_documents_proxy_iface_init (GoaDocumentsIface *iface) { } /** * goa_documents_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Documents. See g_dbus_proxy_new() for more details. * * 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 goa_documents_proxy_new_finish() to get the result of the operation. * * See goa_documents_proxy_new_sync() for the synchronous, blocking version of this constructor. */ void goa_documents_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 (GOA_TYPE_DOCUMENTS_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.OnlineAccounts.Documents", NULL); } /** * goa_documents_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_documents_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_documents_proxy_new(). * * Returns: (transfer full) (type GoaDocumentsProxy): The constructed proxy object or %NULL if @error is set. */ GoaDocuments * goa_documents_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_DOCUMENTS (ret); else return NULL; } /** * goa_documents_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Documents. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_documents_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaDocumentsProxy): The constructed proxy object or %NULL if @error is set. */ GoaDocuments * goa_documents_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_DOCUMENTS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Documents", NULL); if (ret != NULL) return GOA_DOCUMENTS (ret); else return NULL; } /** * goa_documents_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_documents_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_documents_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_documents_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. */ void goa_documents_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 (GOA_TYPE_DOCUMENTS_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.OnlineAccounts.Documents", NULL); } /** * goa_documents_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_documents_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_documents_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaDocumentsProxy): The constructed proxy object or %NULL if @error is set. */ GoaDocuments * goa_documents_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_DOCUMENTS (ret); else return NULL; } /** * goa_documents_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_documents_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_documents_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaDocumentsProxy): The constructed proxy object or %NULL if @error is set. */ GoaDocuments * goa_documents_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_DOCUMENTS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Documents", NULL); if (ret != NULL) return GOA_DOCUMENTS (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaDocumentsSkeleton: * * The #GoaDocumentsSkeleton structure contains only private data and should only be accessed using the provided API. */ /** * GoaDocumentsSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaDocumentsSkeleton. */ struct _GoaDocumentsSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_documents_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaDocumentsSkeleton *skeleton = GOA_DOCUMENTS_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_DOCUMENTS); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_DOCUMENTS); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_documents_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaDocumentsSkeleton *skeleton = GOA_DOCUMENTS_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_documents_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_documents_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaDocumentsSkeleton *skeleton = GOA_DOCUMENTS_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_documents_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_documents_skeleton_vtable = { _goa_documents_skeleton_handle_method_call, _goa_documents_skeleton_handle_get_property, _goa_documents_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_documents_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_documents_interface_info (); } static GDBusInterfaceVTable * goa_documents_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_documents_skeleton_vtable; } static GVariant * goa_documents_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaDocumentsSkeleton *skeleton = GOA_DOCUMENTS_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_documents_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_documents_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_documents_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_documents_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.Documents", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static void goa_documents_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { } static void goa_documents_skeleton_iface_init (GoaDocumentsIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaDocumentsSkeleton, goa_documents_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaDocumentsSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_DOCUMENTS, goa_documents_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaDocumentsSkeleton, goa_documents_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_DOCUMENTS, goa_documents_skeleton_iface_init)) #endif static void goa_documents_skeleton_finalize (GObject *object) { GoaDocumentsSkeleton *skeleton = GOA_DOCUMENTS_SKELETON (object); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_documents_skeleton_parent_class)->finalize (object); } static void goa_documents_skeleton_init (GoaDocumentsSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_documents_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_DOCUMENTS_SKELETON, GoaDocumentsSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); } static void goa_documents_skeleton_class_init (GoaDocumentsSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_documents_skeleton_finalize; skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_documents_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_documents_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_documents_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_documents_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaDocumentsSkeletonPrivate)); #endif } static void goa_documents_skeleton_iface_init (GoaDocumentsIface *iface) { } /** * goa_documents_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.Documents. * * Returns: (transfer full) (type GoaDocumentsSkeleton): The skeleton object. */ GoaDocuments * goa_documents_skeleton_new (void) { return GOA_DOCUMENTS (g_object_new (GOA_TYPE_DOCUMENTS_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.Maps * ------------------------------------------------------------------------ */ /** * SECTION:GoaMaps * @title: GoaMaps * @short_description: Generated C code for the org.gnome.OnlineAccounts.Maps D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.Maps D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.Maps ---- */ static const _ExtendedGDBusInterfaceInfo _goa_maps_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.Maps", NULL, NULL, NULL, NULL }, "maps", }; /** * goa_maps_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.Maps D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. * * Since: 3.14.0 */ GDBusInterfaceInfo * goa_maps_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_maps_interface_info.parent_struct; } /** * goa_maps_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaMaps interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. * * Since: 3.14.0 */ guint goa_maps_override_properties (GObjectClass *klass, guint property_id_begin) { return property_id_begin - 1; } /** * GoaMaps: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.Maps. * * Since: 3.14.0 */ /** * GoaMapsIface: * @parent_iface: The parent interface. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.Maps. * * Since: 3.14.0 */ typedef GoaMapsIface GoaMapsInterface; G_DEFINE_INTERFACE (GoaMaps, goa_maps, G_TYPE_OBJECT) static void goa_maps_default_init (GoaMapsIface *iface) { } /* ------------------------------------------------------------------------ */ /** * GoaMapsProxy: * * The #GoaMapsProxy structure contains only private data and should only be accessed using the provided API. * * Since: 3.14.0 */ /** * GoaMapsProxyClass: * @parent_class: The parent class. * * Class structure for #GoaMapsProxy. * * Since: 3.14.0 */ struct _GoaMapsProxyPrivate { GData *qdata; }; static void goa_maps_proxy_iface_init (GoaMapsIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaMapsProxy, goa_maps_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaMapsProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_MAPS, goa_maps_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaMapsProxy, goa_maps_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_MAPS, goa_maps_proxy_iface_init)) #endif static void goa_maps_proxy_finalize (GObject *object) { GoaMapsProxy *proxy = GOA_MAPS_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_maps_proxy_parent_class)->finalize (object); } static void goa_maps_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_maps_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_maps_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_maps_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_MAPS); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_MAPS); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_maps_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaMapsProxy *proxy = GOA_MAPS_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_maps_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_maps_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static void goa_maps_proxy_init (GoaMapsProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_maps_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_MAPS_PROXY, GoaMapsProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_maps_interface_info ()); } static void goa_maps_proxy_class_init (GoaMapsProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_maps_proxy_finalize; gobject_class->get_property = goa_maps_proxy_get_property; gobject_class->set_property = goa_maps_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_maps_proxy_g_signal; proxy_class->g_properties_changed = goa_maps_proxy_g_properties_changed; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaMapsProxyPrivate)); #endif } static void goa_maps_proxy_iface_init (GoaMapsIface *iface) { } /** * goa_maps_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Maps. See g_dbus_proxy_new() for more details. * * 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 goa_maps_proxy_new_finish() to get the result of the operation. * * See goa_maps_proxy_new_sync() for the synchronous, blocking version of this constructor. * * Since: 3.14.0 */ void goa_maps_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 (GOA_TYPE_MAPS_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.OnlineAccounts.Maps", NULL); } /** * goa_maps_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_maps_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_maps_proxy_new(). * * Returns: (transfer full) (type GoaMapsProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.14.0 */ GoaMaps * goa_maps_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_MAPS (ret); else return NULL; } /** * goa_maps_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Maps. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_maps_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaMapsProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.14.0 */ GoaMaps * goa_maps_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_MAPS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Maps", NULL); if (ret != NULL) return GOA_MAPS (ret); else return NULL; } /** * goa_maps_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_maps_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_maps_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_maps_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. * * Since: 3.14.0 */ void goa_maps_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 (GOA_TYPE_MAPS_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.OnlineAccounts.Maps", NULL); } /** * goa_maps_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_maps_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_maps_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaMapsProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.14.0 */ GoaMaps * goa_maps_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_MAPS (ret); else return NULL; } /** * goa_maps_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_maps_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_maps_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaMapsProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.14.0 */ GoaMaps * goa_maps_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_MAPS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Maps", NULL); if (ret != NULL) return GOA_MAPS (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaMapsSkeleton: * * The #GoaMapsSkeleton structure contains only private data and should only be accessed using the provided API. * * Since: 3.14.0 */ /** * GoaMapsSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaMapsSkeleton. * * Since: 3.14.0 */ struct _GoaMapsSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_maps_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaMapsSkeleton *skeleton = GOA_MAPS_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_MAPS); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_MAPS); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_maps_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaMapsSkeleton *skeleton = GOA_MAPS_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_maps_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_maps_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaMapsSkeleton *skeleton = GOA_MAPS_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_maps_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_maps_skeleton_vtable = { _goa_maps_skeleton_handle_method_call, _goa_maps_skeleton_handle_get_property, _goa_maps_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_maps_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_maps_interface_info (); } static GDBusInterfaceVTable * goa_maps_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_maps_skeleton_vtable; } static GVariant * goa_maps_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaMapsSkeleton *skeleton = GOA_MAPS_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_maps_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_maps_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_maps_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_maps_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.Maps", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static void goa_maps_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { } static void goa_maps_skeleton_iface_init (GoaMapsIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaMapsSkeleton, goa_maps_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaMapsSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_MAPS, goa_maps_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaMapsSkeleton, goa_maps_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_MAPS, goa_maps_skeleton_iface_init)) #endif static void goa_maps_skeleton_finalize (GObject *object) { GoaMapsSkeleton *skeleton = GOA_MAPS_SKELETON (object); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_maps_skeleton_parent_class)->finalize (object); } static void goa_maps_skeleton_init (GoaMapsSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_maps_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_MAPS_SKELETON, GoaMapsSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); } static void goa_maps_skeleton_class_init (GoaMapsSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_maps_skeleton_finalize; skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_maps_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_maps_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_maps_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_maps_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaMapsSkeletonPrivate)); #endif } static void goa_maps_skeleton_iface_init (GoaMapsIface *iface) { } /** * goa_maps_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.Maps. * * Returns: (transfer full) (type GoaMapsSkeleton): The skeleton object. * * Since: 3.14.0 */ GoaMaps * goa_maps_skeleton_new (void) { return GOA_MAPS (g_object_new (GOA_TYPE_MAPS_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.Music * ------------------------------------------------------------------------ */ /** * SECTION:GoaMusic * @title: GoaMusic * @short_description: Generated C code for the org.gnome.OnlineAccounts.Music D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.Music D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.Music ---- */ static const _ExtendedGDBusInterfaceInfo _goa_music_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.Music", NULL, NULL, NULL, NULL }, "music", }; /** * goa_music_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.Music D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. * * Since: 3.18.0 */ GDBusInterfaceInfo * goa_music_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_music_interface_info.parent_struct; } /** * goa_music_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaMusic interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. * * Since: 3.18.0 */ guint goa_music_override_properties (GObjectClass *klass, guint property_id_begin) { return property_id_begin - 1; } /** * GoaMusic: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.Music. * * Since: 3.18.0 */ /** * GoaMusicIface: * @parent_iface: The parent interface. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.Music. * * Since: 3.18.0 */ typedef GoaMusicIface GoaMusicInterface; G_DEFINE_INTERFACE (GoaMusic, goa_music, G_TYPE_OBJECT) static void goa_music_default_init (GoaMusicIface *iface) { } /* ------------------------------------------------------------------------ */ /** * GoaMusicProxy: * * The #GoaMusicProxy structure contains only private data and should only be accessed using the provided API. * * Since: 3.18.0 */ /** * GoaMusicProxyClass: * @parent_class: The parent class. * * Class structure for #GoaMusicProxy. * * Since: 3.18.0 */ struct _GoaMusicProxyPrivate { GData *qdata; }; static void goa_music_proxy_iface_init (GoaMusicIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaMusicProxy, goa_music_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaMusicProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_MUSIC, goa_music_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaMusicProxy, goa_music_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_MUSIC, goa_music_proxy_iface_init)) #endif static void goa_music_proxy_finalize (GObject *object) { GoaMusicProxy *proxy = GOA_MUSIC_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_music_proxy_parent_class)->finalize (object); } static void goa_music_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_music_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_music_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_music_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_MUSIC); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_MUSIC); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_music_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaMusicProxy *proxy = GOA_MUSIC_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_music_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_music_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static void goa_music_proxy_init (GoaMusicProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_music_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_MUSIC_PROXY, GoaMusicProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_music_interface_info ()); } static void goa_music_proxy_class_init (GoaMusicProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_music_proxy_finalize; gobject_class->get_property = goa_music_proxy_get_property; gobject_class->set_property = goa_music_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_music_proxy_g_signal; proxy_class->g_properties_changed = goa_music_proxy_g_properties_changed; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaMusicProxyPrivate)); #endif } static void goa_music_proxy_iface_init (GoaMusicIface *iface) { } /** * goa_music_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Music. See g_dbus_proxy_new() for more details. * * 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 goa_music_proxy_new_finish() to get the result of the operation. * * See goa_music_proxy_new_sync() for the synchronous, blocking version of this constructor. * * Since: 3.18.0 */ void goa_music_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 (GOA_TYPE_MUSIC_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.OnlineAccounts.Music", NULL); } /** * goa_music_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_music_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_music_proxy_new(). * * Returns: (transfer full) (type GoaMusicProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.18.0 */ GoaMusic * goa_music_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_MUSIC (ret); else return NULL; } /** * goa_music_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Music. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_music_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaMusicProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.18.0 */ GoaMusic * goa_music_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_MUSIC_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Music", NULL); if (ret != NULL) return GOA_MUSIC (ret); else return NULL; } /** * goa_music_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_music_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_music_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_music_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. * * Since: 3.18.0 */ void goa_music_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 (GOA_TYPE_MUSIC_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.OnlineAccounts.Music", NULL); } /** * goa_music_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_music_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_music_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaMusicProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.18.0 */ GoaMusic * goa_music_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_MUSIC (ret); else return NULL; } /** * goa_music_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_music_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_music_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaMusicProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.18.0 */ GoaMusic * goa_music_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_MUSIC_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Music", NULL); if (ret != NULL) return GOA_MUSIC (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaMusicSkeleton: * * The #GoaMusicSkeleton structure contains only private data and should only be accessed using the provided API. * * Since: 3.18.0 */ /** * GoaMusicSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaMusicSkeleton. * * Since: 3.18.0 */ struct _GoaMusicSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_music_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaMusicSkeleton *skeleton = GOA_MUSIC_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_MUSIC); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_MUSIC); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_music_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaMusicSkeleton *skeleton = GOA_MUSIC_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_music_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_music_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaMusicSkeleton *skeleton = GOA_MUSIC_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_music_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_music_skeleton_vtable = { _goa_music_skeleton_handle_method_call, _goa_music_skeleton_handle_get_property, _goa_music_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_music_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_music_interface_info (); } static GDBusInterfaceVTable * goa_music_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_music_skeleton_vtable; } static GVariant * goa_music_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaMusicSkeleton *skeleton = GOA_MUSIC_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_music_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_music_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_music_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_music_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.Music", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static void goa_music_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { } static void goa_music_skeleton_iface_init (GoaMusicIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaMusicSkeleton, goa_music_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaMusicSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_MUSIC, goa_music_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaMusicSkeleton, goa_music_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_MUSIC, goa_music_skeleton_iface_init)) #endif static void goa_music_skeleton_finalize (GObject *object) { GoaMusicSkeleton *skeleton = GOA_MUSIC_SKELETON (object); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_music_skeleton_parent_class)->finalize (object); } static void goa_music_skeleton_init (GoaMusicSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_music_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_MUSIC_SKELETON, GoaMusicSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); } static void goa_music_skeleton_class_init (GoaMusicSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_music_skeleton_finalize; skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_music_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_music_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_music_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_music_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaMusicSkeletonPrivate)); #endif } static void goa_music_skeleton_iface_init (GoaMusicIface *iface) { } /** * goa_music_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.Music. * * Returns: (transfer full) (type GoaMusicSkeleton): The skeleton object. * * Since: 3.18.0 */ GoaMusic * goa_music_skeleton_new (void) { return GOA_MUSIC (g_object_new (GOA_TYPE_MUSIC_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.Photos * ------------------------------------------------------------------------ */ /** * SECTION:GoaPhotos * @title: GoaPhotos * @short_description: Generated C code for the org.gnome.OnlineAccounts.Photos D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.Photos D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.Photos ---- */ static const _ExtendedGDBusInterfaceInfo _goa_photos_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.Photos", NULL, NULL, NULL, NULL }, "photos", }; /** * goa_photos_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.Photos D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. * * Since: 3.8.0 */ GDBusInterfaceInfo * goa_photos_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_photos_interface_info.parent_struct; } /** * goa_photos_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaPhotos interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. * * Since: 3.8.0 */ guint goa_photos_override_properties (GObjectClass *klass, guint property_id_begin) { return property_id_begin - 1; } /** * GoaPhotos: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.Photos. * * Since: 3.8.0 */ /** * GoaPhotosIface: * @parent_iface: The parent interface. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.Photos. * * Since: 3.8.0 */ typedef GoaPhotosIface GoaPhotosInterface; G_DEFINE_INTERFACE (GoaPhotos, goa_photos, G_TYPE_OBJECT) static void goa_photos_default_init (GoaPhotosIface *iface) { } /* ------------------------------------------------------------------------ */ /** * GoaPhotosProxy: * * The #GoaPhotosProxy structure contains only private data and should only be accessed using the provided API. * * Since: 3.8.0 */ /** * GoaPhotosProxyClass: * @parent_class: The parent class. * * Class structure for #GoaPhotosProxy. * * Since: 3.8.0 */ struct _GoaPhotosProxyPrivate { GData *qdata; }; static void goa_photos_proxy_iface_init (GoaPhotosIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaPhotosProxy, goa_photos_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaPhotosProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_PHOTOS, goa_photos_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaPhotosProxy, goa_photos_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_PHOTOS, goa_photos_proxy_iface_init)) #endif static void goa_photos_proxy_finalize (GObject *object) { GoaPhotosProxy *proxy = GOA_PHOTOS_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_photos_proxy_parent_class)->finalize (object); } static void goa_photos_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_photos_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_photos_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_photos_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_PHOTOS); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_PHOTOS); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_photos_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaPhotosProxy *proxy = GOA_PHOTOS_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_photos_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_photos_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static void goa_photos_proxy_init (GoaPhotosProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_photos_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_PHOTOS_PROXY, GoaPhotosProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_photos_interface_info ()); } static void goa_photos_proxy_class_init (GoaPhotosProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_photos_proxy_finalize; gobject_class->get_property = goa_photos_proxy_get_property; gobject_class->set_property = goa_photos_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_photos_proxy_g_signal; proxy_class->g_properties_changed = goa_photos_proxy_g_properties_changed; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaPhotosProxyPrivate)); #endif } static void goa_photos_proxy_iface_init (GoaPhotosIface *iface) { } /** * goa_photos_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Photos. See g_dbus_proxy_new() for more details. * * 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 goa_photos_proxy_new_finish() to get the result of the operation. * * See goa_photos_proxy_new_sync() for the synchronous, blocking version of this constructor. * * Since: 3.8.0 */ void goa_photos_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 (GOA_TYPE_PHOTOS_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.OnlineAccounts.Photos", NULL); } /** * goa_photos_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_photos_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_photos_proxy_new(). * * Returns: (transfer full) (type GoaPhotosProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.8.0 */ GoaPhotos * goa_photos_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_PHOTOS (ret); else return NULL; } /** * goa_photos_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Photos. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_photos_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaPhotosProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.8.0 */ GoaPhotos * goa_photos_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_PHOTOS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Photos", NULL); if (ret != NULL) return GOA_PHOTOS (ret); else return NULL; } /** * goa_photos_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_photos_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_photos_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_photos_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. * * Since: 3.8.0 */ void goa_photos_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 (GOA_TYPE_PHOTOS_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.OnlineAccounts.Photos", NULL); } /** * goa_photos_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_photos_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_photos_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaPhotosProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.8.0 */ GoaPhotos * goa_photos_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_PHOTOS (ret); else return NULL; } /** * goa_photos_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_photos_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_photos_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaPhotosProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.8.0 */ GoaPhotos * goa_photos_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_PHOTOS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Photos", NULL); if (ret != NULL) return GOA_PHOTOS (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaPhotosSkeleton: * * The #GoaPhotosSkeleton structure contains only private data and should only be accessed using the provided API. * * Since: 3.8.0 */ /** * GoaPhotosSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaPhotosSkeleton. * * Since: 3.8.0 */ struct _GoaPhotosSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_photos_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaPhotosSkeleton *skeleton = GOA_PHOTOS_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_PHOTOS); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_PHOTOS); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_photos_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaPhotosSkeleton *skeleton = GOA_PHOTOS_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_photos_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_photos_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaPhotosSkeleton *skeleton = GOA_PHOTOS_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_photos_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_photos_skeleton_vtable = { _goa_photos_skeleton_handle_method_call, _goa_photos_skeleton_handle_get_property, _goa_photos_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_photos_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_photos_interface_info (); } static GDBusInterfaceVTable * goa_photos_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_photos_skeleton_vtable; } static GVariant * goa_photos_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaPhotosSkeleton *skeleton = GOA_PHOTOS_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_photos_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_photos_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_photos_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_photos_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.Photos", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static void goa_photos_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { } static void goa_photos_skeleton_iface_init (GoaPhotosIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaPhotosSkeleton, goa_photos_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaPhotosSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_PHOTOS, goa_photos_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaPhotosSkeleton, goa_photos_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_PHOTOS, goa_photos_skeleton_iface_init)) #endif static void goa_photos_skeleton_finalize (GObject *object) { GoaPhotosSkeleton *skeleton = GOA_PHOTOS_SKELETON (object); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_photos_skeleton_parent_class)->finalize (object); } static void goa_photos_skeleton_init (GoaPhotosSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_photos_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_PHOTOS_SKELETON, GoaPhotosSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); } static void goa_photos_skeleton_class_init (GoaPhotosSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_photos_skeleton_finalize; skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_photos_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_photos_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_photos_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_photos_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaPhotosSkeletonPrivate)); #endif } static void goa_photos_skeleton_iface_init (GoaPhotosIface *iface) { } /** * goa_photos_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.Photos. * * Returns: (transfer full) (type GoaPhotosSkeleton): The skeleton object. * * Since: 3.8.0 */ GoaPhotos * goa_photos_skeleton_new (void) { return GOA_PHOTOS (g_object_new (GOA_TYPE_PHOTOS_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.Files * ------------------------------------------------------------------------ */ /** * SECTION:GoaFiles * @title: GoaFiles * @short_description: Generated C code for the org.gnome.OnlineAccounts.Files D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.Files D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.Files ---- */ static const _ExtendedGDBusPropertyInfo _goa_files_property_info_accept_ssl_errors = { { -1, (gchar *) "AcceptSslErrors", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "accept-ssl-errors", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_files_property_info_uri = { { -1, (gchar *) "Uri", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "uri", FALSE }; static const _ExtendedGDBusPropertyInfo * const _goa_files_property_info_pointers[] = { &_goa_files_property_info_accept_ssl_errors, &_goa_files_property_info_uri, NULL }; static const _ExtendedGDBusInterfaceInfo _goa_files_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.Files", NULL, NULL, (GDBusPropertyInfo **) &_goa_files_property_info_pointers, NULL }, "files", }; /** * goa_files_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.Files D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. * * Since: 3.8.0 */ GDBusInterfaceInfo * goa_files_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_files_interface_info.parent_struct; } /** * goa_files_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaFiles interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. * * Since: 3.8.0 */ guint goa_files_override_properties (GObjectClass *klass, guint property_id_begin) { g_object_class_override_property (klass, property_id_begin++, "accept-ssl-errors"); g_object_class_override_property (klass, property_id_begin++, "uri"); return property_id_begin - 1; } /** * GoaFiles: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.Files. * * Since: 3.8.0 */ /** * GoaFilesIface: * @parent_iface: The parent interface. * @get_accept_ssl_errors: Getter for the #GoaFiles:accept-ssl-errors property. * @get_uri: Getter for the #GoaFiles:uri property. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.Files. * * Since: 3.8.0 */ typedef GoaFilesIface GoaFilesInterface; G_DEFINE_INTERFACE (GoaFiles, goa_files, G_TYPE_OBJECT) static void goa_files_default_init (GoaFilesIface *iface) { /* GObject properties for D-Bus properties: */ /** * GoaFiles:accept-ssl-errors: * * Represents the D-Bus property "AcceptSslErrors". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.8.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("accept-ssl-errors", "AcceptSslErrors", "AcceptSslErrors", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaFiles:uri: * * Represents the D-Bus property "Uri". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.8.0 */ g_object_interface_install_property (iface, g_param_spec_string ("uri", "Uri", "Uri", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } /** * goa_files_get_accept_ssl_errors: (skip) * @object: A #GoaFiles. * * Gets the value of the "AcceptSslErrors" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.8.0 */ gboolean goa_files_get_accept_ssl_errors (GoaFiles *object) { return GOA_FILES_GET_IFACE (object)->get_accept_ssl_errors (object); } /** * goa_files_set_accept_ssl_errors: (skip) * @object: A #GoaFiles. * @value: The value to set. * * Sets the "AcceptSslErrors" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.8.0 */ void goa_files_set_accept_ssl_errors (GoaFiles *object, gboolean value) { g_object_set (G_OBJECT (object), "accept-ssl-errors", value, NULL); } /** * goa_files_get_uri: (skip) * @object: A #GoaFiles. * * Gets the value of the "Uri" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_files_dup_uri() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. * * Since: 3.8.0 */ const gchar * goa_files_get_uri (GoaFiles *object) { return GOA_FILES_GET_IFACE (object)->get_uri (object); } /** * goa_files_dup_uri: (skip) * @object: A #GoaFiles. * * Gets a copy of the "Uri" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). * * Since: 3.8.0 */ gchar * goa_files_dup_uri (GoaFiles *object) { gchar *value; g_object_get (G_OBJECT (object), "uri", &value, NULL); return value; } /** * goa_files_set_uri: (skip) * @object: A #GoaFiles. * @value: The value to set. * * Sets the "Uri" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.8.0 */ void goa_files_set_uri (GoaFiles *object, const gchar *value) { g_object_set (G_OBJECT (object), "uri", value, NULL); } /* ------------------------------------------------------------------------ */ /** * GoaFilesProxy: * * The #GoaFilesProxy structure contains only private data and should only be accessed using the provided API. * * Since: 3.8.0 */ /** * GoaFilesProxyClass: * @parent_class: The parent class. * * Class structure for #GoaFilesProxy. * * Since: 3.8.0 */ struct _GoaFilesProxyPrivate { GData *qdata; }; static void goa_files_proxy_iface_init (GoaFilesIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaFilesProxy, goa_files_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaFilesProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_FILES, goa_files_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaFilesProxy, goa_files_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_FILES, goa_files_proxy_iface_init)) #endif static void goa_files_proxy_finalize (GObject *object) { GoaFilesProxy *proxy = GOA_FILES_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_files_proxy_parent_class)->finalize (object); } static void goa_files_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = _goa_files_property_info_pointers[prop_id - 1]; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name); if (info->use_gvariant) { g_value_set_variant (value, variant); } else { if (variant != NULL) g_dbus_gvariant_to_gvalue (variant, value); } if (variant != NULL) g_variant_unref (variant); } static void goa_files_proxy_set_property_cb (GDBusProxy *proxy, GAsyncResult *res, gpointer user_data) { const _ExtendedGDBusPropertyInfo *info = user_data; GError *error; GVariant *_ret; error = NULL; _ret = g_dbus_proxy_call_finish (proxy, res, &error); if (!_ret) { g_warning ("Error setting property '%s' on interface org.gnome.OnlineAccounts.Files: %s (%s, %d)", info->parent_struct.name, error->message, g_quark_to_string (error->domain), error->code); g_error_free (error); } else { g_variant_unref (_ret); } } static void goa_files_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = _goa_files_property_info_pointers[prop_id - 1]; variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature)); g_dbus_proxy_call (G_DBUS_PROXY (object), "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", "org.gnome.OnlineAccounts.Files", info->parent_struct.name, variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) goa_files_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct); g_variant_unref (variant); } static void goa_files_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_files_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_FILES); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_FILES); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_files_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaFilesProxy *proxy = GOA_FILES_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_files_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_files_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static gboolean goa_files_proxy_get_accept_ssl_errors (GoaFiles *object) { GoaFilesProxy *proxy = GOA_FILES_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "AcceptSslErrors"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static const gchar * goa_files_proxy_get_uri (GoaFiles *object) { GoaFilesProxy *proxy = GOA_FILES_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Uri"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static void goa_files_proxy_init (GoaFilesProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_files_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_FILES_PROXY, GoaFilesProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_files_interface_info ()); } static void goa_files_proxy_class_init (GoaFilesProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_files_proxy_finalize; gobject_class->get_property = goa_files_proxy_get_property; gobject_class->set_property = goa_files_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_files_proxy_g_signal; proxy_class->g_properties_changed = goa_files_proxy_g_properties_changed; goa_files_override_properties (gobject_class, 1); #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaFilesProxyPrivate)); #endif } static void goa_files_proxy_iface_init (GoaFilesIface *iface) { iface->get_accept_ssl_errors = goa_files_proxy_get_accept_ssl_errors; iface->get_uri = goa_files_proxy_get_uri; } /** * goa_files_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Files. See g_dbus_proxy_new() for more details. * * 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 goa_files_proxy_new_finish() to get the result of the operation. * * See goa_files_proxy_new_sync() for the synchronous, blocking version of this constructor. * * Since: 3.8.0 */ void goa_files_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 (GOA_TYPE_FILES_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.OnlineAccounts.Files", NULL); } /** * goa_files_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_files_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_files_proxy_new(). * * Returns: (transfer full) (type GoaFilesProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.8.0 */ GoaFiles * goa_files_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_FILES (ret); else return NULL; } /** * goa_files_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Files. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_files_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaFilesProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.8.0 */ GoaFiles * goa_files_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_FILES_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Files", NULL); if (ret != NULL) return GOA_FILES (ret); else return NULL; } /** * goa_files_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_files_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_files_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_files_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. * * Since: 3.8.0 */ void goa_files_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 (GOA_TYPE_FILES_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.OnlineAccounts.Files", NULL); } /** * goa_files_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_files_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_files_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaFilesProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.8.0 */ GoaFiles * goa_files_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_FILES (ret); else return NULL; } /** * goa_files_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_files_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_files_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaFilesProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.8.0 */ GoaFiles * goa_files_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_FILES_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Files", NULL); if (ret != NULL) return GOA_FILES (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaFilesSkeleton: * * The #GoaFilesSkeleton structure contains only private data and should only be accessed using the provided API. * * Since: 3.8.0 */ /** * GoaFilesSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaFilesSkeleton. * * Since: 3.8.0 */ struct _GoaFilesSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_files_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaFilesSkeleton *skeleton = GOA_FILES_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_FILES); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_FILES); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_files_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaFilesSkeleton *skeleton = GOA_FILES_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_files_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_files_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaFilesSkeleton *skeleton = GOA_FILES_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_files_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_files_skeleton_vtable = { _goa_files_skeleton_handle_method_call, _goa_files_skeleton_handle_get_property, _goa_files_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_files_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_files_interface_info (); } static GDBusInterfaceVTable * goa_files_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_files_skeleton_vtable; } static GVariant * goa_files_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaFilesSkeleton *skeleton = GOA_FILES_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_files_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_files_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_files_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_files_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.Files", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static gboolean _goa_files_emit_changed (gpointer user_data); static void goa_files_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { GoaFilesSkeleton *skeleton = GOA_FILES_SKELETON (_skeleton); gboolean emit_changed = FALSE; g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties_idle_source != NULL) { g_source_destroy (skeleton->priv->changed_properties_idle_source); skeleton->priv->changed_properties_idle_source = NULL; emit_changed = TRUE; } g_mutex_unlock (&skeleton->priv->lock); if (emit_changed) _goa_files_emit_changed (skeleton); } static void goa_files_skeleton_iface_init (GoaFilesIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaFilesSkeleton, goa_files_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaFilesSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_FILES, goa_files_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaFilesSkeleton, goa_files_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_FILES, goa_files_skeleton_iface_init)) #endif static void goa_files_skeleton_finalize (GObject *object) { GoaFilesSkeleton *skeleton = GOA_FILES_SKELETON (object); guint n; for (n = 0; n < 2; n++) g_value_unset (&skeleton->priv->properties[n]); g_free (skeleton->priv->properties); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_files_skeleton_parent_class)->finalize (object); } static void goa_files_skeleton_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { GoaFilesSkeleton *skeleton = GOA_FILES_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); g_mutex_lock (&skeleton->priv->lock); g_value_copy (&skeleton->priv->properties[prop_id - 1], value); g_mutex_unlock (&skeleton->priv->lock); } static gboolean _goa_files_emit_changed (gpointer user_data) { GoaFilesSkeleton *skeleton = GOA_FILES_SKELETON (user_data); GList *l; GVariantBuilder builder; GVariantBuilder invalidated_builder; guint num_changes; g_mutex_lock (&skeleton->priv->lock); g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next) { ChangedProperty *cp = l->data; GVariant *variant; const GValue *cur_value; cur_value = &skeleton->priv->properties[cp->prop_id - 1]; if (!_g_value_equal (cur_value, &cp->orig_value)) { variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature)); g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant); g_variant_unref (variant); num_changes++; } } if (num_changes > 0) { GList *connections, *ll; GVariant *signal_variant; signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.gnome.OnlineAccounts.Files", &builder, &invalidated_builder)); connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); for (ll = connections; ll != NULL; ll = ll->next) { GDBusConnection *connection = ll->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", "PropertiesChanged", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } else { g_variant_builder_clear (&builder); g_variant_builder_clear (&invalidated_builder); } g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); skeleton->priv->changed_properties = NULL; skeleton->priv->changed_properties_idle_source = NULL; g_mutex_unlock (&skeleton->priv->lock); return FALSE; } static void _goa_files_schedule_emit_changed (GoaFilesSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value) { ChangedProperty *cp; GList *l; cp = NULL; for (l = skeleton->priv->changed_properties; l != NULL; l = l->next) { ChangedProperty *i_cp = l->data; if (i_cp->info == info) { cp = i_cp; break; } } if (cp == NULL) { cp = g_new0 (ChangedProperty, 1); cp->prop_id = prop_id; cp->info = info; skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp); g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value)); g_value_copy (orig_value, &cp->orig_value); } } static void goa_files_skeleton_notify (GObject *object, GParamSpec *pspec G_GNUC_UNUSED) { GoaFilesSkeleton *skeleton = GOA_FILES_SKELETON (object); g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties != NULL && skeleton->priv->changed_properties_idle_source == NULL) { skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _goa_files_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _goa_files_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } g_mutex_unlock (&skeleton->priv->lock); } static void goa_files_skeleton_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GoaFilesSkeleton *skeleton = GOA_FILES_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); g_mutex_lock (&skeleton->priv->lock); g_object_freeze_notify (object); if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1])) { if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL) _goa_files_schedule_emit_changed (skeleton, _goa_files_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]); g_value_copy (value, &skeleton->priv->properties[prop_id - 1]); g_object_notify_by_pspec (object, pspec); } g_mutex_unlock (&skeleton->priv->lock); g_object_thaw_notify (object); } static void goa_files_skeleton_init (GoaFilesSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_files_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_FILES_SKELETON, GoaFilesSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); skeleton->priv->properties = g_new0 (GValue, 2); g_value_init (&skeleton->priv->properties[0], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING); } static gboolean goa_files_skeleton_get_accept_ssl_errors (GoaFiles *object) { GoaFilesSkeleton *skeleton = GOA_FILES_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[0])); g_mutex_unlock (&skeleton->priv->lock); return value; } static const gchar * goa_files_skeleton_get_uri (GoaFiles *object) { GoaFilesSkeleton *skeleton = GOA_FILES_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[1])); g_mutex_unlock (&skeleton->priv->lock); return value; } static void goa_files_skeleton_class_init (GoaFilesSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_files_skeleton_finalize; gobject_class->get_property = goa_files_skeleton_get_property; gobject_class->set_property = goa_files_skeleton_set_property; gobject_class->notify = goa_files_skeleton_notify; goa_files_override_properties (gobject_class, 1); skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_files_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_files_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_files_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_files_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaFilesSkeletonPrivate)); #endif } static void goa_files_skeleton_iface_init (GoaFilesIface *iface) { iface->get_accept_ssl_errors = goa_files_skeleton_get_accept_ssl_errors; iface->get_uri = goa_files_skeleton_get_uri; } /** * goa_files_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.Files. * * Returns: (transfer full) (type GoaFilesSkeleton): The skeleton object. * * Since: 3.8.0 */ GoaFiles * goa_files_skeleton_new (void) { return GOA_FILES (g_object_new (GOA_TYPE_FILES_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.Exchange * ------------------------------------------------------------------------ */ /** * SECTION:GoaExchange * @title: GoaExchange * @short_description: Generated C code for the org.gnome.OnlineAccounts.Exchange D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.Exchange D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.Exchange ---- */ static const _ExtendedGDBusPropertyInfo _goa_exchange_property_info_accept_ssl_errors = { { -1, (gchar *) "AcceptSslErrors", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "accept-ssl-errors", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_exchange_property_info_host = { { -1, (gchar *) "Host", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "host", FALSE }; static const _ExtendedGDBusPropertyInfo * const _goa_exchange_property_info_pointers[] = { &_goa_exchange_property_info_accept_ssl_errors, &_goa_exchange_property_info_host, NULL }; static const _ExtendedGDBusInterfaceInfo _goa_exchange_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.Exchange", NULL, NULL, (GDBusPropertyInfo **) &_goa_exchange_property_info_pointers, NULL }, "exchange", }; /** * goa_exchange_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.Exchange D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. * * Since: 3.6.0 */ GDBusInterfaceInfo * goa_exchange_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_exchange_interface_info.parent_struct; } /** * goa_exchange_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaExchange interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. * * Since: 3.6.0 */ guint goa_exchange_override_properties (GObjectClass *klass, guint property_id_begin) { g_object_class_override_property (klass, property_id_begin++, "accept-ssl-errors"); g_object_class_override_property (klass, property_id_begin++, "host"); return property_id_begin - 1; } /** * GoaExchange: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.Exchange. * * Since: 3.6.0 */ /** * GoaExchangeIface: * @parent_iface: The parent interface. * @get_host: Getter for the #GoaExchange:host property. * @get_accept_ssl_errors: Getter for the #GoaExchange:accept-ssl-errors property. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.Exchange. * * Since: 3.6.0 */ typedef GoaExchangeIface GoaExchangeInterface; G_DEFINE_INTERFACE (GoaExchange, goa_exchange, G_TYPE_OBJECT) static void goa_exchange_default_init (GoaExchangeIface *iface) { /* GObject properties for D-Bus properties: */ /** * GoaExchange:accept-ssl-errors: * * Represents the D-Bus property "AcceptSslErrors". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.8.0 */ g_object_interface_install_property (iface, g_param_spec_boolean ("accept-ssl-errors", "AcceptSslErrors", "AcceptSslErrors", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaExchange:host: * * Represents the D-Bus property "Host". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.6.0 */ g_object_interface_install_property (iface, g_param_spec_string ("host", "Host", "Host", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } /** * goa_exchange_get_accept_ssl_errors: (skip) * @object: A #GoaExchange. * * Gets the value of the "AcceptSslErrors" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.8.0 */ gboolean goa_exchange_get_accept_ssl_errors (GoaExchange *object) { return GOA_EXCHANGE_GET_IFACE (object)->get_accept_ssl_errors (object); } /** * goa_exchange_set_accept_ssl_errors: (skip) * @object: A #GoaExchange. * @value: The value to set. * * Sets the "AcceptSslErrors" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.8.0 */ void goa_exchange_set_accept_ssl_errors (GoaExchange *object, gboolean value) { g_object_set (G_OBJECT (object), "accept-ssl-errors", value, NULL); } /** * goa_exchange_get_host: (skip) * @object: A #GoaExchange. * * Gets the value of the "Host" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_exchange_dup_host() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. * * Since: 3.6.0 */ const gchar * goa_exchange_get_host (GoaExchange *object) { return GOA_EXCHANGE_GET_IFACE (object)->get_host (object); } /** * goa_exchange_dup_host: (skip) * @object: A #GoaExchange. * * Gets a copy of the "Host" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). * * Since: 3.6.0 */ gchar * goa_exchange_dup_host (GoaExchange *object) { gchar *value; g_object_get (G_OBJECT (object), "host", &value, NULL); return value; } /** * goa_exchange_set_host: (skip) * @object: A #GoaExchange. * @value: The value to set. * * Sets the "Host" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.6.0 */ void goa_exchange_set_host (GoaExchange *object, const gchar *value) { g_object_set (G_OBJECT (object), "host", value, NULL); } /* ------------------------------------------------------------------------ */ /** * GoaExchangeProxy: * * The #GoaExchangeProxy structure contains only private data and should only be accessed using the provided API. * * Since: 3.6.0 */ /** * GoaExchangeProxyClass: * @parent_class: The parent class. * * Class structure for #GoaExchangeProxy. * * Since: 3.6.0 */ struct _GoaExchangeProxyPrivate { GData *qdata; }; static void goa_exchange_proxy_iface_init (GoaExchangeIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaExchangeProxy, goa_exchange_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaExchangeProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_EXCHANGE, goa_exchange_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaExchangeProxy, goa_exchange_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_EXCHANGE, goa_exchange_proxy_iface_init)) #endif static void goa_exchange_proxy_finalize (GObject *object) { GoaExchangeProxy *proxy = GOA_EXCHANGE_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_exchange_proxy_parent_class)->finalize (object); } static void goa_exchange_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = _goa_exchange_property_info_pointers[prop_id - 1]; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name); if (info->use_gvariant) { g_value_set_variant (value, variant); } else { if (variant != NULL) g_dbus_gvariant_to_gvalue (variant, value); } if (variant != NULL) g_variant_unref (variant); } static void goa_exchange_proxy_set_property_cb (GDBusProxy *proxy, GAsyncResult *res, gpointer user_data) { const _ExtendedGDBusPropertyInfo *info = user_data; GError *error; GVariant *_ret; error = NULL; _ret = g_dbus_proxy_call_finish (proxy, res, &error); if (!_ret) { g_warning ("Error setting property '%s' on interface org.gnome.OnlineAccounts.Exchange: %s (%s, %d)", info->parent_struct.name, error->message, g_quark_to_string (error->domain), error->code); g_error_free (error); } else { g_variant_unref (_ret); } } static void goa_exchange_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = _goa_exchange_property_info_pointers[prop_id - 1]; variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature)); g_dbus_proxy_call (G_DBUS_PROXY (object), "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", "org.gnome.OnlineAccounts.Exchange", info->parent_struct.name, variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) goa_exchange_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct); g_variant_unref (variant); } static void goa_exchange_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_exchange_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_EXCHANGE); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_EXCHANGE); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_exchange_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaExchangeProxy *proxy = GOA_EXCHANGE_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_exchange_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_exchange_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static gboolean goa_exchange_proxy_get_accept_ssl_errors (GoaExchange *object) { GoaExchangeProxy *proxy = GOA_EXCHANGE_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "AcceptSslErrors"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static const gchar * goa_exchange_proxy_get_host (GoaExchange *object) { GoaExchangeProxy *proxy = GOA_EXCHANGE_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Host"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static void goa_exchange_proxy_init (GoaExchangeProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_exchange_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_EXCHANGE_PROXY, GoaExchangeProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_exchange_interface_info ()); } static void goa_exchange_proxy_class_init (GoaExchangeProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_exchange_proxy_finalize; gobject_class->get_property = goa_exchange_proxy_get_property; gobject_class->set_property = goa_exchange_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_exchange_proxy_g_signal; proxy_class->g_properties_changed = goa_exchange_proxy_g_properties_changed; goa_exchange_override_properties (gobject_class, 1); #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaExchangeProxyPrivate)); #endif } static void goa_exchange_proxy_iface_init (GoaExchangeIface *iface) { iface->get_accept_ssl_errors = goa_exchange_proxy_get_accept_ssl_errors; iface->get_host = goa_exchange_proxy_get_host; } /** * goa_exchange_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Exchange. See g_dbus_proxy_new() for more details. * * 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 goa_exchange_proxy_new_finish() to get the result of the operation. * * See goa_exchange_proxy_new_sync() for the synchronous, blocking version of this constructor. * * Since: 3.6.0 */ void goa_exchange_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 (GOA_TYPE_EXCHANGE_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.OnlineAccounts.Exchange", NULL); } /** * goa_exchange_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_exchange_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_exchange_proxy_new(). * * Returns: (transfer full) (type GoaExchangeProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.6.0 */ GoaExchange * goa_exchange_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_EXCHANGE (ret); else return NULL; } /** * goa_exchange_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Exchange. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_exchange_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaExchangeProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.6.0 */ GoaExchange * goa_exchange_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_EXCHANGE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Exchange", NULL); if (ret != NULL) return GOA_EXCHANGE (ret); else return NULL; } /** * goa_exchange_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_exchange_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_exchange_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_exchange_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. * * Since: 3.6.0 */ void goa_exchange_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 (GOA_TYPE_EXCHANGE_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.OnlineAccounts.Exchange", NULL); } /** * goa_exchange_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_exchange_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_exchange_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaExchangeProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.6.0 */ GoaExchange * goa_exchange_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_EXCHANGE (ret); else return NULL; } /** * goa_exchange_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_exchange_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_exchange_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaExchangeProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.6.0 */ GoaExchange * goa_exchange_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_EXCHANGE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Exchange", NULL); if (ret != NULL) return GOA_EXCHANGE (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaExchangeSkeleton: * * The #GoaExchangeSkeleton structure contains only private data and should only be accessed using the provided API. * * Since: 3.6.0 */ /** * GoaExchangeSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaExchangeSkeleton. * * Since: 3.6.0 */ struct _GoaExchangeSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_exchange_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaExchangeSkeleton *skeleton = GOA_EXCHANGE_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_EXCHANGE); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_EXCHANGE); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_exchange_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaExchangeSkeleton *skeleton = GOA_EXCHANGE_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_exchange_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_exchange_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaExchangeSkeleton *skeleton = GOA_EXCHANGE_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_exchange_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_exchange_skeleton_vtable = { _goa_exchange_skeleton_handle_method_call, _goa_exchange_skeleton_handle_get_property, _goa_exchange_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_exchange_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_exchange_interface_info (); } static GDBusInterfaceVTable * goa_exchange_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_exchange_skeleton_vtable; } static GVariant * goa_exchange_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaExchangeSkeleton *skeleton = GOA_EXCHANGE_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_exchange_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_exchange_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_exchange_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_exchange_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.Exchange", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static gboolean _goa_exchange_emit_changed (gpointer user_data); static void goa_exchange_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { GoaExchangeSkeleton *skeleton = GOA_EXCHANGE_SKELETON (_skeleton); gboolean emit_changed = FALSE; g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties_idle_source != NULL) { g_source_destroy (skeleton->priv->changed_properties_idle_source); skeleton->priv->changed_properties_idle_source = NULL; emit_changed = TRUE; } g_mutex_unlock (&skeleton->priv->lock); if (emit_changed) _goa_exchange_emit_changed (skeleton); } static void goa_exchange_skeleton_iface_init (GoaExchangeIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaExchangeSkeleton, goa_exchange_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaExchangeSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_EXCHANGE, goa_exchange_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaExchangeSkeleton, goa_exchange_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_EXCHANGE, goa_exchange_skeleton_iface_init)) #endif static void goa_exchange_skeleton_finalize (GObject *object) { GoaExchangeSkeleton *skeleton = GOA_EXCHANGE_SKELETON (object); guint n; for (n = 0; n < 2; n++) g_value_unset (&skeleton->priv->properties[n]); g_free (skeleton->priv->properties); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_exchange_skeleton_parent_class)->finalize (object); } static void goa_exchange_skeleton_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { GoaExchangeSkeleton *skeleton = GOA_EXCHANGE_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); g_mutex_lock (&skeleton->priv->lock); g_value_copy (&skeleton->priv->properties[prop_id - 1], value); g_mutex_unlock (&skeleton->priv->lock); } static gboolean _goa_exchange_emit_changed (gpointer user_data) { GoaExchangeSkeleton *skeleton = GOA_EXCHANGE_SKELETON (user_data); GList *l; GVariantBuilder builder; GVariantBuilder invalidated_builder; guint num_changes; g_mutex_lock (&skeleton->priv->lock); g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next) { ChangedProperty *cp = l->data; GVariant *variant; const GValue *cur_value; cur_value = &skeleton->priv->properties[cp->prop_id - 1]; if (!_g_value_equal (cur_value, &cp->orig_value)) { variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature)); g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant); g_variant_unref (variant); num_changes++; } } if (num_changes > 0) { GList *connections, *ll; GVariant *signal_variant; signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.gnome.OnlineAccounts.Exchange", &builder, &invalidated_builder)); connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); for (ll = connections; ll != NULL; ll = ll->next) { GDBusConnection *connection = ll->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", "PropertiesChanged", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } else { g_variant_builder_clear (&builder); g_variant_builder_clear (&invalidated_builder); } g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); skeleton->priv->changed_properties = NULL; skeleton->priv->changed_properties_idle_source = NULL; g_mutex_unlock (&skeleton->priv->lock); return FALSE; } static void _goa_exchange_schedule_emit_changed (GoaExchangeSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value) { ChangedProperty *cp; GList *l; cp = NULL; for (l = skeleton->priv->changed_properties; l != NULL; l = l->next) { ChangedProperty *i_cp = l->data; if (i_cp->info == info) { cp = i_cp; break; } } if (cp == NULL) { cp = g_new0 (ChangedProperty, 1); cp->prop_id = prop_id; cp->info = info; skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp); g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value)); g_value_copy (orig_value, &cp->orig_value); } } static void goa_exchange_skeleton_notify (GObject *object, GParamSpec *pspec G_GNUC_UNUSED) { GoaExchangeSkeleton *skeleton = GOA_EXCHANGE_SKELETON (object); g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties != NULL && skeleton->priv->changed_properties_idle_source == NULL) { skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _goa_exchange_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _goa_exchange_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } g_mutex_unlock (&skeleton->priv->lock); } static void goa_exchange_skeleton_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GoaExchangeSkeleton *skeleton = GOA_EXCHANGE_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); g_mutex_lock (&skeleton->priv->lock); g_object_freeze_notify (object); if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1])) { if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL) _goa_exchange_schedule_emit_changed (skeleton, _goa_exchange_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]); g_value_copy (value, &skeleton->priv->properties[prop_id - 1]); g_object_notify_by_pspec (object, pspec); } g_mutex_unlock (&skeleton->priv->lock); g_object_thaw_notify (object); } static void goa_exchange_skeleton_init (GoaExchangeSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_exchange_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_EXCHANGE_SKELETON, GoaExchangeSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); skeleton->priv->properties = g_new0 (GValue, 2); g_value_init (&skeleton->priv->properties[0], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING); } static gboolean goa_exchange_skeleton_get_accept_ssl_errors (GoaExchange *object) { GoaExchangeSkeleton *skeleton = GOA_EXCHANGE_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[0])); g_mutex_unlock (&skeleton->priv->lock); return value; } static const gchar * goa_exchange_skeleton_get_host (GoaExchange *object) { GoaExchangeSkeleton *skeleton = GOA_EXCHANGE_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[1])); g_mutex_unlock (&skeleton->priv->lock); return value; } static void goa_exchange_skeleton_class_init (GoaExchangeSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_exchange_skeleton_finalize; gobject_class->get_property = goa_exchange_skeleton_get_property; gobject_class->set_property = goa_exchange_skeleton_set_property; gobject_class->notify = goa_exchange_skeleton_notify; goa_exchange_override_properties (gobject_class, 1); skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_exchange_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_exchange_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_exchange_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_exchange_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaExchangeSkeletonPrivate)); #endif } static void goa_exchange_skeleton_iface_init (GoaExchangeIface *iface) { iface->get_accept_ssl_errors = goa_exchange_skeleton_get_accept_ssl_errors; iface->get_host = goa_exchange_skeleton_get_host; } /** * goa_exchange_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.Exchange. * * Returns: (transfer full) (type GoaExchangeSkeleton): The skeleton object. * * Since: 3.6.0 */ GoaExchange * goa_exchange_skeleton_new (void) { return GOA_EXCHANGE (g_object_new (GOA_TYPE_EXCHANGE_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.MediaServer * ------------------------------------------------------------------------ */ /** * SECTION:GoaMediaServer * @title: GoaMediaServer * @short_description: Generated C code for the org.gnome.OnlineAccounts.MediaServer D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.MediaServer D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.MediaServer ---- */ static const _ExtendedGDBusPropertyInfo _goa_media_server_property_info_dlna_supported = { { -1, (gchar *) "DlnaSupported", (gchar *) "b", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "dlna-supported", FALSE }; static const _ExtendedGDBusPropertyInfo _goa_media_server_property_info_udn = { { -1, (gchar *) "Udn", (gchar *) "s", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "udn", FALSE }; static const _ExtendedGDBusPropertyInfo * const _goa_media_server_property_info_pointers[] = { &_goa_media_server_property_info_dlna_supported, &_goa_media_server_property_info_udn, NULL }; static const _ExtendedGDBusInterfaceInfo _goa_media_server_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.MediaServer", NULL, NULL, (GDBusPropertyInfo **) &_goa_media_server_property_info_pointers, NULL }, "media-server", }; /** * goa_media_server_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.MediaServer D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. * * Since: 3.14 */ GDBusInterfaceInfo * goa_media_server_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_media_server_interface_info.parent_struct; } /** * goa_media_server_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaMediaServer interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. * * Since: 3.14 */ guint goa_media_server_override_properties (GObjectClass *klass, guint property_id_begin) { g_object_class_override_property (klass, property_id_begin++, "dlna-supported"); g_object_class_override_property (klass, property_id_begin++, "udn"); return property_id_begin - 1; } /** * GoaMediaServer: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.MediaServer. * * Since: 3.14 */ /** * GoaMediaServerIface: * @parent_iface: The parent interface. * @get_dlna_supported: Getter for the #GoaMediaServer:dlna-supported property. * @get_udn: Getter for the #GoaMediaServer:udn property. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.MediaServer. * * Since: 3.14 */ typedef GoaMediaServerIface GoaMediaServerInterface; G_DEFINE_INTERFACE (GoaMediaServer, goa_media_server, G_TYPE_OBJECT) static void goa_media_server_default_init (GoaMediaServerIface *iface) { /* GObject properties for D-Bus properties: */ /** * GoaMediaServer:dlna-supported: * * Represents the D-Bus property "DlnaSupported". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.14 */ g_object_interface_install_property (iface, g_param_spec_boolean ("dlna-supported", "DlnaSupported", "DlnaSupported", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GoaMediaServer:udn: * * Represents the D-Bus property "Udn". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.14 */ g_object_interface_install_property (iface, g_param_spec_string ("udn", "Udn", "Udn", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } /** * goa_media_server_get_dlna_supported: (skip) * @object: A #GoaMediaServer. * * Gets the value of the "DlnaSupported" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: The property value. * * Since: 3.14 */ gboolean goa_media_server_get_dlna_supported (GoaMediaServer *object) { return GOA_MEDIA_SERVER_GET_IFACE (object)->get_dlna_supported (object); } /** * goa_media_server_set_dlna_supported: (skip) * @object: A #GoaMediaServer. * @value: The value to set. * * Sets the "DlnaSupported" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.14 */ void goa_media_server_set_dlna_supported (GoaMediaServer *object, gboolean value) { g_object_set (G_OBJECT (object), "dlna-supported", value, NULL); } /** * goa_media_server_get_udn: (skip) * @object: A #GoaMediaServer. * * Gets the value of the "Udn" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_media_server_dup_udn() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. * * Since: 3.14 */ const gchar * goa_media_server_get_udn (GoaMediaServer *object) { return GOA_MEDIA_SERVER_GET_IFACE (object)->get_udn (object); } /** * goa_media_server_dup_udn: (skip) * @object: A #GoaMediaServer. * * Gets a copy of the "Udn" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_free(). * * Since: 3.14 */ gchar * goa_media_server_dup_udn (GoaMediaServer *object) { gchar *value; g_object_get (G_OBJECT (object), "udn", &value, NULL); return value; } /** * goa_media_server_set_udn: (skip) * @object: A #GoaMediaServer. * @value: The value to set. * * Sets the "Udn" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.14 */ void goa_media_server_set_udn (GoaMediaServer *object, const gchar *value) { g_object_set (G_OBJECT (object), "udn", value, NULL); } /* ------------------------------------------------------------------------ */ /** * GoaMediaServerProxy: * * The #GoaMediaServerProxy structure contains only private data and should only be accessed using the provided API. * * Since: 3.14 */ /** * GoaMediaServerProxyClass: * @parent_class: The parent class. * * Class structure for #GoaMediaServerProxy. * * Since: 3.14 */ struct _GoaMediaServerProxyPrivate { GData *qdata; }; static void goa_media_server_proxy_iface_init (GoaMediaServerIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaMediaServerProxy, goa_media_server_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaMediaServerProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_MEDIA_SERVER, goa_media_server_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaMediaServerProxy, goa_media_server_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_MEDIA_SERVER, goa_media_server_proxy_iface_init)) #endif static void goa_media_server_proxy_finalize (GObject *object) { GoaMediaServerProxy *proxy = GOA_MEDIA_SERVER_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_media_server_proxy_parent_class)->finalize (object); } static void goa_media_server_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = _goa_media_server_property_info_pointers[prop_id - 1]; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name); if (info->use_gvariant) { g_value_set_variant (value, variant); } else { if (variant != NULL) g_dbus_gvariant_to_gvalue (variant, value); } if (variant != NULL) g_variant_unref (variant); } static void goa_media_server_proxy_set_property_cb (GDBusProxy *proxy, GAsyncResult *res, gpointer user_data) { const _ExtendedGDBusPropertyInfo *info = user_data; GError *error; GVariant *_ret; error = NULL; _ret = g_dbus_proxy_call_finish (proxy, res, &error); if (!_ret) { g_warning ("Error setting property '%s' on interface org.gnome.OnlineAccounts.MediaServer: %s (%s, %d)", info->parent_struct.name, error->message, g_quark_to_string (error->domain), error->code); g_error_free (error); } else { g_variant_unref (_ret); } } static void goa_media_server_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = _goa_media_server_property_info_pointers[prop_id - 1]; variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature)); g_dbus_proxy_call (G_DBUS_PROXY (object), "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", "org.gnome.OnlineAccounts.MediaServer", info->parent_struct.name, variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) goa_media_server_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct); g_variant_unref (variant); } static void goa_media_server_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_media_server_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_MEDIA_SERVER); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_MEDIA_SERVER); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_media_server_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaMediaServerProxy *proxy = GOA_MEDIA_SERVER_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_media_server_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_media_server_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static gboolean goa_media_server_proxy_get_dlna_supported (GoaMediaServer *object) { GoaMediaServerProxy *proxy = GOA_MEDIA_SERVER_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "DlnaSupported"); if (variant != NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } static const gchar * goa_media_server_proxy_get_udn (GoaMediaServer *object) { GoaMediaServerProxy *proxy = GOA_MEDIA_SERVER_PROXY (object); GVariant *variant; const gchar *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Udn"); if (variant != NULL) { value = g_variant_get_string (variant, NULL); g_variant_unref (variant); } return value; } static void goa_media_server_proxy_init (GoaMediaServerProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_media_server_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_MEDIA_SERVER_PROXY, GoaMediaServerProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_media_server_interface_info ()); } static void goa_media_server_proxy_class_init (GoaMediaServerProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_media_server_proxy_finalize; gobject_class->get_property = goa_media_server_proxy_get_property; gobject_class->set_property = goa_media_server_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_media_server_proxy_g_signal; proxy_class->g_properties_changed = goa_media_server_proxy_g_properties_changed; goa_media_server_override_properties (gobject_class, 1); #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaMediaServerProxyPrivate)); #endif } static void goa_media_server_proxy_iface_init (GoaMediaServerIface *iface) { iface->get_dlna_supported = goa_media_server_proxy_get_dlna_supported; iface->get_udn = goa_media_server_proxy_get_udn; } /** * goa_media_server_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.MediaServer. See g_dbus_proxy_new() for more details. * * 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 goa_media_server_proxy_new_finish() to get the result of the operation. * * See goa_media_server_proxy_new_sync() for the synchronous, blocking version of this constructor. * * Since: 3.14 */ void goa_media_server_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 (GOA_TYPE_MEDIA_SERVER_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.OnlineAccounts.MediaServer", NULL); } /** * goa_media_server_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_media_server_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_media_server_proxy_new(). * * Returns: (transfer full) (type GoaMediaServerProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.14 */ GoaMediaServer * goa_media_server_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_MEDIA_SERVER (ret); else return NULL; } /** * goa_media_server_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.MediaServer. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_media_server_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaMediaServerProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.14 */ GoaMediaServer * goa_media_server_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_MEDIA_SERVER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.MediaServer", NULL); if (ret != NULL) return GOA_MEDIA_SERVER (ret); else return NULL; } /** * goa_media_server_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_media_server_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_media_server_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_media_server_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. * * Since: 3.14 */ void goa_media_server_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 (GOA_TYPE_MEDIA_SERVER_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.OnlineAccounts.MediaServer", NULL); } /** * goa_media_server_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_media_server_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_media_server_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaMediaServerProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.14 */ GoaMediaServer * goa_media_server_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_MEDIA_SERVER (ret); else return NULL; } /** * goa_media_server_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_media_server_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_media_server_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaMediaServerProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.14 */ GoaMediaServer * goa_media_server_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_MEDIA_SERVER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.MediaServer", NULL); if (ret != NULL) return GOA_MEDIA_SERVER (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaMediaServerSkeleton: * * The #GoaMediaServerSkeleton structure contains only private data and should only be accessed using the provided API. * * Since: 3.14 */ /** * GoaMediaServerSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaMediaServerSkeleton. * * Since: 3.14 */ struct _GoaMediaServerSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_media_server_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaMediaServerSkeleton *skeleton = GOA_MEDIA_SERVER_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_MEDIA_SERVER); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_MEDIA_SERVER); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_media_server_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaMediaServerSkeleton *skeleton = GOA_MEDIA_SERVER_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_media_server_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_media_server_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaMediaServerSkeleton *skeleton = GOA_MEDIA_SERVER_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_media_server_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_media_server_skeleton_vtable = { _goa_media_server_skeleton_handle_method_call, _goa_media_server_skeleton_handle_get_property, _goa_media_server_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_media_server_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_media_server_interface_info (); } static GDBusInterfaceVTable * goa_media_server_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_media_server_skeleton_vtable; } static GVariant * goa_media_server_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaMediaServerSkeleton *skeleton = GOA_MEDIA_SERVER_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_media_server_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_media_server_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_media_server_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_media_server_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.MediaServer", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static gboolean _goa_media_server_emit_changed (gpointer user_data); static void goa_media_server_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { GoaMediaServerSkeleton *skeleton = GOA_MEDIA_SERVER_SKELETON (_skeleton); gboolean emit_changed = FALSE; g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties_idle_source != NULL) { g_source_destroy (skeleton->priv->changed_properties_idle_source); skeleton->priv->changed_properties_idle_source = NULL; emit_changed = TRUE; } g_mutex_unlock (&skeleton->priv->lock); if (emit_changed) _goa_media_server_emit_changed (skeleton); } static void goa_media_server_skeleton_iface_init (GoaMediaServerIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaMediaServerSkeleton, goa_media_server_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaMediaServerSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_MEDIA_SERVER, goa_media_server_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaMediaServerSkeleton, goa_media_server_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_MEDIA_SERVER, goa_media_server_skeleton_iface_init)) #endif static void goa_media_server_skeleton_finalize (GObject *object) { GoaMediaServerSkeleton *skeleton = GOA_MEDIA_SERVER_SKELETON (object); guint n; for (n = 0; n < 2; n++) g_value_unset (&skeleton->priv->properties[n]); g_free (skeleton->priv->properties); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_media_server_skeleton_parent_class)->finalize (object); } static void goa_media_server_skeleton_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { GoaMediaServerSkeleton *skeleton = GOA_MEDIA_SERVER_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); g_mutex_lock (&skeleton->priv->lock); g_value_copy (&skeleton->priv->properties[prop_id - 1], value); g_mutex_unlock (&skeleton->priv->lock); } static gboolean _goa_media_server_emit_changed (gpointer user_data) { GoaMediaServerSkeleton *skeleton = GOA_MEDIA_SERVER_SKELETON (user_data); GList *l; GVariantBuilder builder; GVariantBuilder invalidated_builder; guint num_changes; g_mutex_lock (&skeleton->priv->lock); g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next) { ChangedProperty *cp = l->data; GVariant *variant; const GValue *cur_value; cur_value = &skeleton->priv->properties[cp->prop_id - 1]; if (!_g_value_equal (cur_value, &cp->orig_value)) { variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature)); g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant); g_variant_unref (variant); num_changes++; } } if (num_changes > 0) { GList *connections, *ll; GVariant *signal_variant; signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.gnome.OnlineAccounts.MediaServer", &builder, &invalidated_builder)); connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); for (ll = connections; ll != NULL; ll = ll->next) { GDBusConnection *connection = ll->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", "PropertiesChanged", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } else { g_variant_builder_clear (&builder); g_variant_builder_clear (&invalidated_builder); } g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); skeleton->priv->changed_properties = NULL; skeleton->priv->changed_properties_idle_source = NULL; g_mutex_unlock (&skeleton->priv->lock); return FALSE; } static void _goa_media_server_schedule_emit_changed (GoaMediaServerSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value) { ChangedProperty *cp; GList *l; cp = NULL; for (l = skeleton->priv->changed_properties; l != NULL; l = l->next) { ChangedProperty *i_cp = l->data; if (i_cp->info == info) { cp = i_cp; break; } } if (cp == NULL) { cp = g_new0 (ChangedProperty, 1); cp->prop_id = prop_id; cp->info = info; skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp); g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value)); g_value_copy (orig_value, &cp->orig_value); } } static void goa_media_server_skeleton_notify (GObject *object, GParamSpec *pspec G_GNUC_UNUSED) { GoaMediaServerSkeleton *skeleton = GOA_MEDIA_SERVER_SKELETON (object); g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties != NULL && skeleton->priv->changed_properties_idle_source == NULL) { skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _goa_media_server_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _goa_media_server_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } g_mutex_unlock (&skeleton->priv->lock); } static void goa_media_server_skeleton_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GoaMediaServerSkeleton *skeleton = GOA_MEDIA_SERVER_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); g_mutex_lock (&skeleton->priv->lock); g_object_freeze_notify (object); if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1])) { if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL) _goa_media_server_schedule_emit_changed (skeleton, _goa_media_server_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]); g_value_copy (value, &skeleton->priv->properties[prop_id - 1]); g_object_notify_by_pspec (object, pspec); } g_mutex_unlock (&skeleton->priv->lock); g_object_thaw_notify (object); } static void goa_media_server_skeleton_init (GoaMediaServerSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_media_server_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_MEDIA_SERVER_SKELETON, GoaMediaServerSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); skeleton->priv->properties = g_new0 (GValue, 2); g_value_init (&skeleton->priv->properties[0], G_TYPE_BOOLEAN); g_value_init (&skeleton->priv->properties[1], G_TYPE_STRING); } static gboolean goa_media_server_skeleton_get_dlna_supported (GoaMediaServer *object) { GoaMediaServerSkeleton *skeleton = GOA_MEDIA_SERVER_SKELETON (object); gboolean value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_boolean (&(skeleton->priv->properties[0])); g_mutex_unlock (&skeleton->priv->lock); return value; } static const gchar * goa_media_server_skeleton_get_udn (GoaMediaServer *object) { GoaMediaServerSkeleton *skeleton = GOA_MEDIA_SERVER_SKELETON (object); const gchar *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_string (&(skeleton->priv->properties[1])); g_mutex_unlock (&skeleton->priv->lock); return value; } static void goa_media_server_skeleton_class_init (GoaMediaServerSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_media_server_skeleton_finalize; gobject_class->get_property = goa_media_server_skeleton_get_property; gobject_class->set_property = goa_media_server_skeleton_set_property; gobject_class->notify = goa_media_server_skeleton_notify; goa_media_server_override_properties (gobject_class, 1); skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_media_server_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_media_server_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_media_server_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_media_server_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaMediaServerSkeletonPrivate)); #endif } static void goa_media_server_skeleton_iface_init (GoaMediaServerIface *iface) { iface->get_dlna_supported = goa_media_server_skeleton_get_dlna_supported; iface->get_udn = goa_media_server_skeleton_get_udn; } /** * goa_media_server_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.MediaServer. * * Returns: (transfer full) (type GoaMediaServerSkeleton): The skeleton object. * * Since: 3.14 */ GoaMediaServer * goa_media_server_skeleton_new (void) { return GOA_MEDIA_SERVER (g_object_new (GOA_TYPE_MEDIA_SERVER_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.Ticketing * ------------------------------------------------------------------------ */ /** * SECTION:GoaTicketing * @title: GoaTicketing * @short_description: Generated C code for the org.gnome.OnlineAccounts.Ticketing D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.Ticketing D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.Ticketing ---- */ static const _ExtendedGDBusMethodInfo _goa_ticketing_method_info_get_ticket = { { -1, (gchar *) "GetTicket", NULL, NULL, NULL }, "handle-get-ticket", FALSE }; static const _ExtendedGDBusMethodInfo * const _goa_ticketing_method_info_pointers[] = { &_goa_ticketing_method_info_get_ticket, NULL }; static const _ExtendedGDBusPropertyInfo _goa_ticketing_property_info_details = { { -1, (gchar *) "Details", (gchar *) "a{ss}", G_DBUS_PROPERTY_INFO_FLAGS_READABLE, NULL }, "details", FALSE }; static const _ExtendedGDBusPropertyInfo * const _goa_ticketing_property_info_pointers[] = { &_goa_ticketing_property_info_details, NULL }; static const _ExtendedGDBusInterfaceInfo _goa_ticketing_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.Ticketing", (GDBusMethodInfo **) &_goa_ticketing_method_info_pointers, NULL, (GDBusPropertyInfo **) &_goa_ticketing_property_info_pointers, NULL }, "ticketing", }; /** * goa_ticketing_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.Ticketing D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. * * Since: 3.6.0 */ GDBusInterfaceInfo * goa_ticketing_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_ticketing_interface_info.parent_struct; } /** * goa_ticketing_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaTicketing interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. * * Since: 3.6.0 */ guint goa_ticketing_override_properties (GObjectClass *klass, guint property_id_begin) { g_object_class_override_property (klass, property_id_begin++, "details"); return property_id_begin - 1; } /** * GoaTicketing: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.Ticketing. * * Since: 3.6.0 */ /** * GoaTicketingIface: * @parent_iface: The parent interface. * @handle_get_ticket: Handler for the #GoaTicketing::handle-get-ticket signal. * @get_details: Getter for the #GoaTicketing:details property. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.Ticketing. * * Since: 3.6.0 */ typedef GoaTicketingIface GoaTicketingInterface; G_DEFINE_INTERFACE (GoaTicketing, goa_ticketing, G_TYPE_OBJECT) static void goa_ticketing_default_init (GoaTicketingIface *iface) { /* GObject signals for incoming D-Bus method calls: */ /** * GoaTicketing::handle-get-ticket: * @object: A #GoaTicketing. * @invocation: A #GDBusMethodInvocation. * * Signal emitted when a remote caller is invoking the GetTicket() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call goa_ticketing_complete_get_ticket() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. * * Since: 3.6.0 */ g_signal_new ("handle-get-ticket", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GoaTicketingIface, handle_get_ticket), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 1, G_TYPE_DBUS_METHOD_INVOCATION); /* GObject properties for D-Bus properties: */ /** * GoaTicketing:details: * * Represents the D-Bus property "Details". * * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side. * * Since: 3.18 */ g_object_interface_install_property (iface, g_param_spec_variant ("details", "Details", "Details", G_VARIANT_TYPE ("a{ss}"), NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } /** * goa_ticketing_get_details: (skip) * @object: A #GoaTicketing. * * Gets the value of the "Details" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use goa_ticketing_dup_details() if on another thread. * * Returns: (transfer none): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. * * Since: 3.18 */ GVariant * goa_ticketing_get_details (GoaTicketing *object) { return GOA_TICKETING_GET_IFACE (object)->get_details (object); } /** * goa_ticketing_dup_details: (skip) * @object: A #GoaTicketing. * * Gets a copy of the "Details" D-Bus property. * * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side. * * Returns: (transfer full): The property value or %NULL if the property is not set. The returned value should be freed with g_variant_unref(). * * Since: 3.18 */ GVariant * goa_ticketing_dup_details (GoaTicketing *object) { GVariant *value; g_object_get (G_OBJECT (object), "details", &value, NULL); return value; } /** * goa_ticketing_set_details: (skip) * @object: A #GoaTicketing. * @value: The value to set. * * Sets the "Details" D-Bus property to @value. * * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side. * * Since: 3.18 */ void goa_ticketing_set_details (GoaTicketing *object, GVariant *value) { g_object_set (G_OBJECT (object), "details", value, NULL); } /** * goa_ticketing_call_get_ticket: * @proxy: A #GoaTicketingProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the GetTicket() D-Bus method on @proxy. * 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 goa_ticketing_call_get_ticket_finish() to get the result of the operation. * * See goa_ticketing_call_get_ticket_sync() for the synchronous, blocking version of this method. * * Since: 3.6.0 */ void goa_ticketing_call_get_ticket ( GoaTicketing *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "GetTicket", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * goa_ticketing_call_get_ticket_finish: * @proxy: A #GoaTicketingProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_ticketing_call_get_ticket(). * @error: Return location for error or %NULL. * * Finishes an operation started with goa_ticketing_call_get_ticket(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. * * Since: 3.6.0 */ gboolean goa_ticketing_call_get_ticket_finish ( GoaTicketing *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * goa_ticketing_call_get_ticket_sync: * @proxy: A #GoaTicketingProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the GetTicket() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See goa_ticketing_call_get_ticket() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. * * Since: 3.6.0 */ gboolean goa_ticketing_call_get_ticket_sync ( GoaTicketing *proxy, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "GetTicket", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * goa_ticketing_complete_get_ticket: * @object: A #GoaTicketing. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the GetTicket() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. * * Since: 3.6.0 */ void goa_ticketing_complete_get_ticket ( GoaTicketing *object, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /* ------------------------------------------------------------------------ */ /** * GoaTicketingProxy: * * The #GoaTicketingProxy structure contains only private data and should only be accessed using the provided API. * * Since: 3.6.0 */ /** * GoaTicketingProxyClass: * @parent_class: The parent class. * * Class structure for #GoaTicketingProxy. * * Since: 3.6.0 */ struct _GoaTicketingProxyPrivate { GData *qdata; }; static void goa_ticketing_proxy_iface_init (GoaTicketingIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaTicketingProxy, goa_ticketing_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaTicketingProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_TICKETING, goa_ticketing_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaTicketingProxy, goa_ticketing_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_TICKETING, goa_ticketing_proxy_iface_init)) #endif static void goa_ticketing_proxy_finalize (GObject *object) { GoaTicketingProxy *proxy = GOA_TICKETING_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_ticketing_proxy_parent_class)->finalize (object); } static void goa_ticketing_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 1); info = _goa_ticketing_property_info_pointers[prop_id - 1]; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name); if (info->use_gvariant) { g_value_set_variant (value, variant); } else { if (variant != NULL) g_dbus_gvariant_to_gvalue (variant, value); } if (variant != NULL) g_variant_unref (variant); } static void goa_ticketing_proxy_set_property_cb (GDBusProxy *proxy, GAsyncResult *res, gpointer user_data) { const _ExtendedGDBusPropertyInfo *info = user_data; GError *error; GVariant *_ret; error = NULL; _ret = g_dbus_proxy_call_finish (proxy, res, &error); if (!_ret) { g_warning ("Error setting property '%s' on interface org.gnome.OnlineAccounts.Ticketing: %s (%s, %d)", info->parent_struct.name, error->message, g_quark_to_string (error->domain), error->code); g_error_free (error); } else { g_variant_unref (_ret); } } static void goa_ticketing_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 1); info = _goa_ticketing_property_info_pointers[prop_id - 1]; variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature)); g_dbus_proxy_call (G_DBUS_PROXY (object), "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", "org.gnome.OnlineAccounts.Ticketing", info->parent_struct.name, variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) goa_ticketing_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct); g_variant_unref (variant); } static void goa_ticketing_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_ticketing_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_TICKETING); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_TICKETING); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_ticketing_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaTicketingProxy *proxy = GOA_TICKETING_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_ticketing_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_ticketing_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static GVariant * goa_ticketing_proxy_get_details (GoaTicketing *object) { GoaTicketingProxy *proxy = GOA_TICKETING_PROXY (object); GVariant *variant; GVariant *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Details"); value = variant; if (variant != NULL) g_variant_unref (variant); return value; } static void goa_ticketing_proxy_init (GoaTicketingProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_ticketing_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_TICKETING_PROXY, GoaTicketingProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_ticketing_interface_info ()); } static void goa_ticketing_proxy_class_init (GoaTicketingProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_ticketing_proxy_finalize; gobject_class->get_property = goa_ticketing_proxy_get_property; gobject_class->set_property = goa_ticketing_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_ticketing_proxy_g_signal; proxy_class->g_properties_changed = goa_ticketing_proxy_g_properties_changed; goa_ticketing_override_properties (gobject_class, 1); #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaTicketingProxyPrivate)); #endif } static void goa_ticketing_proxy_iface_init (GoaTicketingIface *iface) { iface->get_details = goa_ticketing_proxy_get_details; } /** * goa_ticketing_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Ticketing. See g_dbus_proxy_new() for more details. * * 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 goa_ticketing_proxy_new_finish() to get the result of the operation. * * See goa_ticketing_proxy_new_sync() for the synchronous, blocking version of this constructor. * * Since: 3.6.0 */ void goa_ticketing_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 (GOA_TYPE_TICKETING_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.OnlineAccounts.Ticketing", NULL); } /** * goa_ticketing_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_ticketing_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_ticketing_proxy_new(). * * Returns: (transfer full) (type GoaTicketingProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.6.0 */ GoaTicketing * goa_ticketing_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_TICKETING (ret); else return NULL; } /** * goa_ticketing_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Ticketing. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_ticketing_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaTicketingProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.6.0 */ GoaTicketing * goa_ticketing_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_TICKETING_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Ticketing", NULL); if (ret != NULL) return GOA_TICKETING (ret); else return NULL; } /** * goa_ticketing_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_ticketing_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_ticketing_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_ticketing_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. * * Since: 3.6.0 */ void goa_ticketing_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 (GOA_TYPE_TICKETING_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.OnlineAccounts.Ticketing", NULL); } /** * goa_ticketing_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_ticketing_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_ticketing_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaTicketingProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.6.0 */ GoaTicketing * goa_ticketing_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_TICKETING (ret); else return NULL; } /** * goa_ticketing_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_ticketing_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_ticketing_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaTicketingProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.6.0 */ GoaTicketing * goa_ticketing_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_TICKETING_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Ticketing", NULL); if (ret != NULL) return GOA_TICKETING (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaTicketingSkeleton: * * The #GoaTicketingSkeleton structure contains only private data and should only be accessed using the provided API. * * Since: 3.6.0 */ /** * GoaTicketingSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaTicketingSkeleton. * * Since: 3.6.0 */ struct _GoaTicketingSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_ticketing_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaTicketingSkeleton *skeleton = GOA_TICKETING_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_TICKETING); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_TICKETING); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_ticketing_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaTicketingSkeleton *skeleton = GOA_TICKETING_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_ticketing_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_ticketing_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaTicketingSkeleton *skeleton = GOA_TICKETING_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_ticketing_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_ticketing_skeleton_vtable = { _goa_ticketing_skeleton_handle_method_call, _goa_ticketing_skeleton_handle_get_property, _goa_ticketing_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_ticketing_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_ticketing_interface_info (); } static GDBusInterfaceVTable * goa_ticketing_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_ticketing_skeleton_vtable; } static GVariant * goa_ticketing_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaTicketingSkeleton *skeleton = GOA_TICKETING_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_ticketing_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_ticketing_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_ticketing_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_ticketing_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.Ticketing", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static gboolean _goa_ticketing_emit_changed (gpointer user_data); static void goa_ticketing_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { GoaTicketingSkeleton *skeleton = GOA_TICKETING_SKELETON (_skeleton); gboolean emit_changed = FALSE; g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties_idle_source != NULL) { g_source_destroy (skeleton->priv->changed_properties_idle_source); skeleton->priv->changed_properties_idle_source = NULL; emit_changed = TRUE; } g_mutex_unlock (&skeleton->priv->lock); if (emit_changed) _goa_ticketing_emit_changed (skeleton); } static void goa_ticketing_skeleton_iface_init (GoaTicketingIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaTicketingSkeleton, goa_ticketing_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaTicketingSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_TICKETING, goa_ticketing_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaTicketingSkeleton, goa_ticketing_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_TICKETING, goa_ticketing_skeleton_iface_init)) #endif static void goa_ticketing_skeleton_finalize (GObject *object) { GoaTicketingSkeleton *skeleton = GOA_TICKETING_SKELETON (object); guint n; for (n = 0; n < 1; n++) g_value_unset (&skeleton->priv->properties[n]); g_free (skeleton->priv->properties); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_ticketing_skeleton_parent_class)->finalize (object); } static void goa_ticketing_skeleton_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { GoaTicketingSkeleton *skeleton = GOA_TICKETING_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 1); g_mutex_lock (&skeleton->priv->lock); g_value_copy (&skeleton->priv->properties[prop_id - 1], value); g_mutex_unlock (&skeleton->priv->lock); } static gboolean _goa_ticketing_emit_changed (gpointer user_data) { GoaTicketingSkeleton *skeleton = GOA_TICKETING_SKELETON (user_data); GList *l; GVariantBuilder builder; GVariantBuilder invalidated_builder; guint num_changes; g_mutex_lock (&skeleton->priv->lock); g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next) { ChangedProperty *cp = l->data; GVariant *variant; const GValue *cur_value; cur_value = &skeleton->priv->properties[cp->prop_id - 1]; if (!_g_value_equal (cur_value, &cp->orig_value)) { variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature)); g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant); g_variant_unref (variant); num_changes++; } } if (num_changes > 0) { GList *connections, *ll; GVariant *signal_variant; signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.gnome.OnlineAccounts.Ticketing", &builder, &invalidated_builder)); connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); for (ll = connections; ll != NULL; ll = ll->next) { GDBusConnection *connection = ll->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", "PropertiesChanged", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } else { g_variant_builder_clear (&builder); g_variant_builder_clear (&invalidated_builder); } g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); skeleton->priv->changed_properties = NULL; skeleton->priv->changed_properties_idle_source = NULL; g_mutex_unlock (&skeleton->priv->lock); return FALSE; } static void _goa_ticketing_schedule_emit_changed (GoaTicketingSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value) { ChangedProperty *cp; GList *l; cp = NULL; for (l = skeleton->priv->changed_properties; l != NULL; l = l->next) { ChangedProperty *i_cp = l->data; if (i_cp->info == info) { cp = i_cp; break; } } if (cp == NULL) { cp = g_new0 (ChangedProperty, 1); cp->prop_id = prop_id; cp->info = info; skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp); g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value)); g_value_copy (orig_value, &cp->orig_value); } } static void goa_ticketing_skeleton_notify (GObject *object, GParamSpec *pspec G_GNUC_UNUSED) { GoaTicketingSkeleton *skeleton = GOA_TICKETING_SKELETON (object); g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties != NULL && skeleton->priv->changed_properties_idle_source == NULL) { skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _goa_ticketing_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _goa_ticketing_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } g_mutex_unlock (&skeleton->priv->lock); } static void goa_ticketing_skeleton_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GoaTicketingSkeleton *skeleton = GOA_TICKETING_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 1); g_mutex_lock (&skeleton->priv->lock); g_object_freeze_notify (object); if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1])) { if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL) _goa_ticketing_schedule_emit_changed (skeleton, _goa_ticketing_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]); g_value_copy (value, &skeleton->priv->properties[prop_id - 1]); g_object_notify_by_pspec (object, pspec); } g_mutex_unlock (&skeleton->priv->lock); g_object_thaw_notify (object); } static void goa_ticketing_skeleton_init (GoaTicketingSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_ticketing_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_TICKETING_SKELETON, GoaTicketingSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); skeleton->priv->properties = g_new0 (GValue, 1); g_value_init (&skeleton->priv->properties[0], G_TYPE_VARIANT); } static GVariant * goa_ticketing_skeleton_get_details (GoaTicketing *object) { GoaTicketingSkeleton *skeleton = GOA_TICKETING_SKELETON (object); GVariant *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_variant (&(skeleton->priv->properties[0])); g_mutex_unlock (&skeleton->priv->lock); return value; } static void goa_ticketing_skeleton_class_init (GoaTicketingSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_ticketing_skeleton_finalize; gobject_class->get_property = goa_ticketing_skeleton_get_property; gobject_class->set_property = goa_ticketing_skeleton_set_property; gobject_class->notify = goa_ticketing_skeleton_notify; goa_ticketing_override_properties (gobject_class, 1); skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_ticketing_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_ticketing_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_ticketing_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_ticketing_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaTicketingSkeletonPrivate)); #endif } static void goa_ticketing_skeleton_iface_init (GoaTicketingIface *iface) { iface->get_details = goa_ticketing_skeleton_get_details; } /** * goa_ticketing_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.Ticketing. * * Returns: (transfer full) (type GoaTicketingSkeleton): The skeleton object. * * Since: 3.6.0 */ GoaTicketing * goa_ticketing_skeleton_new (void) { return GOA_TICKETING (g_object_new (GOA_TYPE_TICKETING_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.Todo * ------------------------------------------------------------------------ */ /** * SECTION:GoaTodo * @title: GoaTodo * @short_description: Generated C code for the org.gnome.OnlineAccounts.Todo D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.Todo D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.Todo ---- */ static const _ExtendedGDBusInterfaceInfo _goa_todo_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.Todo", NULL, NULL, NULL, NULL }, "todo", }; /** * goa_todo_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.Todo D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. * * Since: 3.26.0 */ GDBusInterfaceInfo * goa_todo_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_todo_interface_info.parent_struct; } /** * goa_todo_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaTodo interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. * * Since: 3.26.0 */ guint goa_todo_override_properties (GObjectClass *klass, guint property_id_begin) { return property_id_begin - 1; } /** * GoaTodo: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.Todo. * * Since: 3.26.0 */ /** * GoaTodoIface: * @parent_iface: The parent interface. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.Todo. * * Since: 3.26.0 */ typedef GoaTodoIface GoaTodoInterface; G_DEFINE_INTERFACE (GoaTodo, goa_todo, G_TYPE_OBJECT) static void goa_todo_default_init (GoaTodoIface *iface) { } /* ------------------------------------------------------------------------ */ /** * GoaTodoProxy: * * The #GoaTodoProxy structure contains only private data and should only be accessed using the provided API. * * Since: 3.26.0 */ /** * GoaTodoProxyClass: * @parent_class: The parent class. * * Class structure for #GoaTodoProxy. * * Since: 3.26.0 */ struct _GoaTodoProxyPrivate { GData *qdata; }; static void goa_todo_proxy_iface_init (GoaTodoIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaTodoProxy, goa_todo_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaTodoProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_TODO, goa_todo_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaTodoProxy, goa_todo_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_TODO, goa_todo_proxy_iface_init)) #endif static void goa_todo_proxy_finalize (GObject *object) { GoaTodoProxy *proxy = GOA_TODO_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_todo_proxy_parent_class)->finalize (object); } static void goa_todo_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_todo_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_todo_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_todo_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_TODO); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_TODO); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_todo_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaTodoProxy *proxy = GOA_TODO_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_todo_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_todo_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static void goa_todo_proxy_init (GoaTodoProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_todo_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_TODO_PROXY, GoaTodoProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_todo_interface_info ()); } static void goa_todo_proxy_class_init (GoaTodoProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_todo_proxy_finalize; gobject_class->get_property = goa_todo_proxy_get_property; gobject_class->set_property = goa_todo_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_todo_proxy_g_signal; proxy_class->g_properties_changed = goa_todo_proxy_g_properties_changed; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaTodoProxyPrivate)); #endif } static void goa_todo_proxy_iface_init (GoaTodoIface *iface) { } /** * goa_todo_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Todo. See g_dbus_proxy_new() for more details. * * 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 goa_todo_proxy_new_finish() to get the result of the operation. * * See goa_todo_proxy_new_sync() for the synchronous, blocking version of this constructor. * * Since: 3.26.0 */ void goa_todo_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 (GOA_TYPE_TODO_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.OnlineAccounts.Todo", NULL); } /** * goa_todo_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_todo_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_todo_proxy_new(). * * Returns: (transfer full) (type GoaTodoProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.26.0 */ GoaTodo * goa_todo_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_TODO (ret); else return NULL; } /** * goa_todo_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Todo. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_todo_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaTodoProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.26.0 */ GoaTodo * goa_todo_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_TODO_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Todo", NULL); if (ret != NULL) return GOA_TODO (ret); else return NULL; } /** * goa_todo_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_todo_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_todo_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_todo_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. * * Since: 3.26.0 */ void goa_todo_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 (GOA_TYPE_TODO_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.OnlineAccounts.Todo", NULL); } /** * goa_todo_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_todo_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_todo_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaTodoProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.26.0 */ GoaTodo * goa_todo_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_TODO (ret); else return NULL; } /** * goa_todo_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_todo_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_todo_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaTodoProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.26.0 */ GoaTodo * goa_todo_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_TODO_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Todo", NULL); if (ret != NULL) return GOA_TODO (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaTodoSkeleton: * * The #GoaTodoSkeleton structure contains only private data and should only be accessed using the provided API. * * Since: 3.26.0 */ /** * GoaTodoSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaTodoSkeleton. * * Since: 3.26.0 */ struct _GoaTodoSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_todo_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaTodoSkeleton *skeleton = GOA_TODO_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_TODO); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_TODO); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_todo_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaTodoSkeleton *skeleton = GOA_TODO_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_todo_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_todo_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaTodoSkeleton *skeleton = GOA_TODO_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_todo_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_todo_skeleton_vtable = { _goa_todo_skeleton_handle_method_call, _goa_todo_skeleton_handle_get_property, _goa_todo_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_todo_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_todo_interface_info (); } static GDBusInterfaceVTable * goa_todo_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_todo_skeleton_vtable; } static GVariant * goa_todo_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaTodoSkeleton *skeleton = GOA_TODO_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_todo_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_todo_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_todo_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_todo_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.Todo", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static void goa_todo_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { } static void goa_todo_skeleton_iface_init (GoaTodoIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaTodoSkeleton, goa_todo_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaTodoSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_TODO, goa_todo_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaTodoSkeleton, goa_todo_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_TODO, goa_todo_skeleton_iface_init)) #endif static void goa_todo_skeleton_finalize (GObject *object) { GoaTodoSkeleton *skeleton = GOA_TODO_SKELETON (object); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_todo_skeleton_parent_class)->finalize (object); } static void goa_todo_skeleton_init (GoaTodoSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_todo_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_TODO_SKELETON, GoaTodoSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); } static void goa_todo_skeleton_class_init (GoaTodoSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_todo_skeleton_finalize; skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_todo_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_todo_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_todo_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_todo_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaTodoSkeletonPrivate)); #endif } static void goa_todo_skeleton_iface_init (GoaTodoIface *iface) { } /** * goa_todo_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.Todo. * * Returns: (transfer full) (type GoaTodoSkeleton): The skeleton object. * * Since: 3.26.0 */ GoaTodo * goa_todo_skeleton_new (void) { return GOA_TODO (g_object_new (GOA_TYPE_TODO_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.ReadLater * ------------------------------------------------------------------------ */ /** * SECTION:GoaReadLater * @title: GoaReadLater * @short_description: Generated C code for the org.gnome.OnlineAccounts.ReadLater D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.ReadLater D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.ReadLater ---- */ static const _ExtendedGDBusInterfaceInfo _goa_read_later_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.ReadLater", NULL, NULL, NULL, NULL }, "read-later", }; /** * goa_read_later_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.ReadLater D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. * * Since: 3.12.0 */ GDBusInterfaceInfo * goa_read_later_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_read_later_interface_info.parent_struct; } /** * goa_read_later_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaReadLater interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. * * Since: 3.12.0 */ guint goa_read_later_override_properties (GObjectClass *klass, guint property_id_begin) { return property_id_begin - 1; } /** * GoaReadLater: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.ReadLater. * * Since: 3.12.0 */ /** * GoaReadLaterIface: * @parent_iface: The parent interface. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.ReadLater. * * Since: 3.12.0 */ typedef GoaReadLaterIface GoaReadLaterInterface; G_DEFINE_INTERFACE (GoaReadLater, goa_read_later, G_TYPE_OBJECT) static void goa_read_later_default_init (GoaReadLaterIface *iface) { } /* ------------------------------------------------------------------------ */ /** * GoaReadLaterProxy: * * The #GoaReadLaterProxy structure contains only private data and should only be accessed using the provided API. * * Since: 3.12.0 */ /** * GoaReadLaterProxyClass: * @parent_class: The parent class. * * Class structure for #GoaReadLaterProxy. * * Since: 3.12.0 */ struct _GoaReadLaterProxyPrivate { GData *qdata; }; static void goa_read_later_proxy_iface_init (GoaReadLaterIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaReadLaterProxy, goa_read_later_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaReadLaterProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_READ_LATER, goa_read_later_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaReadLaterProxy, goa_read_later_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_READ_LATER, goa_read_later_proxy_iface_init)) #endif static void goa_read_later_proxy_finalize (GObject *object) { GoaReadLaterProxy *proxy = GOA_READ_LATER_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_read_later_proxy_parent_class)->finalize (object); } static void goa_read_later_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_read_later_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_read_later_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_read_later_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_READ_LATER); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_READ_LATER); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_read_later_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaReadLaterProxy *proxy = GOA_READ_LATER_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_read_later_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_read_later_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static void goa_read_later_proxy_init (GoaReadLaterProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_read_later_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_READ_LATER_PROXY, GoaReadLaterProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_read_later_interface_info ()); } static void goa_read_later_proxy_class_init (GoaReadLaterProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_read_later_proxy_finalize; gobject_class->get_property = goa_read_later_proxy_get_property; gobject_class->set_property = goa_read_later_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_read_later_proxy_g_signal; proxy_class->g_properties_changed = goa_read_later_proxy_g_properties_changed; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaReadLaterProxyPrivate)); #endif } static void goa_read_later_proxy_iface_init (GoaReadLaterIface *iface) { } /** * goa_read_later_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.ReadLater. See g_dbus_proxy_new() for more details. * * 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 goa_read_later_proxy_new_finish() to get the result of the operation. * * See goa_read_later_proxy_new_sync() for the synchronous, blocking version of this constructor. * * Since: 3.12.0 */ void goa_read_later_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 (GOA_TYPE_READ_LATER_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.OnlineAccounts.ReadLater", NULL); } /** * goa_read_later_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_read_later_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_read_later_proxy_new(). * * Returns: (transfer full) (type GoaReadLaterProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.12.0 */ GoaReadLater * goa_read_later_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_READ_LATER (ret); else return NULL; } /** * goa_read_later_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.ReadLater. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_read_later_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaReadLaterProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.12.0 */ GoaReadLater * goa_read_later_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_READ_LATER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.ReadLater", NULL); if (ret != NULL) return GOA_READ_LATER (ret); else return NULL; } /** * goa_read_later_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_read_later_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_read_later_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_read_later_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. * * Since: 3.12.0 */ void goa_read_later_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 (GOA_TYPE_READ_LATER_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.OnlineAccounts.ReadLater", NULL); } /** * goa_read_later_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_read_later_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_read_later_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaReadLaterProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.12.0 */ GoaReadLater * goa_read_later_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_READ_LATER (ret); else return NULL; } /** * goa_read_later_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_read_later_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_read_later_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaReadLaterProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.12.0 */ GoaReadLater * goa_read_later_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_READ_LATER_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.ReadLater", NULL); if (ret != NULL) return GOA_READ_LATER (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaReadLaterSkeleton: * * The #GoaReadLaterSkeleton structure contains only private data and should only be accessed using the provided API. * * Since: 3.12.0 */ /** * GoaReadLaterSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaReadLaterSkeleton. * * Since: 3.12.0 */ struct _GoaReadLaterSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_read_later_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaReadLaterSkeleton *skeleton = GOA_READ_LATER_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_READ_LATER); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_READ_LATER); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_read_later_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaReadLaterSkeleton *skeleton = GOA_READ_LATER_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_read_later_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_read_later_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaReadLaterSkeleton *skeleton = GOA_READ_LATER_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_read_later_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_read_later_skeleton_vtable = { _goa_read_later_skeleton_handle_method_call, _goa_read_later_skeleton_handle_get_property, _goa_read_later_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_read_later_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_read_later_interface_info (); } static GDBusInterfaceVTable * goa_read_later_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_read_later_skeleton_vtable; } static GVariant * goa_read_later_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaReadLaterSkeleton *skeleton = GOA_READ_LATER_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_read_later_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_read_later_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_read_later_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_read_later_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.ReadLater", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static void goa_read_later_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { } static void goa_read_later_skeleton_iface_init (GoaReadLaterIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaReadLaterSkeleton, goa_read_later_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaReadLaterSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_READ_LATER, goa_read_later_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaReadLaterSkeleton, goa_read_later_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_READ_LATER, goa_read_later_skeleton_iface_init)) #endif static void goa_read_later_skeleton_finalize (GObject *object) { GoaReadLaterSkeleton *skeleton = GOA_READ_LATER_SKELETON (object); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_read_later_skeleton_parent_class)->finalize (object); } static void goa_read_later_skeleton_init (GoaReadLaterSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_read_later_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_READ_LATER_SKELETON, GoaReadLaterSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); } static void goa_read_later_skeleton_class_init (GoaReadLaterSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_read_later_skeleton_finalize; skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_read_later_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_read_later_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_read_later_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_read_later_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaReadLaterSkeletonPrivate)); #endif } static void goa_read_later_skeleton_iface_init (GoaReadLaterIface *iface) { } /** * goa_read_later_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.ReadLater. * * Returns: (transfer full) (type GoaReadLaterSkeleton): The skeleton object. * * Since: 3.12.0 */ GoaReadLater * goa_read_later_skeleton_new (void) { return GOA_READ_LATER (g_object_new (GOA_TYPE_READ_LATER_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.gnome.OnlineAccounts.Printers * ------------------------------------------------------------------------ */ /** * SECTION:GoaPrinters * @title: GoaPrinters * @short_description: Generated C code for the org.gnome.OnlineAccounts.Printers D-Bus interface * * This section contains code for working with the org.gnome.OnlineAccounts.Printers D-Bus interface in C. */ /* ---- Introspection data for org.gnome.OnlineAccounts.Printers ---- */ static const _ExtendedGDBusInterfaceInfo _goa_printers_interface_info = { { -1, (gchar *) "org.gnome.OnlineAccounts.Printers", NULL, NULL, NULL, NULL }, "printers", }; /** * goa_printers_interface_info: * * Gets a machine-readable description of the org.gnome.OnlineAccounts.Printers D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. * * Since: 3.12.0 */ GDBusInterfaceInfo * goa_printers_interface_info (void) { return (GDBusInterfaceInfo *) &_goa_printers_interface_info.parent_struct; } /** * goa_printers_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #GoaPrinters interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. * * Since: 3.12.0 */ guint goa_printers_override_properties (GObjectClass *klass, guint property_id_begin) { return property_id_begin - 1; } /** * GoaPrinters: * * Abstract interface type for the D-Bus interface org.gnome.OnlineAccounts.Printers. * * Since: 3.12.0 */ /** * GoaPrintersIface: * @parent_iface: The parent interface. * * Virtual table for the D-Bus interface org.gnome.OnlineAccounts.Printers. * * Since: 3.12.0 */ typedef GoaPrintersIface GoaPrintersInterface; G_DEFINE_INTERFACE (GoaPrinters, goa_printers, G_TYPE_OBJECT) static void goa_printers_default_init (GoaPrintersIface *iface) { } /* ------------------------------------------------------------------------ */ /** * GoaPrintersProxy: * * The #GoaPrintersProxy structure contains only private data and should only be accessed using the provided API. * * Since: 3.12.0 */ /** * GoaPrintersProxyClass: * @parent_class: The parent class. * * Class structure for #GoaPrintersProxy. * * Since: 3.12.0 */ struct _GoaPrintersProxyPrivate { GData *qdata; }; static void goa_printers_proxy_iface_init (GoaPrintersIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaPrintersProxy, goa_printers_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (GoaPrintersProxy) G_IMPLEMENT_INTERFACE (GOA_TYPE_PRINTERS, goa_printers_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaPrintersProxy, goa_printers_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_PRINTERS, goa_printers_proxy_iface_init)) #endif static void goa_printers_proxy_finalize (GObject *object) { GoaPrintersProxy *proxy = GOA_PRINTERS_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (goa_printers_proxy_parent_class)->finalize (object); } static void goa_printers_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_printers_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void goa_printers_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_goa_printers_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], GOA_TYPE_PRINTERS); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_PRINTERS); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void goa_printers_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { GoaPrintersProxy *proxy = GOA_PRINTERS_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_printers_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_printers_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static void goa_printers_proxy_init (GoaPrintersProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = goa_printers_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, GOA_TYPE_PRINTERS_PROXY, GoaPrintersProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), goa_printers_interface_info ()); } static void goa_printers_proxy_class_init (GoaPrintersProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_printers_proxy_finalize; gobject_class->get_property = goa_printers_proxy_get_property; gobject_class->set_property = goa_printers_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = goa_printers_proxy_g_signal; proxy_class->g_properties_changed = goa_printers_proxy_g_properties_changed; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaPrintersProxyPrivate)); #endif } static void goa_printers_proxy_iface_init (GoaPrintersIface *iface) { } /** * goa_printers_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Printers. See g_dbus_proxy_new() for more details. * * 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 goa_printers_proxy_new_finish() to get the result of the operation. * * See goa_printers_proxy_new_sync() for the synchronous, blocking version of this constructor. * * Since: 3.12.0 */ void goa_printers_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 (GOA_TYPE_PRINTERS_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.OnlineAccounts.Printers", NULL); } /** * goa_printers_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_printers_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_printers_proxy_new(). * * Returns: (transfer full) (type GoaPrintersProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.12.0 */ GoaPrinters * goa_printers_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_PRINTERS (ret); else return NULL; } /** * goa_printers_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.gnome.OnlineAccounts.Printers. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_printers_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaPrintersProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.12.0 */ GoaPrinters * goa_printers_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_PRINTERS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Printers", NULL); if (ret != NULL) return GOA_PRINTERS (ret); else return NULL; } /** * goa_printers_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_printers_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_printers_proxy_new_for_bus_finish() to get the result of the operation. * * See goa_printers_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. * * Since: 3.12.0 */ void goa_printers_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 (GOA_TYPE_PRINTERS_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.OnlineAccounts.Printers", NULL); } /** * goa_printers_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_printers_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_printers_proxy_new_for_bus(). * * Returns: (transfer full) (type GoaPrintersProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.12.0 */ GoaPrinters * goa_printers_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return GOA_PRINTERS (ret); else return NULL; } /** * goa_printers_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_printers_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_printers_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaPrintersProxy): The constructed proxy object or %NULL if @error is set. * * Since: 3.12.0 */ GoaPrinters * goa_printers_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_PRINTERS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.gnome.OnlineAccounts.Printers", NULL); if (ret != NULL) return GOA_PRINTERS (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * GoaPrintersSkeleton: * * The #GoaPrintersSkeleton structure contains only private data and should only be accessed using the provided API. * * Since: 3.12.0 */ /** * GoaPrintersSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaPrintersSkeleton. * * Since: 3.12.0 */ struct _GoaPrintersSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _goa_printers_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { GoaPrintersSkeleton *skeleton = GOA_PRINTERS_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], GOA_TYPE_PRINTERS); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, GOA_TYPE_PRINTERS); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _goa_printers_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { GoaPrintersSkeleton *skeleton = GOA_PRINTERS_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_printers_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _goa_printers_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { GoaPrintersSkeleton *skeleton = GOA_PRINTERS_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_goa_printers_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _goa_printers_skeleton_vtable = { _goa_printers_skeleton_handle_method_call, _goa_printers_skeleton_handle_get_property, _goa_printers_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * goa_printers_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return goa_printers_interface_info (); } static GDBusInterfaceVTable * goa_printers_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_goa_printers_skeleton_vtable; } static GVariant * goa_printers_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { GoaPrintersSkeleton *skeleton = GOA_PRINTERS_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_goa_printers_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _goa_printers_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _goa_printers_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _goa_printers_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.gnome.OnlineAccounts.Printers", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static void goa_printers_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { } static void goa_printers_skeleton_iface_init (GoaPrintersIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (GoaPrintersSkeleton, goa_printers_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (GoaPrintersSkeleton) G_IMPLEMENT_INTERFACE (GOA_TYPE_PRINTERS, goa_printers_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (GoaPrintersSkeleton, goa_printers_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_PRINTERS, goa_printers_skeleton_iface_init)) #endif static void goa_printers_skeleton_finalize (GObject *object) { GoaPrintersSkeleton *skeleton = GOA_PRINTERS_SKELETON (object); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (goa_printers_skeleton_parent_class)->finalize (object); } static void goa_printers_skeleton_init (GoaPrintersSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = goa_printers_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GOA_TYPE_PRINTERS_SKELETON, GoaPrintersSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); } static void goa_printers_skeleton_class_init (GoaPrintersSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = goa_printers_skeleton_finalize; skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = goa_printers_skeleton_dbus_interface_get_info; skeleton_class->get_properties = goa_printers_skeleton_dbus_interface_get_properties; skeleton_class->flush = goa_printers_skeleton_dbus_interface_flush; skeleton_class->get_vtable = goa_printers_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (GoaPrintersSkeletonPrivate)); #endif } static void goa_printers_skeleton_iface_init (GoaPrintersIface *iface) { } /** * goa_printers_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.gnome.OnlineAccounts.Printers. * * Returns: (transfer full) (type GoaPrintersSkeleton): The skeleton object. * * Since: 3.12.0 */ GoaPrinters * goa_printers_skeleton_new (void) { return GOA_PRINTERS (g_object_new (GOA_TYPE_PRINTERS_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for Object, ObjectProxy and ObjectSkeleton * ------------------------------------------------------------------------ */ /** * SECTION:GoaObject * @title: GoaObject * @short_description: Specialized GDBusObject types * * This section contains the #GoaObject, #GoaObjectProxy, and #GoaObjectSkeleton types which make it easier to work with objects implementing generated types for D-Bus interfaces. */ /** * GoaObject: * * The #GoaObject type is a specialized container of interfaces. */ /** * GoaObjectIface: * @parent_iface: The parent interface. * * Virtual table for the #GoaObject interface. */ typedef GoaObjectIface GoaObjectInterface; G_DEFINE_INTERFACE_WITH_CODE (GoaObject, goa_object, G_TYPE_OBJECT, g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_DBUS_OBJECT);) static void goa_object_default_init (GoaObjectIface *iface) { /** * GoaObject:account: * * The #GoaAccount instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.Account, if any. * * Connect to the #GObject::notify signal to get informed of property changes. */ g_object_interface_install_property (iface, g_param_spec_object ("account", "account", "account", GOA_TYPE_ACCOUNT, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:oauth2-based: * * The #GoaOAuth2Based instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.OAuth2Based, if any. * * Connect to the #GObject::notify signal to get informed of property changes. */ g_object_interface_install_property (iface, g_param_spec_object ("oauth2-based", "oauth2-based", "oauth2-based", GOA_TYPE_OAUTH2_BASED, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:oauth-based: * * The #GoaOAuthBased instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.OAuthBased, if any. * * Connect to the #GObject::notify signal to get informed of property changes. */ g_object_interface_install_property (iface, g_param_spec_object ("oauth-based", "oauth-based", "oauth-based", GOA_TYPE_OAUTH_BASED, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:password-based: * * The #GoaPasswordBased instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.PasswordBased, if any. * * Connect to the #GObject::notify signal to get informed of property changes. * * Since: 3.6.0 */ g_object_interface_install_property (iface, g_param_spec_object ("password-based", "password-based", "password-based", GOA_TYPE_PASSWORD_BASED, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:manager: * * The #GoaManager instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.Manager, if any. * * Connect to the #GObject::notify signal to get informed of property changes. */ g_object_interface_install_property (iface, g_param_spec_object ("manager", "manager", "manager", GOA_TYPE_MANAGER, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:mail: * * The #GoaMail instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.Mail, if any. * * Connect to the #GObject::notify signal to get informed of property changes. */ g_object_interface_install_property (iface, g_param_spec_object ("mail", "mail", "mail", GOA_TYPE_MAIL, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:calendar: * * The #GoaCalendar instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.Calendar, if any. * * Connect to the #GObject::notify signal to get informed of property changes. */ g_object_interface_install_property (iface, g_param_spec_object ("calendar", "calendar", "calendar", GOA_TYPE_CALENDAR, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:contacts: * * The #GoaContacts instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.Contacts, if any. * * Connect to the #GObject::notify signal to get informed of property changes. */ g_object_interface_install_property (iface, g_param_spec_object ("contacts", "contacts", "contacts", GOA_TYPE_CONTACTS, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:chat: * * The #GoaChat instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.Chat, if any. * * Connect to the #GObject::notify signal to get informed of property changes. */ g_object_interface_install_property (iface, g_param_spec_object ("chat", "chat", "chat", GOA_TYPE_CHAT, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:documents: * * The #GoaDocuments instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.Documents, if any. * * Connect to the #GObject::notify signal to get informed of property changes. */ g_object_interface_install_property (iface, g_param_spec_object ("documents", "documents", "documents", GOA_TYPE_DOCUMENTS, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:maps: * * The #GoaMaps instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.Maps, if any. * * Connect to the #GObject::notify signal to get informed of property changes. * * Since: 3.14.0 */ g_object_interface_install_property (iface, g_param_spec_object ("maps", "maps", "maps", GOA_TYPE_MAPS, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:music: * * The #GoaMusic instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.Music, if any. * * Connect to the #GObject::notify signal to get informed of property changes. * * Since: 3.18.0 */ g_object_interface_install_property (iface, g_param_spec_object ("music", "music", "music", GOA_TYPE_MUSIC, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:photos: * * The #GoaPhotos instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.Photos, if any. * * Connect to the #GObject::notify signal to get informed of property changes. * * Since: 3.8.0 */ g_object_interface_install_property (iface, g_param_spec_object ("photos", "photos", "photos", GOA_TYPE_PHOTOS, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:files: * * The #GoaFiles instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.Files, if any. * * Connect to the #GObject::notify signal to get informed of property changes. * * Since: 3.8.0 */ g_object_interface_install_property (iface, g_param_spec_object ("files", "files", "files", GOA_TYPE_FILES, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:exchange: * * The #GoaExchange instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.Exchange, if any. * * Connect to the #GObject::notify signal to get informed of property changes. * * Since: 3.6.0 */ g_object_interface_install_property (iface, g_param_spec_object ("exchange", "exchange", "exchange", GOA_TYPE_EXCHANGE, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:media-server: * * The #GoaMediaServer instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.MediaServer, if any. * * Connect to the #GObject::notify signal to get informed of property changes. * * Since: 3.14 */ g_object_interface_install_property (iface, g_param_spec_object ("media-server", "media-server", "media-server", GOA_TYPE_MEDIA_SERVER, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:ticketing: * * The #GoaTicketing instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.Ticketing, if any. * * Connect to the #GObject::notify signal to get informed of property changes. * * Since: 3.6.0 */ g_object_interface_install_property (iface, g_param_spec_object ("ticketing", "ticketing", "ticketing", GOA_TYPE_TICKETING, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:todo: * * The #GoaTodo instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.Todo, if any. * * Connect to the #GObject::notify signal to get informed of property changes. * * Since: 3.26.0 */ g_object_interface_install_property (iface, g_param_spec_object ("todo", "todo", "todo", GOA_TYPE_TODO, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:read-later: * * The #GoaReadLater instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.ReadLater, if any. * * Connect to the #GObject::notify signal to get informed of property changes. * * Since: 3.12.0 */ g_object_interface_install_property (iface, g_param_spec_object ("read-later", "read-later", "read-later", GOA_TYPE_READ_LATER, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); /** * GoaObject:printers: * * The #GoaPrinters instance corresponding to the D-Bus interface org.gnome.OnlineAccounts.Printers, if any. * * Connect to the #GObject::notify signal to get informed of property changes. * * Since: 3.12.0 */ g_object_interface_install_property (iface, g_param_spec_object ("printers", "printers", "printers", GOA_TYPE_PRINTERS, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS)); } /** * goa_object_get_account: * @object: A #GoaObject. * * Gets the #GoaAccount instance for the D-Bus interface org.gnome.OnlineAccounts.Account on @object, if any. * * Returns: (transfer full): A #GoaAccount that must be freed with g_object_unref() or %NULL if @object does not implement the interface. */ GoaAccount *goa_object_get_account (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Account"); if (ret == NULL) return NULL; return GOA_ACCOUNT (ret); } /** * goa_object_get_oauth2_based: * @object: A #GoaObject. * * Gets the #GoaOAuth2Based instance for the D-Bus interface org.gnome.OnlineAccounts.OAuth2Based on @object, if any. * * Returns: (transfer full): A #GoaOAuth2Based that must be freed with g_object_unref() or %NULL if @object does not implement the interface. */ GoaOAuth2Based *goa_object_get_oauth2_based (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.OAuth2Based"); if (ret == NULL) return NULL; return GOA_OAUTH2_BASED (ret); } /** * goa_object_get_oauth_based: * @object: A #GoaObject. * * Gets the #GoaOAuthBased instance for the D-Bus interface org.gnome.OnlineAccounts.OAuthBased on @object, if any. * * Returns: (transfer full): A #GoaOAuthBased that must be freed with g_object_unref() or %NULL if @object does not implement the interface. */ GoaOAuthBased *goa_object_get_oauth_based (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.OAuthBased"); if (ret == NULL) return NULL; return GOA_OAUTH_BASED (ret); } /** * goa_object_get_password_based: * @object: A #GoaObject. * * Gets the #GoaPasswordBased instance for the D-Bus interface org.gnome.OnlineAccounts.PasswordBased on @object, if any. * * Returns: (transfer full): A #GoaPasswordBased that must be freed with g_object_unref() or %NULL if @object does not implement the interface. * * Since: 3.6.0 */ GoaPasswordBased *goa_object_get_password_based (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.PasswordBased"); if (ret == NULL) return NULL; return GOA_PASSWORD_BASED (ret); } /** * goa_object_get_manager: * @object: A #GoaObject. * * Gets the #GoaManager instance for the D-Bus interface org.gnome.OnlineAccounts.Manager on @object, if any. * * Returns: (transfer full): A #GoaManager that must be freed with g_object_unref() or %NULL if @object does not implement the interface. */ GoaManager *goa_object_get_manager (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Manager"); if (ret == NULL) return NULL; return GOA_MANAGER (ret); } /** * goa_object_get_mail: * @object: A #GoaObject. * * Gets the #GoaMail instance for the D-Bus interface org.gnome.OnlineAccounts.Mail on @object, if any. * * Returns: (transfer full): A #GoaMail that must be freed with g_object_unref() or %NULL if @object does not implement the interface. */ GoaMail *goa_object_get_mail (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Mail"); if (ret == NULL) return NULL; return GOA_MAIL (ret); } /** * goa_object_get_calendar: * @object: A #GoaObject. * * Gets the #GoaCalendar instance for the D-Bus interface org.gnome.OnlineAccounts.Calendar on @object, if any. * * Returns: (transfer full): A #GoaCalendar that must be freed with g_object_unref() or %NULL if @object does not implement the interface. */ GoaCalendar *goa_object_get_calendar (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Calendar"); if (ret == NULL) return NULL; return GOA_CALENDAR (ret); } /** * goa_object_get_contacts: * @object: A #GoaObject. * * Gets the #GoaContacts instance for the D-Bus interface org.gnome.OnlineAccounts.Contacts on @object, if any. * * Returns: (transfer full): A #GoaContacts that must be freed with g_object_unref() or %NULL if @object does not implement the interface. */ GoaContacts *goa_object_get_contacts (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Contacts"); if (ret == NULL) return NULL; return GOA_CONTACTS (ret); } /** * goa_object_get_chat: * @object: A #GoaObject. * * Gets the #GoaChat instance for the D-Bus interface org.gnome.OnlineAccounts.Chat on @object, if any. * * Returns: (transfer full): A #GoaChat that must be freed with g_object_unref() or %NULL if @object does not implement the interface. */ GoaChat *goa_object_get_chat (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Chat"); if (ret == NULL) return NULL; return GOA_CHAT (ret); } /** * goa_object_get_documents: * @object: A #GoaObject. * * Gets the #GoaDocuments instance for the D-Bus interface org.gnome.OnlineAccounts.Documents on @object, if any. * * Returns: (transfer full): A #GoaDocuments that must be freed with g_object_unref() or %NULL if @object does not implement the interface. */ GoaDocuments *goa_object_get_documents (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Documents"); if (ret == NULL) return NULL; return GOA_DOCUMENTS (ret); } /** * goa_object_get_maps: * @object: A #GoaObject. * * Gets the #GoaMaps instance for the D-Bus interface org.gnome.OnlineAccounts.Maps on @object, if any. * * Returns: (transfer full): A #GoaMaps that must be freed with g_object_unref() or %NULL if @object does not implement the interface. * * Since: 3.14.0 */ GoaMaps *goa_object_get_maps (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Maps"); if (ret == NULL) return NULL; return GOA_MAPS (ret); } /** * goa_object_get_music: * @object: A #GoaObject. * * Gets the #GoaMusic instance for the D-Bus interface org.gnome.OnlineAccounts.Music on @object, if any. * * Returns: (transfer full): A #GoaMusic that must be freed with g_object_unref() or %NULL if @object does not implement the interface. * * Since: 3.18.0 */ GoaMusic *goa_object_get_music (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Music"); if (ret == NULL) return NULL; return GOA_MUSIC (ret); } /** * goa_object_get_photos: * @object: A #GoaObject. * * Gets the #GoaPhotos instance for the D-Bus interface org.gnome.OnlineAccounts.Photos on @object, if any. * * Returns: (transfer full): A #GoaPhotos that must be freed with g_object_unref() or %NULL if @object does not implement the interface. * * Since: 3.8.0 */ GoaPhotos *goa_object_get_photos (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Photos"); if (ret == NULL) return NULL; return GOA_PHOTOS (ret); } /** * goa_object_get_files: * @object: A #GoaObject. * * Gets the #GoaFiles instance for the D-Bus interface org.gnome.OnlineAccounts.Files on @object, if any. * * Returns: (transfer full): A #GoaFiles that must be freed with g_object_unref() or %NULL if @object does not implement the interface. * * Since: 3.8.0 */ GoaFiles *goa_object_get_files (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Files"); if (ret == NULL) return NULL; return GOA_FILES (ret); } /** * goa_object_get_exchange: * @object: A #GoaObject. * * Gets the #GoaExchange instance for the D-Bus interface org.gnome.OnlineAccounts.Exchange on @object, if any. * * Returns: (transfer full): A #GoaExchange that must be freed with g_object_unref() or %NULL if @object does not implement the interface. * * Since: 3.6.0 */ GoaExchange *goa_object_get_exchange (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Exchange"); if (ret == NULL) return NULL; return GOA_EXCHANGE (ret); } /** * goa_object_get_media_server: * @object: A #GoaObject. * * Gets the #GoaMediaServer instance for the D-Bus interface org.gnome.OnlineAccounts.MediaServer on @object, if any. * * Returns: (transfer full): A #GoaMediaServer that must be freed with g_object_unref() or %NULL if @object does not implement the interface. * * Since: 3.14 */ GoaMediaServer *goa_object_get_media_server (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.MediaServer"); if (ret == NULL) return NULL; return GOA_MEDIA_SERVER (ret); } /** * goa_object_get_ticketing: * @object: A #GoaObject. * * Gets the #GoaTicketing instance for the D-Bus interface org.gnome.OnlineAccounts.Ticketing on @object, if any. * * Returns: (transfer full): A #GoaTicketing that must be freed with g_object_unref() or %NULL if @object does not implement the interface. * * Since: 3.6.0 */ GoaTicketing *goa_object_get_ticketing (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Ticketing"); if (ret == NULL) return NULL; return GOA_TICKETING (ret); } /** * goa_object_get_todo: * @object: A #GoaObject. * * Gets the #GoaTodo instance for the D-Bus interface org.gnome.OnlineAccounts.Todo on @object, if any. * * Returns: (transfer full): A #GoaTodo that must be freed with g_object_unref() or %NULL if @object does not implement the interface. * * Since: 3.26.0 */ GoaTodo *goa_object_get_todo (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Todo"); if (ret == NULL) return NULL; return GOA_TODO (ret); } /** * goa_object_get_read_later: * @object: A #GoaObject. * * Gets the #GoaReadLater instance for the D-Bus interface org.gnome.OnlineAccounts.ReadLater on @object, if any. * * Returns: (transfer full): A #GoaReadLater that must be freed with g_object_unref() or %NULL if @object does not implement the interface. * * Since: 3.12.0 */ GoaReadLater *goa_object_get_read_later (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.ReadLater"); if (ret == NULL) return NULL; return GOA_READ_LATER (ret); } /** * goa_object_get_printers: * @object: A #GoaObject. * * Gets the #GoaPrinters instance for the D-Bus interface org.gnome.OnlineAccounts.Printers on @object, if any. * * Returns: (transfer full): A #GoaPrinters that must be freed with g_object_unref() or %NULL if @object does not implement the interface. * * Since: 3.12.0 */ GoaPrinters *goa_object_get_printers (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Printers"); if (ret == NULL) return NULL; return GOA_PRINTERS (ret); } /** * goa_object_peek_account: (skip) * @object: A #GoaObject. * * Like goa_object_get_account() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaAccount or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. */ GoaAccount *goa_object_peek_account (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Account"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_ACCOUNT (ret); } /** * goa_object_peek_oauth2_based: (skip) * @object: A #GoaObject. * * Like goa_object_get_oauth2_based() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaOAuth2Based or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. */ GoaOAuth2Based *goa_object_peek_oauth2_based (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.OAuth2Based"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_OAUTH2_BASED (ret); } /** * goa_object_peek_oauth_based: (skip) * @object: A #GoaObject. * * Like goa_object_get_oauth_based() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaOAuthBased or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. */ GoaOAuthBased *goa_object_peek_oauth_based (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.OAuthBased"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_OAUTH_BASED (ret); } /** * goa_object_peek_password_based: (skip) * @object: A #GoaObject. * * Like goa_object_get_password_based() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaPasswordBased or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. * * Since: 3.6.0 */ GoaPasswordBased *goa_object_peek_password_based (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.PasswordBased"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_PASSWORD_BASED (ret); } /** * goa_object_peek_manager: (skip) * @object: A #GoaObject. * * Like goa_object_get_manager() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaManager or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. */ GoaManager *goa_object_peek_manager (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Manager"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_MANAGER (ret); } /** * goa_object_peek_mail: (skip) * @object: A #GoaObject. * * Like goa_object_get_mail() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaMail or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. */ GoaMail *goa_object_peek_mail (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Mail"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_MAIL (ret); } /** * goa_object_peek_calendar: (skip) * @object: A #GoaObject. * * Like goa_object_get_calendar() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaCalendar or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. */ GoaCalendar *goa_object_peek_calendar (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Calendar"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_CALENDAR (ret); } /** * goa_object_peek_contacts: (skip) * @object: A #GoaObject. * * Like goa_object_get_contacts() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaContacts or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. */ GoaContacts *goa_object_peek_contacts (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Contacts"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_CONTACTS (ret); } /** * goa_object_peek_chat: (skip) * @object: A #GoaObject. * * Like goa_object_get_chat() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaChat or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. */ GoaChat *goa_object_peek_chat (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Chat"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_CHAT (ret); } /** * goa_object_peek_documents: (skip) * @object: A #GoaObject. * * Like goa_object_get_documents() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaDocuments or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. */ GoaDocuments *goa_object_peek_documents (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Documents"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_DOCUMENTS (ret); } /** * goa_object_peek_maps: (skip) * @object: A #GoaObject. * * Like goa_object_get_maps() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaMaps or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. * * Since: 3.14.0 */ GoaMaps *goa_object_peek_maps (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Maps"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_MAPS (ret); } /** * goa_object_peek_music: (skip) * @object: A #GoaObject. * * Like goa_object_get_music() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaMusic or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. * * Since: 3.18.0 */ GoaMusic *goa_object_peek_music (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Music"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_MUSIC (ret); } /** * goa_object_peek_photos: (skip) * @object: A #GoaObject. * * Like goa_object_get_photos() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaPhotos or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. * * Since: 3.8.0 */ GoaPhotos *goa_object_peek_photos (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Photos"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_PHOTOS (ret); } /** * goa_object_peek_files: (skip) * @object: A #GoaObject. * * Like goa_object_get_files() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaFiles or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. * * Since: 3.8.0 */ GoaFiles *goa_object_peek_files (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Files"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_FILES (ret); } /** * goa_object_peek_exchange: (skip) * @object: A #GoaObject. * * Like goa_object_get_exchange() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaExchange or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. * * Since: 3.6.0 */ GoaExchange *goa_object_peek_exchange (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Exchange"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_EXCHANGE (ret); } /** * goa_object_peek_media_server: (skip) * @object: A #GoaObject. * * Like goa_object_get_media_server() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaMediaServer or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. * * Since: 3.14 */ GoaMediaServer *goa_object_peek_media_server (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.MediaServer"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_MEDIA_SERVER (ret); } /** * goa_object_peek_ticketing: (skip) * @object: A #GoaObject. * * Like goa_object_get_ticketing() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaTicketing or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. * * Since: 3.6.0 */ GoaTicketing *goa_object_peek_ticketing (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Ticketing"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_TICKETING (ret); } /** * goa_object_peek_todo: (skip) * @object: A #GoaObject. * * Like goa_object_get_todo() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaTodo or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. * * Since: 3.26.0 */ GoaTodo *goa_object_peek_todo (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Todo"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_TODO (ret); } /** * goa_object_peek_read_later: (skip) * @object: A #GoaObject. * * Like goa_object_get_read_later() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaReadLater or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. * * Since: 3.12.0 */ GoaReadLater *goa_object_peek_read_later (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.ReadLater"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_READ_LATER (ret); } /** * goa_object_peek_printers: (skip) * @object: A #GoaObject. * * Like goa_object_get_printers() but doesn't increase the reference count on the returned object. * * It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running. * * Returns: (transfer none): A #GoaPrinters or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object. * * Since: 3.12.0 */ GoaPrinters *goa_object_peek_printers (GoaObject *object) { GDBusInterface *ret; ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Printers"); if (ret == NULL) return NULL; g_object_unref (ret); return GOA_PRINTERS (ret); } static void goa_object_notify (GDBusObject *object, GDBusInterface *interface) { _ExtendedGDBusInterfaceInfo *info = (_ExtendedGDBusInterfaceInfo *) g_dbus_interface_get_info (interface); /* info can be NULL if the other end is using a D-Bus interface we don't know * anything about, for example old generated code in this process talking to * newer generated code in the other process. */ if (info != NULL) g_object_notify (G_OBJECT (object), info->hyphen_name); } /** * GoaObjectProxy: * * The #GoaObjectProxy structure contains only private data and should only be accessed using the provided API. */ /** * GoaObjectProxyClass: * @parent_class: The parent class. * * Class structure for #GoaObjectProxy. */ static void goa_object_proxy__goa_object_iface_init (GoaObjectIface *iface G_GNUC_UNUSED) { } static void goa_object_proxy__g_dbus_object_iface_init (GDBusObjectIface *iface) { iface->interface_added = goa_object_notify; iface->interface_removed = goa_object_notify; } G_DEFINE_TYPE_WITH_CODE (GoaObjectProxy, goa_object_proxy, G_TYPE_DBUS_OBJECT_PROXY, G_IMPLEMENT_INTERFACE (GOA_TYPE_OBJECT, goa_object_proxy__goa_object_iface_init) G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, goa_object_proxy__g_dbus_object_iface_init)) static void goa_object_proxy_init (GoaObjectProxy *object G_GNUC_UNUSED) { } static void goa_object_proxy_set_property (GObject *gobject, guint prop_id, const GValue *value G_GNUC_UNUSED, GParamSpec *pspec) { G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); } static void goa_object_proxy_get_property (GObject *gobject, guint prop_id, GValue *value, GParamSpec *pspec) { GoaObjectProxy *object = GOA_OBJECT_PROXY (gobject); GDBusInterface *interface; switch (prop_id) { case 1: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Account"); g_value_take_object (value, interface); break; case 2: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.OAuth2Based"); g_value_take_object (value, interface); break; case 3: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.OAuthBased"); g_value_take_object (value, interface); break; case 4: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.PasswordBased"); g_value_take_object (value, interface); break; case 5: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Manager"); g_value_take_object (value, interface); break; case 6: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Mail"); g_value_take_object (value, interface); break; case 7: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Calendar"); g_value_take_object (value, interface); break; case 8: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Contacts"); g_value_take_object (value, interface); break; case 9: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Chat"); g_value_take_object (value, interface); break; case 10: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Documents"); g_value_take_object (value, interface); break; case 11: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Maps"); g_value_take_object (value, interface); break; case 12: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Music"); g_value_take_object (value, interface); break; case 13: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Photos"); g_value_take_object (value, interface); break; case 14: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Files"); g_value_take_object (value, interface); break; case 15: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Exchange"); g_value_take_object (value, interface); break; case 16: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.MediaServer"); g_value_take_object (value, interface); break; case 17: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Ticketing"); g_value_take_object (value, interface); break; case 18: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Todo"); g_value_take_object (value, interface); break; case 19: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.ReadLater"); g_value_take_object (value, interface); break; case 20: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Printers"); g_value_take_object (value, interface); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; } } static void goa_object_proxy_class_init (GoaObjectProxyClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->set_property = goa_object_proxy_set_property; gobject_class->get_property = goa_object_proxy_get_property; g_object_class_override_property (gobject_class, 1, "account"); g_object_class_override_property (gobject_class, 2, "oauth2-based"); g_object_class_override_property (gobject_class, 3, "oauth-based"); g_object_class_override_property (gobject_class, 4, "password-based"); g_object_class_override_property (gobject_class, 5, "manager"); g_object_class_override_property (gobject_class, 6, "mail"); g_object_class_override_property (gobject_class, 7, "calendar"); g_object_class_override_property (gobject_class, 8, "contacts"); g_object_class_override_property (gobject_class, 9, "chat"); g_object_class_override_property (gobject_class, 10, "documents"); g_object_class_override_property (gobject_class, 11, "maps"); g_object_class_override_property (gobject_class, 12, "music"); g_object_class_override_property (gobject_class, 13, "photos"); g_object_class_override_property (gobject_class, 14, "files"); g_object_class_override_property (gobject_class, 15, "exchange"); g_object_class_override_property (gobject_class, 16, "media-server"); g_object_class_override_property (gobject_class, 17, "ticketing"); g_object_class_override_property (gobject_class, 18, "todo"); g_object_class_override_property (gobject_class, 19, "read-later"); g_object_class_override_property (gobject_class, 20, "printers"); } /** * goa_object_proxy_new: * @connection: A #GDBusConnection. * @object_path: An object path. * * Creates a new proxy object. * * Returns: (transfer full): The proxy object. */ GoaObjectProxy * goa_object_proxy_new (GDBusConnection *connection, const gchar *object_path) { g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL); g_return_val_if_fail (g_variant_is_object_path (object_path), NULL); return GOA_OBJECT_PROXY (g_object_new (GOA_TYPE_OBJECT_PROXY, "g-connection", connection, "g-object-path", object_path, NULL)); } /** * GoaObjectSkeleton: * * The #GoaObjectSkeleton structure contains only private data and should only be accessed using the provided API. */ /** * GoaObjectSkeletonClass: * @parent_class: The parent class. * * Class structure for #GoaObjectSkeleton. */ static void goa_object_skeleton__goa_object_iface_init (GoaObjectIface *iface G_GNUC_UNUSED) { } static void goa_object_skeleton__g_dbus_object_iface_init (GDBusObjectIface *iface) { iface->interface_added = goa_object_notify; iface->interface_removed = goa_object_notify; } G_DEFINE_TYPE_WITH_CODE (GoaObjectSkeleton, goa_object_skeleton, G_TYPE_DBUS_OBJECT_SKELETON, G_IMPLEMENT_INTERFACE (GOA_TYPE_OBJECT, goa_object_skeleton__goa_object_iface_init) G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, goa_object_skeleton__g_dbus_object_iface_init)) static void goa_object_skeleton_init (GoaObjectSkeleton *object G_GNUC_UNUSED) { } static void goa_object_skeleton_set_property (GObject *gobject, guint prop_id, const GValue *value, GParamSpec *pspec) { GoaObjectSkeleton *object = GOA_OBJECT_SKELETON (gobject); GDBusInterfaceSkeleton *interface; switch (prop_id) { case 1: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_ACCOUNT (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.Account"); } break; case 2: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_OAUTH2_BASED (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.OAuth2Based"); } break; case 3: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_OAUTH_BASED (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.OAuthBased"); } break; case 4: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_PASSWORD_BASED (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.PasswordBased"); } break; case 5: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_MANAGER (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.Manager"); } break; case 6: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_MAIL (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.Mail"); } break; case 7: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_CALENDAR (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.Calendar"); } break; case 8: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_CONTACTS (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.Contacts"); } break; case 9: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_CHAT (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.Chat"); } break; case 10: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_DOCUMENTS (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.Documents"); } break; case 11: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_MAPS (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.Maps"); } break; case 12: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_MUSIC (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.Music"); } break; case 13: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_PHOTOS (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.Photos"); } break; case 14: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_FILES (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.Files"); } break; case 15: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_EXCHANGE (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.Exchange"); } break; case 16: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_MEDIA_SERVER (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.MediaServer"); } break; case 17: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_TICKETING (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.Ticketing"); } break; case 18: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_TODO (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.Todo"); } break; case 19: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_READ_LATER (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.ReadLater"); } break; case 20: interface = g_value_get_object (value); if (interface != NULL) { g_warn_if_fail (GOA_IS_PRINTERS (interface)); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface); } else { g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.gnome.OnlineAccounts.Printers"); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; } } static void goa_object_skeleton_get_property (GObject *gobject, guint prop_id, GValue *value, GParamSpec *pspec) { GoaObjectSkeleton *object = GOA_OBJECT_SKELETON (gobject); GDBusInterface *interface; switch (prop_id) { case 1: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Account"); g_value_take_object (value, interface); break; case 2: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.OAuth2Based"); g_value_take_object (value, interface); break; case 3: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.OAuthBased"); g_value_take_object (value, interface); break; case 4: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.PasswordBased"); g_value_take_object (value, interface); break; case 5: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Manager"); g_value_take_object (value, interface); break; case 6: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Mail"); g_value_take_object (value, interface); break; case 7: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Calendar"); g_value_take_object (value, interface); break; case 8: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Contacts"); g_value_take_object (value, interface); break; case 9: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Chat"); g_value_take_object (value, interface); break; case 10: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Documents"); g_value_take_object (value, interface); break; case 11: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Maps"); g_value_take_object (value, interface); break; case 12: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Music"); g_value_take_object (value, interface); break; case 13: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Photos"); g_value_take_object (value, interface); break; case 14: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Files"); g_value_take_object (value, interface); break; case 15: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Exchange"); g_value_take_object (value, interface); break; case 16: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.MediaServer"); g_value_take_object (value, interface); break; case 17: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Ticketing"); g_value_take_object (value, interface); break; case 18: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Todo"); g_value_take_object (value, interface); break; case 19: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.ReadLater"); g_value_take_object (value, interface); break; case 20: interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.gnome.OnlineAccounts.Printers"); g_value_take_object (value, interface); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; } } static void goa_object_skeleton_class_init (GoaObjectSkeletonClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->set_property = goa_object_skeleton_set_property; gobject_class->get_property = goa_object_skeleton_get_property; g_object_class_override_property (gobject_class, 1, "account"); g_object_class_override_property (gobject_class, 2, "oauth2-based"); g_object_class_override_property (gobject_class, 3, "oauth-based"); g_object_class_override_property (gobject_class, 4, "password-based"); g_object_class_override_property (gobject_class, 5, "manager"); g_object_class_override_property (gobject_class, 6, "mail"); g_object_class_override_property (gobject_class, 7, "calendar"); g_object_class_override_property (gobject_class, 8, "contacts"); g_object_class_override_property (gobject_class, 9, "chat"); g_object_class_override_property (gobject_class, 10, "documents"); g_object_class_override_property (gobject_class, 11, "maps"); g_object_class_override_property (gobject_class, 12, "music"); g_object_class_override_property (gobject_class, 13, "photos"); g_object_class_override_property (gobject_class, 14, "files"); g_object_class_override_property (gobject_class, 15, "exchange"); g_object_class_override_property (gobject_class, 16, "media-server"); g_object_class_override_property (gobject_class, 17, "ticketing"); g_object_class_override_property (gobject_class, 18, "todo"); g_object_class_override_property (gobject_class, 19, "read-later"); g_object_class_override_property (gobject_class, 20, "printers"); } /** * goa_object_skeleton_new: * @object_path: An object path. * * Creates a new skeleton object. * * Returns: (transfer full): The skeleton object. */ GoaObjectSkeleton * goa_object_skeleton_new (const gchar *object_path) { g_return_val_if_fail (g_variant_is_object_path (object_path), NULL); return GOA_OBJECT_SKELETON (g_object_new (GOA_TYPE_OBJECT_SKELETON, "g-object-path", object_path, NULL)); } /** * goa_object_skeleton_set_account: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaAccount or %NULL to clear the interface. * * Sets the #GoaAccount instance for the D-Bus interface org.gnome.OnlineAccounts.Account on @object. */ void goa_object_skeleton_set_account (GoaObjectSkeleton *object, GoaAccount *interface_) { g_object_set (G_OBJECT (object), "account", interface_, NULL); } /** * goa_object_skeleton_set_oauth2_based: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaOAuth2Based or %NULL to clear the interface. * * Sets the #GoaOAuth2Based instance for the D-Bus interface org.gnome.OnlineAccounts.OAuth2Based on @object. */ void goa_object_skeleton_set_oauth2_based (GoaObjectSkeleton *object, GoaOAuth2Based *interface_) { g_object_set (G_OBJECT (object), "oauth2-based", interface_, NULL); } /** * goa_object_skeleton_set_oauth_based: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaOAuthBased or %NULL to clear the interface. * * Sets the #GoaOAuthBased instance for the D-Bus interface org.gnome.OnlineAccounts.OAuthBased on @object. */ void goa_object_skeleton_set_oauth_based (GoaObjectSkeleton *object, GoaOAuthBased *interface_) { g_object_set (G_OBJECT (object), "oauth-based", interface_, NULL); } /** * goa_object_skeleton_set_password_based: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaPasswordBased or %NULL to clear the interface. * * Sets the #GoaPasswordBased instance for the D-Bus interface org.gnome.OnlineAccounts.PasswordBased on @object. * * Since: 3.6.0 */ void goa_object_skeleton_set_password_based (GoaObjectSkeleton *object, GoaPasswordBased *interface_) { g_object_set (G_OBJECT (object), "password-based", interface_, NULL); } /** * goa_object_skeleton_set_manager: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaManager or %NULL to clear the interface. * * Sets the #GoaManager instance for the D-Bus interface org.gnome.OnlineAccounts.Manager on @object. */ void goa_object_skeleton_set_manager (GoaObjectSkeleton *object, GoaManager *interface_) { g_object_set (G_OBJECT (object), "manager", interface_, NULL); } /** * goa_object_skeleton_set_mail: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaMail or %NULL to clear the interface. * * Sets the #GoaMail instance for the D-Bus interface org.gnome.OnlineAccounts.Mail on @object. */ void goa_object_skeleton_set_mail (GoaObjectSkeleton *object, GoaMail *interface_) { g_object_set (G_OBJECT (object), "mail", interface_, NULL); } /** * goa_object_skeleton_set_calendar: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaCalendar or %NULL to clear the interface. * * Sets the #GoaCalendar instance for the D-Bus interface org.gnome.OnlineAccounts.Calendar on @object. */ void goa_object_skeleton_set_calendar (GoaObjectSkeleton *object, GoaCalendar *interface_) { g_object_set (G_OBJECT (object), "calendar", interface_, NULL); } /** * goa_object_skeleton_set_contacts: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaContacts or %NULL to clear the interface. * * Sets the #GoaContacts instance for the D-Bus interface org.gnome.OnlineAccounts.Contacts on @object. */ void goa_object_skeleton_set_contacts (GoaObjectSkeleton *object, GoaContacts *interface_) { g_object_set (G_OBJECT (object), "contacts", interface_, NULL); } /** * goa_object_skeleton_set_chat: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaChat or %NULL to clear the interface. * * Sets the #GoaChat instance for the D-Bus interface org.gnome.OnlineAccounts.Chat on @object. */ void goa_object_skeleton_set_chat (GoaObjectSkeleton *object, GoaChat *interface_) { g_object_set (G_OBJECT (object), "chat", interface_, NULL); } /** * goa_object_skeleton_set_documents: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaDocuments or %NULL to clear the interface. * * Sets the #GoaDocuments instance for the D-Bus interface org.gnome.OnlineAccounts.Documents on @object. */ void goa_object_skeleton_set_documents (GoaObjectSkeleton *object, GoaDocuments *interface_) { g_object_set (G_OBJECT (object), "documents", interface_, NULL); } /** * goa_object_skeleton_set_maps: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaMaps or %NULL to clear the interface. * * Sets the #GoaMaps instance for the D-Bus interface org.gnome.OnlineAccounts.Maps on @object. * * Since: 3.14.0 */ void goa_object_skeleton_set_maps (GoaObjectSkeleton *object, GoaMaps *interface_) { g_object_set (G_OBJECT (object), "maps", interface_, NULL); } /** * goa_object_skeleton_set_music: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaMusic or %NULL to clear the interface. * * Sets the #GoaMusic instance for the D-Bus interface org.gnome.OnlineAccounts.Music on @object. * * Since: 3.18.0 */ void goa_object_skeleton_set_music (GoaObjectSkeleton *object, GoaMusic *interface_) { g_object_set (G_OBJECT (object), "music", interface_, NULL); } /** * goa_object_skeleton_set_photos: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaPhotos or %NULL to clear the interface. * * Sets the #GoaPhotos instance for the D-Bus interface org.gnome.OnlineAccounts.Photos on @object. * * Since: 3.8.0 */ void goa_object_skeleton_set_photos (GoaObjectSkeleton *object, GoaPhotos *interface_) { g_object_set (G_OBJECT (object), "photos", interface_, NULL); } /** * goa_object_skeleton_set_files: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaFiles or %NULL to clear the interface. * * Sets the #GoaFiles instance for the D-Bus interface org.gnome.OnlineAccounts.Files on @object. * * Since: 3.8.0 */ void goa_object_skeleton_set_files (GoaObjectSkeleton *object, GoaFiles *interface_) { g_object_set (G_OBJECT (object), "files", interface_, NULL); } /** * goa_object_skeleton_set_exchange: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaExchange or %NULL to clear the interface. * * Sets the #GoaExchange instance for the D-Bus interface org.gnome.OnlineAccounts.Exchange on @object. * * Since: 3.6.0 */ void goa_object_skeleton_set_exchange (GoaObjectSkeleton *object, GoaExchange *interface_) { g_object_set (G_OBJECT (object), "exchange", interface_, NULL); } /** * goa_object_skeleton_set_media_server: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaMediaServer or %NULL to clear the interface. * * Sets the #GoaMediaServer instance for the D-Bus interface org.gnome.OnlineAccounts.MediaServer on @object. * * Since: 3.14 */ void goa_object_skeleton_set_media_server (GoaObjectSkeleton *object, GoaMediaServer *interface_) { g_object_set (G_OBJECT (object), "media-server", interface_, NULL); } /** * goa_object_skeleton_set_ticketing: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaTicketing or %NULL to clear the interface. * * Sets the #GoaTicketing instance for the D-Bus interface org.gnome.OnlineAccounts.Ticketing on @object. * * Since: 3.6.0 */ void goa_object_skeleton_set_ticketing (GoaObjectSkeleton *object, GoaTicketing *interface_) { g_object_set (G_OBJECT (object), "ticketing", interface_, NULL); } /** * goa_object_skeleton_set_todo: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaTodo or %NULL to clear the interface. * * Sets the #GoaTodo instance for the D-Bus interface org.gnome.OnlineAccounts.Todo on @object. * * Since: 3.26.0 */ void goa_object_skeleton_set_todo (GoaObjectSkeleton *object, GoaTodo *interface_) { g_object_set (G_OBJECT (object), "todo", interface_, NULL); } /** * goa_object_skeleton_set_read_later: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaReadLater or %NULL to clear the interface. * * Sets the #GoaReadLater instance for the D-Bus interface org.gnome.OnlineAccounts.ReadLater on @object. * * Since: 3.12.0 */ void goa_object_skeleton_set_read_later (GoaObjectSkeleton *object, GoaReadLater *interface_) { g_object_set (G_OBJECT (object), "read-later", interface_, NULL); } /** * goa_object_skeleton_set_printers: * @object: A #GoaObjectSkeleton. * @interface_: (nullable): A #GoaPrinters or %NULL to clear the interface. * * Sets the #GoaPrinters instance for the D-Bus interface org.gnome.OnlineAccounts.Printers on @object. * * Since: 3.12.0 */ void goa_object_skeleton_set_printers (GoaObjectSkeleton *object, GoaPrinters *interface_) { g_object_set (G_OBJECT (object), "printers", interface_, NULL); } /* ------------------------------------------------------------------------ * Code for ObjectManager client * ------------------------------------------------------------------------ */ /** * SECTION:GoaObjectManagerClient * @title: GoaObjectManagerClient * @short_description: Generated GDBusObjectManagerClient type * * This section contains a #GDBusObjectManagerClient that uses goa_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. */ /** * GoaObjectManagerClient: * * The #GoaObjectManagerClient structure contains only private data and should only be accessed using the provided API. */ /** * GoaObjectManagerClientClass: * @parent_class: The parent class. * * Class structure for #GoaObjectManagerClient. */ G_DEFINE_TYPE (GoaObjectManagerClient, goa_object_manager_client, G_TYPE_DBUS_OBJECT_MANAGER_CLIENT) static void goa_object_manager_client_init (GoaObjectManagerClient *manager G_GNUC_UNUSED) { } static void goa_object_manager_client_class_init (GoaObjectManagerClientClass *klass G_GNUC_UNUSED) { } /** * goa_object_manager_client_get_proxy_type: * @manager: A #GDBusObjectManagerClient. * @object_path: The object path of the remote object (unused). * @interface_name: (nullable): Interface name of the remote object or %NULL to get the object proxy #GType. * @user_data: User data (unused). * * A #GDBusProxyTypeFunc that maps @interface_name to the generated #GDBusObjectProxy derived and #GDBusProxy derived types. * * Returns: A #GDBusProxy derived #GType if @interface_name is not %NULL, otherwise the #GType for #GoaObjectProxy. */ GType goa_object_manager_client_get_proxy_type (GDBusObjectManagerClient *manager G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, gpointer user_data G_GNUC_UNUSED) { static gsize once_init_value = 0; static GHashTable *lookup_hash; GType ret; if (interface_name == NULL) return GOA_TYPE_OBJECT_PROXY; if (g_once_init_enter (&once_init_value)) { lookup_hash = g_hash_table_new (g_str_hash, g_str_equal); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.Account", GSIZE_TO_POINTER (GOA_TYPE_ACCOUNT_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.OAuth2Based", GSIZE_TO_POINTER (GOA_TYPE_OAUTH2_BASED_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.OAuthBased", GSIZE_TO_POINTER (GOA_TYPE_OAUTH_BASED_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.PasswordBased", GSIZE_TO_POINTER (GOA_TYPE_PASSWORD_BASED_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.Manager", GSIZE_TO_POINTER (GOA_TYPE_MANAGER_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.Mail", GSIZE_TO_POINTER (GOA_TYPE_MAIL_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.Calendar", GSIZE_TO_POINTER (GOA_TYPE_CALENDAR_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.Contacts", GSIZE_TO_POINTER (GOA_TYPE_CONTACTS_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.Chat", GSIZE_TO_POINTER (GOA_TYPE_CHAT_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.Documents", GSIZE_TO_POINTER (GOA_TYPE_DOCUMENTS_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.Maps", GSIZE_TO_POINTER (GOA_TYPE_MAPS_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.Music", GSIZE_TO_POINTER (GOA_TYPE_MUSIC_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.Photos", GSIZE_TO_POINTER (GOA_TYPE_PHOTOS_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.Files", GSIZE_TO_POINTER (GOA_TYPE_FILES_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.Exchange", GSIZE_TO_POINTER (GOA_TYPE_EXCHANGE_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.MediaServer", GSIZE_TO_POINTER (GOA_TYPE_MEDIA_SERVER_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.Ticketing", GSIZE_TO_POINTER (GOA_TYPE_TICKETING_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.Todo", GSIZE_TO_POINTER (GOA_TYPE_TODO_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.ReadLater", GSIZE_TO_POINTER (GOA_TYPE_READ_LATER_PROXY)); g_hash_table_insert (lookup_hash, (gpointer) "org.gnome.OnlineAccounts.Printers", GSIZE_TO_POINTER (GOA_TYPE_PRINTERS_PROXY)); g_once_init_leave (&once_init_value, 1); } ret = (GType) GPOINTER_TO_SIZE (g_hash_table_lookup (lookup_hash, interface_name)); if (ret == (GType) 0) ret = G_TYPE_DBUS_PROXY; return ret; } /** * goa_object_manager_client_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates #GDBusObjectManagerClient using goa_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new() for more details. * * 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 goa_object_manager_client_new_finish() to get the result of the operation. * * See goa_object_manager_client_new_sync() for the synchronous, blocking version of this constructor. */ void goa_object_manager_client_new ( GDBusConnection *connection, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async (GOA_TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", goa_object_manager_client_get_proxy_type, NULL); } /** * goa_object_manager_client_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_object_manager_client_new(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_object_manager_client_new(). * * Returns: (transfer full) (type GoaObjectManagerClient): The constructed object manager client or %NULL if @error is set. */ GDBusObjectManager * goa_object_manager_client_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return G_DBUS_OBJECT_MANAGER (ret); else return NULL; } /** * goa_object_manager_client_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates #GDBusObjectManagerClient using goa_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See goa_object_manager_client_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaObjectManagerClient): The constructed object manager client or %NULL if @error is set. */ GDBusObjectManager * goa_object_manager_client_new_sync ( GDBusConnection *connection, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", goa_object_manager_client_get_proxy_type, NULL); if (ret != NULL) return G_DBUS_OBJECT_MANAGER (ret); else return NULL; } /** * goa_object_manager_client_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like goa_object_manager_client_new() but takes a #GBusType instead of a #GDBusConnection. * * 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 goa_object_manager_client_new_for_bus_finish() to get the result of the operation. * * See goa_object_manager_client_new_for_bus_sync() for the synchronous, blocking version of this constructor. */ void goa_object_manager_client_new_for_bus ( GBusType bus_type, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async (GOA_TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", goa_object_manager_client_get_proxy_type, NULL); } /** * goa_object_manager_client_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to goa_object_manager_client_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with goa_object_manager_client_new_for_bus(). * * Returns: (transfer full) (type GoaObjectManagerClient): The constructed object manager client or %NULL if @error is set. */ GDBusObjectManager * goa_object_manager_client_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return G_DBUS_OBJECT_MANAGER (ret); else return NULL; } /** * goa_object_manager_client_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like goa_object_manager_client_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See goa_object_manager_client_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type GoaObjectManagerClient): The constructed object manager client or %NULL if @error is set. */ GDBusObjectManager * goa_object_manager_client_new_for_bus_sync ( GBusType bus_type, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (GOA_TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", goa_object_manager_client_get_proxy_type, NULL); if (ret != NULL) return G_DBUS_OBJECT_MANAGER (ret); else return NULL; }