pidgin/pidgin

Port state notify plugin to GSettings

20 months ago, Elliott Sales de Andrade
d57c56146156
Parents 9ccd10c82e07
Children 8f59b6acc817
Port state notify plugin to GSettings

Testing Done:
Compile and load only.

Reviewed at https://reviews.imfreedom.org/r/1742/
--- /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"?>
+<schemalist>
+ <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>
+ <description>
+ Notify when buddy goes away.
+ </description>
+ </key>
+
+ <key name="notify-idle" type="b">
+ <default>true</default>
+ <summary>Notify on idle</summary>
+ <description>
+ Notify when buddy goes idle.
+ </description>
+ </key>
+
+ <key name="notify-signon" type="b">
+ <default>true</default>
+ <summary>Notify on sign on/off</summary>
+ <description>
+ Notify when buddy signs on/off.
+ </description>
+ </key>
+ </schema>
+</schemalist>
--- 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 @@
name_prefix : '',
install : true, install_dir : PURPLE_PLUGINDIR)
+settings_schemas = [
+ '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))
+ {
return;
+ }
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);
}
static void
buddy_idle_changed_cb(PurpleBuddy *buddy, gboolean old_idle, gboolean idle,
void *data)
{
- 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")) {
if (idle && !old_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);
}
static void
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);
}
static void
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,