--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/plugins/statenotify/im.pidgin.Purple.plugin.StateNotify.gschema.xml Mon Sep 12 10:04:58 2022 -0500
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?> + <schema path="/plugins/state-notify/" id="im.pidgin.Purple.plugin.StateNotify"> + <key name="notify-away" type="b"> + <default>true</default> + <summary>Notify on away</summary> + Notify when buddy goes away. + <key name="notify-idle" type="b"> + <default>true</default> + <summary>Notify on idle</summary> + Notify when buddy goes idle. + <key name="notify-signon" type="b"> + <default>true</default> + <summary>Notify on sign on/off</summary> + Notify when buddy signs on/off. --- a/libpurple/plugins/statenotify/meson.build Mon Sep 12 10:03:45 2022 -0500
+++ b/libpurple/plugins/statenotify/meson.build Mon Sep 12 10:04:58 2022 -0500
@@ -4,4 +4,14 @@
install : true, install_dir : PURPLE_PLUGINDIR)
+ 'im.pidgin.Purple.plugin.StateNotify.gschema.xml', +install_data(settings_schemas, install_dir: schemas_dir) +gnome.post_install(glib_compile_schemas: true) +# Compile the schemas in the current directory; this is only useful for testing +gnome.compile_schemas(depend_files: files(settings_schemas)) devenv.append('PURPLE_PLUGIN_PATH', meson.current_build_dir())
--- a/libpurple/plugins/statenotify/statenotify.c Mon Sep 12 10:03:45 2022 -0500
+++ b/libpurple/plugins/statenotify/statenotify.c Mon Sep 12 10:04:58 2022 -0500
@@ -62,48 +62,72 @@
buddy_status_changed_cb(PurpleBuddy *buddy, PurpleStatus *old_status,
PurpleStatus *status, void *data)
+ GSettings *settings = NULL; gboolean available, old_available;
if (!purple_status_is_exclusive(status) ||
!purple_status_is_exclusive(old_status))
available = purple_status_is_available(status);
old_available = purple_status_is_available(old_status);
- if (purple_prefs_get_bool("/plugins/core/statenotify/notify_away")) {
- if (available && !old_available)
+ settings = g_settings_new_with_backend("im.pidgin.Purple.plugin.StateNotify", + purple_core_get_settings_backend()); + if(g_settings_get_boolean(settings, "notify-away")) { + if (available && !old_available) { write_status(buddy, _("%s is no longer away."));
- else if (!available && old_available)
+ } else if (!available && old_available) { write_status(buddy, _("%s has gone away."));
+ g_object_unref(settings); buddy_idle_changed_cb(PurpleBuddy *buddy, gboolean old_idle, gboolean idle,
- if (purple_prefs_get_bool("/plugins/core/statenotify/notify_idle")) {
+ GSettings *settings = NULL; + settings = g_settings_new_with_backend("im.pidgin.Purple.plugin.StateNotify", + purple_core_get_settings_backend()); + if(g_settings_get_boolean(settings, "notify-idle")) { write_status(buddy, _("%s has become idle."));
} else if (!idle && old_idle) {
write_status(buddy, _("%s is no longer idle."));
+ g_object_unref(settings); buddy_signon_cb(PurpleBuddy *buddy, void *data)
- if (purple_prefs_get_bool("/plugins/core/statenotify/notify_signon"))
+ GSettings *settings = NULL; + settings = g_settings_new_with_backend("im.pidgin.Purple.plugin.StateNotify", + purple_core_get_settings_backend()); + if(g_settings_get_boolean(settings, "notify-signon")) { write_status(buddy, _("%s has signed on."));
+ g_object_unref(settings); buddy_signoff_cb(PurpleBuddy *buddy, void *data)
- if (purple_prefs_get_bool("/plugins/core/statenotify/notify_signon"))
+ GSettings *settings = NULL; + settings = g_settings_new_with_backend("im.pidgin.Purple.plugin.StateNotify", + purple_core_get_settings_backend()); + if(g_settings_get_boolean(settings, "notify-signon")) { write_status(buddy, _("%s has signed off."));
+ g_object_unref(settings); static PurplePluginPrefFrame *
@@ -159,11 +183,6 @@
void *blist_handle = purple_blist_get_handle();
- purple_prefs_add_none("/plugins/core/statenotify");
- purple_prefs_add_bool("/plugins/core/statenotify/notify_away", TRUE);
- purple_prefs_add_bool("/plugins/core/statenotify/notify_idle", TRUE);
- purple_prefs_add_bool("/plugins/core/statenotify/notify_signon", TRUE);
purple_signal_connect(blist_handle, "buddy-status-changed", plugin,
G_CALLBACK(buddy_status_changed_cb), NULL);
purple_signal_connect(blist_handle, "buddy-idle-changed", plugin,