svn update: 48945 (latest:48959)
[framework/uifw/elementary.git] / src / bin / test_index.c
1 #include <Elementary.h>
2 #ifndef ELM_LIB_QUICKLAUNCH
3 static Elm_Genlist_Item_Class itci;
4 char *gli_label_get(const void *data, Evas_Object *obj, const char *part)
5 {
6    char buf[256];
7    int j = (int)data;
8    snprintf(buf, sizeof(buf), "%c%c", 
9             'A' + ((j >> 4) & 0xf),
10             'a' + ((j     ) & 0xf)
11             );
12    return strdup(buf);
13 }
14
15 void
16 index_changed2(void *data, Evas_Object *obj, void *event_info)
17 {
18    // called on a change but delayed in case multiple changes happen in a
19    // short timespan
20    elm_genlist_item_top_bring_in(event_info);
21 }
22
23 void
24 index_changed(void *data, Evas_Object *obj, void *event_info)
25 {
26    // this is calld on every change, no matter how often
27    // elm_genlist_item_bring_in(event_info);
28 }
29
30 void
31 index_selected(void *data, Evas_Object *obj, void *event_info)
32 {
33    // called on final select
34    elm_genlist_item_top_bring_in(event_info);
35 }
36
37 void
38 test_index(void *data, Evas_Object *obj, void *event_info)
39 {
40    Evas_Object *win, *bg, *gl, *id;
41    Elm_Genlist_Item *it;
42    int i, j;
43
44    win = elm_win_add(NULL, "index", ELM_WIN_BASIC);
45    elm_win_title_set(win, "Index");
46    elm_win_autodel_set(win, 1);
47
48    bg = elm_bg_add(win);
49    elm_win_resize_object_add(win, bg);
50    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
51    evas_object_show(bg);
52
53    gl = elm_genlist_add(win);
54    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
55    elm_win_resize_object_add(win, gl);
56    evas_object_show(gl);
57    
58    id = elm_index_add(win);
59    evas_object_size_hint_weight_set(id, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
60    elm_win_resize_object_add(win, id);
61    
62    evas_object_show(id);
63
64    itci.item_style     = "default";
65    itci.func.label_get = gli_label_get;
66    itci.func.icon_get  = NULL;
67    itci.func.state_get = NULL;
68    itci.func.del       = NULL;
69
70    j = 0;
71    for (i = 0; i < 100; i++)
72      {
73         it = elm_genlist_item_append(gl, &itci,
74                                      (void *)j/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, NULL/* func */,
75                                      NULL/* func data */);
76         if ((j & 0xf) == 0)
77           {
78              char buf[32];
79              
80              snprintf(buf, sizeof(buf), "%c", 'A' + ((j >> 4) & 0xf));
81              elm_index_item_append(id, buf, it);
82           }
83         j += 2;
84      }
85    evas_object_smart_callback_add(id, "delay,changed", index_changed2, NULL);
86    evas_object_smart_callback_add(id, "changed", index_changed, NULL);
87    evas_object_smart_callback_add(id, "selected", index_selected, NULL);
88    elm_index_item_go(id, 0);
89
90    evas_object_resize(win, 320, 480);
91    evas_object_show(win);
92 }
93 #endif