pidgin/prefs/pidginconversationprefs.c

Wed, 01 Jan 2025 15:37:20 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Wed, 01 Jan 2025 15:37:20 -0600
changeset 43121
3d448c75d39a
parent 43013
26d30c0db9a5
permissions
-rw-r--r--

Added tag v2.90.1 for changeset a7fd7e06c486

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