libpurple/purplesavedpresence.c

changeset 42384
835faf0ddcb6
parent 42240
8920a8452aea
child 42571
722be3b1a8aa
--- a/libpurple/purplesavedpresence.c	Mon Oct 23 22:08:37 2023 -0500
+++ b/libpurple/purplesavedpresence.c	Mon Oct 23 22:36:22 2023 -0500
@@ -24,6 +24,7 @@
 
 #include "purpleenums.h"
 #include "purplesavedpresence.h"
+#include "purplesavedpresenceprivate.h"
 #include "util.h"
 
 struct _PurpleSavedPresence {
@@ -198,6 +199,15 @@
 }
 
 static void
+purple_saved_presence_dispose(GObject *obj) {
+	PurpleSavedPresence *presence = PURPLE_SAVED_PRESENCE(obj);
+
+	g_clear_object(&presence->settings);
+
+	G_OBJECT_CLASS(purple_saved_presence_parent_class)->dispose(obj);
+}
+
+static void
 purple_saved_presence_set_property(GObject *obj, guint param_id,
                                    const GValue *value, GParamSpec *pspec)
 {
@@ -307,6 +317,7 @@
 	GObjectClass *obj_class = G_OBJECT_CLASS(klass);
 
 	obj_class->constructed = purple_saved_presence_constructed;
+	obj_class->dispose = purple_saved_presence_dispose;
 	obj_class->finalize = purple_saved_presence_finalize;
 	obj_class->get_property = purple_saved_presence_get_property;
 	obj_class->set_property = purple_saved_presence_set_property;
@@ -426,6 +437,27 @@
 }
 
 /******************************************************************************
+ * Private API
+ *****************************************************************************/
+void
+purple_saved_presence_reset(PurpleSavedPresence *presence) {
+	GSettingsSchema *schema = NULL;
+	GStrv keys = NULL;
+
+	g_return_if_fail(PURPLE_IS_SAVED_PRESENCE(presence));
+
+	g_object_get(presence->settings, "settings-schema", &schema, NULL);
+
+	keys = g_settings_schema_list_keys(schema);
+	for(int i = 0; keys[i] != NULL; i++) {
+		g_settings_reset(presence->settings, keys[i]);
+	}
+	g_strfreev(keys);
+
+	g_clear_pointer(&schema, g_settings_schema_unref);
+}
+
+/******************************************************************************
  * Public API
  *****************************************************************************/
 GDateTime *

mercurial