Mercurial > pidgin
annotate src/notify.c @ 14126:b71bfeaaed58
[gaim-migrate @ 16764]
Add a savedstatus dialog, and a "status" command to bring it up. You an
also select "Saved..." from the dropdown in the buddylist.
The 'Add' and 'Edit' buttons don't do anything yet. They will probably get
to work some time tomorrow.
committer: Tailor Script <tailor@pidgin.im>
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Tue, 15 Aug 2006 06:21:39 +0000 |
parents | 8bda65b88e49 |
children |
rev | line source |
---|---|
5437 | 1 /** |
2 * @file notify.c Notification API | |
3 * @ingroup core | |
4 * | |
5 * gaim | |
6 * | |
8046 | 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. | |
6465
fb64cc87bc96
[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 | |
27 static GaimNotifyUiOps *notify_ui_ops = NULL; | |
28 static GList *handles = NULL; | |
29 | |
30 typedef struct | |
31 { | |
32 GaimNotifyType type; | |
33 void *handle; | |
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
34 void *ui_handle; |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
35 GaimNotifyCloseCallback cb; |
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
36 gpointer cb_user_data; |
5437 | 37 } GaimNotifyInfo; |
38 | |
39 void * | |
6356
ee0044f3e377
[gaim-migrate @ 6855]
Christian Hammond <chipx86@chipx86.com>
parents:
6106
diff
changeset
|
40 gaim_notify_message(void *handle, GaimNotifyMsgType type, |
5437 | 41 const char *title, const char *primary, |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
42 const char *secondary, GaimNotifyCloseCallback cb, gpointer user_data) |
5437 | 43 { |
44 GaimNotifyUiOps *ops; | |
45 | |
46 g_return_val_if_fail(primary != NULL, NULL); | |
47 | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6465
diff
changeset
|
48 ops = gaim_notify_get_ui_ops(); |
5437 | 49 |
50 if (ops != NULL && ops->notify_message != NULL) { | |
51 GaimNotifyInfo *info; | |
52 | |
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
53 info = g_new0(GaimNotifyInfo, 1); |
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
54 info->type = GAIM_NOTIFY_MESSAGE; |
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
55 info->handle = handle; |
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
56 info->ui_handle = ops->notify_message(type, title, primary, |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
57 secondary); |
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
58 info->cb = cb; |
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
59 info->cb_user_data = user_data; |
5437 | 60 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
61 if (info->ui_handle != NULL) { |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
62 handles = g_list_append(handles, info); |
14035 | 63 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
64 return info->ui_handle; |
14035 | 65 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
66 } else { |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
67 if (info->cb != NULL) |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
68 info->cb(info->cb_user_data); |
5437 | 69 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
70 g_free(info); |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
71 |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
72 return NULL; |
14002
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
73 } |
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
74 |
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
75 } else { |
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
76 if (cb != NULL) |
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
77 cb(user_data); |
5437 | 78 } |
79 | |
80 return NULL; | |
81 } | |
82 | |
83 void * | |
84 gaim_notify_email(void *handle, const char *subject, const char *from, | |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
85 const char *to, const char *url, GaimNotifyCloseCallback cb, |
12220
64254fbabc7b
[gaim-migrate @ 14522]
Richard Laager <rlaager@wiktel.com>
parents:
12129
diff
changeset
|
86 gpointer user_data) |
5437 | 87 { |
88 GaimNotifyUiOps *ops; | |
89 | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6465
diff
changeset
|
90 ops = gaim_notify_get_ui_ops(); |
5437 | 91 |
92 if (ops != NULL && ops->notify_email != NULL) { | |
93 GaimNotifyInfo *info; | |
94 | |
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
95 info = g_new0(GaimNotifyInfo, 1); |
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
96 info->type = GAIM_NOTIFY_EMAIL; |
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
97 info->handle = handle; |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
98 info->ui_handle = ops->notify_email(handle, subject, from, to, url); |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
99 info->cb = cb; |
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
100 info->cb_user_data = user_data; |
5437 | 101 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
102 if (info->ui_handle != NULL) { |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
103 handles = g_list_append(handles, info); |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
104 |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
105 return info->ui_handle; |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
106 |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
107 } else { |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
108 if (info->cb != NULL) |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
109 info->cb(info->cb_user_data); |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
110 |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
111 g_free(info); |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
112 |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
113 return NULL; |
14035 | 114 } |
14002
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
115 } else { |
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
116 if (cb != NULL) |
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
117 cb(user_data); |
5437 | 118 } |
119 | |
120 return NULL; | |
121 } | |
122 | |
123 void * | |
5522
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
124 gaim_notify_emails(void *handle, size_t count, gboolean detailed, |
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
125 const char **subjects, const char **froms, |
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
126 const char **tos, const char **urls, |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
127 GaimNotifyCloseCallback cb, gpointer user_data) |
5437 | 128 { |
129 GaimNotifyUiOps *ops; | |
130 | |
131 g_return_val_if_fail(count != 0, NULL); | |
132 | |
5522
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
133 if (count == 1) { |
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
134 return gaim_notify_email(handle, |
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
135 (subjects == NULL ? NULL : *subjects), |
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
136 (froms == NULL ? NULL : *froms), |
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
137 (tos == NULL ? NULL : *tos), |
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
138 (urls == NULL ? NULL : *urls), |
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
139 cb, user_data); |
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
140 } |
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
141 |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6465
diff
changeset
|
142 ops = gaim_notify_get_ui_ops(); |
5437 | 143 |
144 if (ops != NULL && ops->notify_emails != NULL) { | |
145 GaimNotifyInfo *info; | |
146 | |
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
147 info = g_new0(GaimNotifyInfo, 1); |
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
148 info->type = GAIM_NOTIFY_EMAILS; |
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
149 info->handle = handle; |
12647
852df2d9d4f8
[gaim-migrate @ 14985]
Richard Laager <rlaager@wiktel.com>
parents:
12624
diff
changeset
|
150 info->ui_handle = ops->notify_emails(handle, count, detailed, subjects, |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
151 froms, tos, urls); |
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
152 info->cb = cb; |
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
153 info->cb_user_data = user_data; |
5437 | 154 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
155 if (info->ui_handle != NULL) { |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
156 handles = g_list_append(handles, info); |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
157 |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
158 return info->ui_handle; |
5437 | 159 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
160 } else { |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
161 if (info->cb != NULL) |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
162 info->cb(info->cb_user_data); |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
163 |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
164 g_free(info); |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
165 |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
166 return NULL; |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
167 } |
14002
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
168 |
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
169 } else { |
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
170 if (cb != NULL) |
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
171 cb(user_data); |
5437 | 172 } |
173 | |
174 return NULL; | |
175 } | |
176 | |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
177 void * |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
178 gaim_notify_formatted(void *handle, const char *title, const char *primary, |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
179 const char *secondary, const char *text, |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
180 GaimNotifyCloseCallback cb, gpointer user_data) |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
181 { |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
182 GaimNotifyUiOps *ops; |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
183 |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
184 g_return_val_if_fail(primary != NULL, NULL); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
185 |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6465
diff
changeset
|
186 ops = gaim_notify_get_ui_ops(); |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
187 |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
188 if (ops != NULL && ops->notify_formatted != NULL) { |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
189 GaimNotifyInfo *info; |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
190 |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
191 info = g_new0(GaimNotifyInfo, 1); |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
192 info->type = GAIM_NOTIFY_FORMATTED; |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
193 info->handle = handle; |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
194 info->ui_handle = ops->notify_formatted(title, primary, secondary, text); |
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
195 info->cb = cb; |
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
196 info->cb_user_data = user_data; |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
197 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
198 if (info->ui_handle != NULL) { |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
199 handles = g_list_append(handles, info); |
14035 | 200 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
201 return info->ui_handle; |
14035 | 202 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
203 } else { |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
204 if (info->cb != NULL) |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
205 info->cb(info->cb_user_data); |
14035 | 206 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
207 g_free(info); |
14035 | 208 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
209 return NULL; |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
210 } |
14002
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
211 |
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
212 } else { |
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
213 if (cb != NULL) |
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
214 cb(user_data); |
6381
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
215 } |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
216 |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
217 return NULL; |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
218 } |
e006685f75aa
[gaim-migrate @ 6886]
Christian Hammond <chipx86@chipx86.com>
parents:
6356
diff
changeset
|
219 |
10439 | 220 void * |
221 gaim_notify_searchresults(GaimConnection *gc, const char *title, | |
222 const char *primary, const char *secondary, | |
13640 | 223 GaimNotifySearchResults *results, GaimNotifyCloseCallback cb, |
224 gpointer user_data) | |
10439 | 225 { |
226 GaimNotifyUiOps *ops; | |
227 | |
228 ops = gaim_notify_get_ui_ops(); | |
229 | |
230 if (ops != NULL && ops->notify_searchresults != NULL) { | |
231 GaimNotifyInfo *info; | |
232 | |
233 info = g_new0(GaimNotifyInfo, 1); | |
234 info->type = GAIM_NOTIFY_SEARCHRESULTS; | |
235 info->handle = gc; | |
236 info->ui_handle = ops->notify_searchresults(gc, title, primary, | |
13640 | 237 secondary, results, user_data); |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
238 info->cb = cb; |
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
239 info->cb_user_data = user_data; |
10439 | 240 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
241 if (info->ui_handle != NULL) { |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
242 handles = g_list_append(handles, info); |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
243 |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
244 return info->ui_handle; |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
245 |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
246 } else { |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
247 if (info->cb != NULL) |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
248 info->cb(info->cb_user_data); |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
249 |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
250 g_free(info); |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
251 |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
252 return NULL; |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
253 } |
10439 | 254 |
14002
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
255 } else { |
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
256 if (cb != NULL) |
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
257 cb(user_data); |
10439 | 258 } |
259 | |
260 return NULL; | |
261 } | |
262 | |
11359 | 263 void |
264 gaim_notify_searchresults_free(GaimNotifySearchResults *results) | |
265 { | |
12624
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
266 GList *l; |
11359 | 267 |
268 g_return_if_fail(results != NULL); | |
269 | |
12624
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
270 for (l = results->buttons; l; l = g_list_delete_link(l, l)) { |
11359 | 271 GaimNotifySearchButton *button = l->data; |
13976
6a5aaf46bd52
[gaim-migrate @ 16534]
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
13640
diff
changeset
|
272 g_free(button->label); |
11359 | 273 g_free(button); |
274 } | |
275 | |
12624
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
276 for (l = results->rows; l; l = g_list_delete_link(l, l)) { |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
277 GList *row = l->data; |
14035 | 278 g_list_foreach(row, (GFunc)g_free, NULL); |
279 g_list_free(row); | |
12624
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
280 } |
11359 | 281 |
12624
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
282 for (l = results->columns; l; l = g_list_delete_link(l, l)) { |
11359 | 283 GaimNotifySearchColumn *column = l->data; |
284 g_free(column->title); | |
285 g_free(column); | |
286 } | |
12624
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
287 |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
288 g_free(results); |
11359 | 289 } |
290 | |
291 void | |
292 gaim_notify_searchresults_new_rows(GaimConnection *gc, | |
293 GaimNotifySearchResults *results, | |
13640 | 294 void *data) |
11359 | 295 { |
296 GaimNotifyUiOps *ops; | |
297 | |
298 ops = gaim_notify_get_ui_ops(); | |
299 | |
300 if (ops != NULL && ops->notify_searchresults != NULL) { | |
13640 | 301 ops->notify_searchresults_new_rows(gc, results, data); |
11359 | 302 } |
303 } | |
304 | |
305 void | |
306 gaim_notify_searchresults_button_add(GaimNotifySearchResults *results, | |
307 GaimNotifySearchButtonType type, | |
308 GaimNotifySearchResultsCallback cb) | |
309 { | |
310 GaimNotifySearchButton *button; | |
311 | |
312 g_return_if_fail(results != NULL); | |
313 g_return_if_fail(cb != NULL); | |
314 | |
315 button = g_new0(GaimNotifySearchButton, 1); | |
316 button->callback = cb; | |
317 button->type = type; | |
318 | |
319 results->buttons = g_list_append(results->buttons, button); | |
320 } | |
321 | |
12624
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
322 |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
323 void |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
324 gaim_notify_searchresults_button_add_labeled(GaimNotifySearchResults *results, |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
325 const char *label, |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
326 GaimNotifySearchResultsCallback cb) { |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
327 GaimNotifySearchButton *button; |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
328 |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
329 g_return_if_fail(results != NULL); |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
330 g_return_if_fail(cb != NULL); |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
331 g_return_if_fail(label != NULL); |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
332 g_return_if_fail(*label != '\0'); |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
333 |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
334 button = g_new0(GaimNotifySearchButton, 1); |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
335 button->callback = cb; |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
336 button->type = GAIM_NOTIFY_BUTTON_LABELED; |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
337 button->label = g_strdup(label); |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
338 |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
339 results->buttons = g_list_append(results->buttons, button); |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
340 } |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
341 |
851b0bd7eb52
[gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents:
12257
diff
changeset
|
342 |
11359 | 343 GaimNotifySearchResults * |
344 gaim_notify_searchresults_new() | |
345 { | |
346 GaimNotifySearchResults *rs = g_new0(GaimNotifySearchResults, 1); | |
347 | |
348 return rs; | |
349 } | |
350 | |
351 void | |
352 gaim_notify_searchresults_column_add(GaimNotifySearchResults *results, | |
353 GaimNotifySearchColumn *column) | |
354 { | |
355 g_return_if_fail(results != NULL); | |
356 g_return_if_fail(column != NULL); | |
357 | |
358 results->columns = g_list_append(results->columns, column); | |
359 } | |
360 | |
361 void gaim_notify_searchresults_row_add(GaimNotifySearchResults *results, | |
362 GList *row) | |
363 { | |
364 g_return_if_fail(results != NULL); | |
365 g_return_if_fail(row != NULL); | |
366 | |
367 results->rows = g_list_append(results->rows, row); | |
368 } | |
369 | |
370 GaimNotifySearchColumn * | |
371 gaim_notify_searchresults_column_new(const char *title) | |
372 { | |
373 GaimNotifySearchColumn *sc; | |
374 | |
375 g_return_val_if_fail(title != NULL, NULL); | |
376 | |
377 sc = g_new0(GaimNotifySearchColumn, 1); | |
378 sc->title = g_strdup(title); | |
379 | |
380 return sc; | |
381 } | |
382 | |
12257
ca27de274225
[gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents:
12242
diff
changeset
|
383 guint |
11359 | 384 gaim_notify_searchresults_get_columns_count(GaimNotifySearchResults *results) |
385 { | |
12257
ca27de274225
[gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents:
12242
diff
changeset
|
386 g_return_val_if_fail(results != NULL, 0); |
11359 | 387 |
388 return g_list_length(results->columns); | |
389 } | |
390 | |
12257
ca27de274225
[gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents:
12242
diff
changeset
|
391 guint |
11359 | 392 gaim_notify_searchresults_get_rows_count(GaimNotifySearchResults *results) |
393 { | |
12257
ca27de274225
[gaim-migrate @ 14559]
Richard Laager <rlaager@wiktel.com>
parents:
12242
diff
changeset
|
394 g_return_val_if_fail(results != NULL, 0); |
11359 | 395 |
396 return g_list_length(results->rows); | |
397 } | |
398 | |
399 char * | |
400 gaim_notify_searchresults_column_get_title(GaimNotifySearchResults *results, | |
401 unsigned int column_id) | |
402 { | |
403 g_return_val_if_fail(results != NULL, NULL); | |
404 | |
405 return ((GaimNotifySearchColumn *)g_list_nth_data(results->columns, column_id))->title; | |
406 } | |
407 | |
408 GList * | |
409 gaim_notify_searchresults_row_get(GaimNotifySearchResults *results, | |
410 unsigned int row_id) | |
411 { | |
412 g_return_val_if_fail(results != NULL, NULL); | |
413 | |
414 return g_list_nth_data(results->rows, row_id); | |
415 } | |
416 | |
10439 | 417 void * |
11531
bf763a1b2454
[gaim-migrate @ 13780]
Luke Schierer <lschiere@pidgin.im>
parents:
11359
diff
changeset
|
418 gaim_notify_userinfo(GaimConnection *gc, const char *who, |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
419 const char *text, GaimNotifyCloseCallback cb, gpointer user_data) |
9797 | 420 { |
421 GaimNotifyUiOps *ops; | |
11531
bf763a1b2454
[gaim-migrate @ 13780]
Luke Schierer <lschiere@pidgin.im>
parents:
11359
diff
changeset
|
422 |
11533
c9b815aeddc1
[gaim-migrate @ 13782]
Richard Laager <rlaager@wiktel.com>
parents:
11531
diff
changeset
|
423 g_return_val_if_fail(who != NULL, NULL); |
9797 | 424 |
425 ops = gaim_notify_get_ui_ops(); | |
426 | |
427 if (ops != NULL && ops->notify_userinfo != NULL) { | |
428 GaimNotifyInfo *info; | |
12129
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
429 char *infotext = g_strdup(text); |
9797 | 430 |
431 info = g_new0(GaimNotifyInfo, 1); | |
432 info->type = GAIM_NOTIFY_USERINFO; | |
433 info->handle = gc; | |
12129
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
434 |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
435 gaim_signal_emit(gaim_notify_get_handle(), "displaying-userinfo", |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
436 gaim_connection_get_account(gc), who, &infotext); |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
437 |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
438 info->ui_handle = ops->notify_userinfo(gc, who, infotext); |
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
439 info->cb = cb; |
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
440 info->cb_user_data = user_data; |
9797 | 441 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
442 g_free(infotext); |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
443 |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
444 if (info->ui_handle != NULL) { |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
445 handles = g_list_append(handles, info); |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
446 |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
447 return info->ui_handle; |
9797 | 448 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
449 } else { |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
450 if (info->cb != NULL) |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
451 info->cb(info->cb_user_data); |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
452 |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
453 g_free(info); |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
454 |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
455 return NULL; |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
456 } |
14002
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
457 |
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
458 } else { |
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
459 if (cb != NULL) |
fccb5cfa33b9
[gaim-migrate @ 16587]
Evan Schoenberg <evan.s@dreskin.net>
parents:
14001
diff
changeset
|
460 cb(user_data); |
9797 | 461 } |
462 | |
463 return NULL; | |
464 } | |
465 | |
6465
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
466 void * |
10240
95ca0db2d01d
[gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10209
diff
changeset
|
467 gaim_notify_uri(void *handle, const char *uri) |
6465
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
468 { |
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
469 GaimNotifyUiOps *ops; |
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
470 |
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
471 g_return_val_if_fail(uri != NULL, NULL); |
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
472 |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6465
diff
changeset
|
473 ops = gaim_notify_get_ui_ops(); |
6465
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
474 |
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
475 if (ops != NULL && ops->notify_uri != NULL) { |
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
476 GaimNotifyInfo *info; |
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
477 |
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
478 info = g_new0(GaimNotifyInfo, 1); |
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
479 info->type = GAIM_NOTIFY_URI; |
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
480 info->handle = handle; |
10240
95ca0db2d01d
[gaim-migrate @ 11377]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
10209
diff
changeset
|
481 info->ui_handle = ops->notify_uri(uri); |
6465
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
482 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
483 if (info->ui_handle != NULL) { |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
484 handles = g_list_append(handles, info); |
14035 | 485 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
486 return info->ui_handle; |
6465
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
487 |
14001
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
488 } else { |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
489 g_free(info); |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
490 |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
491 return NULL; |
66d01a547603
[gaim-migrate @ 16586]
Evan Schoenberg <evan.s@dreskin.net>
parents:
13976
diff
changeset
|
492 } |
6465
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
493 } |
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
494 |
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
495 return NULL; |
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
496 } |
fb64cc87bc96
[gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents:
6381
diff
changeset
|
497 |
5437 | 498 void |
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
499 gaim_notify_close(GaimNotifyType type, void *ui_handle) |
5437 | 500 { |
501 GList *l; | |
502 GaimNotifyUiOps *ops; | |
503 | |
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
504 g_return_if_fail(ui_handle != NULL); |
5437 | 505 |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6465
diff
changeset
|
506 ops = gaim_notify_get_ui_ops(); |
5437 | 507 |
508 for (l = handles; l != NULL; l = l->next) { | |
509 GaimNotifyInfo *info = l->data; | |
510 | |
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
511 if (info->ui_handle == ui_handle) { |
5437 | 512 handles = g_list_remove(handles, info); |
513 | |
514 if (ops != NULL && ops->close_notify != NULL) | |
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
515 ops->close_notify(info->type, ui_handle); |
5437 | 516 |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
517 if (info->cb != NULL) |
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
518 info->cb(info->cb_user_data); |
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
519 |
5437 | 520 g_free(info); |
521 | |
522 break; | |
523 } | |
524 } | |
525 } | |
526 | |
527 void | |
528 gaim_notify_close_with_handle(void *handle) | |
529 { | |
530 GList *l, *l_next; | |
531 GaimNotifyUiOps *ops; | |
532 | |
533 g_return_if_fail(handle != NULL); | |
534 | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6465
diff
changeset
|
535 ops = gaim_notify_get_ui_ops(); |
5437 | 536 |
537 for (l = handles; l != NULL; l = l_next) { | |
538 GaimNotifyInfo *info = l->data; | |
539 | |
540 l_next = l->next; | |
541 | |
542 if (info->handle == handle) { | |
543 handles = g_list_remove(handles, info); | |
544 | |
545 if (ops != NULL && ops->close_notify != NULL) | |
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
546 ops->close_notify(info->type, info->ui_handle); |
5437 | 547 |
12242
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
548 if (info->cb != NULL) |
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
549 info->cb(info->cb_user_data); |
976677e67239
[gaim-migrate @ 14544]
Richard Laager <rlaager@wiktel.com>
parents:
12220
diff
changeset
|
550 |
5437 | 551 g_free(info); |
552 } | |
553 } | |
554 } | |
555 | |
556 void | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6465
diff
changeset
|
557 gaim_notify_set_ui_ops(GaimNotifyUiOps *ops) |
5437 | 558 { |
559 notify_ui_ops = ops; | |
560 } | |
561 | |
562 GaimNotifyUiOps * | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6465
diff
changeset
|
563 gaim_notify_get_ui_ops(void) |
5437 | 564 { |
565 return notify_ui_ops; | |
566 } | |
12129
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
567 |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
568 void * |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
569 gaim_notify_get_handle(void) |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
570 { |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
571 static int handle; |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
572 |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
573 return &handle; |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
574 } |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
575 |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
576 void |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
577 gaim_notify_init(void) |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
578 { |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
579 gpointer handle = gaim_notify_get_handle(); |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
580 |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
581 gaim_signal_register(handle, "displaying-userinfo", |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
582 gaim_marshal_VOID__POINTER_POINTER_POINTER, NULL, 3, |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
583 gaim_value_new(GAIM_TYPE_SUBTYPE, |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
584 GAIM_SUBTYPE_ACCOUNT), |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
585 gaim_value_new(GAIM_TYPE_STRING), |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
586 gaim_value_new_outgoing(GAIM_TYPE_STRING)); |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
587 } |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
588 |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
589 void |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
590 gaim_notify_uninit(void) |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
591 { |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
592 gaim_signals_unregister_by_instance(gaim_notify_get_handle()); |
216988c717da
[gaim-migrate @ 14429]
Richard Laager <rlaager@wiktel.com>
parents:
11533
diff
changeset
|
593 } |