Exemplo n.º 1
0
void
purple_request_field_list_set_selected(PurpleRequestField *field, GList *items)
{
	GList *l;

	g_return_if_fail(field != NULL);
	g_return_if_fail(items != NULL);
	g_return_if_fail(field->type == PURPLE_REQUEST_FIELD_LIST);

	purple_request_field_list_clear_selected(field);

	if (!purple_request_field_list_get_multi_select(field) &&
		items && items->next)
	{
		purple_debug_warning("request",
						   "More than one item added to non-multi-select "
						   "field %s\n",
						   purple_request_field_get_id(field));
		return;
	}

	for (l = items; l != NULL; l = l->next)
	{
		field->u.list.selected = g_list_append(field->u.list.selected,
					g_strdup(l->data));
		g_hash_table_insert(field->u.list.selected_table,
							g_strdup((char *)l->data), NULL);
	}
}
Exemplo n.º 2
0
void Request::FieldsDialog::ListFieldMultiple::ListFieldItem::OnToggle(
    CheckBox& activator, bool new_state)
{
    if (new_state)
        purple_request_field_list_add_selected(field, GetText());
    else {
        /* XXX This chunk is super-slow, libpurple should provide
         * purple_request_field_list_remove_selected() function. */
        GList *new_selected = NULL;
        for (GList *selected = purple_request_field_list_get_selected(field);
                selected; selected = selected->next) {
            const char *data = reinterpret_cast<const char*>(selected->data);
            if (strcmp(GetText(), data))
                new_selected = g_list_append(new_selected, g_strdup(data));
        }

        if (new_selected) {
            purple_request_field_list_set_selected(field, new_selected);
            g_list_foreach(new_selected, reinterpret_cast<GFunc>(g_free), NULL);
        }
        else
            purple_request_field_list_clear_selected(field);
    }
}
Exemplo n.º 3
0
void Request::FieldsDialog::ListFieldSingle::OnSelectionChanged(
    ComboBox& activator, int new_entry, const char *title, intptr_t data)
{
    purple_request_field_list_clear_selected(field);
    purple_request_field_list_add_selected(field, title);
}