Mercurial > pidgin
annotate src/notify.c @ 6016:1e4a574bb46d
[gaim-migrate @ 6466]
Removed move of the #if 0'ed code from gtkprefs.c. I think Chip or
Nathan or whoever left this here so that they could go back later and
make sure all the old #if 0'ed stuff works correctly with the new prefs,
so to reassure whoever did that, I've been verifying that all these prefs
work as they should.
Made the "use server alias" checkbox instantly affect conversation titles.
Fixed a crash caused by trying to enable buddy icon animation for static
images which happened after toggling the "enable buddy icon animation"
preference to the O-N positiO-N.
All you people need to hop on the bug fix bandwagon. It's happy hour.
committer: Tailor Script <tailor@pidgin.im>
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Fri, 04 Jul 2003 19:12:06 +0000 |
| parents | a3e6a5ef49b5 |
| children | 99f4bbeb27bc |
| rev | line source |
|---|---|
| 5437 | 1 /** |
| 2 * @file notify.c Notification API | |
| 3 * @ingroup core | |
| 4 * | |
| 5 * gaim | |
| 6 * | |
| 7 * Copyright (C) 2003 Christian Hammond <chipx86@gnupdate.org> | |
| 8 * | |
| 9 * This program is free software; you can redistribute it and/or modify | |
| 10 * it under the terms of the GNU General Public License as published by | |
| 11 * the Free Software Foundation; either version 2 of the License, or | |
| 12 * (at your option) any later version. | |
| 13 * | |
| 14 * This program is distributed in the hope that it will be useful, | |
| 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 17 * GNU General Public License for more details. | |
| 18 * | |
| 19 * You should have received a copy of the GNU General Public License | |
| 20 * along with this program; if not, write to the Free Software | |
| 21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 22 */ | |
| 23 #include "notify.h" | |
| 24 | |
| 25 static GaimNotifyUiOps *notify_ui_ops = NULL; | |
| 26 static GList *handles = NULL; | |
| 27 | |
| 28 typedef struct | |
| 29 { | |
| 30 GaimNotifyType type; | |
| 31 void *handle; | |
|
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
32 void *ui_handle; |
| 5437 | 33 |
| 34 } GaimNotifyInfo; | |
| 35 | |
| 36 void * | |
| 37 gaim_notify_message(void *handle, GaimNotifyType type, | |
| 38 const char *title, const char *primary, | |
| 39 const char *secondary, GCallback cb, void *user_data) | |
| 40 { | |
| 41 GaimNotifyUiOps *ops; | |
| 42 | |
| 43 g_return_val_if_fail(primary != NULL, NULL); | |
| 44 | |
| 45 ops = gaim_get_notify_ui_ops(); | |
| 46 | |
| 47 if (ops != NULL && ops->notify_message != NULL) { | |
| 48 GaimNotifyInfo *info; | |
| 49 | |
|
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
50 info = g_new0(GaimNotifyInfo, 1); |
|
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
51 info->type = GAIM_NOTIFY_MESSAGE; |
|
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
52 info->handle = handle; |
|
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
53 info->ui_handle = ops->notify_message(type, title, primary, |
|
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
54 secondary, cb, user_data); |
| 5437 | 55 |
| 56 handles = g_list_append(handles, info); | |
| 57 | |
|
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
58 return info->ui_handle; |
| 5437 | 59 } |
| 60 | |
| 61 return NULL; | |
| 62 } | |
| 63 | |
| 64 void * | |
| 65 gaim_notify_email(void *handle, const char *subject, const char *from, | |
| 66 const char *to, const char *url, GCallback cb, | |
| 67 void *user_data) | |
| 68 { | |
| 69 GaimNotifyUiOps *ops; | |
| 70 | |
| 71 ops = gaim_get_notify_ui_ops(); | |
| 72 | |
| 73 if (ops != NULL && ops->notify_email != NULL) { | |
| 74 GaimNotifyInfo *info; | |
| 75 | |
|
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
76 info = g_new0(GaimNotifyInfo, 1); |
|
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
77 info->type = GAIM_NOTIFY_EMAIL; |
|
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
78 info->handle = handle; |
|
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
79 info->ui_handle = ops->notify_email(subject, from, to, url, cb, |
|
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
80 user_data); |
| 5437 | 81 |
| 82 handles = g_list_append(handles, info); | |
| 83 | |
|
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
84 return info->ui_handle; |
| 5437 | 85 } |
| 86 | |
| 87 return NULL; | |
| 88 } | |
| 89 | |
| 90 void * | |
|
5522
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
91 gaim_notify_emails(void *handle, size_t count, gboolean detailed, |
|
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
92 const char **subjects, const char **froms, |
|
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
93 const char **tos, const char **urls, |
| 5437 | 94 GCallback cb, void *user_data) |
| 95 { | |
| 96 GaimNotifyUiOps *ops; | |
| 97 | |
| 98 g_return_val_if_fail(count != 0, NULL); | |
| 99 | |
|
5522
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
100 if (count == 1) { |
|
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
101 return gaim_notify_email(handle, |
|
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
102 (subjects == NULL ? NULL : *subjects), |
|
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
103 (froms == NULL ? NULL : *froms), |
|
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
104 (tos == NULL ? NULL : *tos), |
|
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
105 (urls == NULL ? NULL : *urls), |
|
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
106 cb, user_data); |
|
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
107 } |
|
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
108 |
| 5437 | 109 ops = gaim_get_notify_ui_ops(); |
| 110 | |
| 111 if (ops != NULL && ops->notify_emails != NULL) { | |
| 112 GaimNotifyInfo *info; | |
| 113 | |
|
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
114 info = g_new0(GaimNotifyInfo, 1); |
|
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
115 info->type = GAIM_NOTIFY_EMAILS; |
|
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
116 info->handle = handle; |
|
5522
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
117 info->ui_handle = ops->notify_emails(count, detailed, subjects, |
|
a3e6a5ef49b5
[gaim-migrate @ 5922]
Christian Hammond <chipx86@chipx86.com>
parents:
5476
diff
changeset
|
118 froms, tos, urls, cb, user_data); |
| 5437 | 119 |
| 120 handles = g_list_append(handles, info); | |
| 121 | |
|
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
122 return info->ui_handle; |
| 5437 | 123 } |
| 124 | |
| 125 return NULL; | |
| 126 } | |
| 127 | |
| 128 void | |
|
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
129 gaim_notify_close(GaimNotifyType type, void *ui_handle) |
| 5437 | 130 { |
| 131 GList *l; | |
| 132 GaimNotifyUiOps *ops; | |
| 133 | |
|
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
134 g_return_if_fail(ui_handle != NULL); |
| 5437 | 135 |
| 136 ops = gaim_get_notify_ui_ops(); | |
| 137 | |
| 138 for (l = handles; l != NULL; l = l->next) { | |
| 139 GaimNotifyInfo *info = l->data; | |
| 140 | |
|
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
141 if (info->ui_handle == ui_handle) { |
| 5437 | 142 handles = g_list_remove(handles, info); |
| 143 | |
| 144 if (ops != NULL && ops->close_notify != NULL) | |
|
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
145 ops->close_notify(info->type, ui_handle); |
| 5437 | 146 |
| 147 g_free(info); | |
| 148 | |
| 149 break; | |
| 150 } | |
| 151 } | |
| 152 } | |
| 153 | |
| 154 void | |
| 155 gaim_notify_close_with_handle(void *handle) | |
| 156 { | |
| 157 GList *l, *l_next; | |
| 158 GaimNotifyUiOps *ops; | |
| 159 | |
| 160 g_return_if_fail(handle != NULL); | |
| 161 | |
| 162 ops = gaim_get_notify_ui_ops(); | |
| 163 | |
| 164 for (l = handles; l != NULL; l = l_next) { | |
| 165 GaimNotifyInfo *info = l->data; | |
| 166 | |
| 167 l_next = l->next; | |
| 168 | |
| 169 if (info->handle == handle) { | |
| 170 handles = g_list_remove(handles, info); | |
| 171 | |
| 172 if (ops != NULL && ops->close_notify != NULL) | |
|
5476
9bcd8cd625ae
[gaim-migrate @ 5872]
Christian Hammond <chipx86@chipx86.com>
parents:
5437
diff
changeset
|
173 ops->close_notify(info->type, info->ui_handle); |
| 5437 | 174 |
| 175 g_free(info); | |
| 176 } | |
| 177 } | |
| 178 } | |
| 179 | |
| 180 void | |
| 181 gaim_set_notify_ui_ops(GaimNotifyUiOps *ops) | |
| 182 { | |
| 183 notify_ui_ops = ops; | |
| 184 } | |
| 185 | |
| 186 GaimNotifyUiOps * | |
| 187 gaim_get_notify_ui_ops(void) | |
| 188 { | |
| 189 return notify_ui_ops; | |
| 190 } | |
| 191 |
