2009-09-04 02:50:25 -07:00
|
|
|
#include <Elementary.h>
|
|
|
|
|
|
|
|
static Elm_Genlist_Item_Class itci;
|
|
|
|
char *gli_label_get(const void *data, Evas_Object *obj, const char *part)
|
|
|
|
{
|
|
|
|
char buf[256];
|
2009-09-10 02:25:11 -07:00
|
|
|
int j = (int)data;
|
|
|
|
snprintf(buf, sizeof(buf), "%c%c",
|
|
|
|
'A' + ((j >> 4) & 0xf),
|
|
|
|
'a' + ((j ) & 0xf)
|
|
|
|
);
|
2009-09-04 02:50:25 -07:00
|
|
|
return strdup(buf);
|
|
|
|
}
|
2009-09-10 02:25:11 -07:00
|
|
|
|
|
|
|
void
|
|
|
|
index_changed2(void *data, Evas_Object *obj, void *event_info)
|
|
|
|
{
|
|
|
|
// called on a change but delayed in case multiple changes happen in a
|
|
|
|
// short timespan
|
|
|
|
elm_genlist_item_top_bring_in(event_info);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
index_changed(void *data, Evas_Object *obj, void *event_info)
|
2009-09-04 02:50:25 -07:00
|
|
|
{
|
2009-09-10 02:25:11 -07:00
|
|
|
// this is calld on every change, no matter how often
|
|
|
|
// elm_genlist_item_bring_in(event_info);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
index_selected(void *data, Evas_Object *obj, void *event_info)
|
|
|
|
{
|
|
|
|
// called on final select
|
|
|
|
elm_genlist_item_top_bring_in(event_info);
|
2009-09-04 02:50:25 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
test_index(void *data, Evas_Object *obj, void *event_info)
|
|
|
|
{
|
|
|
|
Evas_Object *win, *bg, *gl, *id;
|
|
|
|
Elm_Genlist_Item *it;
|
2009-09-10 02:25:11 -07:00
|
|
|
int i, j;
|
2009-09-04 02:50:25 -07:00
|
|
|
|
|
|
|
win = elm_win_add(NULL, "index", ELM_WIN_BASIC);
|
|
|
|
elm_win_title_set(win, "Index");
|
|
|
|
elm_win_autodel_set(win, 1);
|
|
|
|
|
|
|
|
bg = elm_bg_add(win);
|
|
|
|
elm_win_resize_object_add(win, bg);
|
|
|
|
evas_object_size_hint_weight_set(bg, 1.0, 1.0);
|
|
|
|
evas_object_show(bg);
|
|
|
|
|
|
|
|
gl = elm_genlist_add(win);
|
|
|
|
evas_object_size_hint_weight_set(gl, 1.0, 1.0);
|
|
|
|
elm_win_resize_object_add(win, gl);
|
|
|
|
evas_object_show(gl);
|
|
|
|
|
|
|
|
id = elm_index_add(win);
|
|
|
|
evas_object_size_hint_weight_set(id, 1.0, 1.0);
|
|
|
|
elm_win_resize_object_add(win, id);
|
2009-09-10 02:25:11 -07:00
|
|
|
|
2009-09-04 02:50:25 -07:00
|
|
|
evas_object_show(id);
|
|
|
|
|
|
|
|
itci.item_style = "default";
|
|
|
|
itci.func.label_get = gli_label_get;
|
|
|
|
itci.func.icon_get = NULL;
|
|
|
|
itci.func.state_get = NULL;
|
2009-09-10 02:25:11 -07:00
|
|
|
itci.func.del = NULL;
|
2009-09-04 02:50:25 -07:00
|
|
|
|
2009-09-10 02:25:11 -07:00
|
|
|
j = 0;
|
2009-09-04 02:50:25 -07:00
|
|
|
for (i = 0; i < 100; i++)
|
|
|
|
{
|
|
|
|
it = elm_genlist_item_append(gl, &itci,
|
2009-09-10 02:25:11 -07:00
|
|
|
(void *)j/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, NULL/* func */,
|
2009-09-04 02:50:25 -07:00
|
|
|
NULL/* func data */);
|
2009-09-10 02:25:11 -07:00
|
|
|
if ((j & 0xf) == 0)
|
2009-09-07 04:10:13 -07:00
|
|
|
{
|
|
|
|
char buf[32];
|
|
|
|
|
2009-09-10 02:25:11 -07:00
|
|
|
snprintf(buf, sizeof(buf), "%c", 'A' + ((j >> 4) & 0xf));
|
2009-09-07 04:10:13 -07:00
|
|
|
elm_index_item_append(id, buf, it);
|
|
|
|
}
|
2009-09-10 02:25:11 -07:00
|
|
|
j += 2;
|
2009-09-04 02:50:25 -07:00
|
|
|
}
|
2009-09-10 02:25:11 -07:00
|
|
|
evas_object_smart_callback_add(id, "delay,changed", index_changed2, NULL);
|
|
|
|
evas_object_smart_callback_add(id, "changed", index_changed, NULL);
|
|
|
|
evas_object_smart_callback_add(id, "selected", index_selected, NULL);
|
|
|
|
elm_index_item_go(id, 0);
|
2009-09-04 02:50:25 -07:00
|
|
|
|
|
|
|
evas_object_resize(win, 320, 480);
|
|
|
|
evas_object_show(win);
|
|
|
|
}
|