Sun, 29 Apr 2007 01:08:11 +0000
Fix a bug with the bugfix for empty icons. The logic was backwards here.
This caused all buddy icons to be lost on migration and as an added bonus,
it failed to solve the empty icon NULL extension bug!
| 5437 | 1 | /** |
| 2 | * @file notify.c Notification API | |
| 3 | * @ingroup core | |
| 4 | * | |
| 15884 | 5 | * purple |
| 5437 | 6 | * |
| 15884 | 7 | * Purple is the legal property of its developers, whose names are too numerous |
| 8046 | 8 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 9 | * source distribution. | |
|
6465
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
10 | * |
| 5437 | 11 | * This program is free software; you can redistribute it and/or modify |
| 12 | * it under the terms of the GNU General Public License as published by | |
| 13 | * the Free Software Foundation; either version 2 of the License, or | |
| 14 | * (at your option) any later version. | |
| 15 | * | |
| 16 | * This program is distributed in the hope that it will be useful, | |
| 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 19 | * GNU General Public License for more details. | |
| 20 | * | |
| 21 | * You should have received a copy of the GNU General Public License | |
| 22 | * along with this program; if not, write to the Free Software | |
| 23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 24 | */ | |
| 25 | #include "notify.h" | |
| 26 | ||
| 15884 | 27 | static PurpleNotifyUiOps *notify_ui_ops = NULL; |
| 5437 | 28 | static GList *handles = NULL; |
| 29 | ||
| 30 | typedef struct | |
| 31 | { | |
| 15884 | 32 | PurpleNotifyType type; |
| 5437 | 33 | void *handle; |
|
5476
6f863ea68018
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
34 | void *ui_handle; |
| 15884 | 35 | PurpleNotifyCloseCallback cb; |
|
12242
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
36 | gpointer cb_user_data; |
| 15884 | 37 | } PurpleNotifyInfo; |
| 5437 | 38 | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
39 | /** |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
40 | * Definition of a user info entry |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
41 | */ |
| 15884 | 42 | struct _PurpleNotifyUserInfoEntry |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
43 | { |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
44 | char *label; |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
45 | char *value; |
| 15884 | 46 | PurpleNotifyUserInfoEntryType type; |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
47 | }; |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
48 | |
| 15884 | 49 | struct _PurpleNotifyUserInfo |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
50 | { |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
51 | GList *user_info_entries; |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
52 | }; |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
53 | |
| 5437 | 54 | void * |
| 15884 | 55 | purple_notify_message(void *handle, PurpleNotifyMsgType type, |
| 5437 | 56 | const char *title, const char *primary, |
| 15884 | 57 | const char *secondary, PurpleNotifyCloseCallback cb, gpointer user_data) |
| 5437 | 58 | { |
| 15884 | 59 | PurpleNotifyUiOps *ops; |
| 5437 | 60 | |
| 61 | g_return_val_if_fail(primary != NULL, NULL); | |
| 62 | ||
| 15884 | 63 | ops = purple_notify_get_ui_ops(); |
| 5437 | 64 | |
| 65 | if (ops != NULL && ops->notify_message != NULL) { | |
| 15884 | 66 | PurpleNotifyInfo *info; |
| 5437 | 67 | |
| 15884 | 68 | info = g_new0(PurpleNotifyInfo, 1); |
| 69 | info->type = PURPLE_NOTIFY_MESSAGE; | |
|
5476
6f863ea68018
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
70 | info->handle = handle; |
|
6f863ea68018
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
71 | info->ui_handle = ops->notify_message(type, title, primary, |
|
12242
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
72 | secondary); |
|
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
73 | info->cb = cb; |
|
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
74 | info->cb_user_data = user_data; |
| 5437 | 75 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
76 | if (info->ui_handle != NULL) { |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
77 | handles = g_list_append(handles, info); |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14064
diff
changeset
|
78 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
79 | return info->ui_handle; |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14064
diff
changeset
|
80 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
81 | } else { |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
82 | if (info->cb != NULL) |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
83 | info->cb(info->cb_user_data); |
| 5437 | 84 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
85 | g_free(info); |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
86 | |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
87 | return NULL; |
|
14064
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
88 | } |
|
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
89 | |
|
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
90 | } else { |
|
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
91 | if (cb != NULL) |
|
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
92 | cb(user_data); |
| 5437 | 93 | } |
| 94 | ||
| 95 | return NULL; | |
| 96 | } | |
| 97 | ||
| 98 | void * | |
| 15884 | 99 | purple_notify_email(void *handle, const char *subject, const char *from, |
| 100 | const char *to, const char *url, PurpleNotifyCloseCallback cb, | |
| 12220 | 101 | gpointer user_data) |
| 5437 | 102 | { |
| 15884 | 103 | PurpleNotifyUiOps *ops; |
| 5437 | 104 | |
| 15884 | 105 | ops = purple_notify_get_ui_ops(); |
| 5437 | 106 | |
| 107 | if (ops != NULL && ops->notify_email != NULL) { | |
| 15884 | 108 | PurpleNotifyInfo *info; |
| 5437 | 109 | |
| 15884 | 110 | info = g_new0(PurpleNotifyInfo, 1); |
| 111 | info->type = PURPLE_NOTIFY_EMAIL; | |
|
5476
6f863ea68018
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
112 | info->handle = handle; |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
113 | info->ui_handle = ops->notify_email(handle, subject, from, to, url); |
|
12242
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
114 | info->cb = cb; |
|
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
115 | info->cb_user_data = user_data; |
| 5437 | 116 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
117 | if (info->ui_handle != NULL) { |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
118 | handles = g_list_append(handles, info); |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
119 | |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
120 | return info->ui_handle; |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
121 | |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
122 | } else { |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
123 | if (info->cb != NULL) |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
124 | info->cb(info->cb_user_data); |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
125 | |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
126 | g_free(info); |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
127 | |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
128 | return NULL; |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14064
diff
changeset
|
129 | } |
|
14064
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
130 | } else { |
|
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
131 | if (cb != NULL) |
|
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
132 | cb(user_data); |
| 5437 | 133 | } |
| 134 | ||
| 135 | return NULL; | |
| 136 | } | |
| 137 | ||
| 138 | void * | |
| 15884 | 139 | purple_notify_emails(void *handle, size_t count, gboolean detailed, |
|
5522
faa69c8f503d
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
140 | const char **subjects, const char **froms, |
|
faa69c8f503d
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
141 | const char **tos, const char **urls, |
| 15884 | 142 | PurpleNotifyCloseCallback cb, gpointer user_data) |
| 5437 | 143 | { |
| 15884 | 144 | PurpleNotifyUiOps *ops; |
| 5437 | 145 | |
| 146 | g_return_val_if_fail(count != 0, NULL); | |
| 147 | ||
|
5522
faa69c8f503d
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
148 | if (count == 1) { |
| 15884 | 149 | return purple_notify_email(handle, |
|
5522
faa69c8f503d
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
150 | (subjects == NULL ? NULL : *subjects), |
|
faa69c8f503d
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
151 | (froms == NULL ? NULL : *froms), |
|
faa69c8f503d
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
152 | (tos == NULL ? NULL : *tos), |
|
faa69c8f503d
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
153 | (urls == NULL ? NULL : *urls), |
|
faa69c8f503d
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
154 | cb, user_data); |
|
faa69c8f503d
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
155 | } |
|
faa69c8f503d
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
156 | |
| 15884 | 157 | ops = purple_notify_get_ui_ops(); |
| 5437 | 158 | |
| 159 | if (ops != NULL && ops->notify_emails != NULL) { | |
| 15884 | 160 | PurpleNotifyInfo *info; |
| 5437 | 161 | |
| 15884 | 162 | info = g_new0(PurpleNotifyInfo, 1); |
| 163 | info->type = PURPLE_NOTIFY_EMAILS; | |
|
5476
6f863ea68018
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
164 | info->handle = handle; |
|
12647
b00d9913117e
[gaim-migrate @ 14985]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12624
diff
changeset
|
165 | info->ui_handle = ops->notify_emails(handle, count, detailed, subjects, |
|
12242
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
166 | froms, tos, urls); |
|
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
167 | info->cb = cb; |
|
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
168 | info->cb_user_data = user_data; |
| 5437 | 169 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
170 | if (info->ui_handle != NULL) { |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
171 | handles = g_list_append(handles, info); |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
172 | |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
173 | return info->ui_handle; |
| 5437 | 174 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
175 | } else { |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
176 | if (info->cb != NULL) |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
177 | info->cb(info->cb_user_data); |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
178 | |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
179 | g_free(info); |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
180 | |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
181 | return NULL; |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
182 | } |
|
14064
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
183 | |
|
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
184 | } else { |
|
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
185 | if (cb != NULL) |
|
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
186 | cb(user_data); |
| 5437 | 187 | } |
| 188 | ||
| 189 | return NULL; | |
| 190 | } | |
| 191 | ||
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
192 | void * |
| 15884 | 193 | purple_notify_formatted(void *handle, const char *title, const char *primary, |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
194 | const char *secondary, const char *text, |
| 15884 | 195 | PurpleNotifyCloseCallback cb, gpointer user_data) |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
196 | { |
| 15884 | 197 | PurpleNotifyUiOps *ops; |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
198 | |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
199 | g_return_val_if_fail(primary != NULL, NULL); |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
200 | |
| 15884 | 201 | ops = purple_notify_get_ui_ops(); |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
202 | |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
203 | if (ops != NULL && ops->notify_formatted != NULL) { |
| 15884 | 204 | PurpleNotifyInfo *info; |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
205 | |
| 15884 | 206 | info = g_new0(PurpleNotifyInfo, 1); |
| 207 | info->type = PURPLE_NOTIFY_FORMATTED; | |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
208 | info->handle = handle; |
|
12242
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
209 | info->ui_handle = ops->notify_formatted(title, primary, secondary, text); |
|
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
210 | info->cb = cb; |
|
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
211 | info->cb_user_data = user_data; |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
212 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
213 | if (info->ui_handle != NULL) { |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
214 | handles = g_list_append(handles, info); |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14064
diff
changeset
|
215 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
216 | return info->ui_handle; |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14064
diff
changeset
|
217 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
218 | } else { |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
219 | if (info->cb != NULL) |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
220 | info->cb(info->cb_user_data); |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14064
diff
changeset
|
221 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
222 | g_free(info); |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14064
diff
changeset
|
223 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
224 | return NULL; |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
225 | } |
|
14064
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
226 | |
|
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
227 | } else { |
|
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
228 | if (cb != NULL) |
|
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
229 | cb(user_data); |
|
6381
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
230 | } |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
231 | |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
232 | return NULL; |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
233 | } |
|
53203c44c731
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
234 | |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10240
diff
changeset
|
235 | void * |
| 15884 | 236 | purple_notify_searchresults(PurpleConnection *gc, const char *title, |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10240
diff
changeset
|
237 | const char *primary, const char *secondary, |
| 15884 | 238 | PurpleNotifySearchResults *results, PurpleNotifyCloseCallback cb, |
| 13641 | 239 | gpointer user_data) |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10240
diff
changeset
|
240 | { |
| 15884 | 241 | PurpleNotifyUiOps *ops; |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10240
diff
changeset
|
242 | |
| 15884 | 243 | ops = purple_notify_get_ui_ops(); |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10240
diff
changeset
|
244 | |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10240
diff
changeset
|
245 | if (ops != NULL && ops->notify_searchresults != NULL) { |
| 15884 | 246 | PurpleNotifyInfo *info; |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10240
diff
changeset
|
247 | |
| 15884 | 248 | info = g_new0(PurpleNotifyInfo, 1); |
| 249 | info->type = PURPLE_NOTIFY_SEARCHRESULTS; | |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10240
diff
changeset
|
250 | info->handle = gc; |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10240
diff
changeset
|
251 | info->ui_handle = ops->notify_searchresults(gc, title, primary, |
| 13641 | 252 | secondary, results, user_data); |
|
12242
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
253 | info->cb = cb; |
|
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
254 | info->cb_user_data = user_data; |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10240
diff
changeset
|
255 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
256 | if (info->ui_handle != NULL) { |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
257 | handles = g_list_append(handles, info); |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
258 | |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
259 | return info->ui_handle; |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
260 | |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
261 | } else { |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
262 | if (info->cb != NULL) |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
263 | info->cb(info->cb_user_data); |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
264 | |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
265 | g_free(info); |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
266 | |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
267 | return NULL; |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
268 | } |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10240
diff
changeset
|
269 | |
|
14064
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
270 | } else { |
|
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
271 | if (cb != NULL) |
|
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
272 | cb(user_data); |
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10240
diff
changeset
|
273 | } |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10240
diff
changeset
|
274 | |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10240
diff
changeset
|
275 | return NULL; |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10240
diff
changeset
|
276 | } |
|
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10240
diff
changeset
|
277 | |
| 11359 | 278 | void |
| 15884 | 279 | purple_notify_searchresults_free(PurpleNotifySearchResults *results) |
| 11359 | 280 | { |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
281 | GList *l; |
| 11359 | 282 | |
| 283 | g_return_if_fail(results != NULL); | |
| 284 | ||
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
285 | for (l = results->buttons; l; l = g_list_delete_link(l, l)) { |
| 15884 | 286 | PurpleNotifySearchButton *button = l->data; |
|
14038
3b7740b778ad
[gaim-migrate @ 16534]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13641
diff
changeset
|
287 | g_free(button->label); |
| 11359 | 288 | g_free(button); |
| 289 | } | |
| 290 | ||
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
291 | for (l = results->rows; l; l = g_list_delete_link(l, l)) { |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
292 | GList *row = l->data; |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14064
diff
changeset
|
293 | g_list_foreach(row, (GFunc)g_free, NULL); |
|
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14064
diff
changeset
|
294 | g_list_free(row); |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
295 | } |
| 11359 | 296 | |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
297 | for (l = results->columns; l; l = g_list_delete_link(l, l)) { |
| 15884 | 298 | PurpleNotifySearchColumn *column = l->data; |
| 11359 | 299 | g_free(column->title); |
| 300 | g_free(column); | |
| 301 | } | |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
302 | |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
303 | g_free(results); |
| 11359 | 304 | } |
| 305 | ||
| 306 | void | |
| 15884 | 307 | purple_notify_searchresults_new_rows(PurpleConnection *gc, |
| 308 | PurpleNotifySearchResults *results, | |
| 13641 | 309 | void *data) |
| 11359 | 310 | { |
| 15884 | 311 | PurpleNotifyUiOps *ops; |
| 11359 | 312 | |
| 15884 | 313 | ops = purple_notify_get_ui_ops(); |
| 11359 | 314 | |
| 315 | if (ops != NULL && ops->notify_searchresults != NULL) { | |
| 13641 | 316 | ops->notify_searchresults_new_rows(gc, results, data); |
| 11359 | 317 | } |
| 318 | } | |
| 319 | ||
| 320 | void | |
| 15884 | 321 | purple_notify_searchresults_button_add(PurpleNotifySearchResults *results, |
| 322 | PurpleNotifySearchButtonType type, | |
| 323 | PurpleNotifySearchResultsCallback cb) | |
| 11359 | 324 | { |
| 15884 | 325 | PurpleNotifySearchButton *button; |
| 11359 | 326 | |
| 327 | g_return_if_fail(results != NULL); | |
| 328 | g_return_if_fail(cb != NULL); | |
| 329 | ||
| 15884 | 330 | button = g_new0(PurpleNotifySearchButton, 1); |
| 11359 | 331 | button->callback = cb; |
| 332 | button->type = type; | |
| 333 | ||
| 334 | results->buttons = g_list_append(results->buttons, button); | |
| 335 | } | |
| 336 | ||
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
337 | |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
338 | void |
| 15884 | 339 | purple_notify_searchresults_button_add_labeled(PurpleNotifySearchResults *results, |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
340 | const char *label, |
| 15884 | 341 | PurpleNotifySearchResultsCallback cb) { |
| 342 | PurpleNotifySearchButton *button; | |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
343 | |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
344 | g_return_if_fail(results != NULL); |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
345 | g_return_if_fail(cb != NULL); |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
346 | g_return_if_fail(label != NULL); |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
347 | g_return_if_fail(*label != '\0'); |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
348 | |
| 15884 | 349 | button = g_new0(PurpleNotifySearchButton, 1); |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
350 | button->callback = cb; |
| 15884 | 351 | button->type = PURPLE_NOTIFY_BUTTON_LABELED; |
|
12624
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
352 | button->label = g_strdup(label); |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
353 | |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
354 | results->buttons = g_list_append(results->buttons, button); |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
355 | } |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
356 | |
|
c1c92f08976b
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
357 | |
| 15884 | 358 | PurpleNotifySearchResults * |
| 359 | purple_notify_searchresults_new() | |
| 11359 | 360 | { |
| 15884 | 361 | PurpleNotifySearchResults *rs = g_new0(PurpleNotifySearchResults, 1); |
| 11359 | 362 | |
| 363 | return rs; | |
| 364 | } | |
| 365 | ||
| 366 | void | |
| 15884 | 367 | purple_notify_searchresults_column_add(PurpleNotifySearchResults *results, |
| 368 | PurpleNotifySearchColumn *column) | |
| 11359 | 369 | { |
| 370 | g_return_if_fail(results != NULL); | |
| 371 | g_return_if_fail(column != NULL); | |
| 372 | ||
| 373 | results->columns = g_list_append(results->columns, column); | |
| 374 | } | |
| 375 | ||
| 15884 | 376 | void purple_notify_searchresults_row_add(PurpleNotifySearchResults *results, |
| 11359 | 377 | GList *row) |
| 378 | { | |
| 379 | g_return_if_fail(results != NULL); | |
| 380 | g_return_if_fail(row != NULL); | |
| 381 | ||
| 382 | results->rows = g_list_append(results->rows, row); | |
| 383 | } | |
| 384 | ||
| 15884 | 385 | PurpleNotifySearchColumn * |
| 386 | purple_notify_searchresults_column_new(const char *title) | |
| 11359 | 387 | { |
| 15884 | 388 | PurpleNotifySearchColumn *sc; |
| 11359 | 389 | |
| 390 | g_return_val_if_fail(title != NULL, NULL); | |
| 391 | ||
| 15884 | 392 | sc = g_new0(PurpleNotifySearchColumn, 1); |
| 11359 | 393 | sc->title = g_strdup(title); |
| 394 | ||
| 395 | return sc; | |
| 396 | } | |
| 397 | ||
| 12257 | 398 | guint |
| 15884 | 399 | purple_notify_searchresults_get_columns_count(PurpleNotifySearchResults *results) |
| 11359 | 400 | { |
| 12257 | 401 | g_return_val_if_fail(results != NULL, 0); |
| 11359 | 402 | |
| 403 | return g_list_length(results->columns); | |
| 404 | } | |
| 405 | ||
| 12257 | 406 | guint |
| 15884 | 407 | purple_notify_searchresults_get_rows_count(PurpleNotifySearchResults *results) |
| 11359 | 408 | { |
| 12257 | 409 | g_return_val_if_fail(results != NULL, 0); |
| 11359 | 410 | |
| 411 | return g_list_length(results->rows); | |
| 412 | } | |
| 413 | ||
| 414 | char * | |
| 15884 | 415 | purple_notify_searchresults_column_get_title(PurpleNotifySearchResults *results, |
| 11359 | 416 | unsigned int column_id) |
| 417 | { | |
| 418 | g_return_val_if_fail(results != NULL, NULL); | |
| 419 | ||
| 15884 | 420 | return ((PurpleNotifySearchColumn *)g_list_nth_data(results->columns, column_id))->title; |
| 11359 | 421 | } |
| 422 | ||
| 423 | GList * | |
| 15884 | 424 | purple_notify_searchresults_row_get(PurpleNotifySearchResults *results, |
| 11359 | 425 | unsigned int row_id) |
| 426 | { | |
| 427 | g_return_val_if_fail(results != NULL, NULL); | |
| 428 | ||
| 429 | return g_list_nth_data(results->rows, row_id); | |
| 430 | } | |
| 431 | ||
|
10439
5868d8f55fb1
[gaim-migrate @ 11697]
Alex Converse <alex.converse@gmail.com>
parents:
10240
diff
changeset
|
432 | void * |
| 15884 | 433 | purple_notify_userinfo(PurpleConnection *gc, const char *who, |
| 434 | PurpleNotifyUserInfo *user_info, PurpleNotifyCloseCallback cb, gpointer user_data) | |
| 9797 | 435 | { |
| 15884 | 436 | PurpleNotifyUiOps *ops; |
|
11531
63c017cfd8d2
[gaim-migrate @ 13780]
Luke Schierer <lschiere@pidgin.im>
parents:
11359
diff
changeset
|
437 | |
|
11533
f58436975d44
[gaim-migrate @ 13782]
Richard Laager <rlaager@pidgin.im>
parents:
11531
diff
changeset
|
438 | g_return_val_if_fail(who != NULL, NULL); |
| 9797 | 439 | |
| 15884 | 440 | ops = purple_notify_get_ui_ops(); |
| 9797 | 441 | |
| 442 | if (ops != NULL && ops->notify_userinfo != NULL) { | |
| 15884 | 443 | PurpleNotifyInfo *info; |
| 9797 | 444 | |
| 15884 | 445 | info = g_new0(PurpleNotifyInfo, 1); |
| 446 | info->type = PURPLE_NOTIFY_USERINFO; | |
| 9797 | 447 | info->handle = gc; |
| 12129 | 448 | |
| 15884 | 449 | purple_signal_emit(purple_notify_get_handle(), "displaying-userinfo", |
| 450 | purple_connection_get_account(gc), who, user_info); | |
| 12129 | 451 | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
452 | info->ui_handle = ops->notify_userinfo(gc, who, user_info); |
|
12242
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
453 | info->cb = cb; |
|
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
454 | info->cb_user_data = user_data; |
| 9797 | 455 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
456 | if (info->ui_handle != NULL) { |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
457 | handles = g_list_append(handles, info); |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
458 | |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
459 | return info->ui_handle; |
| 9797 | 460 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
461 | } else { |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
462 | if (info->cb != NULL) |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
463 | info->cb(info->cb_user_data); |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
464 | |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
465 | g_free(info); |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
466 | |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
467 | return NULL; |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
468 | } |
|
14064
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
469 | |
|
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
470 | } else { |
|
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
471 | if (cb != NULL) |
|
0d17cfaf530d
[gaim-migrate @ 16587]
Evan Schoenberg <evands@pidgin.im>
parents:
14063
diff
changeset
|
472 | cb(user_data); |
| 9797 | 473 | } |
| 474 | ||
| 475 | return NULL; | |
| 476 | } | |
| 477 | ||
| 15884 | 478 | PurpleNotifyUserInfoEntry * |
| 479 | purple_notify_user_info_entry_new(const char *label, const char *value) | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
480 | { |
| 15884 | 481 | PurpleNotifyUserInfoEntry *user_info_entry; |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
482 | |
| 15884 | 483 | user_info_entry = g_new0(PurpleNotifyUserInfoEntry, 1); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
484 | user_info_entry->label = g_strdup(label); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
485 | user_info_entry->value = g_strdup(value); |
| 15884 | 486 | user_info_entry->type = PURPLE_NOTIFY_USER_INFO_ENTRY_PAIR; |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
487 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
488 | return user_info_entry; |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
489 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
490 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
491 | static void |
| 15884 | 492 | purple_notify_user_info_entry_destroy(PurpleNotifyUserInfoEntry *user_info_entry) |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
493 | { |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
494 | g_return_if_fail(user_info_entry != NULL); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
495 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
496 | g_free(user_info_entry->label); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
497 | g_free(user_info_entry->value); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
498 | g_free(user_info_entry); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
499 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
500 | |
| 15884 | 501 | PurpleNotifyUserInfo * |
| 502 | purple_notify_user_info_new() | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
503 | { |
| 15884 | 504 | PurpleNotifyUserInfo *user_info; |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
505 | |
| 15884 | 506 | user_info = g_new0(PurpleNotifyUserInfo, 1); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
507 | user_info->user_info_entries = NULL; |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
508 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
509 | return user_info; |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
510 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
511 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
512 | void |
| 15884 | 513 | purple_notify_user_info_destroy(PurpleNotifyUserInfo *user_info) |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
514 | { |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
515 | GList *l; |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
516 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
517 | for (l = user_info->user_info_entries; l != NULL; l = l->next) { |
| 15884 | 518 | PurpleNotifyUserInfoEntry *user_info_entry = l->data; |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
519 | |
| 15884 | 520 | purple_notify_user_info_entry_destroy(user_info_entry); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
521 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
522 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
523 | g_list_free(user_info->user_info_entries); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
524 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
525 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
526 | GList * |
| 15884 | 527 | purple_notify_user_info_get_entries(PurpleNotifyUserInfo *user_info) |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
528 | { |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
529 | g_return_val_if_fail(user_info != NULL, NULL); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
530 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
531 | return user_info->user_info_entries; |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
532 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
533 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
534 | char * |
| 15884 | 535 | purple_notify_user_info_get_text_with_newline(PurpleNotifyUserInfo *user_info, const char *newline) |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
536 | { |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
537 | GList *l; |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
538 | GString *text; |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
539 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
540 | text = g_string_new(""); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
541 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
542 | for (l = user_info->user_info_entries; l != NULL; l = l->next) { |
| 15884 | 543 | PurpleNotifyUserInfoEntry *user_info_entry = l->data; |
|
15211
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
544 | /* Add a newline before a section header */ |
| 15884 | 545 | if (user_info_entry->type == PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_HEADER) |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
546 | g_string_append(text, newline); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
547 | |
|
15211
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
548 | /* Handle the label/value pair itself */ |
|
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
549 | /* XXX Todo: Use a larger size for a section header? */ |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
550 | if (user_info_entry->label) |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
551 | g_string_append_printf(text, "<b>%s</b>", user_info_entry->label); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
552 | if (user_info_entry->label && user_info_entry->value) |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
553 | g_string_append(text, ": "); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
554 | if (user_info_entry->value) |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
555 | g_string_append(text, user_info_entry->value); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
556 | |
|
15211
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
557 | /* Display a section break as a horizontal line */ |
| 15884 | 558 | if (user_info_entry->type == PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK) |
|
15211
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
559 | g_string_append(text, "<HR>"); |
|
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
560 | |
|
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
561 | /* Don't insert a new line before or after a section break; <HR> does that for us */ |
| 15884 | 562 | if ((user_info_entry->type != PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK) && |
| 563 | (l->next && ((((PurpleNotifyUserInfoEntry *)(l->next->data))->type != PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK)))) | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
564 | g_string_append(text, newline); |
|
15211
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
565 | |
|
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
566 | /* Add an extra newline after a section header */ |
| 15884 | 567 | if (user_info_entry->type == PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_HEADER) |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
568 | g_string_append(text, newline); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
569 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
570 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
571 | return g_string_free(text, FALSE); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
572 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
573 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
574 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
575 | gchar * |
| 15884 | 576 | purple_notify_user_info_entry_get_label(PurpleNotifyUserInfoEntry *user_info_entry) |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
577 | { |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
578 | g_return_val_if_fail(user_info_entry != NULL, NULL); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
579 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
580 | return user_info_entry->label; |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
581 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
582 | |
|
15325
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
583 | void |
| 15884 | 584 | purple_notify_user_info_entry_set_label(PurpleNotifyUserInfoEntry *user_info_entry, const char *label) |
|
15325
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
585 | { |
|
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
586 | g_return_if_fail(user_info_entry != NULL); |
|
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
587 | |
|
15330
2a5ca291262f
[gaim-migrate @ 18058]
Evan Schoenberg <evands@pidgin.im>
parents:
15329
diff
changeset
|
588 | g_free(user_info_entry->label); |
|
2a5ca291262f
[gaim-migrate @ 18058]
Evan Schoenberg <evands@pidgin.im>
parents:
15329
diff
changeset
|
589 | user_info_entry->label = g_strdup(label); |
|
15325
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
590 | } |
|
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
591 | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
592 | gchar * |
| 15884 | 593 | purple_notify_user_info_entry_get_value(PurpleNotifyUserInfoEntry *user_info_entry) |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
594 | { |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
595 | g_return_val_if_fail(user_info_entry != NULL, NULL); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
596 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
597 | return user_info_entry->value; |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
598 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
599 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
600 | void |
| 15884 | 601 | purple_notify_user_info_entry_set_value(PurpleNotifyUserInfoEntry *user_info_entry, const char *value) |
|
15325
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
602 | { |
|
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
603 | g_return_if_fail(user_info_entry != NULL); |
|
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
604 | |
|
15330
2a5ca291262f
[gaim-migrate @ 18058]
Evan Schoenberg <evands@pidgin.im>
parents:
15329
diff
changeset
|
605 | g_free(user_info_entry->value); |
|
2a5ca291262f
[gaim-migrate @ 18058]
Evan Schoenberg <evands@pidgin.im>
parents:
15329
diff
changeset
|
606 | user_info_entry->value = g_strdup(value); |
|
15325
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
607 | } |
|
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
608 | |
| 15884 | 609 | PurpleNotifyUserInfoEntryType |
| 610 | purple_notify_user_info_entry_get_type(PurpleNotifyUserInfoEntry *user_info_entry) | |
|
15325
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
611 | { |
| 15884 | 612 | g_return_val_if_fail(user_info_entry != NULL, PURPLE_NOTIFY_USER_INFO_ENTRY_PAIR); |
|
15330
2a5ca291262f
[gaim-migrate @ 18058]
Evan Schoenberg <evands@pidgin.im>
parents:
15329
diff
changeset
|
613 | |
|
15325
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
614 | return user_info_entry->type; |
|
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
615 | } |
|
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
616 | |
|
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
617 | void |
| 15884 | 618 | purple_notify_user_info_entry_set_type(PurpleNotifyUserInfoEntry *user_info_entry, PurpleNotifyUserInfoEntryType type) |
|
15325
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
619 | { |
|
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
620 | g_return_if_fail(user_info_entry != NULL); |
|
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
621 | |
|
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
622 | user_info_entry->type = type; |
|
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
623 | } |
|
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
624 | |
|
d1dcb41d845b
[gaim-migrate @ 18053]
Evan Schoenberg <evands@pidgin.im>
parents:
15211
diff
changeset
|
625 | void |
| 15884 | 626 | purple_notify_user_info_add_pair(PurpleNotifyUserInfo *user_info, const char *label, const char *value) |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
627 | { |
| 15884 | 628 | PurpleNotifyUserInfoEntry *entry; |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
629 | |
| 15884 | 630 | entry = purple_notify_user_info_entry_new(label, value); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
631 | user_info->user_info_entries = g_list_append(user_info->user_info_entries, entry); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
632 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
633 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
634 | void |
| 15884 | 635 | purple_notify_user_info_prepend_pair(PurpleNotifyUserInfo *user_info, const char *label, const char *value) |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
636 | { |
| 15884 | 637 | PurpleNotifyUserInfoEntry *entry; |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
638 | |
| 15884 | 639 | entry = purple_notify_user_info_entry_new(label, value); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
640 | user_info->user_info_entries = g_list_prepend(user_info->user_info_entries, entry); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
641 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
642 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
643 | void |
| 15884 | 644 | purple_notify_user_info_remove_entry(PurpleNotifyUserInfo *user_info, PurpleNotifyUserInfoEntry *entry) |
|
15328
113b0b520010
[gaim-migrate @ 18056]
Evan Schoenberg <evands@pidgin.im>
parents:
15325
diff
changeset
|
645 | { |
|
113b0b520010
[gaim-migrate @ 18056]
Evan Schoenberg <evands@pidgin.im>
parents:
15325
diff
changeset
|
646 | g_return_if_fail(user_info != NULL); |
|
15329
52e77528c005
[gaim-migrate @ 18057]
Evan Schoenberg <evands@pidgin.im>
parents:
15328
diff
changeset
|
647 | g_return_if_fail(entry != NULL); |
|
15328
113b0b520010
[gaim-migrate @ 18056]
Evan Schoenberg <evands@pidgin.im>
parents:
15325
diff
changeset
|
648 | |
|
113b0b520010
[gaim-migrate @ 18056]
Evan Schoenberg <evands@pidgin.im>
parents:
15325
diff
changeset
|
649 | user_info->user_info_entries = g_list_remove(user_info->user_info_entries, entry); |
|
113b0b520010
[gaim-migrate @ 18056]
Evan Schoenberg <evands@pidgin.im>
parents:
15325
diff
changeset
|
650 | } |
|
113b0b520010
[gaim-migrate @ 18056]
Evan Schoenberg <evands@pidgin.im>
parents:
15325
diff
changeset
|
651 | |
|
113b0b520010
[gaim-migrate @ 18056]
Evan Schoenberg <evands@pidgin.im>
parents:
15325
diff
changeset
|
652 | void |
| 15884 | 653 | purple_notify_user_info_add_section_header(PurpleNotifyUserInfo *user_info, const char *label) |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
654 | { |
| 15884 | 655 | PurpleNotifyUserInfoEntry *entry; |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
656 | |
| 15884 | 657 | entry = purple_notify_user_info_entry_new(label, NULL); |
| 658 | entry->type = PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_HEADER; | |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
659 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
660 | user_info->user_info_entries = g_list_append(user_info->user_info_entries, entry); |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
661 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
662 | |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
663 | void |
| 15884 | 664 | purple_notify_user_info_add_section_break(PurpleNotifyUserInfo *user_info) |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
665 | { |
| 15884 | 666 | PurpleNotifyUserInfoEntry *entry; |
|
15211
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
667 | |
| 15884 | 668 | entry = purple_notify_user_info_entry_new(NULL, NULL); |
| 669 | entry->type = PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK; | |
|
15211
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
670 | |
|
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
671 | user_info->user_info_entries = g_list_append(user_info->user_info_entries, entry); |
|
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
672 | } |
|
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
673 | |
|
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
674 | void |
| 15884 | 675 | purple_notify_user_info_remove_last_item(PurpleNotifyUserInfo *user_info) |
|
15211
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
676 | { |
|
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
677 | user_info->user_info_entries = g_list_remove(user_info->user_info_entries, |
|
bb75b7bc10a8
[gaim-migrate @ 17935]
Evan Schoenberg <evands@pidgin.im>
parents:
15205
diff
changeset
|
678 | g_list_last(user_info->user_info_entries)->data); |
|
15205
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
679 | } |
|
f642029b2f97
[gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
680 | |
|
6465
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
681 | void * |
| 15884 | 682 | purple_notify_uri(void *handle, const char *uri) |
|
6465
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
683 | { |
| 15884 | 684 | PurpleNotifyUiOps *ops; |
|
6465
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
685 | |
|
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
686 | g_return_val_if_fail(uri != NULL, NULL); |
|
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
687 | |
| 15884 | 688 | ops = purple_notify_get_ui_ops(); |
|
6465
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
689 | |
|
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
690 | if (ops != NULL && ops->notify_uri != NULL) { |
| 15884 | 691 | PurpleNotifyInfo *info; |
|
6465
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
692 | |
| 15884 | 693 | info = g_new0(PurpleNotifyInfo, 1); |
| 694 | info->type = PURPLE_NOTIFY_URI; | |
|
6465
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
695 | info->handle = handle; |
|
10240
09342bc554d9
[gaim-migrate @ 11377]
Herman Bloggs <herman@bluedigits.com>
parents:
10209
diff
changeset
|
696 | info->ui_handle = ops->notify_uri(uri); |
|
6465
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
697 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
698 | if (info->ui_handle != NULL) { |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
699 | handles = g_list_append(handles, info); |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
14064
diff
changeset
|
700 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
701 | return info->ui_handle; |
|
6465
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
702 | |
|
14063
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
703 | } else { |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
704 | g_free(info); |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
705 | |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
706 | return NULL; |
|
884ee51b28e9
[gaim-migrate @ 16586]
Evan Schoenberg <evands@pidgin.im>
parents:
14038
diff
changeset
|
707 | } |
|
6465
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
708 | } |
|
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
709 | |
|
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
710 | return NULL; |
|
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
711 | } |
|
bd201d637ff4
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
712 | |
| 5437 | 713 | void |
| 15884 | 714 | purple_notify_close(PurpleNotifyType type, void *ui_handle) |
| 5437 | 715 | { |
| 716 | GList *l; | |
| 15884 | 717 | PurpleNotifyUiOps *ops; |
| 5437 | 718 | |
|
5476
6f863ea68018
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
719 | g_return_if_fail(ui_handle != NULL); |
| 5437 | 720 | |
| 15884 | 721 | ops = purple_notify_get_ui_ops(); |
| 5437 | 722 | |
| 723 | for (l = handles; l != NULL; l = l->next) { | |
| 15884 | 724 | PurpleNotifyInfo *info = l->data; |
| 5437 | 725 | |
|
5476
6f863ea68018
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
726 | if (info->ui_handle == ui_handle) { |
| 5437 | 727 | handles = g_list_remove(handles, info); |
| 728 | ||
| 729 | if (ops != NULL && ops->close_notify != NULL) | |
|
5476
6f863ea68018
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
730 | ops->close_notify(info->type, ui_handle); |
| 5437 | 731 | |
|
12242
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
732 | if (info->cb != NULL) |
|
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
733 | info->cb(info->cb_user_data); |
|
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
734 | |
| 5437 | 735 | g_free(info); |
| 736 | ||
| 737 | break; | |
| 738 | } | |
| 739 | } | |
| 740 | } | |
| 741 | ||
| 742 | void | |
| 15884 | 743 | purple_notify_close_with_handle(void *handle) |
| 5437 | 744 | { |
| 745 | GList *l, *l_next; | |
| 15884 | 746 | PurpleNotifyUiOps *ops; |
| 5437 | 747 | |
| 748 | g_return_if_fail(handle != NULL); | |
| 749 | ||
| 15884 | 750 | ops = purple_notify_get_ui_ops(); |
| 5437 | 751 | |
| 752 | for (l = handles; l != NULL; l = l_next) { | |
| 15884 | 753 | PurpleNotifyInfo *info = l->data; |
| 5437 | 754 | |
| 755 | l_next = l->next; | |
| 756 | ||
| 757 | if (info->handle == handle) { | |
| 758 | handles = g_list_remove(handles, info); | |
| 759 | ||
| 760 | if (ops != NULL && ops->close_notify != NULL) | |
|
5476
6f863ea68018
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
761 | ops->close_notify(info->type, info->ui_handle); |
| 5437 | 762 | |
|
12242
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
763 | if (info->cb != NULL) |
|
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
764 | info->cb(info->cb_user_data); |
|
e7fc1748eb56
[gaim-migrate @ 14544]
Richard Laager <rlaager@pidgin.im>
parents:
12220
diff
changeset
|
765 | |
| 5437 | 766 | g_free(info); |
| 767 | } | |
| 768 | } | |
| 769 | } | |
| 770 | ||
| 771 | void | |
| 15884 | 772 | purple_notify_set_ui_ops(PurpleNotifyUiOps *ops) |
| 5437 | 773 | { |
| 774 | notify_ui_ops = ops; | |
| 775 | } | |
| 776 | ||
| 15884 | 777 | PurpleNotifyUiOps * |
| 778 | purple_notify_get_ui_ops(void) | |
| 5437 | 779 | { |
| 780 | return notify_ui_ops; | |
| 781 | } | |
| 12129 | 782 | |
| 783 | void * | |
| 15884 | 784 | purple_notify_get_handle(void) |
| 12129 | 785 | { |
| 786 | static int handle; | |
| 787 | ||
| 788 | return &handle; | |
| 789 | } | |
| 790 | ||
| 791 | void | |
| 15884 | 792 | purple_notify_init(void) |
| 12129 | 793 | { |
| 15884 | 794 | gpointer handle = purple_notify_get_handle(); |
| 12129 | 795 | |
| 15884 | 796 | purple_signal_register(handle, "displaying-userinfo", |
| 797 | purple_marshal_VOID__POINTER_POINTER_POINTER, NULL, 3, | |
| 798 | purple_value_new(PURPLE_TYPE_SUBTYPE, | |
| 799 | PURPLE_SUBTYPE_ACCOUNT), | |
| 800 | purple_value_new(PURPLE_TYPE_STRING), | |
| 801 | purple_value_new(PURPLE_TYPE_SUBTYPE, | |
| 802 | PURPLE_SUBTYPE_USERINFO)); | |
| 12129 | 803 | } |
| 804 | ||
| 805 | void | |
| 15884 | 806 | purple_notify_uninit(void) |
| 12129 | 807 | { |
| 15884 | 808 | purple_signals_unregister_by_instance(purple_notify_get_handle()); |
| 12129 | 809 | } |