pidgin/prefs/pidginconversationprefs.c

Sun, 03 Nov 2024 00:05:44 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Sun, 03 Nov 2024 00:05:44 -0500
changeset 43045
308e8d0ce68c
parent 43013
26d30c0db9a5
permissions
-rw-r--r--

remove purple3-url-handler.desktop.in.in

The application that did the launching was removed long ago. Also this should
be implemented by the user interfaces and they might provide separate files to
groups schemas as well.

Testing Done:
Called in the turtles.

Reviewed at https://reviews.imfreedom.org/r/3640/

41371
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
1 /*
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
4 *
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
7 * source distribution.
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
8 *
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
12 * (at your option) any later version.
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
13 *
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
17 * GNU General Public License for more details.
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
18 *
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
21 */
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
22
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
23 #include <glib/gi18n-lib.h>
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
24
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
25 #include <purple.h>
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
26
41551
865be7af93d6 Convert conversation prefs to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41371
diff changeset
27 #include <adwaita.h>
41371
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
28
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
29 #include "pidginconversationprefs.h"
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
30 #include "pidgincore.h"
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
31
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
32 struct _PidginConversationPrefs {
41551
865be7af93d6 Convert conversation prefs to GTK4
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41371
diff changeset
33 AdwPreferencesPage parent;
41371
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
34
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
35 GtkWidget *show_incoming_formatting;
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
36 struct {
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
37 GtkWidget *send_typing;
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
38 } im;
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
39 struct {
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
40 GtkWidget *blink_im;
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
41 } win32;
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
42 GtkWidget *minimum_entry_lines;
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
43 };
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
44
42575
580339aa47cc Make sure all of the final types in pidgin are defined as such
Gary Kramlich <grim@reaperworld.com>
parents: 42202
diff changeset
45 G_DEFINE_FINAL_TYPE(PidginConversationPrefs, pidgin_conversation_prefs,
580339aa47cc Make sure all of the final types in pidgin are defined as such
Gary Kramlich <grim@reaperworld.com>
parents: 42202
diff changeset
46 ADW_TYPE_PREFERENCES_PAGE)
41371
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
47
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
48 /******************************************************************************
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
49 * GObject Implementation
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
50 *****************************************************************************/
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
51 static void
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
52 pidgin_conversation_prefs_class_init(PidginConversationPrefsClass *klass)
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
53 {
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
54 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
55
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
56 gtk_widget_class_set_template_from_resource(
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
57 widget_class,
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
58 "/im/pidgin/Pidgin3/Prefs/conversation.ui"
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
59 );
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
60
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
61 gtk_widget_class_bind_template_child(
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
62 widget_class, PidginConversationPrefs,
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
63 show_incoming_formatting);
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
64 gtk_widget_class_bind_template_child(
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
65 widget_class, PidginConversationPrefs,
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
66 im.send_typing);
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
67 gtk_widget_class_bind_template_child(
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
68 widget_class, PidginConversationPrefs,
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
69 win32.blink_im);
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
70 gtk_widget_class_bind_template_child(
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
71 widget_class, PidginConversationPrefs,
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
72 minimum_entry_lines);
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
73 }
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
74
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
75 static void
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
76 pidgin_conversation_prefs_init(PidginConversationPrefs *prefs)
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
77 {
43000
abe9f4dad7fd Port conversation prefs to GSettings partially
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
78 GSettings *settings = NULL;
abe9f4dad7fd Port conversation prefs to GSettings partially
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
79
41371
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
80 gtk_widget_init_template(GTK_WIDGET(prefs));
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
81
43000
abe9f4dad7fd Port conversation prefs to GSettings partially
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
82 settings = g_settings_new_with_backend("im.pidgin.Purple.Conversations",
abe9f4dad7fd Port conversation prefs to GSettings partially
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
83 purple_core_get_settings_backend());
abe9f4dad7fd Port conversation prefs to GSettings partially
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
84 g_settings_bind(settings, "send-typing-notifications",
abe9f4dad7fd Port conversation prefs to GSettings partially
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
85 prefs->im.send_typing, "active", G_SETTINGS_BIND_DEFAULT);
abe9f4dad7fd Port conversation prefs to GSettings partially
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
86 g_clear_object(&settings);
abe9f4dad7fd Port conversation prefs to GSettings partially
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
87
abe9f4dad7fd Port conversation prefs to GSettings partially
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
88 #if 0
abe9f4dad7fd Port conversation prefs to GSettings partially
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
89 /* TODO: Decide on whether to keep these preferences, and then port those
abe9f4dad7fd Port conversation prefs to GSettings partially
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
90 * to GSettings. */
41624
673856331454 Move conversation preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41551
diff changeset
91 pidgin_prefs_bind_switch(PIDGIN_PREFS_ROOT "/conversations/show_incoming_formatting",
673856331454 Move conversation preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41551
diff changeset
92 prefs->show_incoming_formatting);
41371
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
93
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
94 #ifdef _WIN32
41624
673856331454 Move conversation preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41551
diff changeset
95 pidgin_prefs_bind_switch(PIDGIN_PREFS_ROOT "/win32/blink_im",
673856331454 Move conversation preferences to Adwaita preference widgets
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41551
diff changeset
96 prefs->win32.blink_im);
41371
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
97 #else
43011
ce3144e2bc33 Port prefs to AdwSwitchRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 43000
diff changeset
98 gtk_widget_set_visible(prefs->win32.blink_im, FALSE);
41371
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
99 #endif
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
100
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
101 pidgin_prefs_bind_spin_button(
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
102 PIDGIN_PREFS_ROOT "/conversations/minimum_entry_lines",
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
103 prefs->minimum_entry_lines);
43000
abe9f4dad7fd Port conversation prefs to GSettings partially
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42592
diff changeset
104 #endif
41371
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
105 }
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
106
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
107 /******************************************************************************
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
108 * API
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
109 *****************************************************************************/
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
110 GtkWidget *
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
111 pidgin_conversation_prefs_new(void) {
42592
6b65c0e4ba15 Remove unnecessary casts for GObject methods
Gary Kramlich <grim@reaperworld.com>
parents: 42575
diff changeset
112 return g_object_new(PIDGIN_TYPE_CONVERSATION_PREFS, NULL);
41371
fe57d9ddc7ce Split conversation/interface prefs into a separate widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
113 }

mercurial