Mercurial > pidgin.yaz
annotate src/privacy.c @ 7988:d9e831876c28
[gaim-migrate @ 8665]
Here's my best attempt to rip WYSIWYG editing out of gaim, kicking and
screaming all the way.
We'll be releasing 0.75 in the very near future, once the translators are
alerted, and any bugs from this dissection show themselves.
committer: Tailor Script <tailor@pidgin.im>
author | Nathan Walp <nwalp@pidgin.im> |
---|---|
date | Sun, 04 Jan 2004 06:59:09 +0000 |
parents | 48f31501c3c1 |
children | a13118091bc7 |
rev | line source |
---|---|
6371 | 1 /** |
2 * gaim | |
3 * | |
4 * Copyright (C) 2003, Christian Hammond <chipx86@gnupdate.org> | |
5 * | |
6 * This program is free software; you can redistribute it and/or modify | |
7 * it under the terms of the GNU General Public License as published by | |
8 * the Free Software Foundation; either version 2 of the License, or | |
9 * (at your option) any later version. | |
10 * | |
11 * This program is distributed in the hope that it will be useful, | |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 * GNU General Public License for more details. | |
15 * | |
16 * You should have received a copy of the GNU General Public License | |
17 * along with this program; if not, write to the Free Software | |
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
19 */ | |
20 #include "internal.h" | |
21 | |
22 #include "account.h" | |
6375
72023626d5b8
[gaim-migrate @ 6880]
Christian Hammond <chipx86@chipx86.com>
parents:
6373
diff
changeset
|
23 #include "debug.h" |
6371 | 24 #include "privacy.h" |
25 #include "server.h" | |
26 #include "util.h" | |
27 | |
28 static GaimPrivacyUiOps *privacy_ops = NULL; | |
29 | |
30 gboolean | |
6378
01289157fc37
[gaim-migrate @ 6883]
Christian Hammond <chipx86@chipx86.com>
parents:
6375
diff
changeset
|
31 gaim_privacy_permit_add(GaimAccount *account, const char *who, |
01289157fc37
[gaim-migrate @ 6883]
Christian Hammond <chipx86@chipx86.com>
parents:
6375
diff
changeset
|
32 gboolean local_only) |
6371 | 33 { |
34 GSList *l; | |
35 char *name; | |
36 | |
37 g_return_val_if_fail(account != NULL, FALSE); | |
38 g_return_val_if_fail(who != NULL, FALSE); | |
39 | |
7261 | 40 name = g_strdup(gaim_normalize(account, who)); |
6371 | 41 |
42 for (l = account->permit; l != NULL; l = l->next) { | |
7261 | 43 if (!gaim_utf8_strcasecmp(name, gaim_normalize(account, (char *)l->data))) |
6371 | 44 break; |
45 } | |
46 | |
47 g_free(name); | |
48 | |
49 if (l != NULL) | |
50 return FALSE; | |
51 | |
52 account->permit = g_slist_append(account->permit, g_strdup(who)); | |
53 | |
6378
01289157fc37
[gaim-migrate @ 6883]
Christian Hammond <chipx86@chipx86.com>
parents:
6375
diff
changeset
|
54 if (!local_only && gaim_account_is_connected(account)) |
6373
4d61775a5741
[gaim-migrate @ 6878]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
55 serv_add_permit(gaim_account_get_connection(account), who); |
4d61775a5741
[gaim-migrate @ 6878]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
56 |
6371 | 57 gaim_blist_save(); |
58 | |
59 if (privacy_ops != NULL && privacy_ops->permit_added != NULL) | |
60 privacy_ops->permit_added(account, who); | |
61 | |
62 return TRUE; | |
63 } | |
64 | |
65 gboolean | |
6378
01289157fc37
[gaim-migrate @ 6883]
Christian Hammond <chipx86@chipx86.com>
parents:
6375
diff
changeset
|
66 gaim_privacy_permit_remove(GaimAccount *account, const char *who, |
01289157fc37
[gaim-migrate @ 6883]
Christian Hammond <chipx86@chipx86.com>
parents:
6375
diff
changeset
|
67 gboolean local_only) |
6371 | 68 { |
69 GSList *l; | |
70 char *name; | |
71 | |
72 g_return_val_if_fail(account != NULL, FALSE); | |
73 g_return_val_if_fail(who != NULL, FALSE); | |
74 | |
7261 | 75 name = g_strdup(gaim_normalize(account, who)); |
6371 | 76 |
77 for (l = account->permit; l != NULL; l = l->next) { | |
7261 | 78 if (!gaim_utf8_strcasecmp(name, gaim_normalize(account, (char *)l->data))) |
6371 | 79 break; |
80 } | |
81 | |
82 g_free(name); | |
83 | |
84 if (l == NULL) | |
85 return FALSE; | |
86 | |
87 account->permit = g_slist_remove(account->permit, l->data); | |
88 g_free(l->data); | |
89 | |
6378
01289157fc37
[gaim-migrate @ 6883]
Christian Hammond <chipx86@chipx86.com>
parents:
6375
diff
changeset
|
90 if (!local_only && gaim_account_is_connected(account)) |
7581 | 91 serv_rem_permit(gaim_account_get_connection(account), who); |
6373
4d61775a5741
[gaim-migrate @ 6878]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
92 |
6371 | 93 gaim_blist_save(); |
94 | |
95 if (privacy_ops != NULL && privacy_ops->permit_removed != NULL) | |
96 privacy_ops->permit_removed(account, who); | |
97 | |
98 return TRUE; | |
99 } | |
100 | |
101 gboolean | |
6378
01289157fc37
[gaim-migrate @ 6883]
Christian Hammond <chipx86@chipx86.com>
parents:
6375
diff
changeset
|
102 gaim_privacy_deny_add(GaimAccount *account, const char *who, |
01289157fc37
[gaim-migrate @ 6883]
Christian Hammond <chipx86@chipx86.com>
parents:
6375
diff
changeset
|
103 gboolean local_only) |
6371 | 104 { |
105 GSList *l; | |
106 char *name; | |
107 | |
108 g_return_val_if_fail(account != NULL, FALSE); | |
109 g_return_val_if_fail(who != NULL, FALSE); | |
110 | |
7261 | 111 name = g_strdup(gaim_normalize(account, who)); |
6371 | 112 |
113 for (l = account->deny; l != NULL; l = l->next) { | |
7261 | 114 if (!gaim_utf8_strcasecmp(name, gaim_normalize(account, (char *)l->data))) |
6371 | 115 break; |
116 } | |
117 | |
118 g_free(name); | |
119 | |
120 if (l != NULL) | |
121 return FALSE; | |
122 | |
123 account->deny = g_slist_append(account->deny, g_strdup(who)); | |
124 | |
6378
01289157fc37
[gaim-migrate @ 6883]
Christian Hammond <chipx86@chipx86.com>
parents:
6375
diff
changeset
|
125 if (!local_only && gaim_account_is_connected(account)) |
6373
4d61775a5741
[gaim-migrate @ 6878]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
126 serv_add_deny(gaim_account_get_connection(account), who); |
4d61775a5741
[gaim-migrate @ 6878]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
127 |
6371 | 128 gaim_blist_save(); |
129 | |
130 if (privacy_ops != NULL && privacy_ops->deny_added != NULL) | |
131 privacy_ops->deny_added(account, who); | |
132 | |
133 return TRUE; | |
134 } | |
135 | |
136 gboolean | |
6378
01289157fc37
[gaim-migrate @ 6883]
Christian Hammond <chipx86@chipx86.com>
parents:
6375
diff
changeset
|
137 gaim_privacy_deny_remove(GaimAccount *account, const char *who, |
01289157fc37
[gaim-migrate @ 6883]
Christian Hammond <chipx86@chipx86.com>
parents:
6375
diff
changeset
|
138 gboolean local_only) |
6371 | 139 { |
140 GSList *l; | |
141 char *name; | |
142 | |
143 g_return_val_if_fail(account != NULL, FALSE); | |
144 g_return_val_if_fail(who != NULL, FALSE); | |
145 | |
7261 | 146 name = g_strdup(gaim_normalize(account, who)); |
6371 | 147 |
148 for (l = account->deny; l != NULL; l = l->next) { | |
7261 | 149 if (!gaim_utf8_strcasecmp(name, gaim_normalize(account, (char *)l->data))) |
6371 | 150 break; |
151 } | |
152 | |
153 g_free(name); | |
154 | |
155 if (l == NULL) | |
156 return FALSE; | |
157 | |
158 account->deny = g_slist_remove(account->deny, l->data); | |
159 g_free(l->data); | |
160 | |
6378
01289157fc37
[gaim-migrate @ 6883]
Christian Hammond <chipx86@chipx86.com>
parents:
6375
diff
changeset
|
161 if (!local_only && gaim_account_is_connected(account)) { |
6375
72023626d5b8
[gaim-migrate @ 6880]
Christian Hammond <chipx86@chipx86.com>
parents:
6373
diff
changeset
|
162 gaim_debug(GAIM_DEBUG_INFO, "privacy", |
72023626d5b8
[gaim-migrate @ 6880]
Christian Hammond <chipx86@chipx86.com>
parents:
6373
diff
changeset
|
163 "Removing %s from server-side deny list\n", who); |
6373
4d61775a5741
[gaim-migrate @ 6878]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
164 serv_rem_deny(gaim_account_get_connection(account), who); |
6375
72023626d5b8
[gaim-migrate @ 6880]
Christian Hammond <chipx86@chipx86.com>
parents:
6373
diff
changeset
|
165 } |
6373
4d61775a5741
[gaim-migrate @ 6878]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
166 |
6371 | 167 gaim_blist_save(); |
168 | |
169 if (privacy_ops != NULL && privacy_ops->deny_removed != NULL) | |
170 privacy_ops->deny_removed(account, who); | |
171 | |
172 return TRUE; | |
173 } | |
174 | |
175 void | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6378
diff
changeset
|
176 gaim_privacy_set_ui_ops(GaimPrivacyUiOps *ops) |
6371 | 177 { |
178 privacy_ops = ops; | |
179 } | |
180 | |
181 GaimPrivacyUiOps * | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6378
diff
changeset
|
182 gaim_privacy_get_ui_ops(void) |
6371 | 183 { |
184 return privacy_ops; | |
185 } | |
186 | |
187 void | |
188 gaim_privacy_init(void) | |
189 { | |
190 } |