dcbc5e67ada0e289f9da8ed9364ccbc042fe1e55
[framework/uifw/elementary.git] / src / bin / test_list.c
1 #include "test.h"
2 #include <Elementary_Cursor.h>
3 #ifdef HAVE_CONFIG_H
4 # include "elementary_config.h"
5 #endif
6 #include <Elementary.h>
7 #ifndef ELM_LIB_QUICKLAUNCH
8 struct _api_data
9 {
10    unsigned int state;  /* What state we are testing       */
11    void *list;
12 };
13 typedef struct _api_data api_data;
14
15 enum _api_state
16 {
17    ITEM_PREPEND,        /* 0 */
18    ITEM_INSERT_BEFORE,  /* 1 */
19    ITEM_INSERT_AFTER,   /* 2 */
20    ITEM_SEPARATOR_SET,  /* 3 */
21    LIST_ITEM_DEL,       /* 4 */
22    SCROLLER_POLICY_SET_ON,
23    SCROLLER_POLICY_SET_OFF, /* Back to AUTO next */
24    TOOLTIP_TEXT_SET,    /* 7 */
25    TOOLTIP_UNSET,       /* 8 */
26    ITEM_CURSOR_SET,     /* 9 */
27    ITEM_CURSOR_STYLE_SET,
28    DISABLED_SET,        /* 11 */
29    MODE_SET_COMPRESS,   /* 12 */
30    MODE_SET_LIMIT,      /* 13 */
31    MODE_SET_EXPAND,     /* 14 */
32    HORIZONTAL_SET,      /* 15 */
33    BOUNCE_SET,          /* 16 */
34    LIST_CLEAR,          /* 17 */
35    API_STATE_LAST
36 };
37 typedef enum _api_state api_state;
38
39 static void
40 set_api_state(api_data *api)
41 {
42 /** HOW TO TEST ************************
43 0 ITEM PREPEND
44 Scroll to end
45 1 INSERT BEFORE
46 Scroll to end
47 2 INSERT AFTER
48 3 INSERT SEPERATOR
49 Scroll to end
50 4 ITEM DEL
51 5 POLICY ON, BOUNCE_SET(TRUE, TRUE)
52 6 POLICY OFF
53 Scroll to end
54 7 TOOLTIP last-item
55 8 Cancel tootip
56 9 Curosr set on last item
57 10 Cursor style set last item
58 11 DISABLE last item
59 12 MODE COMPRESS
60 13 MODE LIMIT
61 14 MODE EXPAND
62 15 HORIZ SET
63 16 VERT MODE, BOUNCE(TRUE, FALSE) try to bounce on Y-axis
64 17 List clear
65 *** HOW TO TEST ***********************/
66    Evas_Object *li = api->list;
67
68    switch(api->state)
69      { /* Put all api-changes under switch */
70       case ITEM_PREPEND: /* 0 */
71            {
72               const Eina_List *items = elm_list_items_get(li);
73               elm_list_item_prepend(li, "PREPEND", NULL, NULL, NULL, NULL);
74               elm_list_go(li);
75               elm_list_item_bring_in(eina_list_nth(items, 0));
76            }
77          break;
78
79       case ITEM_INSERT_BEFORE: /* 1 */
80            {
81               const Eina_List *items = elm_list_items_get(li);
82               if (eina_list_count(items))
83                 {
84                   elm_list_item_insert_before(li,
85                         eina_list_nth(items, eina_list_count(items)-1),
86                         "1-before-last", NULL, NULL, NULL, NULL);
87                   elm_list_go(li);
88                   elm_list_item_bring_in(eina_list_data_get(eina_list_last(items)));
89                 }
90            }
91          break;
92
93       case ITEM_INSERT_AFTER: /* 2 */
94            {
95               const Eina_List *items = elm_list_items_get(li);
96               if (eina_list_count(items))
97                 {
98                   elm_list_item_insert_after(li,
99                         eina_list_nth(items, eina_list_count(items)-2),
100                         "insert-after", NULL, NULL, NULL, NULL);
101                   elm_list_go(li);
102                   elm_list_item_bring_in(eina_list_data_get(eina_list_last(items)));
103                 }
104            }
105          break;
106
107       case ITEM_SEPARATOR_SET: /* 3 */
108            {
109               const Eina_List *items = elm_list_items_get(li);
110               if (eina_list_count(items))
111                 {
112                   elm_list_item_separator_set(eina_list_nth(items, eina_list_count(items)-3), EINA_TRUE);
113                   elm_list_item_bring_in(eina_list_nth(items, eina_list_count(items)-3));
114                   elm_list_go(li);
115                 }
116            }
117          break;
118
119       case LIST_ITEM_DEL: /* 4 */
120            {
121               const Eina_List *items = elm_list_items_get(li);
122               if (eina_list_count(items))
123                 {
124                   elm_object_item_del(eina_list_data_get(eina_list_last(items)));
125                 }
126            }
127          break;
128
129       case SCROLLER_POLICY_SET_ON: /* 5 */
130          elm_list_bounce_set(li, EINA_TRUE, EINA_TRUE);
131          elm_list_scroller_policy_set(li, ELM_SCROLLER_POLICY_ON, ELM_SCROLLER_POLICY_ON);
132          break;
133
134       case SCROLLER_POLICY_SET_OFF: /* Back to AUTO next (6) */
135          elm_list_scroller_policy_set(li, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
136          break;
137
138       case TOOLTIP_TEXT_SET: /* 7 */
139            {
140               const Eina_List *items = elm_list_items_get(li);
141               if (eina_list_count(items))
142                 {
143                   elm_object_item_tooltip_text_set(eina_list_data_get(eina_list_last(items)), "Tooltip set from API");
144                 }
145               elm_list_scroller_policy_set(li, ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_AUTO);
146            }
147          break;
148
149       case TOOLTIP_UNSET: /* 8 */
150            {
151               const Eina_List *items = elm_list_items_get(li);
152               if (eina_list_count(items))
153                 {
154                   elm_object_item_tooltip_unset(eina_list_data_get(eina_list_last(items)));
155                 }
156            }
157          break;
158
159       case ITEM_CURSOR_SET: /* 9 */
160            {
161               const Eina_List *items = elm_list_items_get(li);
162               if (eina_list_count(items))
163                 {
164                   elm_object_item_cursor_set(eina_list_data_get(eina_list_last(items)), ELM_CURSOR_HAND2);
165                 }
166            }
167          break;
168
169       case ITEM_CURSOR_STYLE_SET: /* 10 */
170            {
171               const Eina_List *items = elm_list_items_get(li);
172               if (eina_list_count(items))
173                 {
174                   elm_object_item_cursor_style_set(eina_list_data_get(eina_list_last(items)), "transparent");
175                 }
176            }
177          break;
178
179       case DISABLED_SET: /* 11 */
180            {
181               const Eina_List *items = elm_list_items_get(li);
182               if (eina_list_count(items))
183                 {
184                   elm_object_item_disabled_set(eina_list_data_get(eina_list_last(items)), EINA_TRUE);
185                 }
186            }
187          break;
188
189       case MODE_SET_COMPRESS: /* 12 */
190          elm_list_mode_set(li, ELM_LIST_COMPRESS);
191          break;
192
193       case MODE_SET_LIMIT: /* 13 */
194          elm_list_mode_set(li, ELM_LIST_LIMIT);
195          break;
196
197       case MODE_SET_EXPAND: /* 14 */
198          elm_list_mode_set(li, ELM_LIST_EXPAND);
199          break;
200
201       case HORIZONTAL_SET: /* 15 */
202          elm_list_mode_set(li, ELM_LIST_SCROLL); /* return to default mode */
203          elm_list_horizontal_set(li, EINA_TRUE);
204          break;
205
206       case BOUNCE_SET: /* 16 */
207          elm_list_horizontal_set(li, EINA_FALSE);
208          elm_list_bounce_set(li, EINA_TRUE, EINA_FALSE);
209          break;
210
211       case LIST_CLEAR: /* 17 */
212          elm_list_clear(li);
213          break;
214
215       case API_STATE_LAST:
216          break;
217
218       default:
219          return;
220      }
221 }
222
223 static void
224 _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
225 {  /* Will add here a SWITCH command containing code to modify test-object */
226    /* in accordance a->state value. */
227    api_data *a = data;
228    char str[128];
229
230    printf("clicked event on API Button: api_state=<%d>\n", a->state);
231    set_api_state(a);
232    a->state++;
233    sprintf(str, "Next API function (%u)", a->state);
234    elm_object_text_set(obj, str);
235    elm_object_disabled_set(obj, a->state == API_STATE_LAST);
236 }
237
238 static void
239 my_show_it(void        *data,
240            Evas_Object *obj __UNUSED__,
241            void        *event_info __UNUSED__)
242 {
243    elm_list_item_show(data);
244 }
245
246 static void
247 scroll_top(void        *data __UNUSED__,
248            Evas_Object *obj __UNUSED__,
249            void        *event_info __UNUSED__)
250 {
251    printf("Top edge!\n");
252 }
253
254 static void
255 scroll_bottom(void        *data __UNUSED__,
256               Evas_Object *obj __UNUSED__,
257               void        *event_info __UNUSED__)
258 {
259    printf("Bottom edge!\n");
260 }
261
262 static void
263 scroll_left(void        *data __UNUSED__,
264             Evas_Object *obj __UNUSED__,
265             void        *event_info __UNUSED__)
266 {
267    printf("Left edge!\n");
268 }
269
270 static void
271 scroll_right(void        *data __UNUSED__,
272              Evas_Object *obj __UNUSED__,
273              void        *event_info __UNUSED__)
274 {
275    printf("Right edge!\n");
276 }
277
278 static void
279 _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
280 {
281    free(data);
282 }
283
284 static void _filter_all_cb(void *data, Evas_Object *obj __UNUSED__,
285                            void *event_info __UNUSED__)
286 {
287    Evas_Object *popup = (Evas_Object *)data;
288    evas_object_del(popup);
289 }
290
291 void
292 test_list(void        *data __UNUSED__,
293           Evas_Object *obj __UNUSED__,
294           void        *event_info __UNUSED__)
295 {
296    Evas_Object *win, *li, *ic, *ic2, *bx, *tb2, *bt, *bxx;
297    char buf[PATH_MAX];
298    Elm_Object_Item *list_it1, *list_it2, *list_it3, *list_it4, *list_it5;
299    api_data *api = calloc(1, sizeof(api_data));
300
301    win = elm_win_util_standard_add("list", "List");
302    elm_win_autodel_set(win, EINA_TRUE);
303    evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
304
305    bxx = elm_box_add(win);
306    elm_win_resize_object_add(win, bxx);
307    evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
308    evas_object_show(bxx);
309
310    li = elm_list_add(win);
311    elm_list_mode_set(li, ELM_LIST_LIMIT);
312    evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
313    evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);
314    api->list = li;
315
316    bt = elm_button_add(win);
317    elm_object_text_set(bt, "Next API function");
318    evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
319    elm_box_pack_end(bxx, bt);
320    elm_object_disabled_set(bt, api->state == API_STATE_LAST);
321    evas_object_show(bt);
322
323    elm_box_pack_end(bxx, li);
324
325    ic = elm_icon_add(win);
326    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
327    elm_icon_file_set(ic, buf, NULL);
328    elm_icon_resizable_set(ic, 1, 1);
329    list_it1 = elm_list_item_append(li, "Hello", ic, NULL, _filter_all_cb, bxx);
330    ic = elm_icon_add(win);
331    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
332    elm_icon_resizable_set(ic, 0, 0);
333    elm_icon_file_set(ic, buf, NULL);
334    elm_list_item_append(li, "world", ic, NULL, NULL, NULL);
335    ic = elm_icon_add(win);
336    elm_icon_standard_set(ic, "edit");
337    elm_icon_resizable_set(ic, 0, 0);
338    elm_list_item_append(li, ".", ic, NULL, NULL, NULL);
339
340    ic = elm_icon_add(win);
341    elm_icon_standard_set(ic, "delete");
342    elm_icon_resizable_set(ic, 0, 0);
343    ic2 = elm_icon_add(win);
344    elm_icon_standard_set(ic2, "clock");
345    elm_icon_resizable_set(ic2, 0, 0);
346    list_it2 = elm_list_item_append(li, "How", ic, ic2, NULL, NULL);
347
348    bx = elm_box_add(win);
349    elm_box_horizontal_set(bx, EINA_TRUE);
350
351    ic = elm_icon_add(win);
352    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
353    elm_icon_file_set(ic, buf, NULL);
354    elm_icon_resizable_set(ic, 0, 0);
355    evas_object_size_hint_align_set(ic, 0.5, 0.5);
356    elm_box_pack_end(bx, ic);
357    evas_object_show(ic);
358
359    ic = elm_icon_add(win);
360    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
361    elm_icon_file_set(ic, buf, NULL);
362    elm_icon_resizable_set(ic, 0, 0);
363    evas_object_size_hint_align_set(ic, 0.5, 0.0);
364    elm_box_pack_end(bx, ic);
365    evas_object_show(ic);
366
367    ic = elm_icon_add(win);
368    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
369    elm_icon_file_set(ic, buf, NULL);
370    elm_icon_resizable_set(ic, 0, 0);
371    evas_object_size_hint_align_set(ic, 0.0, EVAS_HINT_EXPAND);
372    elm_box_pack_end(bx, ic);
373    evas_object_show(ic);
374    elm_list_item_append(li, "are", bx, NULL, NULL, NULL);
375
376    elm_list_item_append(li, "you", NULL, NULL, NULL, NULL);
377    list_it3 = elm_list_item_append(li, "doing", NULL, NULL, NULL, NULL);
378    elm_list_item_append(li, "out", NULL, NULL, NULL, NULL);
379    elm_list_item_append(li, "there", NULL, NULL, NULL, NULL);
380    elm_list_item_append(li, "today", NULL, NULL, NULL, NULL);
381    elm_list_item_append(li, "?", NULL, NULL, NULL, NULL);
382    list_it4 = elm_list_item_append(li, "Here", NULL, NULL, NULL, NULL);
383    elm_list_item_append(li, "are", NULL, NULL, NULL, NULL);
384    elm_list_item_append(li, "some", NULL, NULL, NULL, NULL);
385    elm_list_item_append(li, "more", NULL, NULL, NULL, NULL);
386    elm_list_item_append(li, "items", NULL, NULL, NULL, NULL);
387    elm_list_item_append(li, "Is this label long enough?", NULL, NULL, NULL, NULL);
388    list_it5 = elm_list_item_append(li, "Maybe this one is even longer so we can test long long items.", NULL, NULL, NULL, NULL);
389
390    elm_list_go(li);
391
392    evas_object_show(li);
393
394    tb2 = elm_table_add(win);
395    evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
396    elm_win_resize_object_add(win, tb2);
397
398    bt = elm_button_add(win);
399    elm_object_text_set(bt, "Hello");
400    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it1);
401    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
402    evas_object_size_hint_align_set(bt, 0.9, 0.5);
403    elm_table_pack(tb2, bt, 0, 0, 1, 1);
404    evas_object_show(bt);
405
406    bt = elm_button_add(win);
407    elm_object_text_set(bt, "How");
408    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it2);
409    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
410    evas_object_size_hint_align_set(bt, 0.9, 0.5);
411    elm_table_pack(tb2, bt, 0, 1, 1, 1);
412    evas_object_show(bt);
413
414    bt = elm_button_add(win);
415    elm_object_text_set(bt, "doing");
416    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it3);
417    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
418    evas_object_size_hint_align_set(bt, 0.9, 0.5);
419    elm_table_pack(tb2, bt, 0, 2, 1, 1);
420    evas_object_show(bt);
421
422    bt = elm_button_add(win);
423    elm_object_text_set(bt, "Here");
424    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it4);
425    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
426    evas_object_size_hint_align_set(bt, 0.9, 0.5);
427    elm_table_pack(tb2, bt, 0, 3, 1, 1);
428    evas_object_show(bt);
429
430    bt = elm_button_add(win);
431    elm_object_text_set(bt, "Maybe this...");
432    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it5);
433    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
434    evas_object_size_hint_align_set(bt, 0.9, 0.5);
435    elm_table_pack(tb2, bt, 0, 4, 1, 1);
436    evas_object_show(bt);
437
438    evas_object_show(tb2);
439
440    evas_object_resize(win, 320, 300);
441    evas_object_show(win);
442
443    evas_object_smart_callback_add(li, "scroll,edge,top", scroll_top, NULL);
444    evas_object_smart_callback_add(li, "scroll,edge,bottom", scroll_bottom, NULL);
445    evas_object_smart_callback_add(li, "scroll,edge,left", scroll_left, NULL);
446    evas_object_smart_callback_add(li, "scroll,edge,right", scroll_right, NULL);
447 }
448
449 void
450 test_list_horizontal(void        *data __UNUSED__,
451                      Evas_Object *obj __UNUSED__,
452                      void        *event_info __UNUSED__)
453 {
454    Evas_Object *win, *li, *ic, *ic2, *bx, *tb2, *bt;
455    char buf[PATH_MAX];
456    Elm_Object_Item *list_it1, *list_it2, *list_it3, *list_it4;
457
458    win = elm_win_util_standard_add("list-horizontal", "List Horizontal");
459    elm_win_autodel_set(win, EINA_TRUE);
460
461    li = elm_list_add(win);
462    elm_list_horizontal_set(li, EINA_TRUE);
463    elm_list_mode_set(li, ELM_LIST_LIMIT);
464    elm_win_resize_object_add(win, li);
465    evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
466
467    ic = elm_icon_add(win);
468    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
469    elm_icon_file_set(ic, buf, NULL);
470    elm_icon_resizable_set(ic, 1, 1);
471    list_it1 = elm_list_item_append(li, "Hello", ic, NULL, NULL, NULL);
472    ic = elm_icon_add(win);
473    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
474    elm_icon_resizable_set(ic, 0, 0);
475    elm_icon_file_set(ic, buf, NULL);
476    elm_list_item_append(li, "world", ic, NULL, NULL, NULL);
477    ic = elm_icon_add(win);
478    elm_icon_standard_set(ic, "edit");
479    elm_icon_resizable_set(ic, 0, 0);
480    elm_list_item_append(li, ".", ic, NULL, NULL, NULL);
481
482    ic = elm_icon_add(win);
483    elm_icon_standard_set(ic, "delete");
484    elm_icon_resizable_set(ic, 0, 0);
485    ic2 = elm_icon_add(win);
486    elm_icon_standard_set(ic2, "clock");
487    elm_icon_resizable_set(ic2, 0, 0);
488    list_it2 = elm_list_item_append(li, "How", ic, ic2, NULL, NULL);
489
490    bx = elm_box_add(win);
491
492    ic = elm_icon_add(win);
493    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
494    elm_icon_file_set(ic, buf, NULL);
495    elm_icon_resizable_set(ic, 0, 0);
496    evas_object_size_hint_align_set(ic, 0.5, 0.5);
497    elm_box_pack_end(bx, ic);
498    evas_object_show(ic);
499
500    ic = elm_icon_add(win);
501    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
502    elm_icon_file_set(ic, buf, NULL);
503    elm_icon_resizable_set(ic, 0, 0);
504    evas_object_size_hint_align_set(ic, 0.5, 0.0);
505    elm_box_pack_end(bx, ic);
506    evas_object_show(ic);
507
508    elm_list_item_append(li, "are", bx, NULL, NULL, NULL);
509
510    elm_list_item_append(li, "you", NULL, NULL, NULL, NULL);
511    list_it3 = elm_list_item_append(li, "doing", NULL, NULL, NULL, NULL);
512    elm_list_item_append(li, "out", NULL, NULL, NULL, NULL);
513    elm_list_item_append(li, "there", NULL, NULL, NULL, NULL);
514    elm_list_item_append(li, "today", NULL, NULL, NULL, NULL);
515    elm_list_item_append(li, "?", NULL, NULL, NULL, NULL);
516
517    list_it4 = elm_list_item_append(li, "And", NULL, NULL, NULL, NULL);
518    elm_list_item_append(li, "here", NULL, NULL, NULL, NULL);
519    elm_list_item_append(li, "we", NULL, NULL, NULL, NULL);
520    elm_list_item_append(li, "are", NULL, NULL, NULL, NULL);
521    elm_list_item_append(li, "done", NULL, NULL, NULL, NULL);
522    elm_list_item_append(li, "with", NULL, NULL, NULL, NULL);
523    elm_list_item_append(li, "items.", NULL, NULL, NULL, NULL);
524
525    elm_list_go(li);
526
527    evas_object_show(li);
528
529    tb2 = elm_table_add(win);
530    evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
531    elm_win_resize_object_add(win, tb2);
532
533    bt = elm_button_add(win);
534    elm_object_text_set(bt, "Hello");
535    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it1);
536    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
537    evas_object_size_hint_align_set(bt, 0.5, 0.9);
538    elm_table_pack(tb2, bt, 0, 0, 1, 1);
539    evas_object_show(bt);
540
541    bt = elm_button_add(win);
542    elm_object_text_set(bt, "How");
543    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it2);
544    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
545    evas_object_size_hint_align_set(bt, 0.5, 0.9);
546    elm_table_pack(tb2, bt, 1, 0, 1, 1);
547    evas_object_show(bt);
548
549    bt = elm_button_add(win);
550    elm_object_text_set(bt, "doing");
551    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it3);
552    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
553    evas_object_size_hint_align_set(bt, 0.5, 0.9);
554    elm_table_pack(tb2, bt, 2, 0, 1, 1);
555    evas_object_show(bt);
556
557    bt = elm_button_add(win);
558    elm_object_text_set(bt, "And");
559    evas_object_smart_callback_add(bt, "clicked", my_show_it, list_it4);
560    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
561    evas_object_size_hint_align_set(bt, 0.5, 0.9);
562    elm_table_pack(tb2, bt, 3, 0, 1, 1);
563    evas_object_show(bt);
564
565    evas_object_show(tb2);
566
567    evas_object_resize(win, 320, 300);
568    evas_object_show(win);
569 }
570
571 /***********/
572
573 static void
574 my_li2_clear(void        *data,
575              Evas_Object *obj __UNUSED__,
576              void        *event_info __UNUSED__)
577 {
578    elm_list_clear(data);
579 }
580
581 static void
582 my_li2_sel(void        *data __UNUSED__,
583            Evas_Object *obj,
584            void        *event_info __UNUSED__)
585 {
586    Elm_Object_Item *list_it = elm_list_selected_item_get(obj);
587    elm_list_item_selected_set(list_it, 0);
588 }
589
590 void
591 test_list2(void        *data __UNUSED__,
592            Evas_Object *obj __UNUSED__,
593            void        *event_info __UNUSED__)
594 {
595    Evas_Object *win, *bg, *li, *ic, *ic2, *bx, *bx2, *bt;
596    char buf[PATH_MAX];
597    Elm_Object_Item *list_it;
598
599    win = elm_win_add(NULL, "list2", ELM_WIN_BASIC);
600    elm_win_title_set(win, "List 2");
601    elm_win_autodel_set(win, EINA_TRUE);
602
603    bg = elm_bg_add(win);
604    snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
605    elm_bg_file_set(bg, buf, NULL);
606    elm_win_resize_object_add(win, bg);
607    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
608    evas_object_show(bg);
609
610    bx = elm_box_add(win);
611    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
612    elm_win_resize_object_add(win, bx);
613    evas_object_show(bx);
614
615    li = elm_list_add(win);
616    evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);
617    evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
618    elm_list_mode_set(li, ELM_LIST_LIMIT);
619 //   elm_list_multi_select_set(li, 1);
620
621    ic = elm_icon_add(win);
622    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
623    elm_icon_file_set(ic, buf, NULL);
624    list_it = elm_list_item_append(li, "Hello", ic, NULL, my_li2_sel, NULL);
625    elm_list_item_selected_set(list_it, EINA_TRUE);
626    ic = elm_icon_add(win);
627    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
628    elm_icon_resizable_set(ic, 0, 0);
629    elm_icon_file_set(ic, buf, NULL);
630    elm_list_item_append(li, "world", ic, NULL, NULL, NULL);
631    ic = elm_icon_add(win);
632    elm_icon_standard_set(ic, "edit");
633    elm_icon_resizable_set(ic, 0, 0);
634    elm_list_item_append(li, ".", ic, NULL, NULL, NULL);
635
636    ic = elm_icon_add(win);
637    elm_icon_standard_set(ic, "delete");
638    elm_icon_resizable_set(ic, 0, 0);
639    ic2 = elm_icon_add(win);
640    elm_icon_standard_set(ic2, "clock");
641    elm_icon_resizable_set(ic2, 0, 0);
642    elm_list_item_append(li, "How", ic, ic2, NULL, NULL);
643
644    bx2 = elm_box_add(win);
645    elm_box_horizontal_set(bx2, EINA_TRUE);
646
647    ic = elm_icon_add(win);
648    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
649    elm_icon_file_set(ic, buf, NULL);
650    elm_icon_resizable_set(ic, 0, 0);
651    evas_object_size_hint_align_set(ic, 0.5, 0.5);
652    elm_box_pack_end(bx2, ic);
653    evas_object_show(ic);
654
655    ic = elm_icon_add(win);
656    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
657    elm_icon_file_set(ic, buf, NULL);
658    elm_icon_resizable_set(ic, 0, 0);
659    evas_object_size_hint_align_set(ic, 0.5, 0.0);
660    elm_box_pack_end(bx2, ic);
661    evas_object_show(ic);
662    elm_list_item_append(li, "are", bx2, NULL, NULL, NULL);
663
664    elm_list_item_append(li, "you", NULL, NULL, NULL, NULL);
665    elm_list_item_append(li, "doing", NULL, NULL, NULL, NULL);
666    elm_list_item_append(li, "out", NULL, NULL, NULL, NULL);
667    elm_list_item_append(li, "there", NULL, NULL, NULL, NULL);
668    elm_list_item_append(li, "today", NULL, NULL, NULL, NULL);
669    elm_list_item_append(li, "?", NULL, NULL, NULL, NULL);
670    elm_list_item_append(li, "Here", NULL, NULL, NULL, NULL);
671    elm_list_item_append(li, "are", NULL, NULL, NULL, NULL);
672    elm_list_item_append(li, "some", NULL, NULL, NULL, NULL);
673    elm_list_item_append(li, "more", NULL, NULL, NULL, NULL);
674    elm_list_item_append(li, "items", NULL, NULL, NULL, NULL);
675    elm_list_item_append(li, "Longer label.", NULL, NULL, NULL, NULL);
676
677    elm_list_go(li);
678
679    elm_box_pack_end(bx, li);
680    evas_object_show(li);
681
682    bx2 = elm_box_add(win);
683    elm_box_horizontal_set(bx2, EINA_TRUE);
684    elm_box_homogeneous_set(bx2, EINA_TRUE);
685    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
686    evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
687
688    bt = elm_button_add(win);
689    elm_object_text_set(bt, "Clear");
690    evas_object_smart_callback_add(bt, "clicked", my_li2_clear, li);
691    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
692    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
693    elm_box_pack_end(bx2, bt);
694    evas_object_show(bt);
695
696    elm_box_pack_end(bx, bx2);
697    evas_object_show(bx2);
698
699    evas_object_resize(win, 320, 300);
700    evas_object_show(win);
701 }
702
703 /***********/
704
705 static void
706 _bt_clicked(void        *data __UNUSED__,
707             Evas_Object *obj __UNUSED__,
708             void        *event_info __UNUSED__)
709 {
710    printf("button was clicked\n");
711 }
712
713 static void
714 _first_bt_clicked(void *data, Evas_Object *obj __UNUSED__,
715                   void *event_info __UNUSED__)
716 {
717    char str[128];
718    Evas_Object *li = (Evas_Object *) data;
719    Evas_Object *lb;
720
721    Elm_Object_Item *lit = elm_list_first_item_get(li);
722    if (!lit) return;
723    sprintf(str, "%s is selected", elm_object_item_text_get(lit));
724    elm_list_item_bring_in(lit);
725    elm_list_item_selected_set(lit, EINA_TRUE);
726
727    lb = evas_object_data_get(li, "label");
728    elm_object_text_set(lb, str);
729 }
730
731 static void
732 _prev_bt_clicked(void *data, Evas_Object *obj __UNUSED__,
733                  void *event_info __UNUSED__)
734 {
735    char str[128];
736    Evas_Object *li = (Evas_Object *) data;
737    Evas_Object *lb;
738
739    Elm_Object_Item *lit = elm_list_selected_item_get(li);
740    if (!lit) return;
741    lit = elm_list_item_prev(lit);
742    if (!lit) return;
743
744    sprintf(str, "%s is selected", elm_object_item_text_get(lit));
745    elm_list_item_bring_in(lit);
746    elm_list_item_selected_set(lit, EINA_TRUE);
747
748    lb = evas_object_data_get(li, "label");
749    elm_object_text_set(lb, str);
750 }
751
752 static void
753 _next_bt_clicked(void *data, Evas_Object *obj __UNUSED__,
754                  void *event_info __UNUSED__)
755 {
756    char str[128];
757    Evas_Object *li = (Evas_Object *) data;
758    Evas_Object *lb;
759
760    Elm_Object_Item *lit = elm_list_selected_item_get(li);
761    if (!lit) return;
762    lit = elm_list_item_next(lit);
763    if (!lit) return;
764
765    sprintf(str, "%s is selected", elm_object_item_text_get(lit));
766    elm_list_item_bring_in(lit);
767    elm_list_item_selected_set(lit, EINA_TRUE);
768
769    lb = evas_object_data_get(li, "label");
770    elm_object_text_set(lb, str);
771 }
772
773 static void
774 _last_bt_clicked(void *data, Evas_Object *obj __UNUSED__,
775                  void *event_info __UNUSED__)
776 {
777    char str[128];
778    Evas_Object *li = (Evas_Object *) data;
779    Evas_Object *lb;
780
781    Elm_Object_Item *lit = elm_list_last_item_get(li);
782    if (!lit) return;
783    sprintf(str, "%s is selected", elm_object_item_text_get(lit));
784    elm_list_item_bring_in(lit);
785    elm_list_item_selected_set(lit, EINA_TRUE);
786
787    lb = evas_object_data_get(li, "label");
788    elm_object_text_set(lb, str);
789 }
790
791 static void
792 _it_clicked(void *data, Evas_Object *obj __UNUSED__,
793                  void *event_info __UNUSED__)
794 {
795    printf("item was clicked\n");
796    if (!data) return;
797    Evas_Object *li = (Evas_Object *) data;
798    Evas_Object *lb;
799    char str[128];
800
801    Elm_Object_Item *lit = elm_list_selected_item_get(li);
802    if (!lit) return;
803    sprintf(str, "%s is selected", elm_object_item_text_get(lit));
804
805    lb = evas_object_data_get(li, "label");
806    elm_object_text_set(lb, str);
807 }
808
809 void
810 test_list3(void        *data __UNUSED__,
811            Evas_Object *obj __UNUSED__,
812            void        *event_info __UNUSED__)
813 {
814    Evas_Object *win, *li, *ic, *ic2, *bx;
815    char buf[PATH_MAX];
816
817    win = elm_win_util_standard_add("list3", "List 3");
818    elm_win_autodel_set(win, EINA_TRUE);
819
820    li = elm_list_add(win);
821    elm_win_resize_object_add(win, li);
822    evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
823    elm_list_mode_set(li, ELM_LIST_COMPRESS);
824
825    ic = elm_icon_add(win);
826    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
827    elm_icon_resizable_set(ic, 0, 0);
828    elm_icon_file_set(ic, buf, NULL);
829    ic2 = elm_button_add(win);
830    elm_object_text_set(ic2, "Click me");
831    evas_object_smart_callback_add(ic2, "clicked", _bt_clicked, NULL);
832    evas_object_propagate_events_set(ic2, 0);
833    elm_list_item_append(li, "Hello", ic, ic2, _it_clicked, NULL);
834
835    ic = elm_icon_add(win);
836    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
837    elm_icon_resizable_set(ic, 0, 0);
838    elm_icon_file_set(ic, buf, NULL);
839    ic2 = elm_button_add(win);
840    elm_object_text_set(ic2, "Click me");
841    evas_object_smart_callback_add(ic2, "clicked", _bt_clicked, NULL);
842    elm_list_item_append(li, "world", ic, ic2, _it_clicked, NULL);
843
844    ic = elm_icon_add(win);
845    elm_icon_standard_set(ic, "edit");
846    elm_icon_resizable_set(ic, 0, 0);
847    elm_list_item_append(li, ".", ic, NULL, NULL, NULL);
848
849    ic = elm_icon_add(win);
850    elm_icon_standard_set(ic, "delete");
851    elm_icon_resizable_set(ic, 0, 0);
852    ic2 = elm_icon_add(win);
853    elm_icon_standard_set(ic2, "clock");
854    elm_icon_resizable_set(ic2, 0, 0);
855    elm_list_item_append(li, "How", ic, ic2, NULL, NULL);
856
857    bx = elm_box_add(win);
858    elm_box_horizontal_set(bx, EINA_TRUE);
859
860    ic = elm_icon_add(win);
861    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
862    elm_icon_file_set(ic, buf, NULL);
863    elm_icon_resizable_set(ic, 0, 0);
864    evas_object_size_hint_align_set(ic, 0.5, 0.5);
865    elm_box_pack_end(bx, ic);
866    evas_object_show(ic);
867
868    ic = elm_icon_add(win);
869    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
870    elm_icon_file_set(ic, buf, NULL);
871    elm_icon_resizable_set(ic, 0, 0);
872    evas_object_size_hint_align_set(ic, 0.5, 0.0);
873    elm_box_pack_end(bx, ic);
874    evas_object_show(ic);
875
876    ic = elm_icon_add(win);
877    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
878    elm_icon_file_set(ic, buf, NULL);
879    elm_icon_resizable_set(ic, 0, 0);
880    evas_object_size_hint_align_set(ic, 0.0, EVAS_HINT_EXPAND);
881    elm_box_pack_end(bx, ic);
882    evas_object_show(ic);
883
884    elm_list_item_append(li, "are", bx, NULL, NULL, NULL);
885    elm_list_item_append(li, "you", NULL, NULL, NULL, NULL);
886    elm_list_item_append(li, "doing", NULL, NULL, NULL, NULL);
887    elm_list_item_append(li, "out", NULL, NULL, NULL, NULL);
888    elm_list_item_append(li, "there", NULL, NULL, NULL, NULL);
889    elm_list_item_append(li, "today", NULL, NULL, NULL, NULL);
890    elm_list_item_append(li, "?", NULL, NULL, NULL, NULL);
891    elm_list_item_append(li, "Here", NULL, NULL, NULL, NULL);
892    elm_list_item_append(li, "are", NULL, NULL, NULL, NULL);
893    elm_list_item_append(li, "some", NULL, NULL, NULL, NULL);
894    elm_list_item_append(li, "more", NULL, NULL, NULL, NULL);
895    elm_list_item_append(li, "items", NULL, NULL, NULL, NULL);
896    elm_list_item_append(li, "Is this label long enough?", NULL, NULL, NULL, NULL);
897    elm_list_item_append(li, "Maybe this one is even longer so we can test long long items.", NULL, NULL, NULL, NULL);
898
899    elm_list_go(li);
900
901    evas_object_show(li);
902
903    evas_object_resize(win, 320, 300);
904    evas_object_show(win);
905 }
906
907 ///////////////////////////////////////////////////////////////////////////////////////
908
909 struct Pginfo
910 {
911    Evas_Object *naviframe, *win;
912 };
913
914 static void
915 test_list4_back_cb(void        *data,
916                    Evas_Object *obj __UNUSED__,
917                    void        *event_info __UNUSED__)
918 {
919    struct Pginfo *info = data;
920    if (!info) return;
921
922    elm_naviframe_item_pop(info->naviframe);
923 }
924
925 static void
926 test_list4_swipe(void        *data,
927                  Evas_Object *obj __UNUSED__,
928                  void        *event_info)
929 {
930    Evas_Object *box, *entry, *button;
931    struct Pginfo *info = data;
932    char *item_data;
933    if ((!event_info) || (!data)) return;
934
935    item_data = elm_object_item_data_get(event_info);
936
937    box = elm_box_add(info->win);
938    elm_box_horizontal_set(box, EINA_FALSE);
939    elm_box_homogeneous_set(box, EINA_FALSE);
940    evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
941    evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
942    evas_object_show(box);
943
944    entry = elm_entry_add(info->win);
945    elm_entry_scrollable_set(entry, EINA_TRUE);
946    elm_entry_editable_set(entry, EINA_FALSE);
947    elm_object_text_set(entry, item_data);
948    evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
949    evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
950    evas_object_show(entry);
951
952    button = elm_button_add(info->win);
953    elm_object_text_set(button, "back");
954    evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, 0);
955    evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0);
956    evas_object_smart_callback_add(button, "clicked", test_list4_back_cb, info);
957    evas_object_show(button);
958
959    elm_box_pack_start(box, entry);
960    elm_box_pack_end(box, button);
961
962    elm_naviframe_item_simple_push(info->naviframe, box);
963 }
964
965 void
966 test_list4(void        *data __UNUSED__,
967            Evas_Object *obj __UNUSED__,
968            void        *event_info __UNUSED__)
969 {
970    Evas_Object *win, *li, *ic, *ic2, *naviframe;
971    static struct Pginfo info = {NULL, NULL};
972    char buf[PATH_MAX];
973
974    win = elm_win_util_standard_add("list4", "List 4");
975    elm_win_autodel_set(win, EINA_TRUE);
976    info.win = win;
977
978    naviframe = elm_naviframe_add(win);
979    elm_win_resize_object_add(win, naviframe);
980    evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
981    evas_object_size_hint_align_set(naviframe, EVAS_HINT_FILL, EVAS_HINT_FILL);
982    evas_object_show(naviframe);
983    info.naviframe = naviframe;
984
985    li = elm_list_add(win);
986    evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
987    elm_list_mode_set(li, ELM_LIST_COMPRESS);
988    evas_object_smart_callback_add(li, "swipe", test_list4_swipe, &info);
989    elm_naviframe_item_simple_push(naviframe, li);
990
991    static char pf_data[] = "Pink Floyd were formed in 1965, and originally consisted of university"                       \
992                            "students Roger Waters, Nick Mason, Richard Wright, and Syd Barrett. The group were a popular" \
993                            "fixture on London's underground music scene, and under Barrett's leadership released two "    \
994                            "charting singles, \"Arnold Layne\" and \"See Emily Play\", and a successful debut album, "    \
995                            "ThePiper at the Gates of Dawn. In 1968, guitarist and singer David Gilmour joined the "       \
996                            "line-up. Barrett was soon removed, due to his increasingly erratic behaviour. Following "     \
997                            "Barrett's departure, bass player and singer Roger Waters became the band's lyricist and "     \
998                            "conceptual leader, with Gilmour assuming lead guitar and much of the vocals. With this "      \
999                            "line-up, Floyd went on to achieve worldwide critical and commercial success with the "        \
1000                            "conceptalbums The Dark Side of the Moon, Wish You Were Here, Animals, and The Wall.";
1001    ic = elm_icon_add(win);
1002    snprintf(buf, sizeof(buf), "%s/images/mystrale.jpg", elm_app_data_dir_get());
1003    elm_icon_resizable_set(ic, 0, 0);
1004    elm_icon_file_set(ic, buf, NULL);
1005    elm_list_item_append(li, "Pink Floyd", ic, NULL, NULL, &pf_data);
1006
1007    static char ds_data[] = "Dire Straits were a British rock band, formed by Mark Knopfler "                          \
1008                            "(lead vocals and lead guitar), his younger brother David Knopfler (rhythm guitar and "    \
1009                            "backing vocals), John Illsley (bass guitar and backing vocals), and Pick Withers (drums " \
1010                            "and percussion), and managed by Ed Bicknell, active between 1977 and 1995. Although the " \
1011                            "band was formed in an era when punk rock was at the forefront, Dire Straits played a more "
1012                            "bluesy style, albeit with a stripped-down sound that appealed to audiences weary of the "   \
1013                            "overproduced stadium rock of the 1970s.[citation needed] In their early days, Mark and "    \
1014                            "David requested that pub owners turn down their sound so that patrons could converse "      \
1015                            "while the band played, an indication of their unassuming demeanor. Despite this oddly "     \
1016                            "self-effacing approach to rock and roll, Dire Straits soon became hugely successful, with " \
1017                            "their first album going multi-platinum globally.";
1018    ic = elm_icon_add(win);
1019    snprintf(buf, sizeof(buf), "%s/images/mystrale_2.jpg", elm_app_data_dir_get());
1020    elm_icon_resizable_set(ic, 0, 0);
1021    elm_icon_file_set(ic, buf, NULL);
1022    elm_list_item_append(li, "Dire Straits", ic, NULL, NULL, &ds_data);
1023
1024    static char uh_data[] = "Uriah Heep are an English hard rock band. The band released several "                       \
1025                            "commercially successful albums in the 1970s such as Uriah Heep Live (1973), but their "     \
1026                            "audience declined by the 1980s, to the point where they became essentially a cult band in " \
1027                            "the United States and United Kingdom. Uriah Heep maintain a significant following in "      \
1028                            "Germany, the Netherlands, Scandinavia, the Balkans, Japan and Russia, where they still "    \
1029                            "perform at stadium-sized venues.";
1030    ic = elm_icon_add(win);
1031    snprintf(buf, sizeof(buf), "%s/images/icon_17.png", elm_app_data_dir_get());
1032    elm_icon_resizable_set(ic, 1, 1);
1033    elm_icon_file_set(ic, buf, NULL);
1034    elm_list_item_append(li, "Uriah Heep", ic, NULL, NULL, &uh_data);
1035
1036    static char r_data[] = "Rush is a Canadian rock band formed in August 1968, in the Willowdale "                       \
1037                           "neighbourhood of Toronto, Ontario. The band is composed of bassist, keyboardist, and lead "   \
1038                           "vocalist Geddy Lee, guitarist Alex Lifeson, and drummer and lyricist Neil Peart. The band "   \
1039                           "and its membership went through a number of re-configurations between 1968 and 1974, "        \
1040                           "achieving their current form when Peart replaced original drummer John Rutsey in July 1974, " \
1041                           "two weeks before the group's first United States tour.";
1042    ic = elm_icon_add(win);
1043    snprintf(buf, sizeof(buf), "%s/images/icon_21.png", elm_app_data_dir_get());
1044    elm_icon_resizable_set(ic, 0, 0);
1045    elm_icon_file_set(ic, buf, NULL);
1046    ic2 = elm_icon_add(win);
1047    elm_icon_standard_set(ic2, "clock");
1048    elm_icon_resizable_set(ic2, 0, 0);
1049    elm_list_item_append(li, "Rush", ic, ic2, NULL, &r_data);
1050
1051    elm_list_go(li);
1052
1053    evas_object_show(li);
1054    evas_object_resize(win, 320, 300);
1055    evas_object_show(win);
1056 }
1057
1058 /////////////////////////////////////////////////////////////////////////////////////////
1059 struct list5_data_cb
1060 {
1061    Evas_Object *win, *list;
1062 };
1063
1064 static void
1065 test_list5_item_del(void        *data,
1066                     Evas_Object *obj __UNUSED__,
1067                     void        *event_info __UNUSED__)
1068 {
1069    elm_object_item_del(data);
1070 }
1071
1072 static void
1073 test_list5_swipe(void        *data __UNUSED__,
1074                  Evas_Object *obj __UNUSED__,
1075                  void        *event_info)
1076 {
1077    Evas_Object *button;
1078    struct list5_data_cb *info = elm_object_item_data_get(event_info);
1079
1080    if (elm_object_item_part_content_get(event_info, "end")) return;
1081
1082    button = elm_button_add(info->win);
1083    elm_object_text_set(button, "delete");
1084    evas_object_propagate_events_set(button, 0);
1085    evas_object_smart_callback_add(button, "clicked", test_list5_item_del,
1086                                   event_info);
1087    elm_object_item_part_content_set(event_info, "end", button);
1088 }
1089
1090 void
1091 test_list5(void        *data __UNUSED__,
1092            Evas_Object *obj __UNUSED__,
1093            void        *event_info __UNUSED__)
1094 {
1095    Evas_Object *win, *li;
1096    static struct list5_data_cb info;
1097
1098    win = elm_win_util_standard_add("list5", "List 5");
1099    elm_win_autodel_set(win, EINA_TRUE);
1100    info.win = win;
1101
1102    li = elm_list_add(win);
1103    evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1104    elm_list_mode_set(li, ELM_LIST_COMPRESS);
1105    evas_object_smart_callback_add(li, "swipe", test_list5_swipe, NULL);
1106    elm_win_resize_object_add(win, li);
1107    evas_object_show(li);
1108    info.list = li;
1109
1110    elm_list_item_append(li, "Network", NULL, NULL, NULL, &info);
1111    elm_list_item_append(li, "Audio", NULL, NULL, NULL, &info);
1112
1113    elm_list_go(li);
1114    evas_object_resize(win, 320, 300);
1115    evas_object_show(win);
1116 }
1117
1118 void
1119 test_list6(void        *data __UNUSED__,
1120            Evas_Object *obj __UNUSED__,
1121            void        *event_info __UNUSED__)
1122 {
1123    Evas_Object *win, *gd, *bt, *li, *lb;
1124    win = elm_win_util_standard_add("list6", "List 6");
1125    elm_win_autodel_set(win, EINA_TRUE);
1126
1127    gd = elm_grid_add(win);
1128    elm_grid_size_set(gd, 100, 100);
1129    elm_win_resize_object_add(win, gd);
1130    evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1131
1132    li = elm_list_add(win);
1133    evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1134    elm_list_mode_set(li, ELM_LIST_COMPRESS);
1135    elm_grid_pack(gd, li,  4,  4, 92, 72);
1136    evas_object_show(li);
1137
1138    elm_list_item_append(li, "Eina", NULL, NULL, _it_clicked, li);
1139    elm_list_item_append(li, "Eet", NULL, NULL, _it_clicked, li);
1140    elm_list_item_append(li, "Evas", NULL, NULL, _it_clicked, li);
1141    elm_list_item_append(li, "Ecore", NULL, NULL, _it_clicked, li);
1142    elm_list_item_append(li, "Embryo", NULL, NULL, _it_clicked, li);
1143    elm_list_item_append(li, "Edje", NULL, NULL, _it_clicked, li);
1144    elm_list_item_append(li, "Efreet", NULL, NULL, _it_clicked, li);
1145    elm_list_item_append(li, "E_dbus", NULL, NULL, _it_clicked, li);
1146    elm_list_item_append(li, "Eeze", NULL, NULL, _it_clicked, li);
1147    elm_list_item_append(li, "Expedite", NULL, NULL, _it_clicked, li);
1148    elm_list_item_append(li, "Emotion", NULL, NULL, _it_clicked, li);
1149    elm_list_item_append(li, "Ethumb", NULL, NULL, _it_clicked, li);
1150    elm_list_item_append(li, "Elementary", NULL, NULL, _it_clicked, li);
1151    elm_list_go(li);
1152
1153    bt = elm_button_add(win);
1154    elm_object_text_set(bt, "First");
1155    evas_object_smart_callback_add(bt, "clicked", _first_bt_clicked, li);
1156    elm_grid_pack(gd, bt,  4,  80, 20, 10);
1157    evas_object_show(bt);
1158
1159    bt = elm_button_add(win);
1160    elm_object_text_set(bt, "Prev");
1161    evas_object_smart_callback_add(bt, "clicked", _prev_bt_clicked, li);
1162    elm_grid_pack(gd, bt,  28,  80, 20, 10);
1163    evas_object_show(bt);
1164
1165    bt = elm_button_add(win);
1166    elm_object_text_set(bt, "Next");
1167    evas_object_smart_callback_add(bt, "clicked", _next_bt_clicked, li);
1168    elm_grid_pack(gd, bt,  52,  80, 20, 10);
1169    evas_object_show(bt);
1170
1171    bt = elm_button_add(win);
1172    elm_object_text_set(bt, "Last");
1173    evas_object_smart_callback_add(bt, "clicked", _last_bt_clicked, li);
1174    elm_grid_pack(gd, bt,  76,  80, 20, 10);
1175    evas_object_show(bt);
1176
1177    lb = elm_label_add(win);
1178    elm_object_text_set(lb, "Nothing is selected");
1179    elm_grid_pack(gd, lb,  4,  90, 92, 10);
1180    evas_object_show(lb);
1181
1182    evas_object_data_set(li, "label", lb);
1183
1184    evas_object_show(gd);
1185    evas_object_resize(win, 480, 480);
1186    evas_object_show(win);
1187 }
1188 #endif