pidgin/pidginaccountrow.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/

42365
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * source distribution.
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * (at your option) any later version.
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * GNU General Public License for more details.
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include <glib/gi18n-lib.h>
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 #include <purple.h>
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 #include "pidgin/pidginaccountrow.h"
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 struct _PidginAccountRow {
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 AdwComboRow parent;
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 GtkFilterListModel *filter;
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 };
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 enum {
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 PROP_0,
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 PROP_ACCOUNT,
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 PROP_FILTER,
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 N_PROPERTIES,
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 };
42584
687260353985 Make signal and property enums and initializers consistent
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
41 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
42365
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42
42575
580339aa47cc Make sure all of the final types in pidgin are defined as such
Gary Kramlich <grim@reaperworld.com>
parents: 42365
diff changeset
43 G_DEFINE_FINAL_TYPE(PidginAccountRow, pidgin_account_row, ADW_TYPE_COMBO_ROW)
42365
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 /******************************************************************************
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46 * Callbacks
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 *****************************************************************************/
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 static void
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 pidgin_account_row_changed_cb(G_GNUC_UNUSED GObject *obj,
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 G_GNUC_UNUSED GParamSpec *pspec,
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 gpointer data)
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 {
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 g_object_notify_by_pspec(G_OBJECT(data), properties[PROP_ACCOUNT]);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54 }
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56 /******************************************************************************
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 * GObject Implementation
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 *****************************************************************************/
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59 static void
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 pidgin_account_row_get_property(GObject *obj, guint param_id, GValue *value,
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 GParamSpec *pspec)
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 {
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63 PidginAccountRow *row = PIDGIN_ACCOUNT_ROW(obj);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 switch(param_id) {
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66 case PROP_ACCOUNT:
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 g_value_set_object(value, pidgin_account_row_get_account(row));
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 break;
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 case PROP_FILTER:
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 g_value_set_object(value, pidgin_account_row_get_filter(row));
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 break;
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 default:
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 break;
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 }
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 }
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 static void
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 pidgin_account_row_set_property(GObject *obj, guint param_id,
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 const GValue *value, GParamSpec *pspec)
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 {
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 PidginAccountRow *row = PIDGIN_ACCOUNT_ROW(obj);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 switch(param_id) {
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 case PROP_ACCOUNT:
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 pidgin_account_row_set_account(row, g_value_get_object(value));
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 break;
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 case PROP_FILTER:
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 pidgin_account_row_set_filter(row, g_value_get_object(value));
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 break;
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 default:
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 break;
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94 }
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 }
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 static void
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 pidgin_account_row_init(PidginAccountRow *row) {
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 GListModel *model = NULL;
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 gtk_widget_init_template(GTK_WIDGET(row));
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 model = purple_account_manager_get_default_as_model();
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104 gtk_filter_list_model_set_model(row->filter, model);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105 }
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107 static void
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 pidgin_account_row_class_init(PidginAccountRowClass *klass) {
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112 obj_class->get_property = pidgin_account_row_get_property;
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113 obj_class->set_property = pidgin_account_row_set_property;
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 /**
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116 * PidginAccountRow:account:
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 *
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
118 * The [class@Purple.Account] that is selected.
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119 *
42620
72178a341eb8 Remove minor versions from Since tags in Pidgin
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42584
diff changeset
120 * Since: 3.0
42365
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121 */
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122 properties[PROP_ACCOUNT] = g_param_spec_object(
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123 "account", "account",
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 "The account that is selected.",
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125 PURPLE_TYPE_ACCOUNT,
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128 /**
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129 * PidginAccountRow:filter:
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 *
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131 * The filter to use on the list of accounts.
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132 *
42620
72178a341eb8 Remove minor versions from Since tags in Pidgin
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42584
diff changeset
133 * Since: 3.0
42365
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134 */
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 properties[PROP_FILTER] = g_param_spec_object(
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136 "filter", "filter",
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137 "The filter to be applied on the list of accounts.",
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
138 GTK_TYPE_FILTER,
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
139 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 gtk_widget_class_set_template_from_resource(
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 widget_class,
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144 "/im/pidgin/Pidgin3/account-row.ui"
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
145 );
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147 gtk_widget_class_bind_template_child(widget_class, PidginAccountRow,
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
148 filter);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150 gtk_widget_class_bind_template_callback(widget_class,
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151 pidgin_account_row_changed_cb);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152 }
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 /******************************************************************************
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
155 * API
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156 *****************************************************************************/
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
157 GtkWidget *
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
158 pidgin_account_row_new(void) {
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
159 return g_object_new(PIDGIN_TYPE_ACCOUNT_ROW, NULL);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
160 }
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
161
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162 PurpleAccount *
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
163 pidgin_account_row_get_account(PidginAccountRow *row) {
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
164 g_return_val_if_fail(PIDGIN_IS_ACCOUNT_ROW(row), NULL);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
166 return adw_combo_row_get_selected_item(ADW_COMBO_ROW(row));
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
167 }
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
169 void
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170 pidgin_account_row_set_account(PidginAccountRow *row, PurpleAccount *account) {
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
171 GListModel *model = NULL;
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
172 guint n_items = 0;
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
174 g_return_if_fail(PIDGIN_IS_ACCOUNT_ROW(row));
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
175
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
176 model = adw_combo_row_get_model(ADW_COMBO_ROW(row));
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
177 g_return_if_fail(G_IS_LIST_MODEL(model));
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
178
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
179 n_items = g_list_model_get_n_items(model);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
180 for(guint position = 0; position < n_items; position++) {
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
181 PurpleAccount *account1 = g_list_model_get_item(model, position);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
182
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183 if(account1 == account) {
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
184 /* NOTE: Property notification occurs in 'changed' signal
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185 * callback.
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186 */
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187 adw_combo_row_set_selected(ADW_COMBO_ROW(row), position);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189 g_clear_object(&account1);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
190
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
191 return;
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
192 }
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
193
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
194 g_clear_object(&account1);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
195 }
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
196 }
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
197
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
198 GtkFilter *
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199 pidgin_account_row_get_filter(PidginAccountRow *row) {
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
200 g_return_val_if_fail(PIDGIN_IS_ACCOUNT_ROW(row), NULL);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
202 return gtk_filter_list_model_get_filter(row->filter);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
203 }
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
204
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205 void
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
206 pidgin_account_row_set_filter(PidginAccountRow *row, GtkFilter *filter) {
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
207 g_return_if_fail(PIDGIN_IS_ACCOUNT_ROW(row));
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
208
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
209 gtk_filter_list_model_set_filter(row->filter, filter);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
210 g_object_notify_by_pspec(G_OBJECT(row), properties[PROP_FILTER]);
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
211 }
45ce6d3f6386 Create PidginAccountRow which subclasses AdwRow
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
212

mercurial