| 1190 |
1190 |
| 1191 return widget; |
1191 return widget; |
| 1192 } |
1192 } |
| 1193 |
1193 |
| 1194 static gboolean |
1194 static gboolean |
| 1195 field_custom_account_filter_cb(gpointer item, G_GNUC_UNUSED gpointer data) { |
1195 field_custom_account_filter_cb(gpointer item, gpointer data) { |
| 1196 PurpleFilterAccountFunc func = data; |
1196 PurpleRequestFieldAccount *field = data; |
| 1197 gboolean ret = FALSE; |
1197 gboolean ret = FALSE; |
| 1198 |
1198 |
| 1199 if(PURPLE_IS_ACCOUNT(item)) { |
1199 if(PURPLE_IS_ACCOUNT(item)) { |
| 1200 ret = func(PURPLE_ACCOUNT(item)); |
1200 ret = purple_request_field_account_match(field, PURPLE_ACCOUNT(item)); |
| 1201 } |
1201 } |
| 1202 |
1202 |
| 1203 return ret; |
1203 return ret; |
| 1204 } |
1204 } |
| 1205 |
1205 |
| 1207 create_account_field(PurpleRequestField *field, GtkWidget **account_hint) |
1207 create_account_field(PurpleRequestField *field, GtkWidget **account_hint) |
| 1208 { |
1208 { |
| 1209 PurpleRequestFieldAccount *afield = NULL; |
1209 PurpleRequestFieldAccount *afield = NULL; |
| 1210 GtkWidget *widget = NULL; |
1210 GtkWidget *widget = NULL; |
| 1211 PurpleAccount *account = NULL; |
1211 PurpleAccount *account = NULL; |
| 1212 PurpleFilterAccountFunc account_filter = NULL; |
1212 GtkCustomFilter *custom_filter = NULL; |
| 1213 GtkFilter *filter = NULL; |
1213 GtkFilter *filter = NULL; |
| 1214 const char *type_hint = NULL; |
1214 const char *type_hint = NULL; |
| 1215 |
1215 |
| 1216 widget = pidgin_account_chooser_new(); |
1216 widget = pidgin_account_chooser_new(); |
| 1217 afield = PURPLE_REQUEST_FIELD_ACCOUNT(field); |
1217 afield = PURPLE_REQUEST_FIELD_ACCOUNT(field); |
| 1218 account = purple_request_field_account_get_default_value(afield); |
1218 account = purple_request_field_account_get_default_value(afield); |
| 1219 |
1219 |
| 1220 account_filter = purple_request_field_account_get_filter(afield); |
1220 custom_filter = gtk_custom_filter_new(field_custom_account_filter_cb, |
| 1221 if(account_filter != NULL) { |
1221 afield, NULL); |
| 1222 GtkCustomFilter *custom_filter = NULL; |
1222 filter = GTK_FILTER(custom_filter); |
| 1223 |
|
| 1224 custom_filter = gtk_custom_filter_new(field_custom_account_filter_cb, |
|
| 1225 account_filter, NULL); |
|
| 1226 |
|
| 1227 filter = GTK_FILTER(custom_filter); |
|
| 1228 } |
|
| 1229 |
1223 |
| 1230 if(!purple_request_field_account_get_show_all(afield)) { |
1224 if(!purple_request_field_account_get_show_all(afield)) { |
| 1231 GtkEveryFilter *every = NULL; |
1225 GtkEveryFilter *every = NULL; |
| 1232 |
1226 |
| 1233 every = gtk_every_filter_new(); |
1227 every = gtk_every_filter_new(); |