Example #1
0
Request::FieldsDialog::ListFieldMultiple::ListFieldItem::ListFieldItem(
    PurpleRequestField *field, const char *text)
    : field(field)
{
    g_assert(field);

    SetText(text);
    SetState(purple_request_field_list_is_selected(field, text));
    signal_toggle.connect(sigc::mem_fun(this, &ListFieldItem::OnToggle));
}
Example #2
0
static GntWidget*
create_list_field(PurpleRequestField *field)
{
	GntWidget *ret = NULL;
	GList *list;
	gboolean multi = purple_request_field_list_get_multi_select(field);
	if (multi)
	{
		GntWidget *tree = gnt_tree_new();

		list = purple_request_field_list_get_items(field);
		for (; list; list = list->next)
		{
			const char *text = list->data;
			gpointer key = purple_request_field_list_get_data(field, text);
			gnt_tree_add_choice(GNT_TREE(tree), key,
					gnt_tree_create_row(GNT_TREE(tree), text), NULL, NULL);
			if (purple_request_field_list_is_selected(field, text))
				gnt_tree_set_choice(GNT_TREE(tree), key, TRUE);
		}
		ret = tree;
	}
	else
	{
		GntWidget *combo = gnt_combo_box_new();

		list = purple_request_field_list_get_items(field);
		for (; list; list = list->next)
		{
			const char *text = list->data;
			gpointer key = purple_request_field_list_get_data(field, text);
			gnt_combo_box_add_data(GNT_COMBO_BOX(combo), key, text);
			if (purple_request_field_list_is_selected(field, text))
				gnt_combo_box_set_selected(GNT_COMBO_BOX(combo), key);
		}
		ret = combo;
	}
	return ret;
}
Example #3
0
Request::FieldsDialog::ListFieldSingle::ListFieldSingle(
    PurpleRequestField *field)
    : field(field)
{
    g_assert(field);

    char *text = g_strdup_printf("%s%s",
                                 purple_request_field_is_required(field) ? "*" : "",
                                 purple_request_field_get_label(field));
    SetText(text);
    g_free(text);

    GList *list = purple_request_field_list_get_items(field);
    for (int i = 0; list; i++, list = list->next) {
        const char *text = reinterpret_cast<const char*>(list->data);
        AddOption(text);
        if (purple_request_field_list_is_selected(field, text))
            SetSelected(i);
    }

    signal_selection_changed.connect(sigc::mem_fun(this,
                                     &ListFieldSingle::OnSelectionChanged));
}