Mercurial > pidgin.yaz
annotate libgaim/notify.h @ 15150:a56c93f12f8f
[gaim-migrate @ 17935]
Improved handling of GaimNotifyUserInfoEntry types; an enum now specifies them. Fixed gaim_notify_user_info_get_text() not to have newlines before and after the horizontal line for section breaks.
committer: Tailor Script <tailor@pidgin.im>
author | Evan Schoenberg <evan.s@dreskin.net> |
---|---|
date | Sun, 10 Dec 2006 05:06:01 +0000 |
parents | b81e4e44b509 |
children | 38cdfbb371b1 |
rev | line source |
---|---|
14192 | 1 /** |
2 * @file notify.h Notification API | |
3 * @ingroup core | |
4 * | |
5 * gaim | |
6 * | |
7 * Gaim is the legal property of its developers, whose names are too numerous | |
8 * to list here. Please refer to the COPYRIGHT file distributed with this | |
9 * source distribution. | |
10 * | |
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 #ifndef _GAIM_NOTIFY_H_ | |
26 #define _GAIM_NOTIFY_H_ | |
27 | |
28 #include <stdlib.h> | |
29 #include <glib-object.h> | |
30 #include <glib.h> | |
31 | |
15144
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
32 typedef struct _GaimNotifyUserInfoEntry GaimNotifyUserInfoEntry; |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
33 typedef struct _GaimNotifyUserInfo GaimNotifyUserInfo; |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
34 |
14192 | 35 #include "connection.h" |
36 | |
37 /** | |
38 * Notification close callbacks. | |
39 */ | |
40 typedef void (*GaimNotifyCloseCallback) (gpointer user_data); | |
41 | |
42 | |
43 /** | |
44 * Notification types. | |
45 */ | |
46 typedef enum | |
47 { | |
48 GAIM_NOTIFY_MESSAGE = 0, /**< Message notification. */ | |
49 GAIM_NOTIFY_EMAIL, /**< Single e-mail notification. */ | |
50 GAIM_NOTIFY_EMAILS, /**< Multiple e-mail notification. */ | |
51 GAIM_NOTIFY_FORMATTED, /**< Formatted text. */ | |
52 GAIM_NOTIFY_SEARCHRESULTS, /**< Buddy search results. */ | |
53 GAIM_NOTIFY_USERINFO, /**< Formatted userinfo text. */ | |
54 GAIM_NOTIFY_URI /**< URI notification or display. */ | |
55 | |
56 } GaimNotifyType; | |
57 | |
58 | |
59 /** | |
60 * Notification message types. | |
61 */ | |
62 typedef enum | |
63 { | |
64 GAIM_NOTIFY_MSG_ERROR = 0, /**< Error notification. */ | |
65 GAIM_NOTIFY_MSG_WARNING, /**< Warning notification. */ | |
66 GAIM_NOTIFY_MSG_INFO /**< Information notification. */ | |
67 | |
68 } GaimNotifyMsgType; | |
69 | |
70 | |
71 /** | |
72 * The types of buttons | |
73 */ | |
74 typedef enum | |
75 { | |
76 GAIM_NOTIFY_BUTTON_LABELED = 0, /**< special use, see _button_add_labeled */ | |
77 GAIM_NOTIFY_BUTTON_CONTINUE = 1, | |
78 GAIM_NOTIFY_BUTTON_ADD, | |
79 GAIM_NOTIFY_BUTTON_INFO, | |
80 GAIM_NOTIFY_BUTTON_IM, | |
81 GAIM_NOTIFY_BUTTON_JOIN, | |
82 GAIM_NOTIFY_BUTTON_INVITE | |
83 } GaimNotifySearchButtonType; | |
84 | |
85 | |
86 /** | |
87 * Search results object. | |
88 */ | |
89 typedef struct | |
90 { | |
91 GList *columns; /**< List of the search column objects. */ | |
92 GList *rows; /**< List of rows in the result. */ | |
93 GList *buttons; /**< List of buttons to display. */ | |
94 | |
95 } GaimNotifySearchResults; | |
96 | |
15150
a56c93f12f8f
[gaim-migrate @ 17935]
Evan Schoenberg <evan.s@dreskin.net>
parents:
15144
diff
changeset
|
97 /** |
a56c93f12f8f
[gaim-migrate @ 17935]
Evan Schoenberg <evan.s@dreskin.net>
parents:
15144
diff
changeset
|
98 * Types of GaimNotifyUserInfoEntry objects |
a56c93f12f8f
[gaim-migrate @ 17935]
Evan Schoenberg <evan.s@dreskin.net>
parents:
15144
diff
changeset
|
99 */ |
a56c93f12f8f
[gaim-migrate @ 17935]
Evan Schoenberg <evan.s@dreskin.net>
parents:
15144
diff
changeset
|
100 typedef enum |
a56c93f12f8f
[gaim-migrate @ 17935]
Evan Schoenberg <evan.s@dreskin.net>
parents:
15144
diff
changeset
|
101 { |
a56c93f12f8f
[gaim-migrate @ 17935]
Evan Schoenberg <evan.s@dreskin.net>
parents:
15144
diff
changeset
|
102 GAIM_NOTIFY_USER_INFO_ENTRY_PAIR = 0, |
a56c93f12f8f
[gaim-migrate @ 17935]
Evan Schoenberg <evan.s@dreskin.net>
parents:
15144
diff
changeset
|
103 GAIM_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK, |
a56c93f12f8f
[gaim-migrate @ 17935]
Evan Schoenberg <evan.s@dreskin.net>
parents:
15144
diff
changeset
|
104 GAIM_NOTIFY_USER_INFO_ENTRY_SECTION_HEADER |
a56c93f12f8f
[gaim-migrate @ 17935]
Evan Schoenberg <evan.s@dreskin.net>
parents:
15144
diff
changeset
|
105 } GaimNotifyUserInfoEntryType; |
14192 | 106 |
107 /** | |
108 * Single column of a search result. | |
109 */ | |
110 typedef struct | |
111 { | |
112 char *title; /**< Title of the column. */ | |
113 | |
114 } GaimNotifySearchColumn; | |
115 | |
116 | |
117 /** | |
118 * Callback for a button in a search result. | |
119 * | |
120 * @param c the GaimConnection passed to gaim_notify_searchresults | |
121 * @param row the contents of the selected row | |
122 * @param user_data User defined data. | |
123 */ | |
124 typedef void (*GaimNotifySearchResultsCallback)(GaimConnection *c, GList *row, | |
125 gpointer user_data); | |
126 | |
127 | |
128 /** | |
129 * Definition of a button. | |
130 */ | |
131 typedef struct | |
132 { | |
133 GaimNotifySearchButtonType type; | |
134 GaimNotifySearchResultsCallback callback; /**< Function to be called when clicked. */ | |
135 char *label; /**< only for GAIM_NOTIFY_BUTTON_LABELED */ | |
136 } GaimNotifySearchButton; | |
137 | |
138 | |
139 /** | |
140 * Notification UI operations. | |
141 */ | |
142 typedef struct | |
143 { | |
144 void *(*notify_message)(GaimNotifyMsgType type, const char *title, | |
145 const char *primary, const char *secondary); | |
146 | |
147 void *(*notify_email)(GaimConnection *gc, | |
148 const char *subject, const char *from, | |
149 const char *to, const char *url); | |
150 | |
151 void *(*notify_emails)(GaimConnection *gc, | |
152 size_t count, gboolean detailed, | |
153 const char **subjects, const char **froms, | |
154 const char **tos, const char **urls); | |
155 | |
156 void *(*notify_formatted)(const char *title, const char *primary, | |
157 const char *secondary, const char *text); | |
158 | |
159 void *(*notify_searchresults)(GaimConnection *gc, const char *title, | |
160 const char *primary, const char *secondary, | |
161 GaimNotifySearchResults *results, gpointer user_data); | |
162 | |
163 void (*notify_searchresults_new_rows)(GaimConnection *gc, | |
164 GaimNotifySearchResults *results, | |
165 void *data); | |
166 | |
167 void *(*notify_userinfo)(GaimConnection *gc, const char *who, | |
15144
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
168 GaimNotifyUserInfo *user_info); |
14192 | 169 |
170 void *(*notify_uri)(const char *uri); | |
171 | |
172 void (*close_notify)(GaimNotifyType type, void *ui_handle); | |
173 | |
174 } GaimNotifyUiOps; | |
175 | |
176 | |
177 #ifdef __cplusplus | |
178 extern "C" { | |
179 #endif | |
180 | |
181 | |
182 /**************************************************************************/ | |
183 /** Search results notification API */ | |
184 /**************************************************************************/ | |
185 /*@{*/ | |
186 | |
187 /** | |
188 * Displays results from a buddy search. This can be, for example, | |
189 * a window with a list of all found buddies, where you are given the | |
190 * option of adding buddies to your buddy list. | |
191 * | |
192 * @param gc The GaimConnection handle associated with the information. | |
193 * @param title The title of the message. If this is NULL, the title | |
194 * will be "Search Results." | |
195 * @param primary The main point of the message. | |
196 * @param secondary The secondary information. | |
197 * @param results The GaimNotifySearchResults instance. | |
198 * @param cb The callback to call when the user closes | |
199 * the notification. | |
200 * @param user_data The data to pass to the close callback and any other | |
201 * callback associated with a button. | |
202 * | |
203 * @return A UI-specific handle. | |
204 */ | |
205 void *gaim_notify_searchresults(GaimConnection *gc, const char *title, | |
206 const char *primary, const char *secondary, | |
207 GaimNotifySearchResults *results, GaimNotifyCloseCallback cb, | |
208 gpointer user_data); | |
209 | |
210 void gaim_notify_searchresults_free(GaimNotifySearchResults *results); | |
211 | |
212 /** | |
213 * Replace old rows with the new. Reuse an existing window. | |
214 * | |
215 * @param gc The GaimConnection structure. | |
216 * @param results The GaimNotifySearchResults structure. | |
217 * @param data Data returned by the gaim_notify_searchresults(). | |
218 */ | |
219 void gaim_notify_searchresults_new_rows(GaimConnection *gc, | |
220 GaimNotifySearchResults *results, | |
221 void *data); | |
222 | |
223 | |
224 /** | |
225 * Adds a stock button that will be displayed in the search results dialog. | |
226 * | |
227 * @param results The search results object. | |
228 * @param type Type of the button. (TODO: Only one button of a given type can be displayed.) | |
229 * @param cb Function that will be called on the click event. | |
230 */ | |
231 void gaim_notify_searchresults_button_add(GaimNotifySearchResults *results, | |
232 GaimNotifySearchButtonType type, | |
233 GaimNotifySearchResultsCallback cb); | |
234 | |
235 | |
236 /** | |
237 * Adds a plain labelled button that will be displayed in the search results dialog. | |
238 * | |
239 * @param results The search results object | |
240 * @param label The label to display | |
241 * @param cb Function that will be called on the click event | |
242 */ | |
243 void gaim_notify_searchresults_button_add_labeled(GaimNotifySearchResults *results, | |
244 const char *label, | |
245 GaimNotifySearchResultsCallback cb); | |
246 | |
247 | |
248 /** | |
249 * Returns a newly created search results object. | |
250 * | |
251 * @return The new search results object. | |
252 */ | |
253 GaimNotifySearchResults *gaim_notify_searchresults_new(void); | |
254 | |
255 /** | |
256 * Returns a newly created search result column object. | |
257 * | |
258 * @param title Title of the column. NOTE: Title will get g_strdup()ed. | |
259 * | |
260 * @return The new search column object. | |
261 */ | |
262 GaimNotifySearchColumn *gaim_notify_searchresults_column_new(const char *title); | |
263 | |
264 /** | |
265 * Adds a new column to the search result object. | |
266 * | |
267 * @param results The result object to which the column will be added. | |
268 * @param column The column that will be added to the result object. | |
269 */ | |
270 void gaim_notify_searchresults_column_add(GaimNotifySearchResults *results, | |
271 GaimNotifySearchColumn *column); | |
272 | |
273 /** | |
274 * Adds a new row of the results to the search results object. | |
275 * | |
276 * @param results The search results object. | |
277 * @param row The row of the results. | |
278 */ | |
279 void gaim_notify_searchresults_row_add(GaimNotifySearchResults *results, | |
280 GList *row); | |
281 | |
282 /** | |
283 * Returns a number of the rows in the search results object. | |
284 * | |
285 * @param results The search results object. | |
286 * | |
287 * @return Number of the result rows. | |
288 */ | |
289 guint gaim_notify_searchresults_get_rows_count(GaimNotifySearchResults *results); | |
290 | |
291 /** | |
292 * Returns a number of the columns in the search results object. | |
293 * | |
294 * @param results The search results object. | |
295 * | |
296 * @return Number of the columns. | |
297 */ | |
298 guint gaim_notify_searchresults_get_columns_count(GaimNotifySearchResults *results); | |
299 | |
300 /** | |
301 * Returns a row of the results from the search results object. | |
302 * | |
303 * @param results The search results object. | |
304 * @param row_id Index of the row to be returned. | |
305 * | |
306 * @return Row of the results. | |
307 */ | |
308 GList *gaim_notify_searchresults_row_get(GaimNotifySearchResults *results, | |
309 unsigned int row_id); | |
310 | |
311 /** | |
312 * Returns a title of the search results object's column. | |
313 * | |
314 * @param results The search results object. | |
315 * @param column_id Index of the column. | |
316 * | |
317 * @return Title of the column. | |
318 */ | |
319 char *gaim_notify_searchresults_column_get_title(GaimNotifySearchResults *results, | |
320 unsigned int column_id); | |
321 | |
322 /*@}*/ | |
323 | |
324 /**************************************************************************/ | |
325 /** @name Notification API */ | |
326 /**************************************************************************/ | |
327 /*@{*/ | |
328 | |
329 /** | |
330 * Displays a notification message to the user. | |
331 * | |
332 * @param handle The plugin or connection handle. | |
333 * @param type The notification type. | |
334 * @param title The title of the message. | |
335 * @param primary The main point of the message. | |
336 * @param secondary The secondary information. | |
337 * @param cb The callback to call when the user closes | |
338 * the notification. | |
339 * @param user_data The data to pass to the callback. | |
340 * | |
341 * @return A UI-specific handle. | |
342 */ | |
343 void *gaim_notify_message(void *handle, GaimNotifyMsgType type, | |
344 const char *title, const char *primary, | |
345 const char *secondary, GaimNotifyCloseCallback cb, | |
346 gpointer user_data); | |
347 | |
348 /** | |
349 * Displays a single e-mail notification to the user. | |
350 * | |
351 * @param handle The plugin or connection handle. | |
352 * @param subject The subject of the e-mail. | |
353 * @param from The from address. | |
354 * @param to The destination address. | |
355 * @param url The URL where the message can be read. | |
356 * @param cb The callback to call when the user closes | |
357 * the notification. | |
358 * @param user_data The data to pass to the callback. | |
359 * | |
360 * @return A UI-specific handle. | |
361 */ | |
362 void *gaim_notify_email(void *handle, const char *subject, | |
363 const char *from, const char *to, | |
364 const char *url, GaimNotifyCloseCallback cb, | |
365 gpointer user_data); | |
366 | |
367 /** | |
368 * Displays a notification for multiple e-mails to the user. | |
369 * | |
370 * @param handle The plugin or connection handle. | |
371 * @param count The number of e-mails. | |
372 * @param detailed @c TRUE if there is information for each e-mail in the | |
373 * arrays. | |
374 * @param subjects The array of subjects. | |
375 * @param froms The array of from addresses. | |
376 * @param tos The array of destination addresses. | |
377 * @param urls The URLs where the messages can be read. | |
378 * @param cb The callback to call when the user closes | |
379 * the notification. | |
380 * @param user_data The data to pass to the callback. | |
381 * | |
382 * @return A UI-specific handle. | |
383 */ | |
384 void *gaim_notify_emails(void *handle, size_t count, gboolean detailed, | |
385 const char **subjects, const char **froms, | |
386 const char **tos, const char **urls, | |
387 GaimNotifyCloseCallback cb, gpointer user_data); | |
388 | |
389 /** | |
390 * Displays a notification with formatted text. | |
391 * | |
392 * The text is essentially a stripped-down format of HTML, the same that | |
393 * IMs may send. | |
394 * | |
395 * @param handle The plugin or connection handle. | |
396 * @param title The title of the message. | |
397 * @param primary The main point of the message. | |
398 * @param secondary The secondary information. | |
399 * @param text The formatted text. | |
400 * @param cb The callback to call when the user closes | |
401 * the notification. | |
402 * @param user_data The data to pass to the callback. | |
403 * | |
404 * @return A UI-specific handle. | |
405 */ | |
406 void *gaim_notify_formatted(void *handle, const char *title, | |
407 const char *primary, const char *secondary, | |
408 const char *text, GaimNotifyCloseCallback cb, gpointer user_data); | |
409 | |
410 /** | |
411 * Displays user information with formatted text, passing information giving | |
412 * the connection and username from which the user information came. | |
413 * | |
414 * The text is essentially a stripped-down format of HTML, the same that | |
415 * IMs may send. | |
416 * | |
15144
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
417 * @param gc The GaimConnection handle associated with the information. |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
418 * @param who The username associated with the information. |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
419 * @param user_info The GaimNotifyUserInfo which contains the information |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
420 * @param cb The callback to call when the user closes |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
421 * the notification. |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
422 * @param user_data The data to pass to the callback. |
14192 | 423 * |
424 * @return A UI-specific handle. | |
425 */ | |
426 void *gaim_notify_userinfo(GaimConnection *gc, const char *who, | |
15144
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
427 GaimNotifyUserInfo *user_info, GaimNotifyCloseCallback cb, |
14192 | 428 gpointer user_data); |
429 | |
430 /** | |
15144
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
431 * Create a new GaimNotifyUserInfo which is suitable for passing to gaim_notify_userinfo() |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
432 * |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
433 * @return A new GaimNotifyUserInfo, which the caller must destroy when done |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
434 */ |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
435 GaimNotifyUserInfo *gaim_notify_user_info_new(); |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
436 |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
437 /** |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
438 * Destroy a GaimNotifyUserInfo |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
439 * |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
440 * @param user_info The GaimNotifyUserInfo |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
441 */ |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
442 void gaim_notify_user_info_destroy(GaimNotifyUserInfo *user_info); |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
443 |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
444 /** |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
445 * Retrieve the array of GaimNotifyUserInfoEntry objects from a GaimNotifyUserInfo |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
446 * |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
447 * @param user_info The GaimNotifyUserInfo |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
448 * |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
449 * @result A GList of GaimNotifyUserInfoEntry objects |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
450 */ |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
451 GList *gaim_notify_user_info_get_entries(GaimNotifyUserInfo *user_info); |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
452 |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
453 /** |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
454 * Create a textual representation of a GaimNotifyUserInfo, separating entries with newline |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
455 * |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
456 * @param user_info The GaimNotifyUserInfo |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
457 * @param newline The separation character |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
458 */ |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
459 char *gaim_notify_user_info_get_text_with_newline(GaimNotifyUserInfo *user_info, const char *newline); |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
460 |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
461 /** |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
462 * Add a label/value pair to a GaimNotifyUserInfo object. GaimNotifyUserInfo keeps track of the order in which pairs are added. |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
463 * |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
464 * @param user_info The GaimNotifyUserInfo |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
465 * @param label A label, which for example might be displayed by a UI with a colon after it ("Status:"). Do not include a colon. |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
466 * If NULL, value will be displayed without a label. |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
467 * @param value The value, which might be displayed by a UI after the label. |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
468 * If NULL, label will still be displayed; the UI should then treat label as independent |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
469 * and not include a colon if it would otherwise. |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
470 */ |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
471 void gaim_notify_user_info_add_pair(GaimNotifyUserInfo *user_info, const char *label, const char *value); |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
472 |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
473 /** |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
474 * Prepend a label/value pair to a GaimNotifyUserInfo object |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
475 * |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
476 * @param user_info The GaimNotifyUserInfo |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
477 * @param label A label, which for example might be displayed by a UI with a colon after it ("Status:"). Do not include a colon. |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
478 * If NULL, value will be displayed without a label. |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
479 * @param value The value, which might be displayed by a UI after the label. |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
480 * If NULL, label will still be displayed; the UI should then treat label as independent |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
481 * and not include a colon if it would otherwise. |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
482 */ |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
483 void gaim_notify_user_info_prepend_pair(GaimNotifyUserInfo *user_info, const char *label, const char *value); |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
484 |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
485 /** |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
486 * Add a section break. A UI might display this as a horizontal line. |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
487 * |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
488 * @param user_info The GaimNotifyUserInfo |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
489 */ |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
490 void gaim_notify_user_info_add_section_break(GaimNotifyUserInfo *user_info); |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
491 |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
492 /** |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
493 * Add a section header. A UI might display this in a different font from other text. |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
494 * |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
495 * @param user_info The GaimNotifyUserInfo |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
496 * @param label The name of the section |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
497 */ |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
498 void gaim_notify_user_info_add_section_header(GaimNotifyUserInfo *user_info, const char *label); |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
499 |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
500 /** |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
501 * Remove the last item which was added to a GaimNotifyUserInfo. This could be used to remove a section header which is not needed. |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
502 */ |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
503 void gaim_notify_user_info_remove_last_item(GaimNotifyUserInfo *user_info); |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
504 |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
505 /** |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
506 * Get the label for a GaimNotifyUserInfoEntry |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
507 * |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
508 * @param user_info_entry The GaimNotifyUserInfoEntry |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
509 * |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
510 * @result The label |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
511 */ |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
512 gchar *gaim_notify_user_info_entry_get_label(GaimNotifyUserInfoEntry *user_info_entry); |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
513 |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
514 /** |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
515 * Get the value for a GaimNotifyUserInfoEntry |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
516 * |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
517 * @param user_info_entry The GaimNotifyUserInfoEntry |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
518 * |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
519 * @result The value |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
520 */ |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
521 gchar *gaim_notify_user_info_entry_get_value(GaimNotifyUserInfoEntry *user_info_entry); |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
522 |
b81e4e44b509
[gaim-migrate @ 17929]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14192
diff
changeset
|
523 /** |
14192 | 524 * Opens a URI or somehow presents it to the user. |
525 * | |
526 * @param handle The plugin or connection handle. | |
527 * @param uri The URI to display or go to. | |
528 * | |
529 * @return A UI-specific handle, if any. This may only be presented if | |
530 * the UI code displays a dialog instead of a webpage, or something | |
531 * similar. | |
532 */ | |
533 void *gaim_notify_uri(void *handle, const char *uri); | |
534 | |
535 /** | |
536 * Closes a notification. | |
537 * | |
538 * This should be used only by the UI operation functions and part of the | |
539 * core. | |
540 * | |
541 * @param type The notification type. | |
542 * @param ui_handle The notification UI handle. | |
543 */ | |
544 void gaim_notify_close(GaimNotifyType type, void *ui_handle); | |
545 | |
546 /** | |
547 * Closes all notifications registered with the specified handle. | |
548 * | |
549 * @param handle The handle. | |
550 */ | |
551 void gaim_notify_close_with_handle(void *handle); | |
552 | |
553 /** | |
554 * A wrapper for gaim_notify_message that displays an information message. | |
555 */ | |
556 #define gaim_notify_info(handle, title, primary, secondary) \ | |
557 gaim_notify_message((handle), GAIM_NOTIFY_MSG_INFO, (title), \ | |
558 (primary), (secondary), NULL, NULL) | |
559 | |
560 /** | |
561 * A wrapper for gaim_notify_message that displays a warning message. | |
562 */ | |
563 #define gaim_notify_warning(handle, title, primary, secondary) \ | |
564 gaim_notify_message((handle), GAIM_NOTIFY_MSG_WARNING, (title), \ | |
565 (primary), (secondary), NULL, NULL) | |
566 | |
567 /** | |
568 * A wrapper for gaim_notify_message that displays an error message. | |
569 */ | |
570 #define gaim_notify_error(handle, title, primary, secondary) \ | |
571 gaim_notify_message((handle), GAIM_NOTIFY_MSG_ERROR, (title), \ | |
572 (primary), (secondary), NULL, NULL) | |
573 | |
574 /*@}*/ | |
575 | |
576 /**************************************************************************/ | |
577 /** @name UI Registration Functions */ | |
578 /**************************************************************************/ | |
579 /*@{*/ | |
580 | |
581 /** | |
582 * Sets the UI operations structure to be used when displaying a | |
583 * notification. | |
584 * | |
585 * @param ops The UI operations structure. | |
586 */ | |
587 void gaim_notify_set_ui_ops(GaimNotifyUiOps *ops); | |
588 | |
589 /** | |
590 * Returns the UI operations structure to be used when displaying a | |
591 * notification. | |
592 * | |
593 * @return The UI operations structure. | |
594 */ | |
595 GaimNotifyUiOps *gaim_notify_get_ui_ops(void); | |
596 | |
597 /*@}*/ | |
598 | |
599 /**************************************************************************/ | |
600 /** @name Notify Subsystem */ | |
601 /**************************************************************************/ | |
602 /*@{*/ | |
603 | |
604 /** | |
605 * Returns the notify subsystem handle. | |
606 * | |
607 * @return The notify subsystem handle. | |
608 */ | |
609 void *gaim_notify_get_handle(void); | |
610 | |
611 /** | |
612 * Initializes the notify subsystem. | |
613 */ | |
614 void gaim_notify_init(void); | |
615 | |
616 /** | |
617 * Uninitializes the notify subsystem. | |
618 */ | |
619 void gaim_notify_uninit(void); | |
620 | |
621 /*@}*/ | |
622 | |
623 | |
624 #ifdef __cplusplus | |
625 } | |
626 #endif | |
627 | |
628 #endif /* _GAIM_NOTIFY_H_ */ |