pidgin/prefs/pidginprivacyprefs.c

changeset 43251
8bd7eee2f178
child 43253
0cc00d7d6215
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/prefs/pidginprivacyprefs.c	Tue May 13 14:29:06 2025 -0500
@@ -0,0 +1,75 @@
+/*
+ * Pidgin - Internet Messenger
+ * Copyright (C) Pidgin Developers <devel@pidgin.im>
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include <glib/gi18n-lib.h>
+
+#include <purple.h>
+
+#include <adwaita.h>
+
+#include "pidginprivacyprefs.h"
+#include "pidgincore.h"
+
+struct _PidginPrivacyPrefs {
+	AdwPreferencesPage parent;
+
+	GtkWidget *send_typing_notifications;
+};
+
+G_DEFINE_FINAL_TYPE(PidginPrivacyPrefs, pidgin_privacy_prefs,
+                    ADW_TYPE_PREFERENCES_PAGE)
+
+/******************************************************************************
+ * GObject Implementation
+ *****************************************************************************/
+static void
+pidgin_privacy_prefs_class_init(PidginPrivacyPrefsClass *klass) {
+	GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
+
+	gtk_widget_class_set_template_from_resource(widget_class,
+	                                            "/im/pidgin/Pidgin3/Prefs/privacy.ui");
+
+	gtk_widget_class_bind_template_child(widget_class, PidginPrivacyPrefs,
+	                                     send_typing_notifications);
+}
+
+static void
+pidgin_privacy_prefs_init(PidginPrivacyPrefs *prefs) {
+	GSettings *settings = NULL;
+
+	gtk_widget_init_template(GTK_WIDGET(prefs));
+
+	settings = g_settings_new_with_backend("im.pidgin.Pidgin3.Privacy",
+	                                       purple_core_get_settings_backend());
+	g_settings_bind(settings, "send-typing-notifications",
+	                prefs->send_typing_notifications, "active",
+	                G_SETTINGS_BIND_DEFAULT);
+	g_clear_object(&settings);
+}
+
+/******************************************************************************
+ * API
+ *****************************************************************************/
+GtkWidget *
+pidgin_privacy_prefs_new(void) {
+	return g_object_new(PIDGIN_TYPE_PRIVACY_PREFS, NULL);
+}

mercurial