| 1396 } |
1396 } |
| 1397 |
1397 |
| 1398 static GtkWidget * |
1398 static GtkWidget * |
| 1399 create_account_field(PurpleRequestField *field) |
1399 create_account_field(PurpleRequestField *field) |
| 1400 { |
1400 { |
| 1401 GtkWidget *widget; |
1401 GtkWidget *widget = NULL; |
| 1402 PurpleAccount *account; |
1402 PurpleAccount *account = NULL; |
| |
1403 PurpleFilterAccountFunc account_filter = NULL; |
| 1403 GtkFilter *filter = NULL; |
1404 GtkFilter *filter = NULL; |
| 1404 |
1405 |
| 1405 widget = pidgin_account_chooser_new(); |
1406 widget = pidgin_account_chooser_new(); |
| 1406 account = purple_request_field_account_get_default_value(field); |
1407 account = purple_request_field_account_get_default_value(field); |
| 1407 |
1408 |
| 1408 filter = GTK_FILTER(gtk_custom_filter_new( |
1409 account_filter = purple_request_field_account_get_filter(field); |
| 1409 field_custom_account_filter_cb, |
1410 if(account_filter != NULL) { |
| 1410 purple_request_field_account_get_filter(field), |
1411 GtkCustomFilter *custom_filter = NULL; |
| 1411 NULL)); |
1412 |
| |
1413 custom_filter = gtk_custom_filter_new(field_custom_account_filter_cb, |
| |
1414 account_filter, NULL); |
| |
1415 |
| |
1416 filter = GTK_FILTER(custom_filter); |
| |
1417 } |
| 1412 |
1418 |
| 1413 if(!purple_request_field_account_get_show_all(field)) { |
1419 if(!purple_request_field_account_get_show_all(field)) { |
| 1414 GtkEveryFilter *every = NULL; |
1420 GtkEveryFilter *every = NULL; |
| 1415 |
1421 |
| 1416 every = gtk_every_filter_new(); |
1422 every = gtk_every_filter_new(); |
| 1417 gtk_multi_filter_append(GTK_MULTI_FILTER(every), filter); |
1423 |
| |
1424 if(GTK_IS_FILTER(filter)) { |
| |
1425 gtk_multi_filter_append(GTK_MULTI_FILTER(every), filter); |
| |
1426 } |
| 1418 |
1427 |
| 1419 filter = pidgin_account_filter_connected_new(); |
1428 filter = pidgin_account_filter_connected_new(); |
| 1420 gtk_multi_filter_append(GTK_MULTI_FILTER(every), filter); |
1429 gtk_multi_filter_append(GTK_MULTI_FILTER(every), filter); |
| 1421 |
1430 |
| 1422 filter = GTK_FILTER(every); |
1431 filter = GTK_FILTER(every); |
| 1423 } |
1432 } |
| 1424 |
1433 |
| 1425 pidgin_account_chooser_set_selected(PIDGIN_ACCOUNT_CHOOSER(widget), |
1434 pidgin_account_chooser_set_selected(PIDGIN_ACCOUNT_CHOOSER(widget), |
| 1426 account); |
1435 account); |
| 1427 pidgin_account_chooser_set_filter(PIDGIN_ACCOUNT_CHOOSER(widget), filter); |
1436 |
| 1428 g_object_unref(filter); |
1437 if(GTK_IS_FILTER(filter)) { |
| |
1438 pidgin_account_chooser_set_filter(PIDGIN_ACCOUNT_CHOOSER(widget), filter); |
| |
1439 g_object_unref(filter); |
| |
1440 } |
| 1429 |
1441 |
| 1430 g_signal_connect(widget, "notify::account", G_CALLBACK(field_account_cb), |
1442 g_signal_connect(widget, "notify::account", G_CALLBACK(field_account_cb), |
| 1431 field); |
1443 field); |
| 1432 |
1444 |
| 1433 gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field)); |
1445 gtk_widget_set_tooltip_text(widget, purple_request_field_get_tooltip(field)); |