Index widget settings

This code snippet demonstrate how to use some of index widget's settings: autohide, indicator, delay time.
const char *countries[] = { "Algeria", "Argentina", "Australia", "Brazil", "Canada", "China",
		"Democratic Republic of the Congo", "Greenland", "India", "Indonesia", "Iran", "Kazakhstan", "Libya", "Mexico",
		"Mongolia", "Peru", "Russia", "Saudi Arabia", "Sudan", "United States of America" };

static void _index_changed(void *data, Evas_Object *obj, void *event_info) {
	elm_list_item_bring_in(elm_object_item_data_get(event_info));
}

static void index_test(Evas_Object *parent) {
	Evas_Object *list = elm_list_add(parent);
	elm_win_resize_object_add(parent, list);
	evas_object_show(list);

	Evas_Object * index = elm_index_add(parent);
	evas_object_size_hint_weight_set(index, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
	elm_win_resize_object_add(parent, index);
	evas_object_show(index);

	char currentLetter = 0;

	for (int i = 0; i < (sizeof(countries) / sizeof(countries[0])); i++) {
		Elm_Object_Item *lit = elm_list_item_append(list, countries[i], NULL, NULL, NULL, NULL);
		if (currentLetter != countries[i][0]) {
			currentLetter = countries[i][0];
			char buf[32];
			snprintf(buf, sizeof(buf), "%c", currentLetter);
			elm_index_item_append(index, buf, NULL, lit);
		}
	}

	evas_object_smart_callback_add(index, "delay,changed", _index_changed,
	NULL);

	//disable index autohide
	elm_index_autohide_disabled_set(index, EINA_TRUE);

	//disable popup with currently selected letter
	elm_index_indicator_disabled_set(index, EINA_TRUE);

	// set delay time after which list will go to the selected index
	// here it is 1 sec, default value is 0.2sec
	elm_index_delay_change_time_set(index, 1);

	elm_index_level_go(index, 0);
}

Responses

0 Replies