pidgin/pidginprotocolchooser.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 42620
72178a341eb8
child 43072
a59a119b74f5
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/

40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * source distribution.
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * (at your option) any later version.
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * GNU General Public License for more details.
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * along with this program; if not, write to the Free Software
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22 */
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24 #include "pidginprotocolchooser.h"
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25
41645
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
26 enum {
42584
687260353985 Make signal and property enums and initializers consistent
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
27 PROP_0,
41645
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
28 PROP_PROTOCOL,
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
29 N_PROPERTIES,
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
30 };
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
31 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
32
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 /******************************************************************************
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 * Structs
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 *****************************************************************************/
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 struct _PidginProtocolChooser {
41691
83849603277b Convert PidginProtocolChooser to an AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41649
diff changeset
37 AdwComboRow parent;
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38
41649
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
39 GtkWidget *sort;
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 };
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 /******************************************************************************
40787
8a5a20a49e9b Fix some issues with the protocol chooser and clean up its usage in GtkAccount
Gary Kramlich <grim@reaperworld.com>
parents: 40741
diff changeset
43 * Callbacks
8a5a20a49e9b Fix some issues with the protocol chooser and clean up its usage in GtkAccount
Gary Kramlich <grim@reaperworld.com>
parents: 40741
diff changeset
44 *****************************************************************************/
8a5a20a49e9b Fix some issues with the protocol chooser and clean up its usage in GtkAccount
Gary Kramlich <grim@reaperworld.com>
parents: 40741
diff changeset
45 static void
41649
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
46 dropdown_changed_cb(G_GNUC_UNUSED GObject *obj,
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
47 G_GNUC_UNUSED GParamSpec *pspec,
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
48 gpointer data)
40787
8a5a20a49e9b Fix some issues with the protocol chooser and clean up its usage in GtkAccount
Gary Kramlich <grim@reaperworld.com>
parents: 40741
diff changeset
49 {
41645
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
50 PidginProtocolChooser *chooser = PIDGIN_PROTOCOL_CHOOSER(data);
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
51
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
52 g_object_notify_by_pspec(G_OBJECT(chooser), properties[PROP_PROTOCOL]);
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
53 }
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
54
40787
8a5a20a49e9b Fix some issues with the protocol chooser and clean up its usage in GtkAccount
Gary Kramlich <grim@reaperworld.com>
parents: 40741
diff changeset
55 /******************************************************************************
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56 * GObject Implementation
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 *****************************************************************************/
42575
580339aa47cc Make sure all of the final types in pidgin are defined as such
Gary Kramlich <grim@reaperworld.com>
parents: 42179
diff changeset
58 G_DEFINE_FINAL_TYPE(PidginProtocolChooser, pidgin_protocol_chooser,
580339aa47cc Make sure all of the final types in pidgin are defined as such
Gary Kramlich <grim@reaperworld.com>
parents: 42179
diff changeset
59 ADW_TYPE_COMBO_ROW)
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 static void
41645
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
62 pidgin_protocol_chooser_get_property(GObject *obj, guint prop_id,
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
63 GValue *value, GParamSpec *pspec)
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
64 {
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
65 PidginProtocolChooser *chooser = PIDGIN_PROTOCOL_CHOOSER(obj);
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
66
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
67 switch(prop_id) {
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
68 case PROP_PROTOCOL:
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
69 g_value_set_object(value,
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
70 pidgin_protocol_chooser_get_protocol(chooser));
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
71 break;
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
72 default:
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
73 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec);
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
74 break;
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
75 }
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
76 }
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
77
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
78 static void
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
79 pidgin_protocol_chooser_set_property(GObject *obj, guint prop_id,
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
80 const GValue *value, GParamSpec *pspec)
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
81 {
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
82 PidginProtocolChooser *chooser = PIDGIN_PROTOCOL_CHOOSER(obj);
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
83
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
84 switch(prop_id) {
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
85 case PROP_PROTOCOL:
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
86 pidgin_protocol_chooser_set_protocol(chooser,
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
87 g_value_get_object(value));
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
88 break;
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
89 default:
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
90 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, prop_id, pspec);
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
91 break;
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
92 }
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
93 }
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
94
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
95 static void
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 pidgin_protocol_chooser_class_init(PidginProtocolChooserClass *klass)
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 {
41645
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
98 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100
41645
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
101 obj_class->get_property = pidgin_protocol_chooser_get_property;
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
102 obj_class->set_property = pidgin_protocol_chooser_set_property;
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
103
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
104 /**
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
105 * PidginProtocolChooser:protocol:
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
106 *
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
107 * The protocol which is currently selected.
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
108 *
42620
72178a341eb8 Remove minor versions from Since tags in Pidgin
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42584
diff changeset
109 * Since: 3.0
41645
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
110 **/
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
111 properties[PROP_PROTOCOL] = g_param_spec_object(
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
112 "protocol",
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
113 "protocol",
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
114 "The PurpleProtocol which is currently selected",
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
115 PURPLE_TYPE_PROTOCOL,
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
116 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
117
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
118 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
119
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
120 gtk_widget_class_set_template_from_resource(widget_class,
41030
ec8b76f3bf0a Fix the resource path so we can use the automatic stuff that GtkApplication supports
Gary Kramlich <grim@reaperworld.com>
parents: 40787
diff changeset
121 "/im/pidgin/Pidgin3/Protocols/chooser.ui");
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123 gtk_widget_class_bind_template_child(widget_class, PidginProtocolChooser,
41649
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
124 sort);
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
125
41645
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
126 gtk_widget_class_bind_template_callback(widget_class, dropdown_changed_cb);
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127 }
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129 static void
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 pidgin_protocol_chooser_init(PidginProtocolChooser *chooser) {
41649
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
131 PurpleProtocolManager *manager = NULL;
40787
8a5a20a49e9b Fix some issues with the protocol chooser and clean up its usage in GtkAccount
Gary Kramlich <grim@reaperworld.com>
parents: 40741
diff changeset
132
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 gtk_widget_init_template(GTK_WIDGET(chooser));
40787
8a5a20a49e9b Fix some issues with the protocol chooser and clean up its usage in GtkAccount
Gary Kramlich <grim@reaperworld.com>
parents: 40741
diff changeset
134
41649
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
135 manager = purple_protocol_manager_get_default();
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
136 gtk_sort_list_model_set_model(GTK_SORT_LIST_MODEL(chooser->sort),
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
137 G_LIST_MODEL(manager));
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
138 }
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
139
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140 /******************************************************************************
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141 * Public API
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 *****************************************************************************/
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 GtkWidget *
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144 pidgin_protocol_chooser_new(void) {
41187
3d60432b8a05 Clean up some stuff in PidginProtocolChooser.
Gary Kramlich <grim@reaperworld.com>
parents: 41030
diff changeset
145 return g_object_new(PIDGIN_TYPE_PROTOCOL_CHOOSER, NULL);
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146 }
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147
40299
e2f8638bac5a Clean up set_account_protocol_cb and change some accessors for PidginProtocolChooser
Gary Kramlich <grim@reaperworld.com>
parents: 40297
diff changeset
148 PurpleProtocol *
41645
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
149 pidgin_protocol_chooser_get_protocol(PidginProtocolChooser *chooser) {
40299
e2f8638bac5a Clean up set_account_protocol_cb and change some accessors for PidginProtocolChooser
Gary Kramlich <grim@reaperworld.com>
parents: 40297
diff changeset
150 PurpleProtocol *protocol = NULL;
e2f8638bac5a Clean up set_account_protocol_cb and change some accessors for PidginProtocolChooser
Gary Kramlich <grim@reaperworld.com>
parents: 40297
diff changeset
151
e2f8638bac5a Clean up set_account_protocol_cb and change some accessors for PidginProtocolChooser
Gary Kramlich <grim@reaperworld.com>
parents: 40297
diff changeset
152 g_return_val_if_fail(PIDGIN_IS_PROTOCOL_CHOOSER(chooser), NULL);
e2f8638bac5a Clean up set_account_protocol_cb and change some accessors for PidginProtocolChooser
Gary Kramlich <grim@reaperworld.com>
parents: 40297
diff changeset
153
41691
83849603277b Convert PidginProtocolChooser to an AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41649
diff changeset
154 protocol = adw_combo_row_get_selected_item(ADW_COMBO_ROW(chooser));
40299
e2f8638bac5a Clean up set_account_protocol_cb and change some accessors for PidginProtocolChooser
Gary Kramlich <grim@reaperworld.com>
parents: 40297
diff changeset
155
e2f8638bac5a Clean up set_account_protocol_cb and change some accessors for PidginProtocolChooser
Gary Kramlich <grim@reaperworld.com>
parents: 40297
diff changeset
156 return protocol;
e2f8638bac5a Clean up set_account_protocol_cb and change some accessors for PidginProtocolChooser
Gary Kramlich <grim@reaperworld.com>
parents: 40297
diff changeset
157 }
e2f8638bac5a Clean up set_account_protocol_cb and change some accessors for PidginProtocolChooser
Gary Kramlich <grim@reaperworld.com>
parents: 40297
diff changeset
158
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
159 void
41645
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
160 pidgin_protocol_chooser_set_protocol(PidginProtocolChooser *chooser,
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
161 PurpleProtocol *protocol)
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162 {
41649
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
163 guint position = 0;
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
164
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 g_return_if_fail(PIDGIN_IS_PROTOCOL_CHOOSER(chooser));
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
166
41645
fb8bfbd95195 Add a PidginProtocolChooser::protocol property
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41187
diff changeset
167 if(protocol != NULL) {
41691
83849603277b Convert PidginProtocolChooser to an AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41649
diff changeset
168 GListModel *model = adw_combo_row_get_model(ADW_COMBO_ROW(chooser));
41649
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
169 guint count = g_list_model_get_n_items(model);
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
170
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
171 for(guint i = 0; i < count; i++) {
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
172 PurpleProtocol *this_protocol = NULL;
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
173
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
174 this_protocol = g_list_model_get_item(model, i);
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
175
41649
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
176 if(this_protocol == protocol) {
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
177 position = i;
42179
b8bb444799a4 Fix leaks from g_list_model_get_item
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41691
diff changeset
178 g_object_unref(this_protocol);
41649
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
179 break;
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
180 }
42179
b8bb444799a4 Fix leaks from g_list_model_get_item
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41691
diff changeset
181 g_object_unref(this_protocol);
41649
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
182 }
41187
3d60432b8a05 Clean up some stuff in PidginProtocolChooser.
Gary Kramlich <grim@reaperworld.com>
parents: 41030
diff changeset
183 }
41649
35733be03440 Convert the protocol chooser to a GtkDropDown
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41645
diff changeset
184
41691
83849603277b Convert PidginProtocolChooser to an AdwComboRow
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41649
diff changeset
185 adw_combo_row_set_selected(ADW_COMBO_ROW(chooser), position);
40297
082c07053a79 Add the new PidginProtocolChooser and implement it in account dialog
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186 }

mercurial