pidgin/pidginbadges.c

Tue, 13 May 2025 14:29:06 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Tue, 13 May 2025 14:29:06 -0500
changeset 43251
8bd7eee2f178
parent 43083
54ca24fedfd9
permissions
-rw-r--r--

Create a Privacy preference page with the send typing notification preference

This only controls whether or not the conversation window will send typing
notifications, plugins can still do this on their own.

Testing Done:
Used ngrep to verify if the irc typing messages were being sent or not. Also manually modified the settings file and verified the ui update and vice versa.

Bugs closed: PIDGIN-17450

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

43083
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * source distribution.
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * (at your option) any later version.
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * GNU General Public License for more details.
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22 #include <glib/gi18n-lib.h>
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24 #include <gtk/gtk.h>
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 #include "pidginbadges.h"
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 struct _PidginBadges {
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 AdwBin parent;
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 PurpleBadges *badges;
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 GtkSliceListModel *model;
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 };
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 enum {
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 PROP_0,
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 PROP_BADGES,
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 N_PROPERTIES,
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 };
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 /******************************************************************************
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 * GObject implementation
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 *****************************************************************************/
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46 G_DEFINE_FINAL_TYPE(PidginBadges, pidgin_badges, ADW_TYPE_BIN)
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 static void
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 pidgin_badges_get_property(GObject *object, guint prop_id, GValue *value,
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 GParamSpec *pspec)
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 {
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 PidginBadges *badges = PIDGIN_BADGES(object);
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54 switch (prop_id) {
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 case PROP_BADGES:
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56 g_value_set_object(value, pidgin_badges_get_badges(badges));
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 break;
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 default:
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 break;
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 }
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 }
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 static void
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 pidgin_badges_set_property(GObject *object, guint prop_id, const GValue *value,
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66 GParamSpec *pspec)
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 {
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 PidginBadges *badges = PIDGIN_BADGES(object);
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 switch (prop_id) {
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 case PROP_BADGES:
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 pidgin_badges_set_badges(badges, g_value_get_object(value));
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 break;
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 default:
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 break;
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 }
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 }
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 static void
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 pidgin_badges_finalize(GObject *obj) {
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 PidginBadges *badges = PIDGIN_BADGES(obj);
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 g_clear_object(&badges->badges);
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 G_OBJECT_CLASS(pidgin_badges_parent_class)->finalize(obj);
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 }
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 static void
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 pidgin_badges_class_init(PidginBadgesClass *klass) {
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94 /* Properties */
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 obj_class->get_property = pidgin_badges_get_property;
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 obj_class->set_property = pidgin_badges_set_property;
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 obj_class->finalize = pidgin_badges_finalize;
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 /**
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 * PidginBadges:badges:
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 *
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102 * The badges that are being displayed.
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 *
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104 * Since: 3.0
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105 */
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 properties[PROP_BADGES] = g_param_spec_object(
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107 "badges", NULL, NULL,
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 PURPLE_TYPE_BADGES,
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113 /* Widget template */
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 gtk_widget_class_set_template_from_resource(widget_class,
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 "/im/pidgin/Pidgin3/badges.ui");
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 gtk_widget_class_bind_template_child(widget_class, PidginBadges,
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
118 model);
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119 }
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
120
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121 static void
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122 pidgin_badges_init(PidginBadges *badges) {
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123 gtk_widget_init_template(GTK_WIDGET(badges));
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 }
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126 /******************************************************************************
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127 * Public API
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128 *****************************************************************************/
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129 GtkWidget *
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 pidgin_badges_new(PurpleBadges *badges) {
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131 return g_object_new(PIDGIN_TYPE_BADGES,
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132 "badges", badges,
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 NULL);
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134 }
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136 PurpleBadges *
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137 pidgin_badges_get_badges(PidginBadges *badges) {
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
138 g_return_val_if_fail(PIDGIN_IS_BADGES(badges), NULL);
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
139
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140 return badges->badges;
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141 }
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 void
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144 pidgin_badges_set_badges(PidginBadges *pidgin_badges,
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
145 PurpleBadges *purple_badges)
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146 {
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147 g_return_if_fail(PIDGIN_IS_BADGES(pidgin_badges));
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
148
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149 if(g_set_object(&pidgin_badges->badges, purple_badges)) {
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150 gtk_slice_list_model_set_model(pidgin_badges->model,
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151 G_LIST_MODEL(purple_badges));
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153 g_object_notify_by_pspec(G_OBJECT(pidgin_badges),
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 properties[PROP_BADGES]);
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
155 }
54ca24fedfd9 Implement the Pidgin.Badges widget and use it in conversation member list
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156 }

mercurial