libpurple/purplebadge.c

Sat, 09 Aug 2025 17:37:27 +0800

author
Gong Zhile <gongzl@stu.hebust.edu.cn>
date
Sat, 09 Aug 2025 17:37:27 +0800
branch
bird-header-fix
changeset 43304
2599d35e9750
parent 42915
c6ca43acffbb
permissions
-rw-r--r--

Fix the birb header path

The birb header referred would only work with birb provided by wrap casuing
build to fail because of system-installed birb dependency. The commit points
it to the correct path <birb.h>.

See: https://keep.imfreedom.org/birb/birb/file/5bf00c7d7f80/birb/meson.build#l77

42915
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Purple - Internet Messaging Library
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * Purple is the legal property of its developers, whose names are too numerous
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * source distribution.
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * This library is free software; you can redistribute it and/or modify it
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * under the terms of the GNU General Public License as published by the Free
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * Software Foundation; either version 2 of the License, or (at your option)
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * any later version.
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * This library is distributed in the hope that it will be useful, but WITHOUT
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * more details.
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License along with
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * this library; if not, see <https://www.gnu.org/licenses/>.
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include "purplebadge.h"
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 #include "util.h"
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 struct _PurpleBadge {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 GObject parent;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 char *id;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 int priority;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 char *icon_name;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 char *mnemonic;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 char *tooltip_text;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 char *description;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 char *link_text;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 char *link_uri;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 };
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 enum {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 PROP_0,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 PROP_ID,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 PROP_PRIORITY,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 PROP_ICON_NAME,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46 PROP_MNEMONIC,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 PROP_TOOLTIP_TEXT,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 PROP_DESCRIPTION,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 PROP_LINK_TEXT,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 PROP_LINK_URI,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 N_PROPERTIES,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 };
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 /******************************************************************************
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56 * Helpers
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 *****************************************************************************/
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 static void
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59 purple_badge_set_id(PurpleBadge *badge, const char *id) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 g_return_if_fail(PURPLE_IS_BADGE(badge));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 if(g_set_str(&badge->id, id)) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63 g_object_notify_by_pspec(G_OBJECT(badge), properties[PROP_ID]);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 static void
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 purple_badge_set_priority(PurpleBadge *badge, int priority) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 g_return_if_fail(PURPLE_IS_BADGE(badge));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 if(badge->priority != priority) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 badge->priority = priority;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 g_object_notify_by_pspec(G_OBJECT(badge), properties[PROP_PRIORITY]);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 static void
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 purple_badge_set_icon_name(PurpleBadge *badge, const char *icon_name) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 g_return_if_fail(PURPLE_IS_BADGE(badge));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 if(g_set_str(&badge->icon_name, icon_name)) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83 g_object_notify_by_pspec(G_OBJECT(badge), properties[PROP_ICON_NAME]);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 static void
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 purple_badge_set_mnemonic(PurpleBadge *badge, const char *mnemonic) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 g_return_if_fail(PURPLE_IS_BADGE(badge));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 if(g_set_str(&badge->mnemonic, mnemonic)) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 g_object_notify_by_pspec(G_OBJECT(badge), properties[PROP_MNEMONIC]);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 /******************************************************************************
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 * GObject Implementation
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 *****************************************************************************/
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 G_DEFINE_FINAL_TYPE(PurpleBadge, purple_badge,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 G_TYPE_OBJECT)
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102 static void
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 purple_badge_get_property(GObject *obj, guint param_id, GValue *value,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104 GParamSpec *pspec)
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105 {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 PurpleBadge *badge = PURPLE_BADGE(obj);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 switch(param_id) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 case PROP_ID:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 g_value_set_string(value, purple_badge_get_id(badge));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112 case PROP_PRIORITY:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113 g_value_set_int(value, purple_badge_get_priority(badge));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 case PROP_ICON_NAME:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116 g_value_set_string(value, purple_badge_get_icon_name(badge));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
118 case PROP_MNEMONIC:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119 g_value_set_string(value, purple_badge_get_mnemonic(badge));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
120 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121 case PROP_TOOLTIP_TEXT:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122 g_value_set_string(value, purple_badge_get_tooltip_text(badge));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 case PROP_DESCRIPTION:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125 g_value_set_string(value, purple_badge_get_description(badge));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127 case PROP_LINK_TEXT:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128 g_value_set_string(value, purple_badge_get_link_text(badge));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 case PROP_LINK_URI:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131 g_value_set_string(value, purple_badge_get_link_uri(badge));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 default:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
138
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
139 static void
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140 purple_badge_set_property(GObject *obj, guint param_id, const GValue *value,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141 GParamSpec *pspec)
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 PurpleBadge *badge = PURPLE_BADGE(obj);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
145 switch(param_id) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146 case PROP_ID:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147 purple_badge_set_id(badge, g_value_get_string(value));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
148 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149 case PROP_PRIORITY:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150 purple_badge_set_priority(badge, g_value_get_int(value));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152 case PROP_ICON_NAME:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153 purple_badge_set_icon_name(badge, g_value_get_string(value));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
155 case PROP_MNEMONIC:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156 purple_badge_set_mnemonic(badge, g_value_get_string(value));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
157 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
158 case PROP_TOOLTIP_TEXT:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
159 purple_badge_set_tooltip_text(badge, g_value_get_string(value));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
160 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
161 case PROP_DESCRIPTION:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162 purple_badge_set_description(badge, g_value_get_string(value));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
163 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
164 case PROP_LINK_TEXT:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 purple_badge_set_link_text(badge, g_value_get_string(value));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
166 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
167 case PROP_LINK_URI:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168 purple_badge_set_link_uri(badge, g_value_get_string(value));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
169 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170 default:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
171 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
172 break;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
174 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
175
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
176 static void
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
177 purple_badge_finalize(GObject *obj) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
178 PurpleBadge *badge = PURPLE_BADGE(obj);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
179
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
180 g_clear_pointer(&badge->id, g_free);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
181 g_clear_pointer(&badge->icon_name, g_free);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
182 g_clear_pointer(&badge->mnemonic, g_free);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183 g_clear_pointer(&badge->tooltip_text, g_free);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
184 g_clear_pointer(&badge->description, g_free);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185 g_clear_pointer(&badge->link_text, g_free);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186 g_clear_pointer(&badge->link_uri, g_free);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188 G_OBJECT_CLASS(purple_badge_parent_class)->finalize(obj);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
190
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
191 static void
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
192 purple_badge_init(G_GNUC_UNUSED PurpleBadge *badge) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
193 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
194
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
195 static void
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
196 purple_badge_class_init(PurpleBadgeClass *klass)
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
197 {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
198 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
200 obj_class->get_property = purple_badge_get_property;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201 obj_class->set_property = purple_badge_set_property;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
202 obj_class->finalize = purple_badge_finalize;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
203
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
204 /**
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205 * PurpleBadge:id:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
206 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
207 * The id for this badge.
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
208 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
209 * This should be name spaced to avoid collisions. For example, the IRCv3
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
210 * protocol would use ircv3-prefix-operator for operators.
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
211 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
212 * Since: 3.0
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
213 */
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
214 properties[PROP_ID] = g_param_spec_string(
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
215 "id", NULL, NULL,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
216 NULL,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
217 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
218
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
219 /**
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
220 * PurpleBadge:priority:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
221 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
222 * The priority of this badge.
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
223 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
224 * Badges with higher priorities will be sorted first.
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
225 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
226 * Since: 3.0
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
227 */
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
228 properties[PROP_PRIORITY] = g_param_spec_int(
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
229 "priority", NULL, NULL,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
230 G_MININT32, G_MAXINT32, 0,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
231 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
232
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
233 /**
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
234 * PurpleBadge:icon-name:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
235 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
236 * The name of the icon for the badge.
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
237 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
238 * Since: 3.0
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
239 */
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
240 properties[PROP_ICON_NAME] = g_param_spec_string(
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
241 "icon-name", NULL, NULL,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
242 NULL,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
243 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
244
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
245 /**
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
246 * PurpleBadge:mnemonic:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
247 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
248 * The mnemonic for the badge.
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
249 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
250 * The mnemonic is a fallback in case that the icon can not be found or can
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
251 * be used by text interfaces.
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
252 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
253 * Since: 3.0
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
254 */
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
255 properties[PROP_MNEMONIC] = g_param_spec_string(
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
256 "mnemonic", NULL, NULL,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
257 NULL,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
258 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
259
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
260 /**
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
261 * PurpleBadge:tooltip-text:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
262 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
263 * Text to be displayed in the tooltip for this badge.
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
264 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
265 * Since: 3.0
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
266 */
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
267 properties[PROP_TOOLTIP_TEXT] = g_param_spec_string(
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
268 "tooltip-text", NULL, NULL,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
269 NULL,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
270 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
271
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
272 /**
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
273 * PurpleBadge:description:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
274 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
275 * The description of the badge.
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
276 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
277 * This may be shown as part of the tooltip to describe to the end user
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
278 * what this badge is for.
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
279 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
280 * Since: 3.0
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
281 */
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
282 properties[PROP_DESCRIPTION] = g_param_spec_string(
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
283 "description", NULL, NULL,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
284 NULL,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
285 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
286
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
287 /**
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
288 * PurpleBadge:link-text:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
289 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
290 * The text to display for the link of the badge.
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
291 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
292 * Since: 3.0
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
293 */
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
294 properties[PROP_LINK_TEXT] = g_param_spec_string(
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
295 "link-text", NULL, NULL,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
296 NULL,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
297 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
298
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
299 /**
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
300 * PurpleBadge:link-uri:
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
301 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
302 * A URI for the badge that could link to a page describing more about it.
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
303 *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
304 * Since: 3.0
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
305 */
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
306 properties[PROP_LINK_URI] = g_param_spec_string(
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
307 "link-uri", NULL, NULL,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
308 NULL,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
309 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
310
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
311 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
312 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
313
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
314 /******************************************************************************
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
315 * Public API
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
316 *****************************************************************************/
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
317 PurpleBadge *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
318 purple_badge_new(const char *id, int priority, const char *icon_name,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
319 const char *mnemonic)
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
320 {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
321 g_return_val_if_fail(!purple_strempty(id), NULL);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
322 g_return_val_if_fail(!purple_strempty(icon_name), NULL);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
323 g_return_val_if_fail(!purple_strempty(mnemonic), NULL);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
324
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
325 return g_object_new(
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
326 PURPLE_TYPE_BADGE,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
327 "id", id,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
328 "priority", priority,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
329 "icon-name", icon_name,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
330 "mnemonic", mnemonic,
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
331 NULL);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
332 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
333
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
334 const char *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
335 purple_badge_get_id(PurpleBadge *badge) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
336 g_return_val_if_fail(PURPLE_IS_BADGE(badge), NULL);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
337
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
338 return badge->id;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
339 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
340
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
341 int
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
342 purple_badge_get_priority(PurpleBadge *badge) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
343 g_return_val_if_fail(PURPLE_IS_BADGE(badge), 0);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
344
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
345 return badge->priority;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
346 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
347
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
348 const char *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
349 purple_badge_get_icon_name(PurpleBadge *badge) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
350 g_return_val_if_fail(PURPLE_IS_BADGE(badge), NULL);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
351
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
352 return badge->icon_name;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
353 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
354
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
355 const char *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
356 purple_badge_get_mnemonic(PurpleBadge *badge) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
357 g_return_val_if_fail(PURPLE_IS_BADGE(badge), NULL);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
358
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
359 return badge->mnemonic;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
360 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
361
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
362 const char *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
363 purple_badge_get_tooltip_text(PurpleBadge *badge) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
364 g_return_val_if_fail(PURPLE_IS_BADGE(badge), NULL);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
365
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
366 return badge->tooltip_text;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
367 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
368
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
369 void
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
370 purple_badge_set_tooltip_text(PurpleBadge *badge, const char *tooltip_text) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
371 g_return_if_fail(PURPLE_IS_BADGE(badge));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
372
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
373 if(g_set_str(&badge->tooltip_text, tooltip_text)) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
374 g_object_notify_by_pspec(G_OBJECT(badge),
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
375 properties[PROP_TOOLTIP_TEXT]);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
376 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
377 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
378
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
379 const char *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
380 purple_badge_get_description(PurpleBadge *badge) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
381 g_return_val_if_fail(PURPLE_IS_BADGE(badge), NULL);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
382
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
383 return badge->description;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
384 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
385
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
386 void
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
387 purple_badge_set_description(PurpleBadge *badge, const char *description) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
388 g_return_if_fail(PURPLE_IS_BADGE(badge));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
389
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
390 if(g_set_str(&badge->description, description)) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
391 g_object_notify_by_pspec(G_OBJECT(badge),
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
392 properties[PROP_DESCRIPTION]);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
393 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
394 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
395
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
396 const char *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
397 purple_badge_get_link_text(PurpleBadge *badge) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
398 g_return_val_if_fail(PURPLE_IS_BADGE(badge), NULL);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
399
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
400 return badge->link_text;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
401 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
402
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
403 void
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
404 purple_badge_set_link_text(PurpleBadge *badge, const char *link_text) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
405 g_return_if_fail(PURPLE_IS_BADGE(badge));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
406
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
407 if(g_set_str(&badge->link_text, link_text)) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
408 g_object_notify_by_pspec(G_OBJECT(badge), properties[PROP_LINK_TEXT]);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
409 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
410 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
411
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
412 const char *
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
413 purple_badge_get_link_uri(PurpleBadge *badge) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
414 g_return_val_if_fail(PURPLE_IS_BADGE(badge), NULL);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
415
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
416 return badge->link_uri;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
417 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
418
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
419 void
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
420 purple_badge_set_link_uri(PurpleBadge *badge, const char *link_uri) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
421 g_return_if_fail(PURPLE_IS_BADGE(badge));
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
422
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
423 if(g_set_str(&badge->link_uri, link_uri)) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
424 g_object_notify_by_pspec(G_OBJECT(badge), properties[PROP_LINK_URI]);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
425 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
426 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
427
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
428 int
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
429 purple_badge_compare(PurpleBadge *badge1, PurpleBadge *badge2) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
430 if(badge1 == NULL && badge2 == NULL) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
431 return 0;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
432 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
433
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
434 if(!PURPLE_IS_BADGE(badge1)) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
435 return 1;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
436 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
437
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
438 if(!PURPLE_IS_BADGE(badge2)) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
439 return -1;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
440 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
441
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
442 return badge2->priority - badge1->priority;
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
443 }
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
444
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
445 gboolean
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
446 purple_badge_equal(PurpleBadge *badge1, PurpleBadge *badge2) {
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
447 g_return_val_if_fail(PURPLE_IS_BADGE(badge1), FALSE);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
448 g_return_val_if_fail(PURPLE_IS_BADGE(badge2), FALSE);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
449
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
450 return purple_strequal(badge1->id, badge2->id);
c6ca43acffbb Add Purple.Badge
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
451 }

mercurial