Merge "custom eail widget implementation" into tizen
[platform/core/uifw/eail.git] / tests / eail_genlist_tc2.c
1 /*
2  * Tested interface: AtkAction
3  *
4  * Tested AtkObject: EailGenlist
5  *
6  * Description: Test AtkAction interface
7  *
8  * Test input: accessible object representing EailGenlist
9  *
10  * Expected test result: test should return 0 (success)
11  */
12
13 #include <Elementary.h>
14 #include <atk/atk.h>
15
16 #include "eail_test_utils.h"
17
18 INIT_TEST("EailGenlist")
19
20 #define N_ITEMS 18
21
22 static Evas_Object *glob_genlist = NULL;
23 static Elm_Genlist_Item_Class *_itc_group = NULL;
24 static int nitems = 0;
25
26 Elm_Object_Item *glob_test_item = NULL;
27
28 static void
29 _do_test(AtkObject *aobj)
30 {
31    int n_actions = 0;
32    const gchar *test_desc = "test description for scroll up";
33    const gchar *result_desc;
34
35    g_assert(ATK_IS_ACTION(aobj));
36    n_actions = atk_action_get_n_actions(ATK_ACTION(aobj));
37    g_assert(4 == n_actions);
38
39    /* scroll up*/
40    eailu_test_action_activate(ATK_ACTION(aobj), "scroll_up");
41
42    /* scroll_down */
43    eailu_test_action_activate(ATK_ACTION(aobj), "scroll_down");
44
45    /* scroll_left */
46    eailu_test_action_activate(ATK_ACTION(aobj), "scroll_left");
47
48    /* scroll_right*/
49    eailu_test_action_activate(ATK_ACTION(aobj), "scroll_right");
50
51    /* description test */
52    g_assert(!atk_action_get_description(ATK_ACTION(aobj), 0));
53    g_assert(atk_action_set_description(ATK_ACTION(aobj), 0, test_desc));
54
55    result_desc = atk_action_get_description(ATK_ACTION(aobj), 0);
56    g_assert(0 == g_strcmp0(result_desc, test_desc));
57    eailu_test_code_called = 1;
58 }
59
60 static char *
61 _item_label_get(void *data, Evas_Object *obj, const char *part)
62 {
63    time_t t = (time_t)ecore_time_unix_get();
64    char buf[256];
65    int i = (int)(long)data;
66    struct tm timeinfo;
67    localtime_r(&t, &timeinfo);
68
69    if (!strcmp(part, "elm.text"))
70      g_snprintf(buf, sizeof(buf), "Item # %i", i);
71    else
72      {
73         int n;
74         strftime(buf, sizeof(buf), "realized at %c", &timeinfo);
75         n = strlen(buf);
76         buf[n - 1] = '\0';
77      }
78
79    return strdup(buf);
80 }
81
82 static Evas_Object *
83 _item_content_get(void *data, Evas_Object *obj, const char *part)
84 {
85    Evas_Object *ic = elm_icon_add(obj);
86
87    if (!strcmp(part, "elm.swallow.icon"))
88      elm_icon_standard_set(ic, "clock");
89
90    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
91    return ic;
92 }
93
94 static char *
95 _group_label_get(void *data, Evas_Object *obj, const char *part)
96 {
97    char buf[256];
98    int i = (int)(long)data;
99
100    g_snprintf(buf, sizeof(buf), "Group %d (item #%d)", i / 7, i);
101
102    return strdup(buf);
103 }
104
105 static Evas_Object *
106 _group_content_get(void *data, Evas_Object *obj, const char *part)
107 {
108    Evas_Object *ic = elm_icon_add(obj);
109
110    if (!strcmp(part, "elm.swallow.icon"))
111      elm_icon_standard_set(ic, "home");
112
113    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
114    return ic;
115 }
116
117 static void
118 _item_sel_cb(void *data, Evas_Object *obj, void *event_info)
119 {
120    //   printf("sel item data [%p] on genlist obj [%p], item pointer [%p]\n",
121    //          data, obj, event_info);
122 }
123
124 void
125 _init_genlist(Evas_Object *win)
126 {
127    Evas_Object *box, *entry;
128    static Elm_Genlist_Item_Class *_itc = NULL;
129    int i = 0;
130
131    if (!_itc)
132      {
133         _itc = elm_genlist_item_class_new();
134         _itc->item_style = "default";
135         _itc->func.text_get = _item_label_get;
136         _itc->func.content_get = _item_content_get;
137         _itc->func.state_get = NULL;
138         _itc->func.del = NULL;
139      }
140
141    if (!_itc_group)
142      {
143         _itc_group = elm_genlist_item_class_new();
144         _itc_group->item_style = "group_index";
145         _itc_group->func.text_get = _group_label_get;
146         _itc_group->func.content_get = _group_content_get;
147         _itc_group->func.state_get = NULL;
148         _itc_group->func.del = NULL;
149      }
150
151    box = elm_box_add(win);
152    evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
153    elm_win_resize_object_add(win, box);
154    evas_object_show(box);
155
156    glob_genlist = elm_genlist_add(win);
157
158    evas_object_size_hint_weight_set
159        (glob_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
160    evas_object_size_hint_align_set
161        (glob_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
162    elm_box_pack_end(box, glob_genlist);
163    evas_object_show(glob_genlist);
164
165    entry = elm_entry_add(win);
166    elm_entry_single_line_set(entry, EINA_TRUE);
167    evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, 0.0);
168    evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
169    evas_object_show(entry);
170
171
172    /* filling genlist */
173    for (i = 0; i < N_ITEMS; i++)
174      {
175         Elm_Object_Item *gli = NULL, *glg = NULL;
176
177         if (i % 7 == 0)
178           {
179              glg = gli = elm_genlist_item_append(glob_genlist, _itc_group,
180                                                  (void *) (long) nitems++,
181                                                  NULL, ELM_GENLIST_ITEM_GROUP,
182                                                  _item_sel_cb, NULL );
183              elm_genlist_item_select_mode_set(
184                  gli, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
185           }
186         else
187           {
188              gli = elm_genlist_item_append(glob_genlist, _itc,
189                                            (void *) (long) nitems++, glg,
190                                            ELM_GENLIST_ITEM_NONE,
191                                            _item_sel_cb, NULL );
192           }
193
194         if (i == 1)
195           glob_test_item = gli;
196      }
197
198 }
199
200 EAPI_MAIN int
201 elm_main(int argc, char **argv)
202 {
203    Evas_Object *win;
204
205    win = eailu_create_test_window_with_glib_init(_on_done, _on_focus_in);
206    _init_genlist(win);
207
208    /* and show the window */
209    evas_object_show(win);
210
211    elm_run();
212    elm_shutdown();
213
214    /* exit code */
215    return 0;
216 }
217 ELM_MAIN()