| 218 |
218 |
| 219 dialog->account = account; |
219 dialog->account = account; |
| 220 |
220 |
| 221 for (i = 0; i < menu_entry_count; i++) { |
221 for (i = 0; i < menu_entry_count; i++) { |
| 222 if (menu_entries[i].num == account->perm_deny) { |
222 if (menu_entries[i].num == account->perm_deny) { |
| 223 #if GTK_CHECK_VERSION(2,4,0) |
|
| 224 gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->type_menu), i); |
223 gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->type_menu), i); |
| 225 #else |
|
| 226 gtk_option_menu_set_history(GTK_OPTION_MENU(dialog->type_menu), i); |
|
| 227 #endif |
|
| 228 break; |
224 break; |
| 229 } |
225 } |
| 230 } |
226 } |
| 231 |
227 |
| 232 rebuild_allow_list(dialog); |
228 rebuild_allow_list(dialog); |
| 235 |
231 |
| 236 /* |
232 /* |
| 237 * TODO: Setting the permit/deny setting needs to go through privacy.c |
233 * TODO: Setting the permit/deny setting needs to go through privacy.c |
| 238 * Even better: the privacy API needs to not suck. |
234 * Even better: the privacy API needs to not suck. |
| 239 */ |
235 */ |
| 240 #if GTK_CHECK_VERSION(2,4,0) |
|
| 241 static void |
236 static void |
| 242 type_changed_cb(GtkComboBox *combo, PidginPrivacyDialog *dialog) |
237 type_changed_cb(GtkComboBox *combo, PidginPrivacyDialog *dialog) |
| 243 { |
238 { |
| 244 int new_type = menu_entries[gtk_combo_box_get_active(combo)].num; |
239 int new_type = menu_entries[gtk_combo_box_get_active(combo)].num; |
| 245 #else |
|
| 246 static void |
|
| 247 type_changed_cb(GtkOptionMenu *optmenu, PidginPrivacyDialog *dialog) |
|
| 248 { |
|
| 249 int new_type = menu_entries[gtk_option_menu_get_history(optmenu)].num; |
|
| 250 #endif |
|
| 251 |
240 |
| 252 dialog->account->perm_deny = new_type; |
241 dialog->account->perm_deny = new_type; |
| 253 serv_set_permit_deny(purple_account_get_connection(dialog->account)); |
242 serv_set_permit_deny(purple_account_get_connection(dialog->account)); |
| 254 |
243 |
| 255 gtk_widget_hide(dialog->allow_widget); |
244 gtk_widget_hide(dialog->allow_widget); |
| 352 PidginPrivacyDialog *dialog; |
341 PidginPrivacyDialog *dialog; |
| 353 GtkWidget *vbox; |
342 GtkWidget *vbox; |
| 354 GtkWidget *button; |
343 GtkWidget *button; |
| 355 GtkWidget *dropdown; |
344 GtkWidget *dropdown; |
| 356 GtkWidget *label; |
345 GtkWidget *label; |
| 357 #if !GTK_CHECK_VERSION(2,4,0) |
346 int selected = -1; |
| 358 GtkWidget *menu; |
|
| 359 #endif |
|
| 360 int selected = 0; |
|
| 361 int i; |
347 int i; |
| 362 |
348 |
| 363 dialog = g_new0(PidginPrivacyDialog, 1); |
349 dialog = g_new0(PidginPrivacyDialog, 1); |
| 364 |
350 |
| 365 dialog->win = pidgin_create_dialog(_("Privacy"), PIDGIN_HIG_BORDER, "privacy", TRUE); |
351 dialog->win = pidgin_create_dialog(_("Privacy"), PIDGIN_HIG_BORDER, "privacy", TRUE); |
| 383 G_CALLBACK(select_account_cb), NULL, dialog); |
369 G_CALLBACK(select_account_cb), NULL, dialog); |
| 384 pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("Set privacy for:"), NULL, dropdown, TRUE, NULL); |
370 pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("Set privacy for:"), NULL, dropdown, TRUE, NULL); |
| 385 dialog->account = pidgin_account_option_menu_get_selected(dropdown); |
371 dialog->account = pidgin_account_option_menu_get_selected(dropdown); |
| 386 |
372 |
| 387 /* Add the drop-down list with the allow/block types. */ |
373 /* Add the drop-down list with the allow/block types. */ |
| 388 #if GTK_CHECK_VERSION(2,4,0) |
|
| 389 dialog->type_menu = gtk_combo_box_new_text(); |
374 dialog->type_menu = gtk_combo_box_new_text(); |
| 390 gtk_box_pack_start(GTK_BOX(vbox), dialog->type_menu, FALSE, FALSE, 0); |
375 gtk_box_pack_start(GTK_BOX(vbox), dialog->type_menu, FALSE, FALSE, 0); |
| 391 gtk_widget_show(dialog->type_menu); |
376 gtk_widget_show(dialog->type_menu); |
| 392 |
377 |
| 393 for (i = 0; i < menu_entry_count; i++) { |
378 for (i = 0; i < menu_entry_count; i++) { |
| 400 |
385 |
| 401 gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->type_menu), selected); |
386 gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->type_menu), selected); |
| 402 |
387 |
| 403 g_signal_connect(G_OBJECT(dialog->type_menu), "changed", |
388 g_signal_connect(G_OBJECT(dialog->type_menu), "changed", |
| 404 G_CALLBACK(type_changed_cb), dialog); |
389 G_CALLBACK(type_changed_cb), dialog); |
| 405 #else |
|
| 406 dialog->type_menu = gtk_option_menu_new(); |
|
| 407 gtk_box_pack_start(GTK_BOX(vbox), dialog->type_menu, FALSE, FALSE, 0); |
|
| 408 gtk_widget_show(dialog->type_menu); |
|
| 409 |
|
| 410 /* Build the menu for that. */ |
|
| 411 menu = gtk_menu_new(); |
|
| 412 |
|
| 413 for (i = 0; i < menu_entry_count; i++) { |
|
| 414 pidgin_new_item(menu, _(menu_entries[i].text)); |
|
| 415 |
|
| 416 if (menu_entries[i].num == dialog->account->perm_deny) |
|
| 417 selected = i; |
|
| 418 } |
|
| 419 |
|
| 420 gtk_option_menu_set_menu(GTK_OPTION_MENU(dialog->type_menu), menu); |
|
| 421 gtk_option_menu_set_history(GTK_OPTION_MENU(dialog->type_menu), selected); |
|
| 422 |
|
| 423 g_signal_connect(G_OBJECT(dialog->type_menu), "changed", |
|
| 424 G_CALLBACK(type_changed_cb), dialog); |
|
| 425 #endif |
|
| 426 |
390 |
| 427 /* Build the treeview for the allow list. */ |
391 /* Build the treeview for the allow list. */ |
| 428 dialog->allow_widget = build_allow_list(dialog); |
392 dialog->allow_widget = build_allow_list(dialog); |
| 429 gtk_box_pack_start(GTK_BOX(vbox), dialog->allow_widget, TRUE, TRUE, 0); |
393 gtk_box_pack_start(GTK_BOX(vbox), dialog->allow_widget, TRUE, TRUE, 0); |
| 430 |
394 |
| 451 |
415 |
| 452 /* Close button */ |
416 /* Close button */ |
| 453 button = pidgin_dialog_add_button(GTK_DIALOG(dialog->win), GTK_STOCK_CLOSE, G_CALLBACK(close_cb), dialog); |
417 button = pidgin_dialog_add_button(GTK_DIALOG(dialog->win), GTK_STOCK_CLOSE, G_CALLBACK(close_cb), dialog); |
| 454 dialog->close_button = button; |
418 dialog->close_button = button; |
| 455 |
419 |
| 456 #if GTK_CHECK_VERSION(2,4,0) |
|
| 457 type_changed_cb(GTK_COMBO_BOX(dialog->type_menu), dialog); |
420 type_changed_cb(GTK_COMBO_BOX(dialog->type_menu), dialog); |
| 458 #else |
|
| 459 type_changed_cb(GTK_OPTION_MENU(dialog->type_menu), dialog); |
|
| 460 #endif |
|
| 461 #if 0 |
421 #if 0 |
| 462 if (dialog->account->perm_deny == PURPLE_PRIVACY_ALLOW_USERS) { |
422 if (dialog->account->perm_deny == PURPLE_PRIVACY_ALLOW_USERS) { |
| 463 gtk_widget_show(dialog->allow_widget); |
423 gtk_widget_show(dialog->allow_widget); |
| 464 gtk_widget_show(dialog->button_box); |
424 gtk_widget_show(dialog->button_box); |
| 465 dialog->in_allow_list = TRUE; |
425 dialog->in_allow_list = TRUE; |