Elementary index widget
This code snippet shows how to create a simple index for a list using elementary index widget.
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) {
//create a list
Evas_Object *list = elm_list_add(parent);
elm_win_resize_object_add(parent, list);
evas_object_show(list);
//create index object
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);
//populate the list and update index
char current_letter = 0;
for (int i = 0; i < (sizeof(countries) / sizeof(countries[0])); i++) {
Elm_Object_Item *item = elm_list_item_append(list, countries[i], NULL, NULL, NULL, NULL);
if (current_letter != countries[i][0]) {
current_letter = countries[i][0];
char buf[32];
snprintf(buf, sizeof(buf), "%c", current_letter);
Elm_Object_Item * index_it = elm_index_item_append(index, buf, NULL, item);
elm_object_item_del_cb_set(index_it, NULL);
}
}
//update list every time index value is changed
evas_object_smart_callback_add(index, "delay,changed", _index_changed,
NULL);
elm_index_level_go(index, 0);
}