--- a/libpurple/purplecredentialprovider.c Thu Dec 15 21:03:07 2022 -0600
+++ b/libpurple/purplecredentialprovider.c Thu Dec 15 21:06:09 2022 -0600
@@ -24,6 +24,8 @@
} PurpleCredentialProviderPrivate;
@@ -31,6 +33,7 @@
static GParamSpec *properties[N_PROPERTIES] = {NULL, };
@@ -83,6 +86,22 @@
g_object_notify_by_pspec(G_OBJECT(provider), properties[PROP_DESCRIPTION]);
+purple_credential_provider_set_settings(PurpleCredentialProvider *provider, + PurpleCredentialProviderPrivate *priv = NULL; + g_return_if_fail(PURPLE_IS_CREDENTIAL_PROVIDER(provider)); + priv = purple_credential_provider_get_instance_private(provider); + if(g_set_object(&priv->settings, settings)) { + g_object_notify_by_pspec(G_OBJECT(provider), + properties[PROP_SETTINGS]); /******************************************************************************
*****************************************************************************/
@@ -105,6 +124,10 @@
g_value_set_string(value,
purple_credential_provider_get_description(provider));
+ g_value_set_object(value, + purple_credential_provider_get_settings(provider)); G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
@@ -130,6 +153,10 @@
purple_credential_provider_set_description(provider,
g_value_get_string(value));
+ purple_credential_provider_set_settings(provider, + g_value_get_object(value)); G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
@@ -148,6 +175,8 @@
g_clear_pointer(&priv->name, g_free);
g_clear_pointer(&priv->description, g_free);
+ g_clear_object(&priv->settings); G_OBJECT_CLASS(purple_credential_provider_parent_class)->finalize(obj);
@@ -204,6 +233,20 @@
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS
+ * PurpleCredentialProvider::settings: + * The [class@Gio.Settings] used to configure the provider. This may be + properties[PROP_SETTINGS] = g_param_spec_object( + "The GSettings for the provider", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
@@ -418,3 +461,14 @@
+purple_credential_provider_get_settings(PurpleCredentialProvider *provider) { + PurpleCredentialProviderPrivate *priv = NULL; + g_return_val_if_fail(PURPLE_IS_CREDENTIAL_PROVIDER(provider), NULL); + priv = purple_credential_provider_get_instance_private(provider); --- a/libpurple/purplecredentialprovider.h Thu Dec 15 21:03:07 2022 -0600
+++ b/libpurple/purplecredentialprovider.h Thu Dec 15 21:06:09 2022 -0600
@@ -242,6 +242,19 @@
gboolean purple_credential_provider_clear_password_finish(PurpleCredentialProvider *provider, GAsyncResult *result, GError **error);
+ * purple_credential_provider_get_settings: + * @provider: The instance. + * Gets the [class@Gio.Settings] that @provider provides. + * Returns: (transfer none): The settings for @provider or %NULL if @provider + * doesn't have any settings. +GSettings *purple_credential_provider_get_settings(PurpleCredentialProvider *provider); #endif /* PURPLE_CREDENTIAL_PROVIDER_H */