Wed, 21 Sep 2011 06:45:26 +0000
Apply conversation theme when opening the GTK conversation. All the
parsing stuff was moved out of the theme code and into the conversation
code.
Someone (not me!) needs to check the code I commented out and see if
we really need that stuff (and then port it to WebKit/styling).
We also need to determine where to place Template.html and the rest
of our (not-yet-written) default theme.
| 6371 | 1 | /** |
| 2 | * @file gtkprivacy.c GTK+ Privacy UI | |
|
16254
eeb2bba4dc94
Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@pidgin.im>
parents:
15931
diff
changeset
|
3 | * @ingroup pidgin |
|
20147
66f05a854eee
applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
4 | */ |
|
66f05a854eee
applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
5 | |
|
66f05a854eee
applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
6 | /* pidgin |
| 6371 | 7 | * |
|
15931
716b5fac1895
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
8 | * Pidgin is the legal property of its developers, whose names are too numerous |
| 8046 | 9 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 10 | * source distribution. | |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
11 | * |
| 6371 | 12 | * This program is free software; you can redistribute it and/or modify |
| 13 | * it under the terms of the GNU General Public License as published by | |
| 14 | * the Free Software Foundation; either version 2 of the License, or | |
| 15 | * (at your option) any later version. | |
| 16 | * | |
| 17 | * This program is distributed in the hope that it will be useful, | |
| 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 20 | * GNU General Public License for more details. | |
| 21 | * | |
| 22 | * You should have received a copy of the GNU General Public License | |
| 23 | * along with this program; if not, write to the Free Software | |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
18327
diff
changeset
|
24 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| 6371 | 25 | */ |
| 9791 | 26 | #include "internal.h" |
| 15577 | 27 | #include "pidgin.h" |
| 6371 | 28 | |
| 29 | #include "connection.h" | |
| 30 | #include "debug.h" | |
| 31 | #include "privacy.h" | |
| 32 | #include "request.h" | |
| 33 | #include "util.h" | |
| 34 | ||
|
11111
4621d9b973a4
[gaim-migrate @ 13163]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11047
diff
changeset
|
35 | #include "gtkblist.h" |
| 6371 | 36 | #include "gtkprivacy.h" |
| 37 | #include "gtkutils.h" | |
| 38 | ||
| 39 | typedef struct | |
| 40 | { | |
| 41 | GtkWidget *win; | |
| 42 | ||
| 43 | GtkWidget *type_menu; | |
| 44 | ||
| 45 | GtkWidget *add_button; | |
| 46 | GtkWidget *remove_button; | |
|
22372
2b2d10362583
In Pidgin's privacy dialog:
Mark Doliner <markdoliner@pidgin.im>
parents:
22214
diff
changeset
|
47 | GtkWidget *removeall_button; |
|
22005
0183020ba2cc
Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22000
diff
changeset
|
48 | GtkWidget *close_button; |
| 6371 | 49 | |
| 50 | GtkWidget *button_box; | |
| 51 | GtkWidget *allow_widget; | |
| 52 | GtkWidget *block_widget; | |
| 53 | ||
| 54 | GtkListStore *allow_store; | |
| 55 | GtkListStore *block_store; | |
| 56 | ||
| 57 | GtkWidget *allow_list; | |
| 58 | GtkWidget *block_list; | |
| 59 | ||
| 60 | gboolean in_allow_list; | |
| 61 | ||
| 15884 | 62 | PurpleAccount *account; |
| 6371 | 63 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
64 | } PidginPrivacyDialog; |
| 6371 | 65 | |
| 66 | typedef struct | |
| 67 | { | |
| 15884 | 68 | PurpleAccount *account; |
| 6371 | 69 | char *name; |
| 70 | gboolean block; | |
| 71 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
72 | } PidginPrivacyRequestData; |
| 6371 | 73 | |
| 74 | static struct | |
| 75 | { | |
| 76 | const char *text; | |
| 77 | int num; | |
| 78 | ||
|
21091
07fe1a99c47b
Patch from Andrew Gaul to constify a bunch of static variables to reduce
Ka-Hing Cheung <khc@pidgin.im>
parents:
20147
diff
changeset
|
79 | } const menu_entries[] = |
| 6371 | 80 | { |
| 15884 | 81 | { N_("Allow all users to contact me"), PURPLE_PRIVACY_ALLOW_ALL }, |
| 82 | { N_("Allow only the users on my buddy list"), PURPLE_PRIVACY_ALLOW_BUDDYLIST }, | |
| 83 | { N_("Allow only the users below"), PURPLE_PRIVACY_ALLOW_USERS }, | |
| 84 | { N_("Block all users"), PURPLE_PRIVACY_DENY_ALL }, | |
| 85 | { N_("Block only the users below"), PURPLE_PRIVACY_DENY_USERS } | |
| 6371 | 86 | }; |
| 87 | ||
|
21091
07fe1a99c47b
Patch from Andrew Gaul to constify a bunch of static variables to reduce
Ka-Hing Cheung <khc@pidgin.im>
parents:
20147
diff
changeset
|
88 | static const size_t menu_entry_count = sizeof(menu_entries) / sizeof(*menu_entries); |
| 6371 | 89 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
90 | static PidginPrivacyDialog *privacy_dialog = NULL; |
| 6371 | 91 | |
| 92 | static void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
93 | rebuild_allow_list(PidginPrivacyDialog *dialog) |
| 6371 | 94 | { |
| 95 | GSList *l; | |
| 96 | GtkTreeIter iter; | |
| 97 | ||
| 98 | gtk_list_store_clear(dialog->allow_store); | |
| 99 | ||
| 100 | for (l = dialog->account->permit; l != NULL; l = l->next) { | |
| 101 | gtk_list_store_append(dialog->allow_store, &iter); | |
| 102 | gtk_list_store_set(dialog->allow_store, &iter, 0, l->data, -1); | |
| 103 | } | |
| 104 | } | |
| 105 | ||
| 106 | static void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
107 | rebuild_block_list(PidginPrivacyDialog *dialog) |
| 6371 | 108 | { |
| 109 | GSList *l; | |
| 110 | GtkTreeIter iter; | |
| 111 | ||
| 112 | gtk_list_store_clear(dialog->block_store); | |
| 113 | ||
| 114 | for (l = dialog->account->deny; l != NULL; l = l->next) { | |
| 115 | gtk_list_store_append(dialog->block_store, &iter); | |
| 116 | gtk_list_store_set(dialog->block_store, &iter, 0, l->data, -1); | |
| 117 | } | |
| 118 | } | |
| 119 | ||
| 120 | static void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
121 | user_selected_cb(GtkTreeSelection *sel, PidginPrivacyDialog *dialog) |
| 6371 | 122 | { |
| 123 | gtk_widget_set_sensitive(dialog->remove_button, TRUE); | |
| 124 | } | |
| 125 | ||
| 126 | static GtkWidget * | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
127 | build_list(PidginPrivacyDialog *dialog, GtkListStore *model, |
| 6371 | 128 | GtkWidget **ret_treeview) |
| 129 | { | |
| 130 | GtkWidget *sw; | |
| 131 | GtkWidget *treeview; | |
| 132 | GtkCellRenderer *rend; | |
| 133 | GtkTreeViewColumn *column; | |
| 134 | GtkTreeSelection *sel; | |
| 135 | ||
| 136 | treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model)); | |
| 137 | *ret_treeview = treeview; | |
| 138 | ||
| 139 | rend = gtk_cell_renderer_text_new(); | |
| 140 | ||
| 141 | column = gtk_tree_view_column_new_with_attributes(NULL, rend, | |
| 142 | "text", 0, | |
| 143 | NULL); | |
| 144 | gtk_tree_view_column_set_clickable(GTK_TREE_VIEW_COLUMN(column), TRUE); | |
| 145 | gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); | |
| 146 | gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE); | |
|
31321
1fef3832cfa2
Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents:
29742
diff
changeset
|
147 | sw = pidgin_make_scrollable(treeview, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC, GTK_SHADOW_IN, -1, 200); |
|
6374
0bbc59035c89
[gaim-migrate @ 6879]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
148 | |
| 6371 | 149 | gtk_widget_show(treeview); |
| 150 | ||
| 151 | sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); | |
| 152 | ||
| 153 | g_signal_connect(G_OBJECT(sel), "changed", | |
| 154 | G_CALLBACK(user_selected_cb), dialog); | |
| 155 | ||
| 156 | return sw; | |
| 157 | } | |
| 158 | ||
| 159 | static GtkWidget * | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
160 | build_allow_list(PidginPrivacyDialog *dialog) |
| 6371 | 161 | { |
| 162 | GtkWidget *widget; | |
| 163 | GtkWidget *list; | |
| 164 | ||
| 165 | dialog->allow_store = gtk_list_store_new(1, G_TYPE_STRING); | |
| 166 | ||
|
11047
1b0452e2f2a9
[gaim-migrate @ 12972]
Richard Laager <rlaager@pidgin.im>
parents:
10704
diff
changeset
|
167 | gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(dialog->allow_store), 0, GTK_SORT_ASCENDING); |
|
1b0452e2f2a9
[gaim-migrate @ 12972]
Richard Laager <rlaager@pidgin.im>
parents:
10704
diff
changeset
|
168 | |
| 6371 | 169 | widget = build_list(dialog, dialog->allow_store, &list); |
| 170 | ||
| 171 | dialog->allow_list = list; | |
| 172 | ||
| 173 | rebuild_allow_list(dialog); | |
| 174 | ||
| 175 | return widget; | |
| 176 | } | |
| 177 | ||
| 178 | static GtkWidget * | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
179 | build_block_list(PidginPrivacyDialog *dialog) |
| 6371 | 180 | { |
| 181 | GtkWidget *widget; | |
| 182 | GtkWidget *list; | |
| 183 | ||
| 184 | dialog->block_store = gtk_list_store_new(1, G_TYPE_STRING); | |
| 185 | ||
|
11047
1b0452e2f2a9
[gaim-migrate @ 12972]
Richard Laager <rlaager@pidgin.im>
parents:
10704
diff
changeset
|
186 | gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(dialog->block_store), 0, GTK_SORT_ASCENDING); |
|
1b0452e2f2a9
[gaim-migrate @ 12972]
Richard Laager <rlaager@pidgin.im>
parents:
10704
diff
changeset
|
187 | |
| 6371 | 188 | widget = build_list(dialog, dialog->block_store, &list); |
| 189 | ||
| 190 | dialog->block_list = list; | |
| 191 | ||
| 192 | rebuild_block_list(dialog); | |
| 193 | ||
| 194 | return widget; | |
| 195 | } | |
| 196 | ||
| 197 | static gint | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
198 | destroy_cb(GtkWidget *w, GdkEvent *event, PidginPrivacyDialog *dialog) |
| 6371 | 199 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
200 | pidgin_privacy_dialog_hide(); |
| 6371 | 201 | |
| 202 | return 0; | |
| 203 | } | |
| 204 | ||
| 205 | static void | |
| 15884 | 206 | select_account_cb(GtkWidget *dropdown, PurpleAccount *account, |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
207 | PidginPrivacyDialog *dialog) |
| 6371 | 208 | { |
| 209 | int i; | |
| 210 | ||
| 211 | dialog->account = account; | |
| 212 | ||
| 213 | for (i = 0; i < menu_entry_count; i++) { | |
| 214 | if (menu_entries[i].num == account->perm_deny) { | |
|
29741
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
215 | gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->type_menu), i); |
| 6371 | 216 | break; |
| 217 | } | |
| 218 | } | |
| 219 | ||
| 220 | rebuild_allow_list(dialog); | |
| 221 | rebuild_block_list(dialog); | |
| 222 | } | |
| 223 | ||
|
10704
99a466f384d2
[gaim-migrate @ 12288]
Mark Doliner <markdoliner@pidgin.im>
parents:
10535
diff
changeset
|
224 | /* |
|
99a466f384d2
[gaim-migrate @ 12288]
Mark Doliner <markdoliner@pidgin.im>
parents:
10535
diff
changeset
|
225 | * TODO: Setting the permit/deny setting needs to go through privacy.c |
|
99a466f384d2
[gaim-migrate @ 12288]
Mark Doliner <markdoliner@pidgin.im>
parents:
10535
diff
changeset
|
226 | * Even better: the privacy API needs to not suck. |
|
99a466f384d2
[gaim-migrate @ 12288]
Mark Doliner <markdoliner@pidgin.im>
parents:
10535
diff
changeset
|
227 | */ |
|
29741
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
228 | static void |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
229 | type_changed_cb(GtkComboBox *combo, PidginPrivacyDialog *dialog) |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
230 | { |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
231 | int new_type = menu_entries[gtk_combo_box_get_active(combo)].num; |
| 6371 | 232 | |
|
8520
0a0fe6abc212
[gaim-migrate @ 9259]
Mark Doliner <markdoliner@pidgin.im>
parents:
8275
diff
changeset
|
233 | dialog->account->perm_deny = new_type; |
| 15884 | 234 | serv_set_permit_deny(purple_account_get_connection(dialog->account)); |
| 6371 | 235 | |
| 236 | gtk_widget_hide(dialog->allow_widget); | |
| 237 | gtk_widget_hide(dialog->block_widget); | |
|
22005
0183020ba2cc
Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22000
diff
changeset
|
238 | gtk_widget_hide_all(dialog->button_box); |
| 6371 | 239 | |
| 15884 | 240 | if (new_type == PURPLE_PRIVACY_ALLOW_USERS) { |
| 6371 | 241 | gtk_widget_show(dialog->allow_widget); |
|
22005
0183020ba2cc
Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22000
diff
changeset
|
242 | gtk_widget_show_all(dialog->button_box); |
| 6371 | 243 | dialog->in_allow_list = TRUE; |
| 244 | } | |
| 15884 | 245 | else if (new_type == PURPLE_PRIVACY_DENY_USERS) { |
| 6371 | 246 | gtk_widget_show(dialog->block_widget); |
|
22005
0183020ba2cc
Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22000
diff
changeset
|
247 | gtk_widget_show_all(dialog->button_box); |
| 6371 | 248 | dialog->in_allow_list = FALSE; |
| 249 | } | |
|
10147
a4897a5bcf8d
[gaim-migrate @ 11224]
Peter Lawler <pidgin@bleeter.id.au>
parents:
9791
diff
changeset
|
250 | |
|
22005
0183020ba2cc
Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22000
diff
changeset
|
251 | gtk_widget_show_all(dialog->close_button); |
|
0183020ba2cc
Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22000
diff
changeset
|
252 | gtk_widget_show(dialog->button_box); |
|
0183020ba2cc
Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22000
diff
changeset
|
253 | |
| 15884 | 254 | purple_blist_schedule_save(); |
| 255 | pidgin_blist_refresh(purple_get_blist()); | |
| 6371 | 256 | } |
| 257 | ||
| 258 | static void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
259 | add_cb(GtkWidget *button, PidginPrivacyDialog *dialog) |
| 6371 | 260 | { |
| 261 | if (dialog->in_allow_list) | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
262 | pidgin_request_add_permit(dialog->account, NULL); |
| 6371 | 263 | else |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
264 | pidgin_request_add_block(dialog->account, NULL); |
| 6371 | 265 | } |
| 266 | ||
| 267 | static void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
268 | remove_cb(GtkWidget *button, PidginPrivacyDialog *dialog) |
| 6371 | 269 | { |
| 270 | GtkTreeIter iter; | |
| 271 | GtkTreeModel *model; | |
| 272 | GtkTreeSelection *sel; | |
| 273 | char *name; | |
| 274 | ||
| 275 | if (dialog->in_allow_list && dialog->allow_store == NULL) | |
| 276 | return; | |
| 277 | ||
| 278 | if (!dialog->in_allow_list && dialog->block_store == NULL) | |
| 279 | return; | |
| 280 | ||
| 281 | if (dialog->in_allow_list) { | |
| 282 | model = GTK_TREE_MODEL(dialog->allow_store); | |
| 283 | sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->allow_list)); | |
| 284 | } | |
| 285 | else { | |
| 286 | model = GTK_TREE_MODEL(dialog->block_store); | |
| 287 | sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->block_list)); | |
| 288 | } | |
| 289 | ||
| 290 | if (gtk_tree_selection_get_selected(sel, NULL, &iter)) | |
| 291 | gtk_tree_model_get(model, &iter, 0, &name, -1); | |
| 292 | else | |
| 293 | return; | |
| 294 | ||
|
22372
2b2d10362583
In Pidgin's privacy dialog:
Mark Doliner <markdoliner@pidgin.im>
parents:
22214
diff
changeset
|
295 | if (dialog->in_allow_list) |
|
2b2d10362583
In Pidgin's privacy dialog:
Mark Doliner <markdoliner@pidgin.im>
parents:
22214
diff
changeset
|
296 | purple_privacy_permit_remove(dialog->account, name, FALSE); |
|
2b2d10362583
In Pidgin's privacy dialog:
Mark Doliner <markdoliner@pidgin.im>
parents:
22214
diff
changeset
|
297 | else |
|
2b2d10362583
In Pidgin's privacy dialog:
Mark Doliner <markdoliner@pidgin.im>
parents:
22214
diff
changeset
|
298 | purple_privacy_deny_remove(dialog->account, name, FALSE); |
|
2b2d10362583
In Pidgin's privacy dialog:
Mark Doliner <markdoliner@pidgin.im>
parents:
22214
diff
changeset
|
299 | |
|
13149
895f0495b7db
[gaim-migrate @ 15511]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12852
diff
changeset
|
300 | g_free(name); |
| 6371 | 301 | } |
| 302 | ||
| 303 | static void | |
|
22372
2b2d10362583
In Pidgin's privacy dialog:
Mark Doliner <markdoliner@pidgin.im>
parents:
22214
diff
changeset
|
304 | removeall_cb(GtkWidget *button, PidginPrivacyDialog *dialog) |
| 6371 | 305 | { |
| 8556 | 306 | GSList *l; |
| 307 | if (dialog->in_allow_list) | |
| 308 | l = dialog->account->permit; | |
| 309 | else | |
| 310 | l = dialog->account->deny; | |
| 311 | while (l) { | |
| 312 | char *user; | |
| 313 | user = l->data; | |
| 314 | l = l->next; | |
| 315 | if (dialog->in_allow_list) | |
| 15884 | 316 | purple_privacy_permit_remove(dialog->account, user, FALSE); |
| 8556 | 317 | else |
| 15884 | 318 | purple_privacy_deny_remove(dialog->account, user, FALSE); |
| 8556 | 319 | } |
| 6371 | 320 | } |
| 321 | ||
| 322 | static void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
323 | close_cb(GtkWidget *button, PidginPrivacyDialog *dialog) |
| 6371 | 324 | { |
|
7165
6547d94b0725
[gaim-migrate @ 7732]
Mark Doliner <markdoliner@pidgin.im>
parents:
6646
diff
changeset
|
325 | gtk_widget_destroy(dialog->win); |
|
6547d94b0725
[gaim-migrate @ 7732]
Mark Doliner <markdoliner@pidgin.im>
parents:
6646
diff
changeset
|
326 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
327 | pidgin_privacy_dialog_hide(); |
| 6371 | 328 | } |
| 329 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
330 | static PidginPrivacyDialog * |
| 6371 | 331 | privacy_dialog_new(void) |
| 332 | { | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
333 | PidginPrivacyDialog *dialog; |
| 6371 | 334 | GtkWidget *vbox; |
| 335 | GtkWidget *button; | |
| 336 | GtkWidget *dropdown; | |
| 337 | GtkWidget *label; | |
|
29742
631616e39444
Remove GTK version checks which are no longer necessary. Refs #1332 too.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29741
diff
changeset
|
338 | int selected = -1; |
| 6371 | 339 | int i; |
| 340 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
341 | dialog = g_new0(PidginPrivacyDialog, 1); |
| 6371 | 342 | |
|
22000
5e7708f58d3d
Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21630
diff
changeset
|
343 | dialog->win = pidgin_create_dialog(_("Privacy"), PIDGIN_HIG_BORDER, "privacy", TRUE); |
| 6371 | 344 | |
| 345 | g_signal_connect(G_OBJECT(dialog->win), "delete_event", | |
| 346 | G_CALLBACK(destroy_cb), dialog); | |
| 347 | ||
| 348 | /* Main vbox */ | |
|
22000
5e7708f58d3d
Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21630
diff
changeset
|
349 | vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(dialog->win), FALSE, PIDGIN_HIG_BORDER); |
| 6371 | 350 | |
| 351 | /* Description label */ | |
| 352 | label = gtk_label_new( | |
| 353 | _("Changes to privacy settings take effect immediately.")); | |
| 354 | ||
| 355 | gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | |
| 356 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
| 357 | gtk_widget_show(label); | |
| 358 | ||
| 359 | /* Accounts drop-down */ | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
360 | dropdown = pidgin_account_option_menu_new(NULL, FALSE, |
|
12852
dc6be215f15e
[gaim-migrate @ 15202]
Richard Laager <rlaager@pidgin.im>
parents:
12849
diff
changeset
|
361 | G_CALLBACK(select_account_cb), NULL, dialog); |
|
22131
12b395dc8c59
Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22005
diff
changeset
|
362 | pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("Set privacy for:"), NULL, dropdown, TRUE, NULL); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
363 | dialog->account = pidgin_account_option_menu_get_selected(dropdown); |
| 6371 | 364 | |
| 365 | /* Add the drop-down list with the allow/block types. */ | |
|
29741
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
366 | dialog->type_menu = gtk_combo_box_new_text(); |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
367 | gtk_box_pack_start(GTK_BOX(vbox), dialog->type_menu, FALSE, FALSE, 0); |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
368 | gtk_widget_show(dialog->type_menu); |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
369 | |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
370 | for (i = 0; i < menu_entry_count; i++) { |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
371 | gtk_combo_box_append_text(GTK_COMBO_BOX(dialog->type_menu), |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
372 | _(menu_entries[i].text)); |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
373 | |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
374 | if (menu_entries[i].num == dialog->account->perm_deny) |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
375 | selected = i; |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
376 | } |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
377 | |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
378 | gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->type_menu), selected); |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
379 | |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
380 | g_signal_connect(G_OBJECT(dialog->type_menu), "changed", |
|
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
381 | G_CALLBACK(type_changed_cb), dialog); |
| 6371 | 382 | |
| 383 | /* Build the treeview for the allow list. */ | |
| 384 | dialog->allow_widget = build_allow_list(dialog); | |
| 385 | gtk_box_pack_start(GTK_BOX(vbox), dialog->allow_widget, TRUE, TRUE, 0); | |
| 386 | ||
| 387 | /* Build the treeview for the block list. */ | |
| 388 | dialog->block_widget = build_block_list(dialog); | |
| 389 | gtk_box_pack_start(GTK_BOX(vbox), dialog->block_widget, TRUE, TRUE, 0); | |
| 390 | ||
|
22372
2b2d10362583
In Pidgin's privacy dialog:
Mark Doliner <markdoliner@pidgin.im>
parents:
22214
diff
changeset
|
391 | /* Add the button box for Add, Remove, Remove All */ |
|
22005
0183020ba2cc
Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22000
diff
changeset
|
392 | dialog->button_box = pidgin_dialog_get_action_area(GTK_DIALOG(dialog->win)); |
| 6371 | 393 | |
| 394 | /* Add button */ | |
|
22005
0183020ba2cc
Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22000
diff
changeset
|
395 | button = pidgin_dialog_add_button(GTK_DIALOG(dialog->win), GTK_STOCK_ADD, G_CALLBACK(add_cb), dialog); |
| 6371 | 396 | dialog->add_button = button; |
| 397 | ||
| 398 | /* Remove button */ | |
|
22005
0183020ba2cc
Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22000
diff
changeset
|
399 | button = pidgin_dialog_add_button(GTK_DIALOG(dialog->win), GTK_STOCK_REMOVE, G_CALLBACK(remove_cb), dialog); |
| 6371 | 400 | dialog->remove_button = button; |
|
22389
21650aee2a19
Remove the privacy prpl callbacks in Zephyr since they're basically a
Mark Doliner <markdoliner@pidgin.im>
parents:
22372
diff
changeset
|
401 | /* TODO: This button should be sensitive/invisitive more cleverly */ |
| 6371 | 402 | gtk_widget_set_sensitive(button, FALSE); |
| 403 | ||
|
22372
2b2d10362583
In Pidgin's privacy dialog:
Mark Doliner <markdoliner@pidgin.im>
parents:
22214
diff
changeset
|
404 | /* Remove All button */ |
|
2b2d10362583
In Pidgin's privacy dialog:
Mark Doliner <markdoliner@pidgin.im>
parents:
22214
diff
changeset
|
405 | button = pidgin_dialog_add_button(GTK_DIALOG(dialog->win), _("Remove Al_l"), G_CALLBACK(removeall_cb), dialog); |
|
2b2d10362583
In Pidgin's privacy dialog:
Mark Doliner <markdoliner@pidgin.im>
parents:
22214
diff
changeset
|
406 | dialog->removeall_button = button; |
| 6371 | 407 | |
| 408 | /* Close button */ | |
|
22005
0183020ba2cc
Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22000
diff
changeset
|
409 | button = pidgin_dialog_add_button(GTK_DIALOG(dialog->win), GTK_STOCK_CLOSE, G_CALLBACK(close_cb), dialog); |
|
0183020ba2cc
Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22000
diff
changeset
|
410 | dialog->close_button = button; |
| 6371 | 411 | |
|
29741
3fbd100877f9
Pull in GtkComboBox changes from GTK+3 branch.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
22389
diff
changeset
|
412 | type_changed_cb(GTK_COMBO_BOX(dialog->type_menu), dialog); |
|
22005
0183020ba2cc
Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22000
diff
changeset
|
413 | #if 0 |
| 15884 | 414 | if (dialog->account->perm_deny == PURPLE_PRIVACY_ALLOW_USERS) { |
| 6371 | 415 | gtk_widget_show(dialog->allow_widget); |
| 416 | gtk_widget_show(dialog->button_box); | |
| 417 | dialog->in_allow_list = TRUE; | |
| 418 | } | |
| 15884 | 419 | else if (dialog->account->perm_deny == PURPLE_PRIVACY_DENY_USERS) { |
| 6371 | 420 | gtk_widget_show(dialog->block_widget); |
| 421 | gtk_widget_show(dialog->button_box); | |
| 422 | dialog->in_allow_list = FALSE; | |
| 423 | } | |
|
22005
0183020ba2cc
Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22000
diff
changeset
|
424 | #endif |
| 6371 | 425 | return dialog; |
| 426 | } | |
| 427 | ||
| 428 | void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
429 | pidgin_privacy_dialog_show(void) |
| 6371 | 430 | { |
| 15884 | 431 | g_return_if_fail(purple_connections_get_all() != NULL); |
|
10352
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10148
diff
changeset
|
432 | |
| 6371 | 433 | if (privacy_dialog == NULL) |
| 434 | privacy_dialog = privacy_dialog_new(); | |
| 435 | ||
| 436 | gtk_widget_show(privacy_dialog->win); | |
| 437 | gdk_window_raise(privacy_dialog->win->window); | |
| 438 | } | |
| 439 | ||
| 440 | void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
441 | pidgin_privacy_dialog_hide(void) |
| 6371 | 442 | { |
| 443 | if (privacy_dialog == NULL) | |
| 444 | return; | |
| 445 | ||
|
22214
e8a9916cb99e
It turns out the tree-models need to be unref'ed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22131
diff
changeset
|
446 | g_object_unref(G_OBJECT(privacy_dialog->allow_store)); |
|
e8a9916cb99e
It turns out the tree-models need to be unref'ed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22131
diff
changeset
|
447 | g_object_unref(G_OBJECT(privacy_dialog->block_store)); |
|
7165
6547d94b0725
[gaim-migrate @ 7732]
Mark Doliner <markdoliner@pidgin.im>
parents:
6646
diff
changeset
|
448 | g_free(privacy_dialog); |
| 6371 | 449 | privacy_dialog = NULL; |
| 450 | } | |
| 451 | ||
| 452 | static void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
453 | destroy_request_data(PidginPrivacyRequestData *data) |
| 6371 | 454 | { |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
455 | g_free(data->name); |
| 6371 | 456 | g_free(data); |
| 457 | } | |
| 458 | ||
| 459 | static void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
460 | confirm_permit_block_cb(PidginPrivacyRequestData *data, int option) |
| 6371 | 461 | { |
| 462 | if (data->block) | |
| 15884 | 463 | purple_privacy_deny(data->account, data->name, FALSE, FALSE); |
| 6371 | 464 | else |
| 15884 | 465 | purple_privacy_allow(data->account, data->name, FALSE, FALSE); |
| 6371 | 466 | |
| 467 | destroy_request_data(data); | |
| 468 | } | |
| 469 | ||
| 470 | static void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
471 | add_permit_block_cb(PidginPrivacyRequestData *data, const char *name) |
| 6371 | 472 | { |
| 473 | data->name = g_strdup(name); | |
| 474 | ||
| 475 | confirm_permit_block_cb(data, 0); | |
| 476 | } | |
| 477 | ||
| 478 | void | |
| 15884 | 479 | pidgin_request_add_permit(PurpleAccount *account, const char *name) |
| 6371 | 480 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
481 | PidginPrivacyRequestData *data; |
| 6371 | 482 | |
| 483 | g_return_if_fail(account != NULL); | |
| 484 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
485 | data = g_new0(PidginPrivacyRequestData, 1); |
| 6371 | 486 | data->account = account; |
| 487 | data->name = g_strdup(name); | |
| 488 | data->block = FALSE; | |
| 489 | ||
| 490 | if (name == NULL) { | |
|
21175
c6d76b49c206
disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents:
21174
diff
changeset
|
491 | purple_request_input(account, _("Permit User"), |
| 6371 | 492 | _("Type a user you permit to contact you."), |
| 493 | _("Please enter the name of the user you wish to be " | |
| 494 | "able to contact you."), | |
| 8697 | 495 | NULL, FALSE, FALSE, NULL, |
| 12603 | 496 | _("_Permit"), G_CALLBACK(add_permit_block_cb), |
| 6371 | 497 | _("Cancel"), G_CALLBACK(destroy_request_data), |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16254
diff
changeset
|
498 | account, name, NULL, |
|
21175
c6d76b49c206
disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents:
21174
diff
changeset
|
499 | data); |
| 6371 | 500 | } |
| 501 | else { | |
| 502 | char *primary = g_strdup_printf(_("Allow %s to contact you?"), name); | |
| 503 | char *secondary = | |
| 504 | g_strdup_printf(_("Are you sure you wish to allow " | |
| 505 | "%s to contact you?"), name); | |
| 506 | ||
| 507 | ||
|
21175
c6d76b49c206
disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents:
21174
diff
changeset
|
508 | purple_request_action(account, _("Permit User"), primary, secondary, |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16254
diff
changeset
|
509 | 0, |
|
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16254
diff
changeset
|
510 | account, name, NULL, |
|
21175
c6d76b49c206
disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents:
21174
diff
changeset
|
511 | data, 2, |
| 12603 | 512 | _("_Permit"), G_CALLBACK(confirm_permit_block_cb), |
| 6371 | 513 | _("Cancel"), G_CALLBACK(destroy_request_data)); |
| 514 | ||
| 515 | g_free(primary); | |
| 516 | g_free(secondary); | |
| 517 | } | |
| 518 | } | |
| 519 | ||
| 520 | void | |
| 15884 | 521 | pidgin_request_add_block(PurpleAccount *account, const char *name) |
| 6371 | 522 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
523 | PidginPrivacyRequestData *data; |
| 6371 | 524 | |
| 525 | g_return_if_fail(account != NULL); | |
| 526 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
527 | data = g_new0(PidginPrivacyRequestData, 1); |
| 6371 | 528 | data->account = account; |
| 529 | data->name = g_strdup(name); | |
| 530 | data->block = TRUE; | |
| 531 | ||
| 532 | if (name == NULL) { | |
|
21175
c6d76b49c206
disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents:
21174
diff
changeset
|
533 | purple_request_input(account, _("Block User"), |
| 6371 | 534 | _("Type a user to block."), |
| 535 | _("Please enter the name of the user you wish to block."), | |
| 8697 | 536 | NULL, FALSE, FALSE, NULL, |
| 12603 | 537 | _("_Block"), G_CALLBACK(add_permit_block_cb), |
| 6371 | 538 | _("Cancel"), G_CALLBACK(destroy_request_data), |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16254
diff
changeset
|
539 | account, name, NULL, |
|
21175
c6d76b49c206
disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents:
21174
diff
changeset
|
540 | data); |
| 6371 | 541 | } |
| 542 | else { | |
| 543 | char *primary = g_strdup_printf(_("Block %s?"), name); | |
| 544 | char *secondary = | |
| 545 | g_strdup_printf(_("Are you sure you want to block %s?"), name); | |
| 546 | ||
|
21175
c6d76b49c206
disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents:
21174
diff
changeset
|
547 | purple_request_action(account, _("Block User"), primary, secondary, |
|
16490
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16254
diff
changeset
|
548 | 0, |
|
68c22924d66b
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents:
16254
diff
changeset
|
549 | account, name, NULL, |
|
21175
c6d76b49c206
disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents:
21174
diff
changeset
|
550 | data, 2, |
| 12603 | 551 | _("_Block"), G_CALLBACK(confirm_permit_block_cb), |
| 6371 | 552 | _("Cancel"), G_CALLBACK(destroy_request_data)); |
| 553 | ||
| 554 | g_free(primary); | |
| 555 | g_free(secondary); | |
| 556 | } | |
| 557 | } | |
| 558 | ||
| 559 | static void | |
| 15884 | 560 | pidgin_permit_added_removed(PurpleAccount *account, const char *name) |
| 6371 | 561 | { |
| 562 | if (privacy_dialog != NULL) | |
| 563 | rebuild_allow_list(privacy_dialog); | |
| 564 | } | |
| 565 | ||
| 566 | static void | |
| 15884 | 567 | pidgin_deny_added_removed(PurpleAccount *account, const char *name) |
| 6371 | 568 | { |
| 569 | if (privacy_dialog != NULL) | |
| 570 | rebuild_block_list(privacy_dialog); | |
| 571 | } | |
| 572 | ||
| 15884 | 573 | static PurplePrivacyUiOps privacy_ops = |
| 6371 | 574 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
575 | pidgin_permit_added_removed, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
576 | pidgin_permit_added_removed, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
577 | pidgin_deny_added_removed, |
|
16752
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16490
diff
changeset
|
578 | pidgin_deny_added_removed, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16490
diff
changeset
|
579 | NULL, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16490
diff
changeset
|
580 | NULL, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16490
diff
changeset
|
581 | NULL, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16490
diff
changeset
|
582 | NULL |
| 6371 | 583 | }; |
| 584 | ||
| 15884 | 585 | PurplePrivacyUiOps * |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
586 | pidgin_privacy_get_ui_ops(void) |
| 6371 | 587 | { |
| 588 | return &privacy_ops; | |
| 589 | } | |
| 590 | ||
| 591 | void | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15486
diff
changeset
|
592 | pidgin_privacy_init(void) |
| 6371 | 593 | { |
| 594 | } |