fcfe7de370d232beb0218f63aa7d286054ceab83
[framework/uifw/elementary.git] / src / bin / test_list.c
1 #include <Elementary.h>
2 #ifdef HAVE_CONFIG_H
3 # include "elementary_config.h"
4 #endif
5 #ifndef ELM_LIB_QUICKLAUNCH
6 static void
7 my_show_it(void        *data,
8            Evas_Object *obj __UNUSED__,
9            void        *event_info __UNUSED__)
10 {
11    elm_list_item_show(data);
12 }
13
14 static void
15 scroll_top(void        *data __UNUSED__,
16            Evas_Object *obj __UNUSED__,
17            void        *event_info __UNUSED__)
18 {
19    printf("Top edge!\n");
20 }
21
22 static void
23 scroll_bottom(void        *data __UNUSED__,
24               Evas_Object *obj __UNUSED__,
25               void        *event_info __UNUSED__)
26 {
27    printf("Bottom edge!\n");
28 }
29
30 static void
31 scroll_left(void        *data __UNUSED__,
32             Evas_Object *obj __UNUSED__,
33             void        *event_info __UNUSED__)
34 {
35    printf("Left edge!\n");
36 }
37
38 static void
39 scroll_right(void        *data __UNUSED__,
40              Evas_Object *obj __UNUSED__,
41              void        *event_info __UNUSED__)
42 {
43    printf("Right edge!\n");
44 }
45
46 void
47 test_list(void        *data __UNUSED__,
48           Evas_Object *obj __UNUSED__,
49           void        *event_info __UNUSED__)
50 {
51    Evas_Object *win, *bg, *li, *ic, *ic2, *bx, *tb2, *bt;
52    char buf[PATH_MAX];
53    Elm_Object_Item *list_it1, *list_it2, *list_it3, *list_it4, *list_it5;
54
55    win = elm_win_add(NULL, "list", ELM_WIN_BASIC);
56    elm_win_title_set(win, "List");
57    elm_win_autodel_set(win, EINA_TRUE);
58
59    bg = elm_bg_add(win);
60    elm_win_resize_object_add(win, bg);
61    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
62    evas_object_show(bg);
63
64    li = elm_list_add(win);
65    elm_win_resize_object_add(win, li);
66    elm_list_mode_set(li, ELM_LIST_LIMIT);
67    evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
68
69    ic = elm_icon_add(win);
70    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
71    elm_icon_file_set(ic, buf, NULL);
72    elm_icon_scale_set(ic, 1, 1);
73    list_it1 = elm_list_item_append(li, "Hello", ic, NULL, NULL, NULL);
74    ic = elm_icon_add(win);
75    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
76    elm_icon_scale_set(ic, 0, 0);
77    elm_icon_file_set(ic, buf, NULL);
78    elm_list_item_append(li, "world", ic, NULL, NULL, NULL);
79    ic = elm_icon_add(win);
80    elm_icon_standard_set(ic, "edit");
81    elm_icon_scale_set(ic, 0, 0);
82    elm_list_item_append(li, ".", ic, NULL, NULL, NULL);
83
84    ic = elm_icon_add(win);
85    elm_icon_standard_set(ic, "delete");
86    elm_icon_scale_set(ic, 0, 0);
87    ic2 = elm_icon_add(win);
88    elm_icon_standard_set(ic2, "clock");
89    elm_icon_scale_set(ic2, 0, 0);
90    list_it2 = elm_list_item_append(li, "How", ic, ic2, NULL, NULL);
91
92    bx = elm_box_add(win);
93    elm_box_horizontal_set(bx, EINA_TRUE);
94
95    ic = elm_icon_add(win);
96    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
97    elm_icon_file_set(ic, buf, NULL);
98    elm_icon_scale_set(ic, 0, 0);
99    evas_object_size_hint_align_set(ic, 0.5, 0.5);
100    elm_box_pack_end(bx, ic);
101    evas_object_show(ic);
102
103    ic = elm_icon_add(win);
104    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
105    elm_icon_file_set(ic, buf, NULL);
106    elm_icon_scale_set(ic, 0, 0);
107    evas_object_size_hint_align_set(ic, 0.5, 0.0);
108    elm_box_pack_end(bx, ic);
109    evas_object_show(ic);
110
111    ic = elm_icon_add(win);
112    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
113    elm_icon_file_set(ic, buf, NULL);
114    elm_icon_scale_set(ic, 0, 0);
115    evas_object_size_hint_align_set(ic, 0.0, EVAS_HINT_EXPAND);
116    elm_box_pack_end(bx, ic);
117    evas_object_show(ic);
118    elm_list_item_append(li, "are", bx, NULL, NULL, NULL);
119
120    elm_list_item_append(li, "you", NULL, NULL, NULL, NULL);
121    list_it3 = elm_list_item_append(li, "doing", NULL, NULL, NULL, NULL);
122    elm_list_item_append(li, "out", NULL, NULL, NULL, NULL);
123    elm_list_item_append(li, "there", NULL, NULL, NULL, NULL);
124    elm_list_item_append(li, "today", NULL, NULL, NULL, NULL);
125    elm_list_item_append(li, "?", NULL, NULL, NULL, NULL);
126    list_it4 = elm_list_item_append(li, "Here", NULL, NULL, NULL, NULL);
127    elm_list_item_append(li, "are", NULL, NULL, NULL, NULL);
128    elm_list_item_append(li, "some", NULL, NULL, NULL, NULL);
129    elm_list_item_append(li, "more", NULL, NULL, NULL, NULL);
130    elm_list_item_append(li, "items", NULL, NULL, NULL, NULL);
131    elm_list_item_append(li, "Is this label long enough?", NULL, NULL, NULL, NULL);
132    list_it5 = elm_list_item_append(li, "Maybe this one is even longer so we can test long long items.", NULL, NULL, NULL, NULL);
133
134    elm_list_go(li);
135
136    evas_object_show(li);
137
138    tb2 = elm_table_add(win);
139    evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
140    elm_win_resize_object_add(win, tb2);
141
142    bt = elm_button_add(win);
143    elm_object_text_set(bt, "Hello");
144    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it1);
145    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
146    evas_object_size_hint_align_set(bt, 0.9, 0.5);
147    elm_table_pack(tb2, bt, 0, 0, 1, 1);
148    evas_object_show(bt);
149
150    bt = elm_button_add(win);
151    elm_object_text_set(bt, "How");
152    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it2);
153    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
154    evas_object_size_hint_align_set(bt, 0.9, 0.5);
155    elm_table_pack(tb2, bt, 0, 1, 1, 1);
156    evas_object_show(bt);
157
158    bt = elm_button_add(win);
159    elm_object_text_set(bt, "doing");
160    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it3);
161    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
162    evas_object_size_hint_align_set(bt, 0.9, 0.5);
163    elm_table_pack(tb2, bt, 0, 2, 1, 1);
164    evas_object_show(bt);
165
166    bt = elm_button_add(win);
167    elm_object_text_set(bt, "Here");
168    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it4);
169    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
170    evas_object_size_hint_align_set(bt, 0.9, 0.5);
171    elm_table_pack(tb2, bt, 0, 3, 1, 1);
172    evas_object_show(bt);
173
174    bt = elm_button_add(win);
175    elm_object_text_set(bt, "Maybe this...");
176    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it5);
177    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
178    evas_object_size_hint_align_set(bt, 0.9, 0.5);
179    elm_table_pack(tb2, bt, 0, 4, 1, 1);
180    evas_object_show(bt);
181
182    evas_object_show(tb2);
183
184    evas_object_resize(win, 320, 300);
185    evas_object_show(win);
186
187    evas_object_smart_callback_add(li, "scroll,edge,top", scroll_top, NULL);
188    evas_object_smart_callback_add(li, "scroll,edge,bottom", scroll_bottom, NULL);
189    evas_object_smart_callback_add(li, "scroll,edge,left", scroll_left, NULL);
190    evas_object_smart_callback_add(li, "scroll,edge,right", scroll_right, NULL);
191 }
192
193 void
194 test_list_horizontal(void        *data __UNUSED__,
195                      Evas_Object *obj __UNUSED__,
196                      void        *event_info __UNUSED__)
197 {
198    Evas_Object *win, *bg, *li, *ic, *ic2, *bx, *tb2, *bt;
199    char buf[PATH_MAX];
200    Elm_Object_Item *list_it1, *list_it2, *list_it3, *list_it4;
201
202    win = elm_win_add(NULL, "list-horizontal", ELM_WIN_BASIC);
203    elm_win_title_set(win, "List Horizontal");
204    elm_win_autodel_set(win, EINA_TRUE);
205
206    bg = elm_bg_add(win);
207    elm_win_resize_object_add(win, bg);
208    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
209    evas_object_show(bg);
210
211    li = elm_list_add(win);
212    elm_list_horizontal_set(li, EINA_TRUE);
213    elm_list_mode_set(li, ELM_LIST_LIMIT);
214    elm_win_resize_object_add(win, li);
215    evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
216
217    ic = elm_icon_add(win);
218    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
219    elm_icon_file_set(ic, buf, NULL);
220    elm_icon_scale_set(ic, 1, 1);
221    list_it1 = elm_list_item_append(li, "Hello", ic, NULL, NULL, NULL);
222    ic = elm_icon_add(win);
223    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
224    elm_icon_scale_set(ic, 0, 0);
225    elm_icon_file_set(ic, buf, NULL);
226    elm_list_item_append(li, "world", ic, NULL, NULL, NULL);
227    ic = elm_icon_add(win);
228    elm_icon_standard_set(ic, "edit");
229    elm_icon_scale_set(ic, 0, 0);
230    elm_list_item_append(li, ".", ic, NULL, NULL, NULL);
231
232    ic = elm_icon_add(win);
233    elm_icon_standard_set(ic, "delete");
234    elm_icon_scale_set(ic, 0, 0);
235    ic2 = elm_icon_add(win);
236    elm_icon_standard_set(ic2, "clock");
237    elm_icon_scale_set(ic2, 0, 0);
238    list_it2 = elm_list_item_append(li, "How", ic, ic2, NULL, NULL);
239
240    bx = elm_box_add(win);
241
242    ic = elm_icon_add(win);
243    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
244    elm_icon_file_set(ic, buf, NULL);
245    elm_icon_scale_set(ic, 0, 0);
246    evas_object_size_hint_align_set(ic, 0.5, 0.5);
247    elm_box_pack_end(bx, ic);
248    evas_object_show(ic);
249
250    ic = elm_icon_add(win);
251    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
252    elm_icon_file_set(ic, buf, NULL);
253    elm_icon_scale_set(ic, 0, 0);
254    evas_object_size_hint_align_set(ic, 0.5, 0.0);
255    elm_box_pack_end(bx, ic);
256    evas_object_show(ic);
257
258    elm_list_item_append(li, "are", bx, NULL, NULL, NULL);
259
260    elm_list_item_append(li, "you", NULL, NULL, NULL, NULL);
261    list_it3 = elm_list_item_append(li, "doing", NULL, NULL, NULL, NULL);
262    elm_list_item_append(li, "out", NULL, NULL, NULL, NULL);
263    elm_list_item_append(li, "there", NULL, NULL, NULL, NULL);
264    elm_list_item_append(li, "today", NULL, NULL, NULL, NULL);
265    elm_list_item_append(li, "?", NULL, NULL, NULL, NULL);
266
267    list_it4 = elm_list_item_append(li, "And", NULL, NULL, NULL, NULL);
268    elm_list_item_append(li, "here", NULL, NULL, NULL, NULL);
269    elm_list_item_append(li, "we", NULL, NULL, NULL, NULL);
270    elm_list_item_append(li, "are", NULL, NULL, NULL, NULL);
271    elm_list_item_append(li, "done", NULL, NULL, NULL, NULL);
272    elm_list_item_append(li, "with", NULL, NULL, NULL, NULL);
273    elm_list_item_append(li, "items.", NULL, NULL, NULL, NULL);
274
275    elm_list_go(li);
276
277    evas_object_show(li);
278
279    tb2 = elm_table_add(win);
280    evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
281    elm_win_resize_object_add(win, tb2);
282
283    bt = elm_button_add(win);
284    elm_object_text_set(bt, "Hello");
285    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it1);
286    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
287    evas_object_size_hint_align_set(bt, 0.5, 0.9);
288    elm_table_pack(tb2, bt, 0, 0, 1, 1);
289    evas_object_show(bt);
290
291    bt = elm_button_add(win);
292    elm_object_text_set(bt, "How");
293    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it2);
294    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
295    evas_object_size_hint_align_set(bt, 0.5, 0.9);
296    elm_table_pack(tb2, bt, 1, 0, 1, 1);
297    evas_object_show(bt);
298
299    bt = elm_button_add(win);
300    elm_object_text_set(bt, "doing");
301    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it3);
302    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
303    evas_object_size_hint_align_set(bt, 0.5, 0.9);
304    elm_table_pack(tb2, bt, 2, 0, 1, 1);
305    evas_object_show(bt);
306
307    bt = elm_button_add(win);
308    elm_object_text_set(bt, "And");
309    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it4);
310    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
311    evas_object_size_hint_align_set(bt, 0.5, 0.9);
312    elm_table_pack(tb2, bt, 3, 0, 1, 1);
313    evas_object_show(bt);
314
315    evas_object_show(tb2);
316
317    evas_object_resize(win, 320, 300);
318    evas_object_show(win);
319 }
320
321 /***********/
322
323 static void
324 my_li2_clear(void        *data,
325              Evas_Object *obj __UNUSED__,
326              void        *event_info __UNUSED__)
327 {
328    elm_list_clear(data);
329 }
330
331 static void
332 my_li2_sel(void        *data __UNUSED__,
333            Evas_Object *obj,
334            void        *event_info __UNUSED__)
335 {
336    Elm_Object_Item *list_it = elm_list_selected_item_get(obj);
337    elm_list_item_selected_set(list_it, 0);
338 }
339
340 void
341 test_list2(void        *data __UNUSED__,
342            Evas_Object *obj __UNUSED__,
343            void        *event_info __UNUSED__)
344 {
345    Evas_Object *win, *bg, *li, *ic, *ic2, *bx, *bx2, *bt;
346    char buf[PATH_MAX];
347    Elm_Object_Item *list_it;
348
349    win = elm_win_add(NULL, "list2", ELM_WIN_BASIC);
350    elm_win_title_set(win, "List 2");
351    elm_win_autodel_set(win, EINA_TRUE);
352
353    bg = elm_bg_add(win);
354    snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
355    elm_bg_file_set(bg, buf, NULL);
356    elm_win_resize_object_add(win, bg);
357    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
358    evas_object_show(bg);
359
360    bx = elm_box_add(win);
361    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
362    elm_win_resize_object_add(win, bx);
363    evas_object_show(bx);
364
365    li = elm_list_add(win);
366    evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);
367    evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
368    elm_list_mode_set(li, ELM_LIST_LIMIT);
369 //   elm_list_multi_select_set(li, 1);
370
371    ic = elm_icon_add(win);
372    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
373    elm_icon_file_set(ic, buf, NULL);
374    list_it = elm_list_item_append(li, "Hello", ic, NULL, my_li2_sel, NULL);
375    elm_list_item_selected_set(list_it, EINA_TRUE);
376    ic = elm_icon_add(win);
377    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
378    elm_icon_scale_set(ic, 0, 0);
379    elm_icon_file_set(ic, buf, NULL);
380    elm_list_item_append(li, "world", ic, NULL, NULL, NULL);
381    ic = elm_icon_add(win);
382    elm_icon_standard_set(ic, "edit");
383    elm_icon_scale_set(ic, 0, 0);
384    elm_list_item_append(li, ".", ic, NULL, NULL, NULL);
385
386    ic = elm_icon_add(win);
387    elm_icon_standard_set(ic, "delete");
388    elm_icon_scale_set(ic, 0, 0);
389    ic2 = elm_icon_add(win);
390    elm_icon_standard_set(ic2, "clock");
391    elm_icon_scale_set(ic2, 0, 0);
392    elm_list_item_append(li, "How", ic, ic2, NULL, NULL);
393
394    bx2 = elm_box_add(win);
395    elm_box_horizontal_set(bx2, EINA_TRUE);
396
397    ic = elm_icon_add(win);
398    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
399    elm_icon_file_set(ic, buf, NULL);
400    elm_icon_scale_set(ic, 0, 0);
401    evas_object_size_hint_align_set(ic, 0.5, 0.5);
402    elm_box_pack_end(bx2, ic);
403    evas_object_show(ic);
404
405    ic = elm_icon_add(win);
406    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
407    elm_icon_file_set(ic, buf, NULL);
408    elm_icon_scale_set(ic, 0, 0);
409    evas_object_size_hint_align_set(ic, 0.5, 0.0);
410    elm_box_pack_end(bx2, ic);
411    evas_object_show(ic);
412    elm_list_item_append(li, "are", bx2, NULL, NULL, NULL);
413
414    elm_list_item_append(li, "you", NULL, NULL, NULL, NULL);
415    elm_list_item_append(li, "doing", NULL, NULL, NULL, NULL);
416    elm_list_item_append(li, "out", NULL, NULL, NULL, NULL);
417    elm_list_item_append(li, "there", NULL, NULL, NULL, NULL);
418    elm_list_item_append(li, "today", NULL, NULL, NULL, NULL);
419    elm_list_item_append(li, "?", NULL, NULL, NULL, NULL);
420    elm_list_item_append(li, "Here", NULL, NULL, NULL, NULL);
421    elm_list_item_append(li, "are", NULL, NULL, NULL, NULL);
422    elm_list_item_append(li, "some", NULL, NULL, NULL, NULL);
423    elm_list_item_append(li, "more", NULL, NULL, NULL, NULL);
424    elm_list_item_append(li, "items", NULL, NULL, NULL, NULL);
425    elm_list_item_append(li, "Longer label.", NULL, NULL, NULL, NULL);
426
427    elm_list_go(li);
428
429    elm_box_pack_end(bx, li);
430    evas_object_show(li);
431
432    bx2 = elm_box_add(win);
433    elm_box_horizontal_set(bx2, EINA_TRUE);
434    elm_box_homogeneous_set(bx2, EINA_TRUE);
435    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
436    evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
437
438    bt = elm_button_add(win);
439    elm_object_text_set(bt, "Clear");
440    evas_object_smart_callback_add(bt, "clicked", my_li2_clear, li);
441    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
442    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
443    elm_box_pack_end(bx2, bt);
444    evas_object_show(bt);
445
446    elm_box_pack_end(bx, bx2);
447    evas_object_show(bx2);
448
449    evas_object_resize(win, 320, 300);
450    evas_object_show(win);
451 }
452
453 /***********/
454
455 static void
456 _bt_clicked(void        *data __UNUSED__,
457             Evas_Object *obj __UNUSED__,
458             void        *event_info __UNUSED__)
459 {
460    printf("button was clicked\n");
461 }
462
463 static void
464 _it_clicked(void        *data __UNUSED__,
465             Evas_Object *obj __UNUSED__,
466             void        *event_info __UNUSED__)
467 {
468    printf("item was clicked\n");
469 }
470
471 void
472 test_list3(void        *data __UNUSED__,
473            Evas_Object *obj __UNUSED__,
474            void        *event_info __UNUSED__)
475 {
476    Evas_Object *win, *bg, *li, *ic, *ic2, *bx;
477    char buf[PATH_MAX];
478
479    win = elm_win_add(NULL, "list3", ELM_WIN_BASIC);
480    elm_win_title_set(win, "List 3");
481    elm_win_autodel_set(win, EINA_TRUE);
482
483    bg = elm_bg_add(win);
484    elm_win_resize_object_add(win, bg);
485    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
486    evas_object_show(bg);
487
488    li = elm_list_add(win);
489    elm_win_resize_object_add(win, li);
490    evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
491    elm_list_mode_set(li, ELM_LIST_COMPRESS);
492
493    ic = elm_icon_add(win);
494    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
495    elm_icon_scale_set(ic, 0, 0);
496    elm_icon_file_set(ic, buf, NULL);
497    ic2 = elm_button_add(win);
498    elm_object_text_set(ic2, "Click me");
499    evas_object_smart_callback_add(ic2, "clicked", _bt_clicked, NULL);
500    evas_object_propagate_events_set(ic2, 0);
501    elm_list_item_append(li, "Hello", ic, ic2, _it_clicked, NULL);
502
503    ic = elm_icon_add(win);
504    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
505    elm_icon_scale_set(ic, 0, 0);
506    elm_icon_file_set(ic, buf, NULL);
507    ic2 = elm_button_add(win);
508    elm_object_text_set(ic2, "Click me");
509    evas_object_smart_callback_add(ic2, "clicked", _bt_clicked, NULL);
510    elm_list_item_append(li, "world", ic, ic2, _it_clicked, NULL);
511
512    ic = elm_icon_add(win);
513    elm_icon_standard_set(ic, "edit");
514    elm_icon_scale_set(ic, 0, 0);
515    elm_list_item_append(li, ".", ic, NULL, NULL, NULL);
516
517    ic = elm_icon_add(win);
518    elm_icon_standard_set(ic, "delete");
519    elm_icon_scale_set(ic, 0, 0);
520    ic2 = elm_icon_add(win);
521    elm_icon_standard_set(ic2, "clock");
522    elm_icon_scale_set(ic2, 0, 0);
523    elm_list_item_append(li, "How", ic, ic2, NULL, NULL);
524
525    bx = elm_box_add(win);
526    elm_box_horizontal_set(bx, EINA_TRUE);
527
528    ic = elm_icon_add(win);
529    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
530    elm_icon_file_set(ic, buf, NULL);
531    elm_icon_scale_set(ic, 0, 0);
532    evas_object_size_hint_align_set(ic, 0.5, 0.5);
533    elm_box_pack_end(bx, ic);
534    evas_object_show(ic);
535
536    ic = elm_icon_add(win);
537    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
538    elm_icon_file_set(ic, buf, NULL);
539    elm_icon_scale_set(ic, 0, 0);
540    evas_object_size_hint_align_set(ic, 0.5, 0.0);
541    elm_box_pack_end(bx, ic);
542    evas_object_show(ic);
543
544    ic = elm_icon_add(win);
545    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
546    elm_icon_file_set(ic, buf, NULL);
547    elm_icon_scale_set(ic, 0, 0);
548    evas_object_size_hint_align_set(ic, 0.0, EVAS_HINT_EXPAND);
549    elm_box_pack_end(bx, ic);
550    evas_object_show(ic);
551
552    elm_list_item_append(li, "are", bx, NULL, NULL, NULL);
553    elm_list_item_append(li, "you", NULL, NULL, NULL, NULL);
554    elm_list_item_append(li, "doing", NULL, NULL, NULL, NULL);
555    elm_list_item_append(li, "out", NULL, NULL, NULL, NULL);
556    elm_list_item_append(li, "there", NULL, NULL, NULL, NULL);
557    elm_list_item_append(li, "today", NULL, NULL, NULL, NULL);
558    elm_list_item_append(li, "?", NULL, NULL, NULL, NULL);
559    elm_list_item_append(li, "Here", NULL, NULL, NULL, NULL);
560    elm_list_item_append(li, "are", NULL, NULL, NULL, NULL);
561    elm_list_item_append(li, "some", NULL, NULL, NULL, NULL);
562    elm_list_item_append(li, "more", NULL, NULL, NULL, NULL);
563    elm_list_item_append(li, "items", NULL, NULL, NULL, NULL);
564    elm_list_item_append(li, "Is this label long enough?", NULL, NULL, NULL, NULL);
565    elm_list_item_append(li, "Maybe this one is even longer so we can test long long items.", NULL, NULL, NULL, NULL);
566
567    elm_list_go(li);
568
569    evas_object_show(li);
570
571    evas_object_resize(win, 320, 300);
572    evas_object_show(win);
573 }
574
575 ///////////////////////////////////////////////////////////////////////////////////////
576
577 struct Pginfo
578 {
579    Evas_Object *naviframe, *win;
580 };
581
582 static void
583 test_list4_back_cb(void        *data,
584                    Evas_Object *obj __UNUSED__,
585                    void        *event_info __UNUSED__)
586 {
587    struct Pginfo *info = data;
588    if (!info) return;
589
590    elm_naviframe_item_pop(info->naviframe);
591 }
592
593 static void
594 test_list4_swipe(void        *data,
595                  Evas_Object *obj __UNUSED__,
596                  void        *event_info)
597 {
598    Evas_Object *box, *entry, *button;
599    struct Pginfo *info = data;
600    char *item_data;
601    if ((!event_info) || (!data)) return;
602
603    item_data = elm_object_item_data_get(event_info);
604
605    box = elm_box_add(info->win);
606    elm_box_horizontal_set(box, EINA_FALSE);
607    elm_box_homogeneous_set(box, EINA_FALSE);
608    evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
609    evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
610    evas_object_show(box);
611
612    entry = elm_entry_add(info->win);
613    elm_entry_scrollable_set(entry, EINA_TRUE);
614    elm_entry_editable_set(entry, EINA_FALSE);
615    elm_object_text_set(entry, item_data);
616    evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
617    evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
618    evas_object_show(entry);
619
620    button = elm_button_add(info->win);
621    elm_object_text_set(button, "back");
622    evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, 0);
623    evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0);
624    evas_object_smart_callback_add(button, "clicked", test_list4_back_cb, info);
625    evas_object_show(button);
626
627    elm_box_pack_start(box, entry);
628    elm_box_pack_end(box, button);
629
630    elm_naviframe_item_simple_push(info->naviframe, box);
631 }
632
633 void
634 test_list4(void        *data __UNUSED__,
635            Evas_Object *obj __UNUSED__,
636            void        *event_info __UNUSED__)
637 {
638    Evas_Object *win, *bg, *li, *ic, *ic2, *naviframe;
639    static struct Pginfo info = {NULL, NULL};
640    char buf[PATH_MAX];
641
642    win = elm_win_add(NULL, "list4", ELM_WIN_BASIC);
643    elm_win_title_set(win, "List 4");
644    elm_win_autodel_set(win, EINA_TRUE);
645    info.win = win;
646
647    bg = elm_bg_add(win);
648    elm_win_resize_object_add(win, bg);
649    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
650    evas_object_show(bg);
651
652    naviframe = elm_naviframe_add(win);
653    elm_win_resize_object_add(win, naviframe);
654    evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
655    evas_object_size_hint_align_set(naviframe, EVAS_HINT_FILL, EVAS_HINT_FILL);
656    evas_object_show(naviframe);
657    info.naviframe = naviframe;
658
659    li = elm_list_add(win);
660    evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
661    elm_list_mode_set(li, ELM_LIST_COMPRESS);
662    evas_object_smart_callback_add(li, "swipe", test_list4_swipe, &info);
663    elm_naviframe_item_simple_push(naviframe, li);
664
665    static char pf_data[] = "Pink Floyd were formed in 1965, and originally consisted of university"                       \
666                            "students Roger Waters, Nick Mason, Richard Wright, and Syd Barrett. The group were a popular" \
667                            "fixture on London's underground music scene, and under Barrett's leadership released two "    \
668                            "charting singles, \"Arnold Layne\" and \"See Emily Play\", and a successful debut album, "    \
669                            "ThePiper at the Gates of Dawn. In 1968, guitarist and singer David Gilmour joined the "       \
670                            "line-up. Barrett was soon removed, due to his increasingly erratic behaviour. Following "     \
671                            "Barrett's departure, bass player and singer Roger Waters became the band's lyricist and "     \
672                            "conceptual leader, with Gilmour assuming lead guitar and much of the vocals. With this "      \
673                            "line-up, Floyd went on to achieve worldwide critical and commercial success with the "        \
674                            "conceptalbums The Dark Side of the Moon, Wish You Were Here, Animals, and The Wall.";
675    ic = elm_icon_add(win);
676    snprintf(buf, sizeof(buf), "%s/images/mystrale.jpg", elm_app_data_dir_get());
677    elm_icon_scale_set(ic, 0, 0);
678    elm_icon_file_set(ic, buf, NULL);
679    elm_list_item_append(li, "Pink Floyd", ic, NULL, NULL, &pf_data);
680
681    static char ds_data[] = "Dire Straits were a British rock band, formed by Mark Knopfler "                          \
682                            "(lead vocals and lead guitar), his younger brother David Knopfler (rhythm guitar and "    \
683                            "backing vocals), John Illsley (bass guitar and backing vocals), and Pick Withers (drums " \
684                            "and percussion), and managed by Ed Bicknell, active between 1977 and 1995. Although the " \
685                            "band was formed in an era when punk rock was at the forefront, Dire Straits played a more "
686                            "bluesy style, albeit with a stripped-down sound that appealed to audiences weary of the "   \
687                            "overproduced stadium rock of the 1970s.[citation needed] In their early days, Mark and "    \
688                            "David requested that pub owners turn down their sound so that patrons could converse "      \
689                            "while the band played, an indication of their unassuming demeanor. Despite this oddly "     \
690                            "self-effacing approach to rock and roll, Dire Straits soon became hugely successful, with " \
691                            "their first album going multi-platinum globally.";
692    ic = elm_icon_add(win);
693    snprintf(buf, sizeof(buf), "%s/images/mystrale_2.jpg", elm_app_data_dir_get());
694    elm_icon_scale_set(ic, 0, 0);
695    elm_icon_file_set(ic, buf, NULL);
696    elm_list_item_append(li, "Dire Straits", ic, NULL, NULL, &ds_data);
697
698    static char uh_data[] = "Uriah Heep are an English hard rock band. The band released several "                       \
699                            "commercially successful albums in the 1970s such as Uriah Heep Live (1973), but their "     \
700                            "audience declined by the 1980s, to the point where they became essentially a cult band in " \
701                            "the United States and United Kingdom. Uriah Heep maintain a significant following in "      \
702                            "Germany, the Netherlands, Scandinavia, the Balkans, Japan and Russia, where they still "    \
703                            "perform at stadium-sized venues.";
704    ic = elm_icon_add(win);
705    snprintf(buf, sizeof(buf), "%s/images/icon_17.png", elm_app_data_dir_get());
706    elm_icon_scale_set(ic, 1, 1);
707    elm_icon_file_set(ic, buf, NULL);
708    elm_list_item_append(li, "Uriah Heep", ic, NULL, NULL, &uh_data);
709
710    static char r_data[] = "Rush is a Canadian rock band formed in August 1968, in the Willowdale "                       \
711                           "neighbourhood of Toronto, Ontario. The band is composed of bassist, keyboardist, and lead "   \
712                           "vocalist Geddy Lee, guitarist Alex Lifeson, and drummer and lyricist Neil Peart. The band "   \
713                           "and its membership went through a number of re-configurations between 1968 and 1974, "        \
714                           "achieving their current form when Peart replaced original drummer John Rutsey in July 1974, " \
715                           "two weeks before the group's first United States tour.";
716    ic = elm_icon_add(win);
717    snprintf(buf, sizeof(buf), "%s/images/icon_21.png", elm_app_data_dir_get());
718    elm_icon_scale_set(ic, 0, 0);
719    elm_icon_file_set(ic, buf, NULL);
720    ic2 = elm_icon_add(win);
721    elm_icon_standard_set(ic2, "clock");
722    elm_icon_scale_set(ic2, 0, 0);
723    elm_list_item_append(li, "Rush", ic, ic2, NULL, &r_data);
724
725    elm_list_go(li);
726
727    evas_object_show(li);
728    evas_object_resize(win, 320, 300);
729    evas_object_show(win);
730 }
731
732 /////////////////////////////////////////////////////////////////////////////////////////
733 struct list5_data_cb
734 {
735    Evas_Object *win, *list;
736 };
737
738 static void
739 test_list5_item_del(void        *data,
740                     Evas_Object *obj __UNUSED__,
741                     void        *event_info __UNUSED__)
742 {
743    elm_object_item_del(data);
744 }
745
746 static void
747 test_list5_swipe(void        *data __UNUSED__,
748                  Evas_Object *obj __UNUSED__,
749                  void        *event_info)
750 {
751    Evas_Object *button;
752    struct list5_data_cb *info = elm_object_item_data_get(event_info);
753
754    if (elm_object_item_part_content_get(event_info, "end")) return;
755
756    button = elm_button_add(info->win);
757    elm_object_text_set(button, "delete");
758    evas_object_propagate_events_set(button, 0);
759    evas_object_smart_callback_add(button, "clicked", test_list5_item_del,
760                                   event_info);
761    elm_object_item_part_content_set(event_info, "end", button);
762 }
763
764 void
765 test_list5(void        *data __UNUSED__,
766            Evas_Object *obj __UNUSED__,
767            void        *event_info __UNUSED__)
768 {
769    Evas_Object *win, *bg, *li;
770    static struct list5_data_cb info;
771
772    win = elm_win_add(NULL, "list5", ELM_WIN_BASIC);
773    elm_win_title_set(win, "List 5");
774    elm_win_autodel_set(win, EINA_TRUE);
775    info.win = win;
776
777    bg = elm_bg_add(win);
778    elm_win_resize_object_add(win, bg);
779    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
780    evas_object_show(bg);
781
782    li = elm_list_add(win);
783    evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
784    elm_list_mode_set(li, ELM_LIST_COMPRESS);
785    evas_object_smart_callback_add(li, "swipe", test_list5_swipe, NULL);
786    elm_win_resize_object_add(win, li);
787    evas_object_show(li);
788    info.list = li;
789
790    elm_list_item_append(li, "Network", NULL, NULL, NULL, &info);
791    elm_list_item_append(li, "Audio", NULL, NULL, NULL, &info);
792
793    elm_list_go(li);
794    evas_object_resize(win, 320, 300);
795    evas_object_show(win);
796 }
797
798 #endif