[svn merge <sumanth>] actionslider,calendar,clock,conformant,slider widgets related...
[framework/uifw/elementary.git] / src / bin / test_genlist.c
1 #include <Elementary.h>
2 <<<<<<< HEAD
3 #ifdef HAVE_CONFIG_H
4 # include "elementary_config.h"
5 #endif
6 #ifndef ELM_LIB_QUICKLAUNCH
7
8 =======
9 #include <Elementary_Cursor.h>
10 #include "test.h"
11 #ifdef HAVE_CONFIG_H
12 #include "elementary_config.h"
13 #endif
14 #ifndef ELM_LIB_QUICKLAUNCH
15 struct _api_data
16 {
17    unsigned int state;  /* What state we are testing       */
18    void *box;           /* Use this to get box content     */
19 };
20 typedef struct _api_data api_data;
21
22 enum _api_state
23 {
24    HORIZONTAL_SET,
25    NO_SELECT_MODE_SET,
26    COMPRESS_MODE_SET,
27    BOUNCE_SET,
28    HOMOGENEOUS_SET,
29    SCROLLER_POLICY_SET,
30    TOOLTIP_TEXT_SET,
31    ITEM_CURSOR_SET,
32    API_STATE_LAST
33 };
34 typedef enum _api_state api_state;
35
36 static void
37 set_api_state(api_data *api)
38 {
39    const Eina_List *items = elm_box_children_get(api->box);
40    if(!eina_list_count(items))
41      return;
42
43    Evas_Object *gl = eina_list_nth(items, 0); /* Genlist is the first item */
44    /* use elm_box_children_get() to get list of children */
45    switch(api->state)
46      {/* Put all api-changes under switch */
47       case HORIZONTAL_SET: /* 0 */
48          elm_genlist_mode_set(gl, ELM_LIST_LIMIT);
49          break;
50
51       case NO_SELECT_MODE_SET: /* 1 */
52          elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_NONE);
53          elm_genlist_mode_set(gl, ELM_LIST_SCROLL); /* Back to default */
54          break;
55
56       case COMPRESS_MODE_SET: /* 2 */
57          elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_DEFAULT);
58          elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
59          break;
60
61       case BOUNCE_SET: /* 3 */
62          elm_genlist_bounce_set(gl, EINA_FALSE, EINA_FALSE);
63          break;
64
65       case HOMOGENEOUS_SET: /* 4 */
66          elm_genlist_bounce_set(gl, EINA_TRUE, EINA_TRUE); /* Back to default */
67          elm_genlist_homogeneous_set(gl, EINA_TRUE);
68          break;
69
70       case SCROLLER_POLICY_SET: /* 5 */
71          elm_genlist_homogeneous_set(gl, EINA_FALSE); /* Back to default */
72          elm_genlist_scroller_policy_set(gl, ELM_SCROLLER_POLICY_ON, ELM_SCROLLER_POLICY_ON);
73          break;
74
75       case TOOLTIP_TEXT_SET: /* 6 */
76            {
77               elm_genlist_item_tooltip_text_set(elm_genlist_first_item_get(gl), "Tooltip text from API");
78               elm_genlist_item_bring_in(elm_genlist_first_item_get(gl),
79                                          ELM_GENLIST_ITEM_SCROLLTO_IN);
80            }
81          break;
82
83       case ITEM_CURSOR_SET: /* 7 */
84          elm_genlist_item_cursor_set(elm_genlist_first_item_get(gl), ELM_CURSOR_HAND2);
85          break;
86
87       default:
88          return;
89      }
90 }
91
92 static void
93 _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
94 {  /* Will add here a SWITCH command containing code to modify test-object */
95    /* in accordance a->state value. */
96    api_data *a = data;
97    char str[128];
98
99    printf("clicked event on API Button: api_state=<%d>\n", a->state);
100    set_api_state(a);
101    a->state++;
102    sprintf(str, "Next API function (%u)", a->state);
103    elm_object_text_set(obj, str);
104    elm_object_disabled_set(obj, a->state == API_STATE_LAST);
105 }
106 >>>>>>> remotes/origin/upstream
107 /* Hint:
108  * In this example some calls to elm_genlist_item_append() are used which give the
109  * value of an int as 'item data' and 'func data' after casting into (void*). For
110  * sure this works only on architectures where sizeof(int)==sizeof(void*).
111  * For real world usage you should hold a data structure or value in your
112  * application and then give only a pointer to this data as data pointer.
113  */
114
115 typedef struct _Testitem
116 {
117    Elm_Object_Item *item;
118    int mode;
119    int onoff;
120 <<<<<<< HEAD
121 } Testitem;
122
123
124 static Elm_Genlist_Item_Class itc1;
125 =======
126    Eina_Bool checked;
127 } Testitem;
128
129 static Elm_Genlist_Item_Class *itc1;
130 static Elm_Genlist_Item_Class *itc15;
131 >>>>>>> remotes/origin/upstream
132 char *gl_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
133 {
134    char buf[256];
135    snprintf(buf, sizeof(buf), "Item # %i", (int)(long)data);
136    return strdup(buf);
137 }
138
139 Evas_Object *gl_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
140 {
141    char buf[PATH_MAX];
142    Evas_Object *ic = elm_icon_add(obj);
143    if (!strcmp(part, "elm.swallow.end"))
144      snprintf(buf, sizeof(buf), "%s/images/bubble.png", elm_app_data_dir_get());
145    else
146      snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
147    elm_icon_file_set(ic, buf, NULL);
148    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
149    return ic;
150 }
151 <<<<<<< HEAD
152 =======
153
154 >>>>>>> remotes/origin/upstream
155 Eina_Bool gl_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
156 {
157    return EINA_FALSE;
158 }
159 <<<<<<< HEAD
160 void gl_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
161 {
162 }
163 =======
164 >>>>>>> remotes/origin/upstream
165
166 static void
167 gl_sel(void *data, Evas_Object *obj, void *event_info)
168 {
169    printf("sel item data [%p] on genlist obj [%p], item pointer [%p]\n", data, obj, event_info);
170 }
171
172 static void
173 _move(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
174 {
175    Evas_Object *gl = data;
176    Evas_Event_Mouse_Move *ev = event_info;
177    int where = 0;
178    Elm_Object_Item *gli;
179    gli = elm_genlist_at_xy_item_get(gl, ev->cur.canvas.x, ev->cur.canvas.y, &where);
180    if (gli)
181 <<<<<<< HEAD
182      printf("over %p, where %i\n", elm_genlist_item_data_get(gli), where);
183 =======
184      printf("over %p, where %i\n", elm_object_item_data_get(gli), where);
185 >>>>>>> remotes/origin/upstream
186    else
187      printf("over none, where %i\n", where);
188 }
189
190 static void
191 _bt50_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
192 {
193 <<<<<<< HEAD
194    elm_genlist_item_bring_in(data);
195 =======
196    elm_genlist_item_bring_in(data, ELM_GENLIST_ITEM_SCROLLTO_IN);
197 >>>>>>> remotes/origin/upstream
198 }
199
200 static void
201 _bt1500_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
202 {
203 <<<<<<< HEAD
204    elm_genlist_item_middle_bring_in(data);
205 =======
206    elm_genlist_item_bring_in(data, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
207 >>>>>>> remotes/origin/upstream
208 }
209
210 static void
211 _gl_selected(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
212 {
213    printf("selected: %p\n", event_info);
214 }
215
216 static void
217 _gl_double_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
218 {
219    printf("double clicked: %p\n", event_info);
220 }
221
222 static void
223 _gl_longpress(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
224 {
225    printf("longpress %p\n", event_info);
226 }
227
228 <<<<<<< HEAD
229 void
230 test_genlist(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
231 {
232    Evas_Object *win, *bg, *gl, *bt_50, *bt_1500, *bx;
233    Evas_Object *over;
234    Elm_Object_Item *gli;
235    int i;
236
237    win = elm_win_add(NULL, "genlist", ELM_WIN_BASIC);
238    elm_win_title_set(win, "Genlist");
239    elm_win_autodel_set(win, EINA_TRUE);
240
241    bg = elm_bg_add(win);
242    elm_win_resize_object_add(win, bg);
243    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
244    evas_object_show(bg);
245
246    bx = elm_box_add(win);
247    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
248    elm_win_resize_object_add(win, bx);
249    evas_object_show(bx);
250
251 =======
252 static void
253 _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
254 {
255    free(data);
256 }
257
258 void
259 test_genlist(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
260 {
261    Evas_Object *win, *gl, *bt_50, *bt_1500, *bx, *bxx, *bt;
262    Evas_Object *over;
263    Elm_Object_Item *gli;
264    int i;
265    api_data *api = calloc(1, sizeof(api_data));
266
267    win = elm_win_util_standard_add("genlist", "Genlist");
268    elm_win_autodel_set(win, EINA_TRUE);
269    evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
270
271    bxx = elm_box_add(win);
272    elm_win_resize_object_add(win, bxx);
273    evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
274    evas_object_show(bxx);
275
276    bx = elm_box_add(win);
277    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
278    evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
279    api->box = bx;
280    evas_object_show(bx);
281
282    bt = elm_button_add(win);
283    elm_object_text_set(bt, "Next API function");
284    evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
285    elm_box_pack_end(bxx, bt);
286    elm_object_disabled_set(bt, api->state == API_STATE_LAST);
287    evas_object_show(bt);
288
289    elm_box_pack_end(bxx, bx);
290
291 >>>>>>> remotes/origin/upstream
292    gl = elm_genlist_add(win);
293    evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
294    evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
295    evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
296    // FIXME: This causes genlist to resize the horiz axis very slowly :(
297    // Reenable this and resize the window horizontally, then try to resize it back
298 <<<<<<< HEAD
299    //elm_genlist_horizontal_mode_set(gl, ELM_LIST_LIMIT);
300 =======
301    //elm_genlist_mode_set(gl, ELM_LIST_LIMIT);
302 >>>>>>> remotes/origin/upstream
303    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
304    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
305    elm_box_pack_end(bx, gl);
306    evas_object_show(gl);
307
308    over = evas_object_rectangle_add(evas_object_evas_get(win));
309    evas_object_color_set(over, 0, 0, 0, 0);
310    evas_object_event_callback_add(over, EVAS_CALLBACK_MOUSE_MOVE, _move, gl);
311    evas_object_repeat_events_set(over, 1);
312    evas_object_show(over);
313    evas_object_size_hint_weight_set(over, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
314    elm_win_resize_object_add(win, over);
315
316 <<<<<<< HEAD
317    itc1.item_style     = "default";
318    itc1.func.text_get = gl_text_get;
319    itc1.func.content_get  = gl_content_get;
320    itc1.func.state_get = gl_state_get;
321    itc1.func.del       = gl_del;
322 =======
323    itc1 = elm_genlist_item_class_new();
324    itc1->item_style     = "default";
325    itc1->func.text_get = gl_text_get;
326    itc1->func.content_get  = gl_content_get;
327    itc1->func.state_get = gl_state_get;
328    itc1->func.del       = NULL;
329 >>>>>>> remotes/origin/upstream
330
331    bt_50 = elm_button_add(win);
332    elm_object_text_set(bt_50, "Go to 50");
333    evas_object_show(bt_50);
334    elm_box_pack_end(bx, bt_50);
335
336    bt_1500 = elm_button_add(win);
337    elm_object_text_set(bt_1500, "Go to 1500");
338    evas_object_show(bt_1500);
339    elm_box_pack_end(bx, bt_1500);
340
341    for (i = 0; i < 2000; i++)
342      {
343 <<<<<<< HEAD
344         gli = elm_genlist_item_append(gl, &itc1,
345 =======
346         gli = elm_genlist_item_append(gl, itc1,
347 >>>>>>> remotes/origin/upstream
348                                       (void *)(long)i/* item data */,
349                                       NULL/* parent */,
350                                       ELM_GENLIST_ITEM_NONE,
351                                       gl_sel/* func */,
352                                       (void *)(long)(i * 10)/* func data */);
353         if (i == 50)
354           evas_object_smart_callback_add(bt_50, "clicked", _bt50_cb, gli);
355         else if (i == 1500)
356           evas_object_smart_callback_add(bt_1500, "clicked", _bt1500_cb, gli);
357      }
358 <<<<<<< HEAD
359 =======
360    elm_genlist_item_class_free(itc1);
361
362 >>>>>>> remotes/origin/upstream
363    evas_object_resize(win, 480, 800);
364    evas_object_show(win);
365 }
366
367 /*************/
368
369 static void
370 my_gl_clear(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
371 {
372    Evas_Object *gl = data;
373    elm_genlist_clear(gl);
374 }
375
376 static void
377 my_gl_add(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
378 {
379    Evas_Object *gl = data;
380    static int i = 0;
381
382 <<<<<<< HEAD
383    itc1.item_style     = "default";
384    itc1.func.text_get = gl_text_get;
385    itc1.func.content_get  = gl_content_get;
386    itc1.func.state_get = gl_state_get;
387    itc1.func.del       = gl_del;
388
389    elm_genlist_item_append(gl, &itc1,
390 =======
391    itc1->item_style     = "default";
392    itc1->func.text_get = gl_text_get;
393    itc1->func.content_get  = gl_content_get;
394    itc1->func.state_get = gl_state_get;
395    itc1->func.del       = NULL;
396
397    elm_genlist_item_append(gl, itc1,
398 >>>>>>> remotes/origin/upstream
399                            (void *)(long)i/* item data */,
400                            NULL/* parent */,
401                            ELM_GENLIST_ITEM_NONE,
402                            gl_sel/* func */,
403                            (void *)(long)(i * 10)/* func data */);
404    i++;
405 }
406
407 static void
408 my_gl_insert_before(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
409 {
410    Evas_Object *gl = data;
411    static int i = 0;
412    Elm_Object_Item *gli_selected;
413
414 <<<<<<< HEAD
415    itc1.item_style     = "default";
416    itc1.func.text_get = gl_text_get;
417    itc1.func.content_get  = gl_content_get;
418    itc1.func.state_get = gl_state_get;
419    itc1.func.del       = gl_del;
420
421    gli_selected = elm_genlist_selected_item_get(gl);
422    if(!gli_selected)
423 =======
424    itc1->item_style     = "default";
425    itc1->func.text_get = gl_text_get;
426    itc1->func.content_get  = gl_content_get;
427    itc1->func.state_get = gl_state_get;
428    itc1->func.del       = NULL;
429
430    gli_selected = elm_genlist_selected_item_get(gl);
431    if (!gli_selected)
432 >>>>>>> remotes/origin/upstream
433      {
434         printf("no item selected\n");
435         return ;
436      }
437
438 <<<<<<< HEAD
439    elm_genlist_item_insert_before(gl, &itc1,
440 =======
441    elm_genlist_item_insert_before(gl, itc1,
442 >>>>>>> remotes/origin/upstream
443                                   (void *)(long)i/* item data */,
444                                   NULL/* parent */,
445                                   gli_selected /* item before */,
446                                   ELM_GENLIST_ITEM_NONE,
447                                   gl_sel/* func */,
448                                   (void *)(long)(i * 10)/* func data */);
449    i++;
450 }
451
452 static void
453 my_gl_insert_after(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
454 {
455    Evas_Object *gl = data;
456    static int i = 0;
457    Elm_Object_Item *gli_selected;
458
459 <<<<<<< HEAD
460    itc1.item_style     = "default";
461    itc1.func.text_get = gl_text_get;
462    itc1.func.content_get  = gl_content_get;
463    itc1.func.state_get = gl_state_get;
464    itc1.func.del       = gl_del;
465
466    gli_selected = elm_genlist_selected_item_get(gl);
467    if(!gli_selected)
468 =======
469    itc1->item_style     = "default";
470    itc1->func.text_get = gl_text_get;
471    itc1->func.content_get  = gl_content_get;
472    itc1->func.state_get = gl_state_get;
473    itc1->func.del       = NULL;
474
475    gli_selected = elm_genlist_selected_item_get(gl);
476    if (!gli_selected)
477 >>>>>>> remotes/origin/upstream
478      {
479         printf("no item selected\n");
480         return ;
481      }
482
483 <<<<<<< HEAD
484    elm_genlist_item_insert_after(gl, &itc1,
485 =======
486    elm_genlist_item_insert_after(gl, itc1,
487 >>>>>>> remotes/origin/upstream
488                                  (void *)(long)i/* item data */,
489                                  NULL/* parent */,
490                                  gli_selected /* item after */,
491                                  ELM_GENLIST_ITEM_NONE,
492                                  gl_sel/* func */,
493                                  (void *)(long)(i * 10)/* func data */);
494    i++;
495 }
496
497 static void
498 my_gl_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
499 {
500    Evas_Object *gl = data;
501    Elm_Object_Item *gli = elm_genlist_selected_item_get(gl);
502    if (!gli)
503      {
504         printf("no item selected\n");
505         return;
506      }
507 <<<<<<< HEAD
508    elm_genlist_item_del(gli);
509 =======
510    elm_object_item_del(gli);
511 >>>>>>> remotes/origin/upstream
512 }
513
514 static void
515 my_gl_disable(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
516 {
517    Evas_Object *gl = data;
518    Elm_Object_Item *gli = elm_genlist_selected_item_get(gl);
519    if (!gli)
520      {
521         printf("no item selected\n");
522         return;
523      }
524 <<<<<<< HEAD
525    elm_genlist_item_disabled_set(gli, 1);
526    elm_genlist_item_selected_set(gli, 0);
527 =======
528    elm_object_item_disabled_set(gli, EINA_TRUE);
529    elm_genlist_item_selected_set(gli, EINA_FALSE);
530 >>>>>>> remotes/origin/upstream
531    elm_genlist_item_update(gli);
532 }
533
534 static void
535 my_gl_update_all(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
536 {
537    Evas_Object *gl = data;
538    int i = 0;
539    Elm_Object_Item *it = elm_genlist_first_item_get(gl);
540    while (it)
541      {
542         elm_genlist_item_update(it);
543         printf("%i\n", i);
544         i++;
545         it = elm_genlist_item_next_get(it);
546      }
547 }
548
549 static void
550 my_gl_first(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
551 {
552    Evas_Object *gl = data;
553    Elm_Object_Item *gli = elm_genlist_first_item_get(gl);
554    if (!gli) return;
555 <<<<<<< HEAD
556    elm_genlist_item_show(gli);
557 =======
558    elm_genlist_item_show(gli, ELM_GENLIST_ITEM_SCROLLTO_IN);
559 >>>>>>> remotes/origin/upstream
560    elm_genlist_item_selected_set(gli, 1);
561 }
562
563 static void
564 my_gl_last(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
565 {
566    Evas_Object *gl = data;
567    Elm_Object_Item *gli = elm_genlist_last_item_get(gl);
568    if (!gli) return;
569 <<<<<<< HEAD
570    elm_genlist_item_show(gli);
571 =======
572    elm_genlist_item_show(gli, ELM_GENLIST_ITEM_SCROLLTO_IN);
573 >>>>>>> remotes/origin/upstream
574    elm_genlist_item_selected_set(gli, 1);
575 }
576
577 static Eina_Bool
578 my_gl_flush_delay(void *data __UNUSED__)
579 {
580 <<<<<<< HEAD
581    elm_all_flush();
582 =======
583    elm_cache_all_flush();
584 >>>>>>> remotes/origin/upstream
585    return ECORE_CALLBACK_CANCEL;
586 }
587
588 static void
589 my_gl_flush(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
590 {
591    ecore_timer_add(1.2, my_gl_flush_delay, NULL);
592 }
593
594 void
595 test_genlist2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
596 {
597    Evas_Object *win, *bg, *gl, *bx, *bx2, *bx3, *bt;
598    Elm_Object_Item *gli[10];
599    char buf[PATH_MAX];
600
601    win = elm_win_add(NULL, "genlist2", ELM_WIN_BASIC);
602    elm_win_title_set(win, "Genlist 2");
603    elm_win_autodel_set(win, EINA_TRUE);
604
605    bg = elm_bg_add(win);
606    snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
607    elm_bg_file_set(bg, buf, NULL);
608    elm_win_resize_object_add(win, bg);
609    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
610    evas_object_show(bg);
611
612    bx = elm_box_add(win);
613    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
614    elm_win_resize_object_add(win, bx);
615    evas_object_show(bx);
616
617    gl = elm_genlist_add(win);
618    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
619    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
620    evas_object_show(gl);
621
622 <<<<<<< HEAD
623    itc1.item_style     = "default";
624    itc1.func.text_get = gl_text_get;
625    itc1.func.content_get  = gl_content_get;
626    itc1.func.state_get = gl_state_get;
627    itc1.func.del       = gl_del;
628
629    gli[0] = elm_genlist_item_append(gl, &itc1,
630                                     (void *)1001/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
631                                     (void *)1001/* func data */);
632    gli[1] = elm_genlist_item_append(gl, &itc1,
633                                     (void *)1002/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
634                                     (void *)1002/* func data */);
635    gli[2] = elm_genlist_item_append(gl, &itc1,
636                                     (void *)1003/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
637                                     (void *)1003/* func data */);
638    gli[3] = elm_genlist_item_prepend(gl, &itc1,
639                                      (void *)1004/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
640                                      (void *)1004/* func data */);
641    gli[4] = elm_genlist_item_prepend(gl, &itc1,
642                                      (void *)1005/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
643                                      (void *)1005/* func data */);
644    gli[5] = elm_genlist_item_insert_before(gl, &itc1,
645                                            (void *)1006/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
646                                            gl_sel/* func */, (void *)1006/* func data */);
647    gli[6] = elm_genlist_item_insert_after(gl, &itc1,
648                                           (void *)1007/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
649                                           gl_sel/* func */, (void *)1007/* func data */);
650
651 =======
652    itc1 = elm_genlist_item_class_new();
653    itc1->item_style     = "default";
654    itc1->func.text_get = gl_text_get;
655    itc1->func.content_get  = gl_content_get;
656    itc1->func.state_get = gl_state_get;
657    itc1->func.del       = NULL;
658
659    gli[0] = elm_genlist_item_append(gl, itc1,
660                                     (void *)1001/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
661                                     (void *)1001/* func data */);
662    gli[1] = elm_genlist_item_append(gl, itc1,
663                                     (void *)1002/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
664                                     (void *)1002/* func data */);
665    gli[2] = elm_genlist_item_append(gl, itc1,
666                                     (void *)1003/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
667                                     (void *)1003/* func data */);
668    gli[3] = elm_genlist_item_prepend(gl, itc1,
669                                      (void *)1004/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
670                                      (void *)1004/* func data */);
671    gli[4] = elm_genlist_item_prepend(gl, itc1,
672                                      (void *)1005/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
673                                      (void *)1005/* func data */);
674    gli[5] = elm_genlist_item_insert_before(gl, itc1,
675                                            (void *)1006/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
676                                            gl_sel/* func */, (void *)1006/* func data */);
677    gli[6] = elm_genlist_item_insert_after(gl, itc1,
678                                           (void *)1007/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
679                                           gl_sel/* func */, (void *)1007/* func data */);
680 >>>>>>> remotes/origin/upstream
681    elm_box_pack_end(bx, gl);
682
683    bx2 = elm_box_add(win);
684    elm_box_horizontal_set(bx2, EINA_TRUE);
685    elm_box_homogeneous_set(bx2, EINA_TRUE);
686    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
687    evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
688
689    bt = elm_button_add(win);
690    elm_object_text_set(bt, "/\\");
691    evas_object_smart_callback_add(bt, "clicked", my_gl_first, gl);
692    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
693    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
694    elm_box_pack_end(bx2, bt);
695    evas_object_show(bt);
696
697    bt = elm_button_add(win);
698    elm_object_text_set(bt, "\\/");
699    evas_object_smart_callback_add(bt, "clicked", my_gl_last, gl);
700    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
701    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
702    elm_box_pack_end(bx2, bt);
703    evas_object_show(bt);
704
705    bt = elm_button_add(win);
706    elm_object_text_set(bt, "#");
707    evas_object_smart_callback_add(bt, "clicked", my_gl_disable, gl);
708    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
709    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
710    elm_box_pack_end(bx2, bt);
711    evas_object_show(bt);
712
713    bt = elm_button_add(win);
714    elm_object_text_set(bt, "U");
715    evas_object_smart_callback_add(bt, "clicked", my_gl_update_all, gl);
716    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
717    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
718    elm_box_pack_end(bx2, bt);
719    evas_object_show(bt);
720
721    elm_box_pack_end(bx, bx2);
722    evas_object_show(bx2);
723
724    bx2 = elm_box_add(win);
725    elm_box_horizontal_set(bx2, EINA_TRUE);
726    elm_box_homogeneous_set(bx2, EINA_TRUE);
727    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
728    evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
729
730    bt = elm_button_add(win);
731    elm_object_text_set(bt, "X");
732    evas_object_smart_callback_add(bt, "clicked", my_gl_clear, gl);
733    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
734    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
735    elm_box_pack_end(bx2, bt);
736    evas_object_show(bt);
737
738    bt = elm_button_add(win);
739    elm_object_text_set(bt, "+");
740    evas_object_smart_callback_add(bt, "clicked", my_gl_add, gl);
741    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
742    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
743    elm_box_pack_end(bx2, bt);
744    evas_object_show(bt);
745
746    bt = elm_button_add(win);
747    elm_object_text_set(bt, "-");
748    evas_object_smart_callback_add(bt, "clicked", my_gl_del, gl);
749    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
750    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
751    elm_box_pack_end(bx2, bt);
752    evas_object_show(bt);
753
754    elm_box_pack_end(bx, bx2);
755    evas_object_show(bx2);
756
757    bx3 = elm_box_add(win);
758    elm_box_horizontal_set(bx3, EINA_TRUE);
759    elm_box_homogeneous_set(bx3, EINA_TRUE);
760    evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
761    evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
762
763    bt = elm_button_add(win);
764    elm_object_text_set(bt, "+ before");
765    evas_object_smart_callback_add(bt, "clicked", my_gl_insert_before, gl);
766    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
767    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
768    elm_box_pack_end(bx3, bt);
769    evas_object_show(bt);
770
771    bt = elm_button_add(win);
772    elm_object_text_set(bt, "+ after");
773    evas_object_smart_callback_add(bt, "clicked", my_gl_insert_after, gl);
774    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
775    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
776    elm_box_pack_end(bx3, bt);
777    evas_object_show(bt);
778
779    bt = elm_button_add(win);
780    elm_object_text_set(bt, "Flush");
781    evas_object_smart_callback_add(bt, "clicked", my_gl_flush, gl);
782    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
783    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
784    elm_box_pack_end(bx3, bt);
785    evas_object_show(bt);
786
787    elm_box_pack_end(bx, bx3);
788    evas_object_show(bx3);
789
790 <<<<<<< HEAD
791 =======
792    /* item_class_ref is needed for itc1. some items can be added in callbacks */
793    elm_genlist_item_class_ref(itc1);
794    elm_genlist_item_class_free(itc1);
795 >>>>>>> remotes/origin/upstream
796
797    evas_object_resize(win, 320, 320);
798    evas_object_show(win);
799 }
800
801 /*************/
802
803 static Elm_Genlist_Item_Class itc2;
804 <<<<<<< HEAD
805 =======
806
807 >>>>>>> remotes/origin/upstream
808 char *gl2_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
809 {
810    const Testitem *tit = data;
811    char buf[256];
812    snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
813    return strdup(buf);
814 }
815 <<<<<<< HEAD
816 =======
817
818 >>>>>>> remotes/origin/upstream
819 Evas_Object *gl2_content_get(void *data, Evas_Object *obj, const char *part)
820 {
821    const Testitem *tit = data;
822    char buf[PATH_MAX];
823    Evas_Object *ic = elm_icon_add(obj);
824    if (!strcmp(part, "elm.swallow.icon"))
825      {
826         if (!(tit->mode & 0x3))
827           snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
828         else if ((tit->mode & 0x3) == 1)
829           snprintf(buf, sizeof(buf), "%s/images/logo.png", elm_app_data_dir_get());
830         else if ((tit->mode & 0x3) == 2)
831           snprintf(buf, sizeof(buf), "%s/images/panel_01.jpg", elm_app_data_dir_get());
832         else if ((tit->mode & 0x3) == 3)
833           snprintf(buf, sizeof(buf), "%s/images/rock_01.jpg", elm_app_data_dir_get());
834         elm_icon_file_set(ic, buf, NULL);
835      }
836    else if (!strcmp(part, "elm.swallow.end"))
837      {
838         if (!(tit->mode & 0x3))
839           snprintf(buf, sizeof(buf), "%s/images/sky_01.jpg", elm_app_data_dir_get());
840         else if ((tit->mode & 0x3) == 1)
841           snprintf(buf, sizeof(buf), "%s/images/sky_02.jpg", elm_app_data_dir_get());
842         else if ((tit->mode & 0x3) == 2)
843           snprintf(buf, sizeof(buf), "%s/images/sky_03.jpg", elm_app_data_dir_get());
844         else if ((tit->mode & 0x3) == 3)
845           snprintf(buf, sizeof(buf), "%s/images/sky_04.jpg", elm_app_data_dir_get());
846         elm_icon_file_set(ic, buf, NULL);
847      }
848    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
849    return ic;
850 }
851 <<<<<<< HEAD
852 =======
853
854 >>>>>>> remotes/origin/upstream
855 Eina_Bool gl2_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
856 {
857    return EINA_FALSE;
858 }
859 <<<<<<< HEAD
860 void gl2_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
861 {
862 }
863 =======
864 >>>>>>> remotes/origin/upstream
865
866 static void
867 my_gl_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
868 {
869    Testitem *tit = data;
870    tit->mode++;
871    elm_genlist_item_update(tit->item);
872 }
873
874 <<<<<<< HEAD
875 void
876 test_genlist3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
877 {
878    Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
879    static Testitem tit[3];
880
881    win = elm_win_add(NULL, "genlist3", ELM_WIN_BASIC);
882    elm_win_title_set(win, "Genlist 3");
883    elm_win_autodel_set(win, EINA_TRUE);
884
885    bg = elm_bg_add(win);
886    elm_win_resize_object_add(win, bg);
887    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
888    evas_object_show(bg);
889
890 =======
891 static void
892 my_gl_labels_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
893 {
894    Testitem *tit = data;
895    tit->mode++;
896    elm_genlist_item_fields_update(tit->item, "*", ELM_GENLIST_ITEM_FIELD_TEXT);
897 }
898
899 static void
900 my_gl_contents_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
901 {
902    Testitem *tit = data;
903    tit->mode++;
904    elm_genlist_item_fields_update(tit->item, "*", ELM_GENLIST_ITEM_FIELD_CONTENT);
905 }
906
907 void
908 test_genlist3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
909 {
910    Evas_Object *win, *gl, *bx, *bx2, *bt;
911    static Testitem tit[3];
912
913    win = elm_win_util_standard_add("genlist3", "Genlist 3");
914    elm_win_autodel_set(win, EINA_TRUE);
915
916 >>>>>>> remotes/origin/upstream
917    bx = elm_box_add(win);
918    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
919    elm_win_resize_object_add(win, bx);
920    evas_object_show(bx);
921
922    gl = elm_genlist_add(win);
923    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
924    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
925    evas_object_show(gl);
926
927    itc2.item_style     = "default";
928    itc2.func.text_get = gl2_text_get;
929    itc2.func.content_get  = gl2_content_get;
930    itc2.func.state_get = gl2_state_get;
931 <<<<<<< HEAD
932    itc2.func.del       = gl2_del;
933 =======
934    itc2.func.del       = NULL;
935 >>>>>>> remotes/origin/upstream
936
937    tit[0].mode = 0;
938    tit[0].item = elm_genlist_item_append(gl, &itc2,
939                                          &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
940                                          NULL/* func data */);
941    tit[1].mode = 1;
942    tit[1].item = elm_genlist_item_append(gl, &itc2,
943                                          &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
944                                          NULL/* func data */);
945    tit[2].mode = 2;
946    tit[2].item = elm_genlist_item_append(gl, &itc2,
947                                          &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
948                                          NULL/* func data */);
949
950    elm_box_pack_end(bx, gl);
951    evas_object_show(bx);
952
953    bx2 = elm_box_add(win);
954    elm_box_horizontal_set(bx2, EINA_TRUE);
955    elm_box_homogeneous_set(bx2, EINA_TRUE);
956    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
957    evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
958
959    bt = elm_button_add(win);
960    elm_object_text_set(bt, "[1]");
961    evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
962    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
963    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
964    elm_box_pack_end(bx2, bt);
965    evas_object_show(bt);
966
967    bt = elm_button_add(win);
968 <<<<<<< HEAD
969    elm_object_text_set(bt, "[2]");
970    evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
971 =======
972    elm_object_text_set(bt, "labels");
973    evas_object_smart_callback_add(bt, "clicked", my_gl_labels_update, &(tit[1]));
974 >>>>>>> remotes/origin/upstream
975    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
976    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
977    elm_box_pack_end(bx2, bt);
978    evas_object_show(bt);
979
980    bt = elm_button_add(win);
981 <<<<<<< HEAD
982    elm_object_text_set(bt, "[3]");
983    evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
984 =======
985    elm_object_text_set(bt, "contents");
986    evas_object_smart_callback_add(bt, "clicked", my_gl_contents_update, &(tit[2]));
987 >>>>>>> remotes/origin/upstream
988    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
989    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
990    elm_box_pack_end(bx2, bt);
991    evas_object_show(bt);
992
993    elm_box_pack_end(bx, bx2);
994    evas_object_show(bx2);
995
996    evas_object_resize(win, 320, 320);
997    evas_object_show(win);
998 }
999
1000 /*************/
1001
1002 static void
1003 my_gl_item_check_changed(void *data, Evas_Object *obj, void *event_info __UNUSED__)
1004 {
1005    Testitem *tit = data;
1006    tit->onoff = elm_check_state_get(obj);
1007    printf("item %p onoff = %i\n", tit, tit->onoff);
1008 }
1009
1010 static Elm_Genlist_Item_Class itc3;
1011 <<<<<<< HEAD
1012 =======
1013
1014 >>>>>>> remotes/origin/upstream
1015 char *gl3_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1016 {
1017    const Testitem *tit = data;
1018    char buf[256];
1019    snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
1020    return strdup(buf);
1021 }
1022 <<<<<<< HEAD
1023 =======
1024
1025 >>>>>>> remotes/origin/upstream
1026 Evas_Object *gl3_content_get(void *data, Evas_Object *obj, const char *part)
1027 {
1028    const Testitem *tit = data;
1029    if (!strcmp(part, "elm.swallow.icon"))
1030      {
1031         Evas_Object *lb;
1032
1033         lb = elm_label_add(obj);
1034         elm_label_line_wrap_set(lb, ELM_WRAP_CHAR);
1035         elm_label_wrap_width_set(lb, 201);
1036         elm_object_text_set(lb, "ashj ascjscjh n asjkl hcjlh ls hzshnn zjh sh zxjcjsnd h dfw sdv edev efe fwefvv vsd cvs ws wf  fvwf wd fwe f  we wef we wfe rfwewef wfv wswf wefg sdfws w wsdcfwcf wsc vdv  sdsd sdcd cv wsc sdcv wsc d sdcdcsd sdcdsc wdvd sdcsd wscxcv wssvd sd");
1037         return lb;
1038      }
1039    else if (!strcmp(part, "elm.swallow.end"))
1040      {
1041         Evas_Object *ck;
1042         ck = elm_check_add(obj);
1043         evas_object_propagate_events_set(ck, EINA_FALSE);
1044         elm_check_state_set(ck, tit->onoff);
1045         evas_object_smart_callback_add(ck, "changed", my_gl_item_check_changed, data);
1046         return ck;
1047      }
1048    return NULL;
1049 }
1050 <<<<<<< HEAD
1051 =======
1052
1053 >>>>>>> remotes/origin/upstream
1054 Eina_Bool gl3_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1055 {
1056    return EINA_FALSE;
1057 }
1058 <<<<<<< HEAD
1059 void gl3_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
1060 {
1061 }
1062 =======
1063 >>>>>>> remotes/origin/upstream
1064
1065 void
1066 test_genlist4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1067 {
1068 <<<<<<< HEAD
1069    Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
1070    static Testitem tit[3];
1071
1072    win = elm_win_add(NULL, "genlist4", ELM_WIN_BASIC);
1073    elm_win_title_set(win, "Genlist 4");
1074    elm_win_autodel_set(win, EINA_TRUE);
1075
1076    bg = elm_bg_add(win);
1077    elm_win_resize_object_add(win, bg);
1078    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1079    evas_object_show(bg);
1080
1081 =======
1082    Evas_Object *win, *gl, *bx, *bx2, *bt;
1083    static Testitem tit[3];
1084
1085    win = elm_win_util_standard_add("genlist4", "Genlist 4");
1086    elm_win_autodel_set(win, EINA_TRUE);
1087
1088 >>>>>>> remotes/origin/upstream
1089    bx = elm_box_add(win);
1090    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1091    elm_win_resize_object_add(win, bx);
1092    evas_object_show(bx);
1093
1094    gl = elm_genlist_add(win);
1095 <<<<<<< HEAD
1096    elm_genlist_height_for_width_mode_set(gl, EINA_TRUE);
1097 =======
1098    elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
1099 >>>>>>> remotes/origin/upstream
1100    elm_genlist_multi_select_set(gl, 1);
1101    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1102    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1103    evas_object_show(gl);
1104
1105    itc3.item_style     = "default";
1106    itc3.func.text_get = gl3_text_get;
1107    itc3.func.content_get  = gl3_content_get;
1108    itc3.func.state_get = gl3_state_get;
1109 <<<<<<< HEAD
1110    itc3.func.del       = gl3_del;
1111 =======
1112    itc3.func.del       = NULL;
1113 >>>>>>> remotes/origin/upstream
1114
1115    tit[0].mode = 0;
1116    tit[0].item = elm_genlist_item_append(gl, &itc3,
1117                                          &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
1118                                          NULL/* func data */);
1119    tit[1].mode = 1;
1120    tit[1].item = elm_genlist_item_append(gl, &itc3,
1121                                          &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
1122                                          NULL/* func data */);
1123    tit[2].mode = 2;
1124    tit[2].item = elm_genlist_item_append(gl, &itc3,
1125                                          &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
1126                                          NULL/* func data */);
1127
1128    elm_box_pack_end(bx, gl);
1129    evas_object_show(bx);
1130
1131    bx2 = elm_box_add(win);
1132    elm_box_horizontal_set(bx2, EINA_TRUE);
1133    elm_box_homogeneous_set(bx2, EINA_TRUE);
1134    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1135    evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1136
1137    bt = elm_button_add(win);
1138    elm_object_text_set(bt, "[1]");
1139    evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
1140    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1141    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1142    elm_box_pack_end(bx2, bt);
1143    evas_object_show(bt);
1144
1145    bt = elm_button_add(win);
1146    elm_object_text_set(bt, "[2]");
1147    evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
1148    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1149    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1150    elm_box_pack_end(bx2, bt);
1151    evas_object_show(bt);
1152
1153    bt = elm_button_add(win);
1154    elm_object_text_set(bt, "[3]");
1155    evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
1156    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1157    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1158    elm_box_pack_end(bx2, bt);
1159    evas_object_show(bt);
1160
1161    elm_box_pack_end(bx, bx2);
1162    evas_object_show(bx2);
1163
1164    evas_object_resize(win, 320, 320);
1165    evas_object_show(win);
1166 }
1167
1168
1169 /*************/
1170 static void
1171 my_gl_item_check_changed2(void *data, Evas_Object *obj, void *event_info __UNUSED__)
1172 {
1173    Testitem *tit = data;
1174    tit->onoff = elm_check_state_get(obj);
1175    printf("item %p onoff = %i\n", tit, tit->onoff);
1176 }
1177
1178 static Elm_Genlist_Item_Class itc5;
1179 <<<<<<< HEAD
1180 =======
1181
1182 >>>>>>> remotes/origin/upstream
1183 char *gl5_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
1184 {
1185    const Testitem *tit = data;
1186    char buf[256];
1187    if (!strcmp(part, "elm.text"))
1188      {
1189         snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
1190      }
1191    else if (!strcmp(part, "elm.text.sub"))
1192      {
1193         snprintf(buf, sizeof(buf), "%i bottles on the wall", tit->mode);
1194      }
1195    return strdup(buf);
1196 }
1197 <<<<<<< HEAD
1198 =======
1199
1200 >>>>>>> remotes/origin/upstream
1201 Evas_Object *gl5_content_get(void *data, Evas_Object *obj, const char *part)
1202 {
1203    const Testitem *tit = data;
1204    char buf[PATH_MAX];
1205    if (!strcmp(part, "elm.swallow.icon"))
1206      {
1207         Evas_Object *bx = elm_box_add(obj);
1208         Evas_Object *ic;
1209         elm_box_horizontal_set(bx, EINA_TRUE);
1210         ic = elm_icon_add(obj);
1211         snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
1212         elm_icon_file_set(ic, buf, NULL);
1213 <<<<<<< HEAD
1214         elm_icon_scale_set(ic, 0, 0);
1215 =======
1216         elm_icon_resizable_set(ic, 0, 0);
1217 >>>>>>> remotes/origin/upstream
1218         evas_object_show(ic);
1219         elm_box_pack_end(bx, ic);
1220         ic = elm_icon_add(obj);
1221         elm_icon_file_set(ic, buf, NULL);
1222 <<<<<<< HEAD
1223         elm_icon_scale_set(ic, 0, 0);
1224 =======
1225         elm_icon_resizable_set(ic, 0, 0);
1226 >>>>>>> remotes/origin/upstream
1227         evas_object_show(ic);
1228         elm_box_pack_end(bx, ic);
1229         elm_box_horizontal_set(bx, EINA_TRUE);
1230         evas_object_show(bx);
1231         return bx;
1232      }
1233    else if (!strcmp(part, "elm.swallow.end"))
1234      {
1235         Evas_Object *ck;
1236         ck = elm_check_add(obj);
1237         evas_object_propagate_events_set(ck, EINA_FALSE);
1238         elm_check_state_set(ck, tit->onoff);
1239         evas_object_smart_callback_add(ck, "changed", my_gl_item_check_changed2, data);
1240         evas_object_show(ck);
1241         return ck;
1242      }
1243    return NULL;
1244 }
1245 <<<<<<< HEAD
1246 =======
1247
1248 >>>>>>> remotes/origin/upstream
1249 Eina_Bool gl5_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1250 {
1251    return EINA_FALSE;
1252 }
1253 <<<<<<< HEAD
1254 void gl5_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
1255 {
1256 }
1257 =======
1258 >>>>>>> remotes/origin/upstream
1259
1260 static void
1261 item_drag_up(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1262 {
1263    printf("drag up\n");
1264 }
1265
1266 static void
1267 item_drag_down(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1268 {
1269    printf("drag down\n");
1270 }
1271
1272 static void
1273 item_drag_left(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1274 {
1275    printf("drag left\n");
1276 }
1277
1278 static void
1279 item_drag_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1280 {
1281    printf("drag right\n");
1282 }
1283
1284 static void
1285 scroll_top(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1286 {
1287    printf("Top edge!\n");
1288 }
1289
1290 static void
1291 scroll_bottom(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1292 {
1293    printf("Bottom edge!\n");
1294 }
1295
1296 static void
1297 scroll_left(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1298 {
1299    printf("Left edge!\n");
1300 }
1301
1302 static void
1303 scroll_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1304 {
1305    printf("Right edge!\n");
1306 }
1307
1308 static void
1309 item_drag(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1310 {
1311    printf("drag\n");
1312 }
1313
1314 static void
1315 item_drag_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1316 {
1317    printf("drag stop\n");
1318 }
1319
1320 static void
1321 item_longpress(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1322 {
1323    printf("longpress\n");
1324 }
1325
1326 void
1327 test_genlist5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1328 {
1329 <<<<<<< HEAD
1330    Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
1331    static Testitem tit[3];
1332
1333    win = elm_win_add(NULL, "genlist5", ELM_WIN_BASIC);
1334    elm_win_title_set(win, "Genlist 5");
1335    elm_win_autodel_set(win, EINA_TRUE);
1336
1337    bg = elm_bg_add(win);
1338    elm_win_resize_object_add(win, bg);
1339    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1340    evas_object_show(bg);
1341
1342 =======
1343    Evas_Object *win, *gl, *bx, *bx2, *bt;
1344    static Testitem tit[3];
1345
1346    win = elm_win_util_standard_add("genlist5", "Genlist 5");
1347    elm_win_autodel_set(win, EINA_TRUE);
1348
1349 >>>>>>> remotes/origin/upstream
1350    bx = elm_box_add(win);
1351    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1352    elm_win_resize_object_add(win, bx);
1353    evas_object_show(bx);
1354
1355    gl = elm_genlist_add(win);
1356 <<<<<<< HEAD
1357    elm_genlist_always_select_mode_set(gl, 1);
1358 =======
1359    elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_ALWAYS);
1360 >>>>>>> remotes/origin/upstream
1361    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1362    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1363    evas_object_show(gl);
1364    itc5.item_style     = "double_label";
1365    itc5.func.text_get = gl5_text_get;
1366    itc5.func.content_get  = gl5_content_get;
1367    itc5.func.state_get = gl5_state_get;
1368 <<<<<<< HEAD
1369    itc5.func.del       = gl5_del;
1370 =======
1371    itc5.func.del       = NULL;
1372 >>>>>>> remotes/origin/upstream
1373
1374    tit[0].mode = 0;
1375    tit[0].item = elm_genlist_item_append(gl, &itc5,
1376                                          &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
1377                                          NULL/* func data */);
1378    tit[1].mode = 1;
1379    tit[1].item = elm_genlist_item_append(gl, &itc5,
1380                                          &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
1381                                          NULL/* func data */);
1382    tit[2].mode = 2;
1383    tit[2].item = elm_genlist_item_append(gl, &itc5,
1384                                          &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
1385                                          NULL/* func data */);
1386
1387    elm_box_pack_end(bx, gl);
1388    evas_object_show(bx);
1389
1390    evas_object_smart_callback_add(gl, "drag,start,up", item_drag_up, NULL);
1391    evas_object_smart_callback_add(gl, "drag,start,down", item_drag_down, NULL);
1392    evas_object_smart_callback_add(gl, "drag,start,left", item_drag_left, NULL);
1393    evas_object_smart_callback_add(gl, "drag,start,right", item_drag_right, NULL);
1394    evas_object_smart_callback_add(gl, "scroll,edge,top", scroll_top, NULL);
1395    evas_object_smart_callback_add(gl, "scroll,edge,bottom", scroll_bottom, NULL);
1396    evas_object_smart_callback_add(gl, "scroll,edge,left", scroll_left, NULL);
1397    evas_object_smart_callback_add(gl, "scroll,edge,right", scroll_right, NULL);
1398    evas_object_smart_callback_add(gl, "drag", item_drag, NULL);
1399    evas_object_smart_callback_add(gl, "drag,stop", item_drag_stop, NULL);
1400    evas_object_smart_callback_add(gl, "longpressed", item_longpress, NULL);
1401
1402    bx2 = elm_box_add(win);
1403    elm_box_horizontal_set(bx2, EINA_TRUE);
1404    elm_box_homogeneous_set(bx2, EINA_TRUE);
1405    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1406    evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1407
1408    bt = elm_button_add(win);
1409    elm_object_text_set(bt, "[1]");
1410    evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
1411    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1412    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1413    elm_box_pack_end(bx2, bt);
1414    evas_object_show(bt);
1415
1416    bt = elm_button_add(win);
1417    elm_object_text_set(bt, "[2]");
1418    evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
1419    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1420    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1421    elm_box_pack_end(bx2, bt);
1422    evas_object_show(bt);
1423
1424    bt = elm_button_add(win);
1425    elm_object_text_set(bt, "[3]");
1426    evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
1427    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1428    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1429    elm_box_pack_end(bx2, bt);
1430    evas_object_show(bt);
1431
1432    elm_box_pack_end(bx, bx2);
1433    evas_object_show(bx2);
1434
1435    evas_object_resize(win, 320, 320);
1436    evas_object_show(win);
1437 }
1438
1439 /*************/
1440
1441 static Elm_Genlist_Item_Class itc4;
1442
1443 static void
1444 gl4_sel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1445 {
1446 <<<<<<< HEAD
1447    Elm_Object_Item *it = (Elm_Object_Item *)event_info;
1448    int depth = 0;
1449
1450    depth = elm_genlist_item_expanded_depth_get(it);
1451    printf("expanded depth for selected item is %d\n", depth);
1452
1453 }
1454 static void
1455 gl4_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1456 {
1457    Elm_Object_Item *it = event_info;
1458    Evas_Object *gl = elm_genlist_item_genlist_get(it);
1459    int val = (int)(long)elm_genlist_item_data_get(it);
1460    val *= 10;
1461    elm_genlist_item_append(gl, &itc4,
1462                            (void *)(long)(val + 1)/* item data */, it/* parent */,
1463                            ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1464                            NULL/* func data */);
1465    elm_genlist_item_append(gl, &itc4,
1466                            (void *)(long)(val + 2)/* item data */, it/* parent */,
1467                            ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1468                            NULL/* func data */);
1469    elm_genlist_item_append(gl, &itc4,
1470                            (void *)(long)(val + 3)/* item data */, it/* parent */,
1471                            ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1472 =======
1473    Elm_Object_Item *glit = event_info;
1474    int depth = elm_genlist_item_expanded_depth_get(glit);
1475    printf("expanded depth for selected item is %d\n", depth);
1476 }
1477
1478 static void
1479 gl4_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1480 {
1481    Elm_Object_Item *glit = event_info;
1482    Evas_Object *gl = elm_object_item_widget_get(glit);
1483    int val = (int)(long) elm_object_item_data_get(glit);
1484    val *= 10;
1485    elm_genlist_item_append(gl, &itc4,
1486                            (void *)(long) (val + 1)/* item data */,
1487                            glit/* parent */, ELM_GENLIST_ITEM_NONE,
1488                            gl4_sel/* func */,
1489                            NULL/* func data */);
1490    elm_genlist_item_append(gl, &itc4,
1491                            (void *)(long) (val + 2)/* item data */,
1492                            glit/* parent */, ELM_GENLIST_ITEM_NONE,
1493                            gl4_sel/* func */,
1494                            NULL/* func data */);
1495    elm_genlist_item_append(gl, &itc4,
1496                            (void *)(long) (val + 3)/* item data */,
1497                            glit/* parent */,
1498                            ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
1499 >>>>>>> remotes/origin/upstream
1500                            NULL/* func data */);
1501 }
1502 static void
1503 gl4_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1504 {
1505 <<<<<<< HEAD
1506    Elm_Object_Item *it = event_info;
1507    elm_genlist_item_subitems_clear(it);
1508 =======
1509    Elm_Object_Item *glit = event_info;
1510    elm_genlist_item_subitems_clear(glit);
1511 >>>>>>> remotes/origin/upstream
1512 }
1513
1514 static void
1515 gl4_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1516 {
1517 <<<<<<< HEAD
1518    Elm_Object_Item *it = event_info;
1519    elm_genlist_item_expanded_set(it, 1);
1520 }
1521 static void
1522 gl4_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1523 {
1524    Elm_Object_Item *it = event_info;
1525    elm_genlist_item_expanded_set(it, 0);
1526 =======
1527    Elm_Object_Item *glit = event_info;
1528    elm_genlist_item_expanded_set(glit, EINA_TRUE);
1529 }
1530
1531 static void
1532 gl4_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1533 {
1534    Elm_Object_Item *glit = event_info;
1535    elm_genlist_item_expanded_set(glit, EINA_FALSE);
1536 >>>>>>> remotes/origin/upstream
1537 }
1538
1539 char *gl4_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1540 {
1541    char buf[256];
1542    snprintf(buf, sizeof(buf), "Item mode %i", (int)(long)data);
1543    return strdup(buf);
1544 }
1545 <<<<<<< HEAD
1546 =======
1547
1548 >>>>>>> remotes/origin/upstream
1549 Evas_Object *gl4_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
1550 {
1551    char buf[PATH_MAX];
1552    if (!strcmp(part, "elm.swallow.icon"))
1553      {
1554         Evas_Object *ic = elm_icon_add(obj);
1555         snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
1556         elm_icon_file_set(ic, buf, NULL);
1557         evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
1558         evas_object_show(ic);
1559         return ic;
1560      }
1561    else if (!strcmp(part, "elm.swallow.end"))
1562      {
1563         Evas_Object *ck;
1564         ck = elm_check_add(obj);
1565         evas_object_propagate_events_set(ck, EINA_FALSE);
1566         evas_object_show(ck);
1567         return ck;
1568      }
1569    return NULL;
1570 }
1571 <<<<<<< HEAD
1572 =======
1573
1574 >>>>>>> remotes/origin/upstream
1575 Eina_Bool gl4_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1576 {
1577    return EINA_FALSE;
1578 }
1579 <<<<<<< HEAD
1580 void gl4_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
1581 {
1582 =======
1583
1584 void gl4_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
1585 {
1586    printf("item deleted.\n");
1587 >>>>>>> remotes/origin/upstream
1588 }
1589
1590 void
1591 test_genlist6(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1592 {
1593 <<<<<<< HEAD
1594    Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
1595
1596    win = elm_win_add(NULL, "genlist-tree", ELM_WIN_BASIC);
1597    elm_win_title_set(win, "Genlist Tree");
1598    elm_win_autodel_set(win, EINA_TRUE);
1599
1600    bg = elm_bg_add(win);
1601    elm_win_resize_object_add(win, bg);
1602    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1603    evas_object_show(bg);
1604
1605 =======
1606    Evas_Object *win, *gl, *bx, *bx2, *bt;
1607
1608    win = elm_win_util_standard_add("genlist-tree", "Genlist Tree");
1609    elm_win_autodel_set(win, EINA_TRUE);
1610
1611 >>>>>>> remotes/origin/upstream
1612    bx = elm_box_add(win);
1613    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1614    elm_win_resize_object_add(win, bx);
1615    evas_object_show(bx);
1616
1617    gl = elm_genlist_add(win);
1618    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1619    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1620    evas_object_show(gl);
1621
1622    itc4.item_style     = "default";
1623    itc4.func.text_get = gl4_text_get;
1624    itc4.func.content_get  = gl4_content_get;
1625    itc4.func.state_get = gl4_state_get;
1626    itc4.func.del       = gl4_del;
1627
1628    elm_genlist_item_append(gl, &itc4,
1629 <<<<<<< HEAD
1630                            (void *)1/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1631                            NULL/* func data */);
1632    elm_genlist_item_append(gl, &itc4,
1633                            (void *)2/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1634 =======
1635                            (void *)1/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
1636                            NULL/* func data */);
1637    elm_genlist_item_append(gl, &itc4,
1638                            (void *)2/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
1639 >>>>>>> remotes/origin/upstream
1640                            NULL/* func data */);
1641    elm_genlist_item_append(gl, &itc4,
1642                            (void *)3/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1643                            NULL/* func data */);
1644
1645    evas_object_smart_callback_add(gl, "expand,request", gl4_exp_req, gl);
1646    evas_object_smart_callback_add(gl, "contract,request", gl4_con_req, gl);
1647    evas_object_smart_callback_add(gl, "expanded", gl4_exp, gl);
1648    evas_object_smart_callback_add(gl, "contracted", gl4_con, gl);
1649
1650    elm_box_pack_end(bx, gl);
1651    evas_object_show(bx);
1652
1653    bx2 = elm_box_add(win);
1654    elm_box_horizontal_set(bx2, EINA_TRUE);
1655    elm_box_homogeneous_set(bx2, EINA_TRUE);
1656    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1657    evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1658
1659    bt = elm_button_add(win);
1660    elm_object_text_set(bt, "[1]");
1661    //   evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
1662    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1663    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1664    elm_box_pack_end(bx2, bt);
1665    evas_object_show(bt);
1666
1667    bt = elm_button_add(win);
1668    elm_object_text_set(bt, "[2]");
1669    //   evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
1670    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1671    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1672    elm_box_pack_end(bx2, bt);
1673    evas_object_show(bt);
1674
1675    bt = elm_button_add(win);
1676    elm_object_text_set(bt, "[3]");
1677    //   evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
1678    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1679    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1680    elm_box_pack_end(bx2, bt);
1681    evas_object_show(bt);
1682
1683    elm_box_pack_end(bx, bx2);
1684    evas_object_show(bx2);
1685
1686    evas_object_resize(win, 320, 320);
1687    evas_object_show(win);
1688 }
1689
1690 /*************/
1691
1692 struct genlist7_data
1693 {
1694 <<<<<<< HEAD
1695    Evas_Object *win, *pager;
1696 };
1697
1698 static Elm_Genlist_Item_Class itc7;
1699 =======
1700    Evas_Object *win, *naviframe;
1701 };
1702
1703 static Elm_Genlist_Item_Class itc7;
1704
1705 >>>>>>> remotes/origin/upstream
1706 static void
1707 gl_sel7(void *data, Evas_Object *obj, void *event_info)
1708 {
1709    if (!event_info) return;
1710    elm_genlist_item_item_class_update(event_info, &itc7);
1711    printf("sel item data [%p] on genlist obj [%p], item pointer [%p], new item style [%s] \n", data, obj, event_info, itc7.item_style);
1712 }
1713
1714 static void
1715 test_genlist7_back_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1716 {
1717    struct genlist7_data *info = data;
1718    if (!info) return;
1719
1720 <<<<<<< HEAD
1721    elm_pager_content_pop(info->pager);
1722 =======
1723    elm_naviframe_item_pop(info->naviframe);
1724 >>>>>>> remotes/origin/upstream
1725 }
1726
1727 static void
1728 test_genlist7_swipe(void *data, Evas_Object *obj __UNUSED__, void *event_info)
1729 {
1730    struct genlist7_data *info = data;
1731    Evas_Object *box, *entry, *button;
1732    char item_data[] = "Just a simple test";
1733
1734    if ((!event_info) || (!data)) return;
1735
1736    box = elm_box_add(info->win);
1737    elm_box_homogeneous_set(box, EINA_FALSE);
1738    evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1739    evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
1740    evas_object_show(box);
1741
1742    entry = elm_entry_add(info->win);
1743    elm_entry_scrollable_set(entry, EINA_TRUE);
1744    elm_entry_editable_set(entry, EINA_FALSE);
1745 <<<<<<< HEAD
1746    elm_entry_entry_set(entry, item_data);
1747 =======
1748    elm_object_text_set(entry, item_data);
1749 >>>>>>> remotes/origin/upstream
1750    evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1751    evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
1752    evas_object_show(entry);
1753
1754    button = elm_button_add(info->win);
1755    elm_object_text_set(button, "back");
1756    evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, 0);
1757    evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0);
1758    evas_object_smart_callback_add(button, "clicked", test_genlist7_back_cb,
1759                                   info);
1760    evas_object_show(button);
1761
1762    elm_box_pack_start(box, entry);
1763    elm_box_pack_end(box, button);
1764
1765 <<<<<<< HEAD
1766    elm_pager_content_push(info->pager, box);
1767 =======
1768    elm_naviframe_item_simple_push(info->naviframe, box);
1769 >>>>>>> remotes/origin/upstream
1770 }
1771
1772 void
1773 test_genlist7(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1774 {
1775 <<<<<<< HEAD
1776    Evas_Object *win, *bg, *gl, *pager;
1777    static struct genlist7_data info;
1778    static Testitem tit[3];
1779
1780    win = elm_win_add(NULL, "genlist7", ELM_WIN_BASIC);
1781    elm_win_title_set(win, "Genlist 7");
1782    elm_win_autodel_set(win, EINA_TRUE);
1783    info.win = win;
1784
1785    bg = elm_bg_add(win);
1786    elm_win_resize_object_add(win, bg);
1787    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1788    evas_object_show(bg);
1789
1790    pager = elm_pager_add(win);
1791    elm_win_resize_object_add(win, pager);
1792    evas_object_size_hint_weight_set(pager, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1793    evas_object_size_hint_align_set(pager, EVAS_HINT_FILL, EVAS_HINT_FILL);
1794    evas_object_show(pager);
1795    info.pager = pager;
1796 =======
1797    Evas_Object *win, *gl, *naviframe;
1798    static struct genlist7_data info;
1799    static Testitem tit[3];
1800
1801    win = elm_win_util_standard_add("genlist7", "Genlist 7");
1802    elm_win_autodel_set(win, EINA_TRUE);
1803    info.win = win;
1804
1805    naviframe = elm_naviframe_add(win);
1806    elm_win_resize_object_add(win, naviframe);
1807    evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1808    evas_object_size_hint_align_set(naviframe, EVAS_HINT_FILL, EVAS_HINT_FILL);
1809    evas_object_show(naviframe);
1810    info.naviframe = naviframe;
1811 >>>>>>> remotes/origin/upstream
1812
1813    gl = elm_genlist_add(win);
1814    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1815    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1816    evas_object_smart_callback_add(gl, "swipe", test_genlist7_swipe, &info);
1817    evas_object_show(gl);
1818 <<<<<<< HEAD
1819    elm_pager_content_push(pager, gl);
1820 =======
1821    elm_naviframe_item_simple_push(naviframe, gl);
1822 >>>>>>> remotes/origin/upstream
1823
1824    itc2.item_style     = "default";
1825    itc2.func.text_get = gl2_text_get;
1826    itc2.func.content_get  = gl2_content_get;
1827    itc2.func.state_get = gl2_state_get;
1828 <<<<<<< HEAD
1829    itc2.func.del       = gl2_del;
1830 =======
1831    itc2.func.del       = NULL;
1832 >>>>>>> remotes/origin/upstream
1833
1834    itc7.item_style     = "double_label";
1835    itc7.func.text_get = gl5_text_get;
1836    itc7.func.content_get  = gl5_content_get;
1837    itc7.func.state_get = gl5_state_get;
1838 <<<<<<< HEAD
1839    itc7.func.del       = gl5_del;
1840 =======
1841    itc7.func.del       = NULL;
1842 >>>>>>> remotes/origin/upstream
1843
1844    tit[0].mode = 0;
1845    tit[0].item = elm_genlist_item_append(gl, &itc2,
1846                                          &(tit[0])/* item data */, NULL/* parent */,
1847                                          ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1848                                          NULL/* func data */);
1849    tit[1].mode = 1;
1850    tit[1].item = elm_genlist_item_append(gl, &itc2,
1851                                          &(tit[1])/* item data */, NULL/* parent */,
1852                                          ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1853                                          NULL/* func data */);
1854    tit[2].mode = 2;
1855    tit[2].item = elm_genlist_item_append(gl, &itc2,
1856                                          &(tit[2])/* item data */, NULL/* parent */,
1857                                          ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1858                                          NULL/* func data */);
1859
1860    evas_object_resize(win, 320, 320);
1861    evas_object_show(win);
1862 }
1863
1864 /*************/
1865
1866 static Elm_Genlist_Item_Class itc_group;
1867 <<<<<<< HEAD
1868 =======
1869
1870 >>>>>>> remotes/origin/upstream
1871 char *gl8_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1872 {
1873    char buf[256];
1874    snprintf(buf, sizeof(buf), "Group Index # %i (Item # %i)",  (int)((long)data / 10), (int)(long)data);
1875    return strdup(buf);
1876 }
1877
1878 static void
1879 _bt_show_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1880 {
1881 <<<<<<< HEAD
1882    elm_genlist_item_top_show(data);
1883    //elm_genlist_item_show(data);
1884    //elm_genlist_item_middle_show(data);
1885 }
1886 static void
1887 _bt_bring_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1888 {
1889    elm_genlist_item_top_bring_in(data);
1890 =======
1891    elm_genlist_item_show(data, ELM_GENLIST_ITEM_SCROLLTO_TOP);
1892    //elm_genlist_item_show(data);
1893    //elm_genlist_item_middle_show(data);
1894 }
1895
1896 static void
1897 _bt_bring_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1898 {
1899    elm_genlist_item_bring_in(data, ELM_GENLIST_ITEM_SCROLLTO_TOP);
1900 >>>>>>> remotes/origin/upstream
1901    //elm_genlist_item_bring_in(data);
1902    //elm_genlist_item_middle_bring_in(data);
1903 }
1904
1905 void
1906 test_genlist8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1907 {
1908 <<<<<<< HEAD
1909    Evas_Object *win, *bg, *gl, *bt[8], *bx, *bx2, *bx3;
1910    Elm_Object_Item *gli = NULL, *git = NULL;
1911    int i, bt_num;
1912
1913    win = elm_win_add(NULL, "genlist-group", ELM_WIN_BASIC);
1914    elm_win_title_set(win, "Genlist Group");
1915    elm_win_autodel_set(win, EINA_TRUE);
1916
1917    bg = elm_bg_add(win);
1918    elm_win_resize_object_add(win, bg);
1919    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1920    evas_object_show(bg);
1921
1922 =======
1923    Evas_Object *win, *gl, *bt[8], *bx, *bx2, *bx3;
1924    Elm_Object_Item *gli = NULL, *git = NULL;
1925    int i, bt_num;
1926
1927    win = elm_win_util_standard_add("genlist-group", "Genlist Group");
1928    elm_win_autodel_set(win, EINA_TRUE);
1929
1930 >>>>>>> remotes/origin/upstream
1931    bx = elm_box_add(win);
1932    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1933    elm_win_resize_object_add(win, bx);
1934    evas_object_show(bx);
1935
1936    gl = elm_genlist_add(win);
1937    evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
1938    evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
1939    evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
1940    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1941    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1942    elm_box_pack_end(bx, gl);
1943    evas_object_show(gl);
1944
1945 <<<<<<< HEAD
1946    itc1.item_style     = "default";
1947    itc1.func.text_get = gl_text_get;
1948    itc1.func.content_get  = gl_content_get;
1949    itc1.func.state_get = gl_state_get;
1950    itc1.func.del       = gl_del;
1951 =======
1952    itc1 = elm_genlist_item_class_new();
1953    itc1->item_style     = "default";
1954    itc1->func.text_get = gl_text_get;
1955    itc1->func.content_get  = gl_content_get;
1956    itc1->func.state_get = gl_state_get;
1957    itc1->func.del       = NULL;
1958 >>>>>>> remotes/origin/upstream
1959
1960    itc_group.item_style     = "group_index";
1961    itc_group.func.text_get = gl8_text_get;
1962    itc_group.func.content_get  = NULL;
1963    itc_group.func.state_get = NULL;
1964 <<<<<<< HEAD
1965    itc_group.func.del       = gl_del;
1966 =======
1967    itc_group.func.del       = NULL;
1968 >>>>>>> remotes/origin/upstream
1969
1970    bx2 = elm_box_add(win);
1971    elm_box_horizontal_set(bx2, EINA_TRUE);
1972    elm_box_homogeneous_set(bx2, EINA_TRUE);
1973    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1974    evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1975
1976    bt_num = 0;
1977    bt[bt_num] = elm_button_add(win);
1978    elm_object_text_set(bt[bt_num], "Show 0");
1979    evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1980    evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1981    evas_object_show(bt[bt_num]);
1982    elm_box_pack_end(bx2, bt[bt_num]);
1983
1984    bt[++bt_num] = elm_button_add(win);
1985    elm_object_text_set(bt[bt_num], "Show 26");
1986    evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1987    evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1988    evas_object_show(bt[bt_num]);
1989    elm_box_pack_end(bx2, bt[bt_num]);
1990
1991    bt[++bt_num] = elm_button_add(win);
1992    elm_object_text_set(bt[bt_num], "Show 101");
1993    evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1994    evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1995    evas_object_show(bt[bt_num]);
1996    elm_box_pack_end(bx2, bt[bt_num]);
1997
1998    bt[++bt_num] = elm_button_add(win);
1999    elm_object_text_set(bt[bt_num], "Show 480");
2000    evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
2001    evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
2002    evas_object_show(bt[bt_num]);
2003    elm_box_pack_end(bx2, bt[bt_num]);
2004
2005    elm_box_pack_end(bx, bx2);
2006    evas_object_show(bx2);
2007
2008    bx3 = elm_box_add(win);
2009    elm_box_horizontal_set(bx3, EINA_TRUE);
2010    elm_box_homogeneous_set(bx3, EINA_TRUE);
2011    evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
2012    evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
2013
2014    bt[++bt_num] = elm_button_add(win);
2015    elm_object_text_set(bt[bt_num], "Bring top 0");
2016    evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
2017    evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
2018    evas_object_show(bt[bt_num]);
2019    elm_box_pack_end(bx3, bt[bt_num]);
2020
2021    bt[++bt_num] = elm_button_add(win);
2022    elm_object_text_set(bt[bt_num], "Bring top 31");
2023    evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
2024    evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
2025    evas_object_show(bt[bt_num]);
2026    elm_box_pack_end(bx3, bt[bt_num]);
2027
2028    bt[++bt_num] = elm_button_add(win);
2029    elm_object_text_set(bt[bt_num], "Bring top 239");
2030    evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
2031    evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
2032    evas_object_show(bt[bt_num]);
2033    elm_box_pack_end(bx3, bt[bt_num]);
2034
2035    bt[++bt_num] = elm_button_add(win);
2036    elm_object_text_set(bt[bt_num], "Bring top 477");
2037    evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
2038    evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
2039    evas_object_show(bt[bt_num]);
2040    elm_box_pack_end(bx3, bt[bt_num]);
2041
2042    elm_box_pack_end(bx, bx3);
2043    evas_object_show(bx3);
2044
2045    for (i = 0; i < 500; i++)
2046      {
2047         if (!(i % 10))
2048           {
2049              gli = git = elm_genlist_item_append(gl, &itc_group,
2050                                                  (void *)(long)i/* item data */,
2051                                                  NULL/* parent */,
2052                                                  ELM_GENLIST_ITEM_GROUP,
2053                                                  gl_sel/* func */,
2054                                                  (void *)(long)(i * 10)/* func data */);
2055 <<<<<<< HEAD
2056              elm_genlist_item_display_only_set(git, EINA_TRUE);
2057           }
2058         else if (git)
2059           {
2060              gli = elm_genlist_item_append(gl, &itc1,
2061 =======
2062              elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
2063           }
2064         else if (git)
2065           {
2066              gli = elm_genlist_item_append(gl, itc1,
2067 >>>>>>> remotes/origin/upstream
2068                                            (void *)(long)i/* item data */,
2069                                            git/* parent */,
2070                                            ELM_GENLIST_ITEM_NONE,
2071                                            gl_sel/* func */,
2072                                            (void *)(long)(i * 10)/* func data */);
2073           }
2074         switch (i)
2075           {
2076            case 0:
2077               evas_object_smart_callback_add(bt[0], "clicked", _bt_show_cb, gli);
2078               evas_object_smart_callback_add(bt[4], "clicked", _bt_bring_cb, gli);
2079               break;
2080            case 26:
2081               evas_object_smart_callback_add(bt[1], "clicked", _bt_show_cb, gli);
2082               break;
2083            case 31:
2084               evas_object_smart_callback_add(bt[5], "clicked", _bt_bring_cb, gli);
2085               break;
2086            case 101:
2087               evas_object_smart_callback_add(bt[2], "clicked", _bt_show_cb, gli);
2088               break;
2089            case 239:
2090               evas_object_smart_callback_add(bt[6], "clicked", _bt_bring_cb, gli);
2091               break;
2092            case 477:
2093               evas_object_smart_callback_add(bt[7], "clicked", _bt_bring_cb, gli);
2094               break;
2095            case 480:
2096               evas_object_smart_callback_add(bt[3], "clicked", _bt_show_cb, gli);
2097               break;
2098           }
2099      }
2100 <<<<<<< HEAD
2101 =======
2102    elm_genlist_item_class_free(itc1);
2103 >>>>>>> remotes/origin/upstream
2104
2105    evas_object_resize(win, 480, 800);
2106    evas_object_show(win);
2107 }
2108
2109 /*************/
2110
2111 static void
2112 gl9_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
2113 {
2114 <<<<<<< HEAD
2115    Elm_Object_Item *it = event_info;
2116    Evas_Object *gl = elm_genlist_item_genlist_get(it);
2117    int val = (int)(long)elm_genlist_item_data_get(it);
2118    val *= 10;
2119    elm_genlist_item_append(gl, &itc1,
2120                            (void *)(long)(val + 1)/* item data */, it/* parent */,
2121                            ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
2122                            NULL/* func data */);
2123    elm_genlist_item_append(gl, &itc1,
2124                            (void *)(long)(val + 2)/* item data */, it/* parent */,
2125                            ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
2126                            NULL/* func data */);
2127    elm_genlist_item_append(gl, &itc1,
2128                            (void *)(long)(val + 3)/* item data */, it/* parent */,
2129                            ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
2130                            NULL/* func data */);
2131 }
2132 static void
2133 gl9_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
2134 {
2135    Elm_Object_Item *it = event_info;
2136    elm_genlist_item_subitems_clear(it);
2137 =======
2138    Elm_Object_Item *glit = event_info;
2139    Evas_Object *gl = elm_object_item_widget_get(glit);
2140    int val = (int)(long) elm_object_item_data_get(glit);
2141    val *= 10;
2142    elm_genlist_item_append(gl, itc1,
2143                            (void *)(long) (val + 1)/* item data */,
2144                            glit/* parent */,
2145                            ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
2146                            NULL/* func data */);
2147    elm_genlist_item_append(gl, itc1,
2148                            (void *)(long) (val + 2)/* item data */,
2149                            glit/* parent */,
2150                            ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
2151                            NULL/* func data */);
2152    elm_genlist_item_append(gl, itc1,
2153                            (void *)(long) (val + 3)/* item data */,
2154                            glit/* parent */,
2155                            ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
2156                            NULL/* func data */);
2157 }
2158
2159 static void
2160 gl9_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
2161 {
2162    Elm_Object_Item *glit = event_info;
2163    elm_genlist_item_subitems_clear(glit);
2164 >>>>>>> remotes/origin/upstream
2165 }
2166
2167 static void
2168 gl9_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
2169 {
2170 <<<<<<< HEAD
2171    Elm_Object_Item *it = event_info;
2172    elm_genlist_item_expanded_set(it, EINA_TRUE);
2173 }
2174 static void
2175 gl9_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
2176 {
2177    Elm_Object_Item *it = event_info;
2178    elm_genlist_item_expanded_set(it, EINA_FALSE);
2179 =======
2180    Elm_Object_Item *glit = event_info;
2181    elm_genlist_item_expanded_set(glit, EINA_TRUE);
2182 }
2183
2184 static void
2185 gl9_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
2186 {
2187    Elm_Object_Item *glit = event_info;
2188    elm_genlist_item_expanded_set(glit, EINA_FALSE);
2189 >>>>>>> remotes/origin/upstream
2190 }
2191
2192 void
2193 test_genlist9(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2194 {
2195 <<<<<<< HEAD
2196    Evas_Object *win, *bg, *gl, *bx;
2197    Elm_Object_Item *git;
2198
2199    win = elm_win_add(NULL, "genlist-group-tree", ELM_WIN_BASIC);
2200    elm_win_title_set(win, "Genlist Group Tree");
2201    elm_win_autodel_set(win, EINA_TRUE);
2202
2203    bg = elm_bg_add(win);
2204    elm_win_resize_object_add(win, bg);
2205    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2206    evas_object_show(bg);
2207
2208 =======
2209    Evas_Object *win, *gl, *bx;
2210    Elm_Object_Item *git;
2211
2212    win = elm_win_util_standard_add("genlist-group-tree", "Genlist Group Tree");
2213    elm_win_autodel_set(win, EINA_TRUE);
2214
2215 >>>>>>> remotes/origin/upstream
2216    bx = elm_box_add(win);
2217    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2218    elm_win_resize_object_add(win, bx);
2219    evas_object_show(bx);
2220
2221    gl = elm_genlist_add(win);
2222    evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
2223    evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
2224    evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
2225    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2226    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
2227    elm_box_pack_end(bx, gl);
2228    evas_object_show(gl);
2229
2230 <<<<<<< HEAD
2231    itc1.item_style     = "default";
2232    itc1.func.text_get = gl_text_get;
2233    itc1.func.content_get  = gl_content_get;
2234    itc1.func.state_get = gl_state_get;
2235    itc1.func.del       = gl_del;
2236 =======
2237    itc1 = elm_genlist_item_class_new();
2238    itc1->item_style     = "default";
2239    itc1->func.text_get = gl_text_get;
2240    itc1->func.content_get  = gl_content_get;
2241    itc1->func.state_get = gl_state_get;
2242    itc1->func.del       = NULL;
2243 >>>>>>> remotes/origin/upstream
2244
2245    itc_group.item_style     = "group_index";
2246    itc_group.func.text_get = gl8_text_get;
2247    itc_group.func.content_get  = NULL;
2248    itc_group.func.state_get = NULL;
2249 <<<<<<< HEAD
2250    itc_group.func.del       = gl_del;
2251 =======
2252    itc_group.func.del       = NULL;
2253 >>>>>>> remotes/origin/upstream
2254
2255    git = elm_genlist_item_append(gl, &itc_group,
2256                                  (void *)0/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_GROUP, gl4_sel/* func */,
2257                                  NULL/* func data */);
2258 <<<<<<< HEAD
2259    elm_genlist_item_display_only_set(git, EINA_TRUE);
2260    elm_genlist_item_append(gl, &itc1,
2261                            (void *)1/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
2262                            NULL/* func data */);
2263    elm_genlist_item_append(gl, &itc1,
2264                            (void *)2/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
2265                            NULL/* func data */);
2266    elm_genlist_item_append(gl, &itc1,
2267                            (void *)3/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
2268 =======
2269    elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
2270
2271    elm_genlist_item_append(gl, itc1,
2272                            (void *)1/* item data */, git/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
2273                            NULL/* func data */);
2274    elm_genlist_item_append(gl, itc1,
2275                            (void *)2/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
2276                            NULL/* func data */);
2277    elm_genlist_item_append(gl, itc1,
2278                            (void *)3/* item data */, git/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
2279 >>>>>>> remotes/origin/upstream
2280                            NULL/* func data */);
2281    git = elm_genlist_item_append(gl, &itc_group,
2282                                  (void *)4/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_GROUP, gl4_sel/* func */,
2283                                  NULL/* func data */);
2284 <<<<<<< HEAD
2285    elm_genlist_item_display_only_set(git, EINA_TRUE);
2286    elm_genlist_item_append(gl, &itc1,
2287                            (void *)5/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
2288                            NULL/* func data */);
2289    elm_genlist_item_append(gl, &itc1,
2290                            (void *)6/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
2291                            NULL/* func data */);
2292    elm_genlist_item_append(gl, &itc1,
2293                            (void *)7/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
2294                            NULL/* func data */);
2295 =======
2296    elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
2297
2298    elm_genlist_item_append(gl, itc1,
2299                            (void *)5/* item data */, git/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
2300                            NULL/* func data */);
2301    elm_genlist_item_append(gl, itc1,
2302                            (void *)6/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
2303                            NULL/* func data */);
2304    elm_genlist_item_append(gl, itc1,
2305                            (void *)7/* item data */, git/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
2306                            NULL/* func data */);
2307    elm_genlist_item_class_free(itc1);
2308 >>>>>>> remotes/origin/upstream
2309
2310    evas_object_smart_callback_add(gl, "expand,request", gl9_exp_req, gl);
2311    evas_object_smart_callback_add(gl, "contract,request", gl9_con_req, gl);
2312    evas_object_smart_callback_add(gl, "expanded", gl9_exp, gl);
2313    evas_object_smart_callback_add(gl, "contracted", gl9_con, gl);
2314
2315    evas_object_resize(win, 480, 800);
2316    evas_object_show(win);
2317 }
2318
2319 /*************/
2320
2321 static Elm_Genlist_Item_Class itc10;
2322 static char *mode_type[] = { "slide", "rotate" };
2323 <<<<<<< HEAD
2324 =======
2325
2326 >>>>>>> remotes/origin/upstream
2327 char *gl10_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
2328 {
2329    char buf[256];
2330    if (!strcmp(part, "elm.text.mode"))
2331      snprintf(buf, sizeof(buf), "Mode # %i", (int)(long)data);
2332    else
2333      snprintf(buf, sizeof(buf), "Item # %i", (int)(long)data);
2334    return strdup(buf);
2335 }
2336
2337 Evas_Object *gl10_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
2338 {
2339    char buf[PATH_MAX];
2340    Evas_Object *ic = elm_icon_add(obj);
2341    if (!strcmp(part, "elm.swallow.end"))
2342      snprintf(buf, sizeof(buf), "%s/images/bubble.png", elm_app_data_dir_get());
2343    else
2344      snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
2345    elm_icon_file_set(ic, buf, NULL);
2346    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
2347    return ic;
2348 }
2349 <<<<<<< HEAD
2350 =======
2351
2352 >>>>>>> remotes/origin/upstream
2353 static void
2354 _gl_sel10(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2355 {
2356    if (!data) return;
2357    int v = elm_radio_value_get(data);
2358    if (v == 1)
2359 <<<<<<< HEAD
2360      elm_genlist_item_mode_set(event_info, mode_type[v], EINA_TRUE);
2361 =======
2362      elm_genlist_item_decorate_mode_set(event_info, mode_type[v], EINA_TRUE);
2363 >>>>>>> remotes/origin/upstream
2364 }
2365
2366 static void
2367 _my_gl_mode_right(void *data, Evas_Object *obj __UNUSED__, void *event_info)
2368 {
2369    if (!data) return;
2370    int v = elm_radio_value_get(data);
2371    if (v == 0)
2372 <<<<<<< HEAD
2373      elm_genlist_item_mode_set(event_info, mode_type[v], EINA_TRUE);
2374 =======
2375      elm_genlist_item_decorate_mode_set(event_info, mode_type[v], EINA_TRUE);
2376 >>>>>>> remotes/origin/upstream
2377 }
2378
2379 static void
2380 _my_gl_mode_left(void *data, Evas_Object *obj __UNUSED__, void *event_info)
2381 {
2382    if (!data) return;
2383    int v = elm_radio_value_get(data);
2384    if (v == 0)
2385 <<<<<<< HEAD
2386      elm_genlist_item_mode_set(event_info, mode_type[v], EINA_FALSE);
2387 =======
2388      elm_genlist_item_decorate_mode_set(event_info, mode_type[v], EINA_FALSE);
2389 >>>>>>> remotes/origin/upstream
2390 }
2391
2392 static void
2393 _my_gl_mode_cancel(void *data, Evas_Object *obj, void *event_info __UNUSED__)
2394 {
2395    fprintf(stderr, "drag\n");
2396    if (!data) return;
2397    int v = elm_radio_value_get(data);
2398 <<<<<<< HEAD
2399    Elm_Object_Item *it = (Elm_Object_Item *)elm_genlist_mode_item_get(obj);
2400    if (it)
2401      elm_genlist_item_mode_set(it, mode_type[v], EINA_FALSE);
2402 =======
2403    Elm_Object_Item *glit = (Elm_Object_Item *) elm_genlist_decorated_item_get(obj);
2404    if (glit) elm_genlist_item_decorate_mode_set(glit, mode_type[v], EINA_FALSE);
2405 >>>>>>> remotes/origin/upstream
2406 }
2407
2408 void
2409 test_genlist10(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2410 {
2411 <<<<<<< HEAD
2412    Evas_Object *win, *bg, *fr, *lb, *bx, *bx2, *bx3, *rd, *rdg, *gl;
2413    int i;
2414
2415    win = elm_win_add(NULL, "genlist10", ELM_WIN_BASIC);
2416    elm_win_title_set(win, "Genlist Mode");
2417    elm_win_autodel_set(win, EINA_TRUE);
2418
2419    bg = elm_bg_add(win);
2420    elm_win_resize_object_add(win, bg);
2421    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2422    evas_object_show(bg);
2423
2424 =======
2425    Evas_Object *win, *fr, *lb, *bx, *bx2, *bx3, *rd, *rdg, *gl;
2426    int i;
2427
2428    win = elm_win_util_standard_add("genlist10", "Genlist Mode");
2429    elm_win_autodel_set(win, EINA_TRUE);
2430
2431 >>>>>>> remotes/origin/upstream
2432    bx = elm_box_add(win);
2433    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2434    elm_win_resize_object_add(win, bx);
2435    evas_object_show(bx);
2436
2437    fr = elm_frame_add(win);
2438    elm_object_text_set(fr, "Mode Type");
2439    elm_box_pack_end(bx, fr);
2440    evas_object_show(fr);
2441
2442    bx2 = elm_box_add(win);
2443    elm_object_content_set(fr, bx2);
2444    evas_object_show(bx2);
2445
2446    lb = elm_label_add(win);
2447    elm_object_text_set(lb,
2448 <<<<<<< HEAD
2449                        "Sweep genlist items to the right.<br>"
2450 =======
2451                        "Sweep genlist items to the right.<br/>"
2452 >>>>>>> remotes/origin/upstream
2453                        "Test this by changing Mode Type to Slide or Rotate.");
2454    elm_box_pack_end(bx2, lb);
2455    evas_object_show(lb);
2456
2457    bx3 = elm_box_add(win);
2458    elm_box_horizontal_set(bx3, EINA_TRUE);
2459    elm_box_pack_end(bx2, bx3);
2460    evas_object_show(bx3);
2461
2462    rd = elm_radio_add(win);
2463    evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2464    elm_radio_state_value_set(rd, 0);
2465    elm_object_text_set(rd, "Slide  ");
2466    evas_object_show(rd);
2467    elm_box_pack_end(bx3, rd);
2468    rdg = rd;
2469
2470    rd = elm_radio_add(win);
2471    evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2472    elm_radio_state_value_set(rd, 1);
2473    elm_object_text_set(rd, "Rotate");
2474    elm_radio_group_add(rd, rdg);
2475    evas_object_show(rd);
2476    elm_box_pack_end(bx3, rd);
2477
2478    gl = elm_genlist_add(win);
2479    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
2480    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2481    evas_object_smart_callback_add(gl, "drag,start,right", _my_gl_mode_right, rdg);
2482    evas_object_smart_callback_add(gl, "drag,start,left", _my_gl_mode_left, rdg);
2483    evas_object_smart_callback_add(gl, "drag,start,up", _my_gl_mode_cancel, rdg);
2484    evas_object_smart_callback_add(gl, "drag,start,down", _my_gl_mode_cancel, rdg);
2485    evas_object_show(gl);
2486
2487    itc10.item_style     = "default";
2488 <<<<<<< HEAD
2489    itc10.func.text_get = gl10_text_get;
2490    itc10.func.content_get  = gl10_content_get;
2491    itc10.func.state_get = gl_state_get;
2492    itc10.func.del       = gl_del;
2493    itc10.mode_item_style = "mode";
2494 =======
2495    itc10.mode_item_style = "mode";
2496    itc10.func.text_get = gl10_text_get;
2497    itc10.func.content_get  = gl10_content_get;
2498    itc10.func.state_get = gl_state_get;
2499    itc10.func.del       = NULL;
2500 >>>>>>> remotes/origin/upstream
2501
2502    for (i = 0; i < 50; i++)
2503      elm_genlist_item_append(gl,
2504                              &itc10,
2505 <<<<<<< HEAD
2506                              (void *)(1000 + i)/* item data */,
2507 =======
2508                              (void *)(long)(1000 + i)/* item data */,
2509 >>>>>>> remotes/origin/upstream
2510                              NULL/* parent */,
2511                              ELM_GENLIST_ITEM_NONE/* flags */,
2512                              _gl_sel10/* func */,
2513                              rdg/* func data */);
2514
2515    elm_box_pack_end(bx, gl);
2516
2517    evas_object_resize(win, 520, 520);
2518    evas_object_show(win);
2519 }
2520
2521 /*************/
2522
2523 static void
2524 _reorder_tg_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
2525 {
2526    elm_genlist_reorder_mode_set(data, elm_check_state_get(obj));
2527 }
2528
2529 /**
2530  * gl_moved is called after an item was reordered.
2531  * This is only called when reorder mode is enabled.
2532  *
2533  * @param data         :  the genlist object passed as data.
2534  * @param obj          :  the genlist object.
2535  * @param item         :  the moved item.
2536  *
2537  * If the move_after is true,
2538  *  the item(*item) had been moved after the given relative item(*rel_item) in list.
2539  * If the move_after is false,
2540  *  the item(*item) had been moved before the given relative item(*rel_item) in list.
2541  *
2542  */
2543 <<<<<<< HEAD
2544 static void gl_moved(Evas_Object *obj __UNUSED__, Elm_Object_Item *item __UNUSED__, Elm_Object_Item *rel_item __UNUSED__, Eina_Bool move_after __UNUSED__)
2545 =======
2546 static void gl_moved(Evas_Object *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Object_Item *item __UNUSED__)
2547 >>>>>>> remotes/origin/upstream
2548 {
2549    // if needed, add application logic.
2550 }
2551
2552 void
2553 test_genlist11(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2554 {
2555 <<<<<<< HEAD
2556    Evas_Object *win, *bg, *fr, *lb, *bx, *tg, *gl;
2557    int i;
2558
2559    win = elm_win_add(NULL, "genlist-reorder-mode", ELM_WIN_BASIC);
2560    elm_win_title_set(win, "Genlist Reorder Mode");
2561    elm_win_autodel_set(win, EINA_TRUE);
2562
2563    bg = elm_bg_add(win);
2564    elm_win_resize_object_add(win, bg);
2565    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2566    evas_object_show(bg);
2567
2568 =======
2569    Evas_Object *win, *fr, *lb, *bx, *tg, *gl;
2570    int i;
2571
2572    win = elm_win_util_standard_add("genlist-reorder-mode", "Genlist Reorder Mode");
2573    elm_win_autodel_set(win, EINA_TRUE);
2574
2575 >>>>>>> remotes/origin/upstream
2576    bx = elm_box_add(win);
2577    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2578    elm_win_resize_object_add(win, bx);
2579    evas_object_show(bx);
2580
2581    fr = elm_frame_add(win);
2582
2583    elm_object_text_set(fr, "Reorder Mode");
2584    elm_box_pack_end(bx, fr);
2585    evas_object_show(fr);
2586
2587    lb = elm_label_add(win);
2588    elm_object_text_set(lb,
2589 <<<<<<< HEAD
2590                        "Enable reorder mode if you want to move item.<br>"
2591 =======
2592                        "Enable reorder mode if you want to move item.<br/>"
2593 >>>>>>> remotes/origin/upstream
2594                        "Then long press and drag item.");
2595    elm_object_content_set(fr, lb);
2596    evas_object_show(lb);
2597
2598    gl = elm_genlist_add(win);
2599    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
2600    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2601    evas_object_show(gl);
2602
2603    tg = elm_check_add(win);
2604    elm_object_style_set(tg, "toggle");
2605    elm_object_text_set(tg, "Reorder Mode:");
2606 <<<<<<< HEAD
2607    elm_check_state_set(tg, elm_mirrored_get());
2608 =======
2609    elm_check_state_set(tg, elm_config_mirrored_get());
2610 >>>>>>> remotes/origin/upstream
2611    evas_object_smart_callback_add(tg, "changed", _reorder_tg_changed_cb, gl);
2612    elm_box_pack_end(bx, tg);
2613    evas_object_show(tg);
2614
2615 <<<<<<< HEAD
2616    itc1.item_style     = "default";
2617    itc1.func.text_get = gl_text_get;
2618    itc1.func.content_get  = gl_content_get;
2619    itc1.func.state_get = gl_state_get;
2620    itc1.func.del       = gl_del;
2621    itc1.func.moved     = gl_moved;
2622
2623    for (i = 0; i < 50; i++)
2624      elm_genlist_item_append(gl,
2625                              &itc1,
2626                              (void *)(1 + i)/* item data */,
2627 =======
2628    itc1 = elm_genlist_item_class_new();
2629    itc1->item_style     = "default";
2630    itc1->func.text_get = gl_text_get;
2631    itc1->func.content_get  = gl_content_get;
2632    itc1->func.state_get = gl_state_get;
2633    itc1->func.del       = NULL;
2634    evas_object_smart_callback_add(gl, "moved", (Evas_Smart_Cb)gl_moved, gl);
2635
2636    for (i = 0; i < 50; i++)
2637      elm_genlist_item_append(gl,
2638                              itc1,
2639                              (void *)(long)(1 + i)/* item data */,
2640 >>>>>>> remotes/origin/upstream
2641                              NULL/* parent */,
2642                              ELM_GENLIST_ITEM_NONE/* flags */,
2643                              NULL/* func */,
2644                              NULL/* func data */);
2645
2646 <<<<<<< HEAD
2647 =======
2648    elm_genlist_item_class_free(itc1);
2649
2650 >>>>>>> remotes/origin/upstream
2651    elm_box_pack_end(bx, gl);
2652
2653    evas_object_resize(win, 400, 500);
2654    evas_object_show(win);
2655 }
2656
2657 char *gl12_text_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
2658 {
2659    return strdup("Enlightenment is not just a window manager for Linux/X11 and others, but also a whole suite of libraries to help you create beautiful user interfaces with much less work than doing it the old fashioned way and fighting with traditional toolkits, not to mention a traditional window manager. It covers uses from small mobile devices like phones all the way to powerful multi-core desktops (which are the primary development environment).");
2660 }
2661
2662 void
2663 test_genlist12(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2664 {
2665 <<<<<<< HEAD
2666    Evas_Object *win, *bg, *bx, *gl;
2667    int i;
2668
2669    win = elm_win_add(NULL, "genlist-textblock", ELM_WIN_BASIC);
2670    elm_win_title_set(win, "Genlist Textblock");
2671    elm_win_autodel_set(win, EINA_TRUE);
2672
2673    bg = elm_bg_add(win);
2674    elm_win_resize_object_add(win, bg);
2675    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2676    evas_object_show(bg);
2677
2678 =======
2679    Evas_Object *win, *bx, *gl;
2680    int i;
2681
2682    win = elm_win_util_standard_add("genlist-textblock", "Genlist Textblock");
2683    elm_win_autodel_set(win, EINA_TRUE);
2684
2685 >>>>>>> remotes/origin/upstream
2686    bx = elm_box_add(win);
2687    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2688    elm_win_resize_object_add(win, bx);
2689    evas_object_show(bx);
2690
2691    gl = elm_genlist_add(win);
2692 <<<<<<< HEAD
2693    elm_genlist_height_for_width_mode_set(gl, EINA_TRUE);
2694 =======
2695    elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
2696 >>>>>>> remotes/origin/upstream
2697    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2698    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
2699    elm_box_pack_end(bx, gl);
2700    evas_object_show(gl);
2701
2702 <<<<<<< HEAD
2703    itc1.item_style     = "message";
2704    itc1.func.text_get = gl12_text_get;
2705    itc1.func.content_get  = gl_content_get;
2706    itc1.func.state_get = gl_state_get;
2707    itc1.func.del       = gl_del;
2708
2709    for (i = 0; i < 1000; i++)
2710      {
2711         elm_genlist_item_append(gl, &itc1,
2712 =======
2713    itc1->item_style     = "message";
2714    itc1->func.text_get = gl12_text_get;
2715    itc1->func.content_get  = gl_content_get;
2716    itc1->func.state_get = gl_state_get;
2717    itc1->func.del       = NULL;
2718
2719    for (i = 0; i < 1000; i++)
2720      {
2721         elm_genlist_item_append(gl, itc1,
2722 >>>>>>> remotes/origin/upstream
2723                                 (void *)(long)i/* item data */,
2724                                 NULL/* parent */,
2725                                 ELM_GENLIST_ITEM_NONE,
2726                                 gl_sel/* func */,
2727                                 (void *)(long)(i * 10)/* func data */);
2728      }
2729 <<<<<<< HEAD
2730 =======
2731    elm_genlist_item_class_free(itc1);
2732 >>>>>>> remotes/origin/upstream
2733
2734    evas_object_resize(win, 400, 500);
2735    evas_object_show(win);
2736 }
2737 <<<<<<< HEAD
2738 =======
2739
2740 static int
2741 gl13_cmp(const void *pa, const void *pb)
2742 {
2743    const Elm_Object_Item *ia = pa, *ib = pb;
2744    int a = (int)(long) elm_object_item_data_get(ia);
2745    int b = (int)(long) elm_object_item_data_get(ib);
2746    return a - b;
2747 }
2748
2749 void
2750 test_genlist13(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2751 {
2752    Elm_Object_Item *pi[6];
2753    Evas_Object *win, *bx, *gl; int i, base, idx[3] = {1, 10, 15};
2754
2755    win = elm_win_util_standard_add("genlist-tree-insert-sorted", "Genlist Tree, Insert Sorted");
2756    elm_win_autodel_set(win, EINA_TRUE);
2757
2758    bx = elm_box_add(win);
2759    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2760    elm_win_resize_object_add(win, bx);
2761    evas_object_show(bx);
2762
2763    gl = elm_genlist_add(win);
2764    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
2765    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2766    evas_object_show(gl);
2767
2768    itc4.item_style = "default";
2769    itc4.func.text_get = gl4_text_get;
2770    itc4.func.content_get = NULL;
2771    itc4.func.state_get = NULL;
2772    itc4.func.del = NULL;
2773
2774    /* mixed order to test insert sorted */
2775
2776    for (i = 0; i < 3; i++)
2777      {
2778         pi[i] = elm_genlist_item_sorted_insert
2779           (gl, &itc4, (void *)(long)idx[i]/* item data */, NULL/* parent */,
2780            ELM_GENLIST_ITEM_TREE, gl13_cmp/* cmp */,
2781            NULL/* func */, NULL/* func data */);
2782      }
2783
2784    for (i = 0, base = 100; i < 3; i++, base += 100)
2785      {
2786         int j;
2787         for (j = 0; j < 3; j++)
2788           {
2789              elm_genlist_item_sorted_insert
2790                (gl, &itc4, (void *)(long)(idx[j] + base)/* item data */,
2791                 pi[i]/* parent */, ELM_GENLIST_ITEM_NONE,
2792                 gl13_cmp/* cmp */, NULL/* func */, NULL/* func data */);
2793           }
2794      }
2795
2796    for (i = 0; i < 3; i++)
2797      {
2798         pi[i + 3] = elm_genlist_item_sorted_insert
2799           (gl, &itc4, (void *)(long)(idx[i] * 2)/* item data */, NULL/* parent */,
2800            ELM_GENLIST_ITEM_TREE, gl13_cmp/* cmp */, NULL/* func */,
2801            NULL/* func data */);
2802      }
2803
2804
2805    for (i = 0, base = 10000; i < 3; i++, base += 10000)
2806      {
2807         int j;
2808         for (j = 0; j < 3; j++)
2809           {
2810              elm_genlist_item_sorted_insert
2811                (gl, &itc4, (void *)(long)(idx[j] + base)/* item data */,
2812                 pi[i + 3]/* parent */, ELM_GENLIST_ITEM_NONE,
2813                 gl13_cmp/* cmp */, NULL/* func */, NULL/* func data */);
2814           }
2815      }
2816
2817    elm_box_pack_end(bx, gl);
2818    evas_object_show(bx);
2819
2820    evas_object_resize(win, 320, 320);
2821    evas_object_show(win);
2822 }
2823
2824 static void
2825 my_gl_insert_before_rel(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2826 {
2827    Evas_Object *gl = data;
2828    static int i = 1000;
2829    Elm_Object_Item *gli_selected;
2830
2831    itc1->item_style = "default";
2832    itc1->func.text_get = gl_text_get;
2833    itc1->func.content_get = NULL;
2834    itc1->func.state_get = NULL;
2835    itc1->func.del = NULL;
2836
2837    gli_selected = elm_genlist_selected_item_get(gl);
2838    if (!gli_selected)
2839      {
2840         printf("no item selected\n");
2841         return;
2842      }
2843
2844    elm_genlist_item_insert_before(gl, itc1,
2845                                   (void *)(long)i/* item data */,
2846                                   elm_genlist_item_parent_get(gli_selected),
2847                                   gli_selected/* item before */,
2848                                   ELM_GENLIST_ITEM_NONE,
2849                                   NULL/* func */, NULL/* func data */);
2850    i++;
2851 }
2852
2853 static void
2854 my_gl_insert_after_rel(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2855 {
2856    Evas_Object *gl = data;
2857    static int i = 0;
2858    Elm_Object_Item *gli_selected;
2859
2860    itc1->item_style = "default";
2861    itc1->func.text_get = gl_text_get;
2862    itc1->func.content_get = NULL;
2863    itc1->func.state_get = NULL;
2864    itc1->func.del = NULL;
2865
2866    gli_selected = elm_genlist_selected_item_get(gl);
2867    if (!gli_selected)
2868      {
2869         printf("no item selected\n");
2870         return;
2871      }
2872
2873    elm_genlist_item_insert_after(gl, itc1,
2874                                   (void *)(long)i/* item data */,
2875                                   elm_genlist_item_parent_get(gli_selected),
2876                                   gli_selected/* item after */,
2877                                   ELM_GENLIST_ITEM_NONE,
2878                                   NULL/* func */, NULL/* func data */);
2879    i++;
2880 }
2881
2882 void
2883 test_genlist14(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2884 {
2885    Elm_Object_Item *pi[6];
2886    Evas_Object *win, *bx, *bx2, *bt, *gl;
2887    int i, base;
2888    /* index: 0,  1,  2,  3,  4,  5
2889     * items: 1, 15, 11,  2, 33, 21
2890     * final: 1,  2, 11, 15, 21, 33
2891     */
2892    const int idx[6] = {1, 15, 11, 2, 33, 21};
2893    const int relative[6] = {
2894       0, /* item  '1' -  not used */
2895       0, /* item '15' - insert after pi[0], item '1' */
2896      -1, /* item '11' - insert before pi[1], item '15' */
2897      -2, /* item  '2' - insert before pi[2], item '11' */
2898       1, /* item '33' - insert after pi[1], item '15' */
2899      -4  /* item '21' - insert before pi[4], item '33' */
2900    };
2901
2902    win = elm_win_util_standard_add("genlist-tree-insert-relative", "Genlist Tree, Insert Relative");
2903    elm_win_autodel_set(win, EINA_TRUE);
2904
2905    bx = elm_box_add(win);
2906    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2907    elm_win_resize_object_add(win, bx);
2908    evas_object_show(bx);
2909
2910    gl = elm_genlist_add(win);
2911    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
2912    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2913    evas_object_show(gl);
2914
2915    itc1 = elm_genlist_item_class_new();
2916
2917    itc4.item_style = "default";
2918    itc4.func.text_get = gl4_text_get;
2919    itc4.func.content_get = NULL;
2920    itc4.func.state_get = NULL;
2921    itc4.func.del = NULL;
2922
2923    /* mixed order to test insert sorted */
2924
2925    // BUG1: should be able to insert before=NULL, prepend
2926    // BUG2: should be able to insert after=NULL, append
2927
2928    pi[0] = elm_genlist_item_append
2929      (gl, &itc4, (void *)(long)idx[0]/* item data */,
2930       NULL/* parent */,
2931       ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2932
2933    for (i = 1; i < 3; i++)
2934      {
2935         if (relative[i] < 0)
2936           pi[i] = elm_genlist_item_insert_before
2937             (gl, &itc4, (void *)(long)idx[i]/* item data */,
2938              NULL/* parent */, pi[-relative[i]],
2939              ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2940         else
2941           pi[i] = elm_genlist_item_insert_after
2942             (gl, &itc4, (void *)(long)idx[i]/* item data */,
2943              NULL/* parent */, pi[relative[i]],
2944              ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2945      }
2946
2947    for (i = 0; i < 3; i++)
2948      {
2949         Elm_Object_Item *sub_glit[6];
2950         int j;
2951
2952         base = 1000 * (int)(long) elm_object_item_data_get(pi[i]);
2953
2954         sub_glit[0] = elm_genlist_item_append
2955           (gl, &itc4, (void *)(long) (idx[0] + base)/* item data */, pi[i]/* parent */,
2956            ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2957
2958         for (j = 1; j < 6; j++) {
2959            if (relative[j] < 0)
2960              sub_glit[j] = elm_genlist_item_insert_before
2961                (gl, &itc4, (void *)(long) (idx[j] + base)/* item data */,
2962                 pi[i]/* parent */, sub_glit[-relative[j]],
2963                 ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2964            else
2965              sub_glit[j] = elm_genlist_item_insert_after
2966                (gl, &itc4, (void *)(long) (idx[j] + base)/* item data */,
2967                 pi[i]/* parent */, sub_glit[relative[j]],
2968                 ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2969         }
2970      }
2971
2972    for (i = 3; i < 6; i++)
2973      {
2974         if (relative[i] < 0)
2975           pi[i] = elm_genlist_item_insert_before
2976             (gl, &itc4, (void *)(long) idx[i]/* item data */,
2977              NULL/* parent */, pi[-relative[i]],
2978              ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2979         else
2980           pi[i] = elm_genlist_item_insert_after
2981             (gl, &itc4, (void *)(long) idx[i]/* item data */,
2982              NULL/* parent */, pi[relative[i]],
2983              ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2984      }
2985
2986    for (i = 3; i < 6; i++)
2987      {
2988         Elm_Object_Item *sub_glit[6];
2989         int j;
2990
2991         base = 1000 * (int)(long) elm_object_item_data_get(pi[i]);
2992
2993         sub_glit[0] = elm_genlist_item_append
2994           (gl, &itc4, (void *)(long) (idx[0] + base)/* item data */, pi[i]/* parent */,
2995            ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2996
2997         for (j = 1; j < 6; j++) {
2998            if (relative[j] < 0)
2999              sub_glit[j] = elm_genlist_item_insert_before
3000                (gl, &itc4, (void *)(long) (idx[j] + base)/* item data */,
3001                 pi[i]/* parent */, sub_glit[-relative[j]],
3002                 ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
3003            else
3004              sub_glit[j] = elm_genlist_item_insert_after
3005                (gl, &itc4, (void *)(long) (idx[j] + base)/* item data */,
3006                 pi[i]/* parent */, sub_glit[relative[j]],
3007                 ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
3008         }
3009      }
3010
3011    elm_box_pack_end(bx, gl);
3012    evas_object_show(bx);
3013
3014    bx2 = elm_box_add(win);
3015    elm_box_horizontal_set(bx2, EINA_TRUE);
3016    elm_box_homogeneous_set(bx2, EINA_TRUE);
3017    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
3018    evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
3019
3020    bt = elm_button_add(win);
3021    elm_object_text_set(bt, "+ before");
3022    evas_object_smart_callback_add(bt, "clicked", my_gl_insert_before_rel, gl);
3023    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
3024    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
3025    elm_box_pack_end(bx2, bt);
3026    evas_object_show(bt);
3027
3028    bt = elm_button_add(win);
3029    elm_object_text_set(bt, "+ after");
3030    evas_object_smart_callback_add(bt, "clicked", my_gl_insert_after_rel, gl);
3031    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
3032    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
3033    elm_box_pack_end(bx2, bt);
3034    evas_object_show(bt);
3035
3036    elm_box_pack_end(bx, bx2);
3037    evas_object_show(bx2);
3038
3039    /* item_class_ref is needed for itc1. some items can be added in callbacks */
3040    elm_genlist_item_class_ref(itc1);
3041    elm_genlist_item_class_free(itc1);
3042
3043    evas_object_resize(win, 320, 320);
3044    evas_object_show(win);
3045 }
3046
3047 static void _edit_icon_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
3048 {
3049    Elm_Object_Item *item = (Elm_Object_Item *)data;
3050    elm_object_item_del(item);
3051 }
3052
3053 char *gl15_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
3054 {
3055    const Testitem *tit = data;
3056    char buf[256];
3057    snprintf(buf, sizeof(buf), "Item #%i", tit->mode);
3058    return strdup(buf);
3059 }
3060
3061 Evas_Object *gl15_content_get(void *data, Evas_Object *obj, const char *part)
3062 {
3063    Testitem *tit = data;
3064    char buf[PATH_MAX];
3065
3066    // "edit_default" EDC layout is like below. each part is swallow part.
3067    // the existing item is swllowed to elm.swallow.edit.content part.
3068    // ----------------------------------------------------------------
3069    // | elm.edit.icon.1 | elm.swallow.edit.content | elm.edit.icon,2 |
3070    // ----------------------------------------------------------------
3071
3072    if (!strcmp(part, "elm.swallow.end"))
3073      {
3074         Evas_Object *ic = elm_icon_add(obj);
3075         snprintf(buf, sizeof(buf), "%s/images/bubble.png", PACKAGE_DATA_DIR);
3076         elm_icon_file_set(ic, buf, NULL);
3077         evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
3078         return ic;
3079      }
3080    else if (!strcmp(part, "elm.edit.icon.1"))
3081      {
3082         Evas_Object *ck;
3083         ck = elm_check_add(obj);
3084         elm_check_state_pointer_set(ck, &tit->checked);
3085         evas_object_propagate_events_set(ck, EINA_FALSE);
3086         evas_object_show(ck);
3087         return ck;
3088      }
3089    else if (!strcmp(part, "elm.edit.icon.2"))
3090      {
3091         Evas_Object *icn = elm_icon_add(obj);
3092         snprintf(buf, sizeof(buf), "%s/images/icon_06.png", PACKAGE_DATA_DIR);
3093         elm_icon_file_set(icn, buf, NULL);
3094         evas_object_propagate_events_set(icn, EINA_FALSE);
3095         evas_object_size_hint_aspect_set(icn, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
3096         evas_object_smart_callback_add(icn, "clicked", _edit_icon_clicked_cb, (void *)tit->item);
3097         return icn;
3098      }
3099    else return NULL;
3100 }
3101
3102 static void
3103 gl15_sel(void *data, Evas_Object *obj, void *event_info __UNUSED__)
3104 {
3105    Testitem *tit = data;
3106    if (elm_genlist_decorate_mode_get(obj))
3107      {
3108         if (!tit->checked) tit->checked = EINA_TRUE;
3109         else tit->checked = EINA_FALSE;
3110      }
3111    elm_genlist_item_update(tit->item);
3112 }
3113
3114 static void
3115 gl15_edit_mode(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
3116 {
3117    elm_genlist_decorate_mode_set(data, EINA_TRUE);
3118    elm_genlist_select_mode_set(data, ELM_OBJECT_SELECT_MODE_ALWAYS);
3119 }
3120
3121 static void
3122 gl15_normal_mode(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
3123 {
3124    elm_genlist_decorate_mode_set(data, EINA_FALSE);
3125    elm_genlist_select_mode_set(data, ELM_OBJECT_SELECT_MODE_DEFAULT);
3126 }
3127
3128 void gl15_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
3129 {
3130    printf("item deleted.\n");
3131 }
3132
3133 void
3134 test_genlist15(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
3135 {
3136    Evas_Object *win, *bx, *bx2, *bt, *gl;
3137    int i;
3138    static Testitem tit[100];
3139
3140    win = elm_win_util_standard_add("genlist-edit-mode", "Genlist Edit Mode");
3141    elm_win_autodel_set(win, EINA_TRUE);
3142
3143    bx = elm_box_add(win);
3144    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
3145    elm_win_resize_object_add(win, bx);
3146    evas_object_show(bx);
3147
3148    gl = elm_genlist_add(win);
3149    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
3150    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
3151    evas_object_show(gl);
3152
3153    itc15 = elm_genlist_item_class_new();
3154    itc15->item_style     = "default";
3155    itc15->func.text_get = gl15_text_get;
3156    itc15->func.content_get  = gl15_content_get;
3157    itc15->func.state_get = gl_state_get;
3158    itc15->func.del       = gl15_del;
3159    itc15->edit_item_style = "edit";
3160
3161    for (i = 0; i < 100; i++)
3162      {
3163         tit[i].mode = i;
3164         tit[i].item = elm_genlist_item_append(gl, itc15,
3165                                               &(tit[i])/* item data */,
3166                                               NULL/* parent */,
3167                                               ELM_GENLIST_ITEM_NONE/* flags */,
3168                                               gl15_sel/* func */,
3169                                               (void *)(long)&(tit[i])/* func data */);
3170      }
3171    elm_genlist_item_class_free(itc15);
3172    elm_box_pack_end(bx, gl);
3173    evas_object_show(bx);
3174
3175    bx2 = elm_box_add(win);
3176    elm_box_horizontal_set(bx2, EINA_TRUE);
3177    elm_box_homogeneous_set(bx2, EINA_TRUE);
3178    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
3179    evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
3180
3181    bt = elm_button_add(win);
3182    elm_object_text_set(bt, "Edit mode");
3183    evas_object_smart_callback_add(bt, "clicked", gl15_edit_mode, gl);
3184    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
3185    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
3186    elm_box_pack_end(bx2, bt);
3187    evas_object_show(bt);
3188
3189    bt = elm_button_add(win);
3190    elm_object_text_set(bt, "Normal mode");
3191    evas_object_smart_callback_add(bt, "clicked", gl15_normal_mode,gl);
3192    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
3193    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
3194    elm_box_pack_end(bx2, bt);
3195    evas_object_show(bt);
3196
3197    elm_box_pack_end(bx, bx2);
3198    evas_object_show(bx2);
3199
3200    evas_object_resize(win, 520, 520);
3201    evas_object_show(win);
3202 }
3203
3204 static void _flip_icon_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
3205 {
3206    const Testitem *tit = data;
3207
3208    if (elm_genlist_item_flip_get(tit->item))
3209      elm_genlist_item_flip_set(tit->item, EINA_FALSE);
3210    else
3211      elm_genlist_item_flip_set(tit->item, EINA_TRUE);
3212 }
3213
3214 char *gl16_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
3215 {
3216    const Testitem *tit = data;
3217    char buf[256];
3218    snprintf(buf, sizeof(buf), "Item #%i", tit->mode);
3219    return strdup(buf);
3220 }
3221
3222 Evas_Object *gl16_content_get(void *data, Evas_Object *obj, const char *part)
3223 {
3224    Testitem *tit = data;
3225    char buf[PATH_MAX];
3226
3227    if (!strcmp(part, "elm.text.flip"))
3228      {
3229         Evas_Object *btn = elm_button_add(obj);
3230         elm_object_text_set(btn, "flipped content placement");
3231         evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
3232         evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
3233         evas_object_smart_callback_add(btn, "clicked", _flip_icon_clicked_cb, (void *)tit);
3234         evas_object_show(btn);
3235         return btn;
3236      }
3237    else if (!strcmp(part, "elm.edit.icon.1"))
3238      {
3239         Evas_Object *icn = elm_icon_add(obj);
3240         snprintf(buf, sizeof(buf), "%s/images/icon_04.png", PACKAGE_DATA_DIR);
3241         elm_icon_file_set(icn, buf, NULL);
3242         evas_object_propagate_events_set(icn, EINA_FALSE);
3243         evas_object_size_hint_aspect_set(icn, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
3244         return icn;
3245      }
3246    else if (!strcmp(part, "elm.edit.icon.2"))
3247      {
3248         Evas_Object *icn = elm_icon_add(obj);
3249         snprintf(buf, sizeof(buf), "%s/images/icon_09.png", PACKAGE_DATA_DIR);
3250         elm_icon_file_set(icn, buf, NULL);
3251         evas_object_propagate_events_set(icn, EINA_FALSE);
3252         evas_object_size_hint_aspect_set(icn, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
3253         evas_object_smart_callback_add(icn, "clicked", _flip_icon_clicked_cb, (void *)tit);
3254         return icn;
3255      }
3256    else return NULL;
3257 }
3258
3259 void
3260 test_genlist16(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
3261 {
3262    Evas_Object *win, *bx, *gl;
3263    int i;
3264    static Testitem tit[100];
3265
3266    win = elm_win_util_standard_add("genlist-flip-mode", "Genlist Flip Mode");
3267    elm_win_autodel_set(win, EINA_TRUE);
3268
3269    bx = elm_box_add(win);
3270    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
3271    elm_win_resize_object_add(win, bx);
3272    evas_object_show(bx);
3273
3274    gl = elm_genlist_add(win);
3275    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
3276    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
3277    evas_object_show(gl);
3278
3279    /* note: flip mode can be used with/without edit mode */
3280    elm_genlist_decorate_mode_set(gl, EINA_TRUE);
3281    elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_ALWAYS);
3282
3283    itc15 = elm_genlist_item_class_new();
3284    itc15->item_style     = "default";
3285    itc15->func.text_get = gl16_text_get;
3286    itc15->func.content_get = gl16_content_get;
3287    itc15->func.state_get = gl_state_get;
3288    itc15->func.del       = NULL;
3289    itc15->edit_item_style = "edit";
3290
3291    for (i = 0; i < 100; i++)
3292      {
3293         tit[i].mode = i;
3294         tit[i].item = elm_genlist_item_append(gl, itc15,
3295                                               &(tit[i])/* item data */,
3296                                               NULL/* parent */,
3297                                               ELM_GENLIST_ITEM_NONE/* flags */,
3298                                               gl_sel/* func */,
3299                                               (void *)(long)&(tit[i])/* func data */);
3300      }
3301    elm_genlist_item_class_free(itc15);
3302    elm_box_pack_end(bx, gl);
3303    evas_object_show(bx);
3304
3305    evas_object_resize(win, 520, 520);
3306    evas_object_show(win);
3307 }
3308
3309 static Elm_Genlist_Item_Class itc17;
3310
3311 static void
3312 gl17_sel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
3313 {
3314    Elm_Object_Item *glit = event_info;
3315    int depth = elm_genlist_item_expanded_depth_get(glit);
3316    printf("expanded depth for selected item is %d\n", depth);
3317 }
3318
3319 static void
3320 gl17_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
3321 {
3322    Elm_Object_Item *glit = event_info;
3323    Evas_Object *gl = elm_object_item_widget_get(glit);
3324    int val = (int)(long) elm_object_item_data_get(glit);
3325    val *= 10;
3326    elm_genlist_item_append(gl, &itc17,
3327                            (void *)(long) (val + 1)/* item data */,
3328                            glit/* parent */,
3329                            ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
3330                            NULL/* func data */);
3331    elm_genlist_item_append(gl, &itc17,
3332                            (void *)(long) (val + 2)/* item data */,
3333                            glit/* parent */,
3334                            ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
3335                            NULL/* func data */);
3336    elm_genlist_item_append(gl, &itc17,
3337                            (void *)(long) (val + 3)/* item data */,
3338                            glit/* parent */,
3339                            ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
3340                            NULL/* func data */);
3341    elm_genlist_item_append(gl, &itc17,
3342                            (void *)(long) (val + 4)/* item data */,
3343                            glit/* parent */,
3344                            ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
3345                            NULL/* func data */);
3346    elm_genlist_item_append(gl, &itc17,
3347                            (void *)(long) (val + 5)/* item data */,
3348                            glit/* parent */,
3349                            ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
3350                            NULL/* func data */);
3351    elm_genlist_item_append(gl, &itc17,
3352                            (void *)(long) (val + 6)/* item data */,
3353                            glit/* parent */,
3354                            ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
3355                            NULL/* func data */);
3356 }
3357
3358 static void
3359 gl17_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
3360 {
3361    Elm_Object_Item *glit = event_info;
3362    elm_genlist_item_subitems_clear(glit);
3363 }
3364
3365 static void
3366 gl17_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
3367 {
3368    Elm_Object_Item *glit = event_info;
3369    elm_genlist_item_expanded_set(glit, EINA_TRUE);
3370 }
3371
3372 static void
3373 gl17_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
3374 {
3375    Elm_Object_Item *glit = event_info;
3376    elm_genlist_item_expanded_set(glit, EINA_FALSE);
3377 }
3378
3379 char *gl17_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
3380 {
3381    char buf[256];
3382    snprintf(buf, sizeof(buf), "Item mode %i", (int)(long)data);
3383    return strdup(buf);
3384 }
3385
3386 Evas_Object *gl17_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
3387 {
3388    char buf[PATH_MAX];
3389    if (!strcmp(part, "elm.swallow.icon"))
3390      {
3391         Evas_Object *ic = elm_icon_add(obj);
3392         snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
3393         elm_icon_file_set(ic, buf, NULL);
3394         evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
3395         evas_object_show(ic);
3396         return ic;
3397      }
3398    else if (!strcmp(part, "elm.swallow.end"))
3399      {
3400         Evas_Object *ck;
3401         ck = elm_check_add(obj);
3402         evas_object_propagate_events_set(ck, EINA_FALSE);
3403         evas_object_show(ck);
3404         return ck;
3405      }
3406    return NULL;
3407 }
3408
3409 Eina_Bool gl17_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
3410 {
3411    return EINA_FALSE;
3412 }
3413
3414 void gl17_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
3415 {
3416    printf("item deleted.\n");
3417 }
3418
3419 static void
3420 gl17_enabled_set(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
3421 {
3422    elm_genlist_tree_effect_enabled_set(data, EINA_TRUE);
3423 }
3424
3425 static void
3426 gl17_disabled_set(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
3427 {
3428    elm_genlist_tree_effect_enabled_set(data, EINA_FALSE);
3429 }
3430         
3431 void
3432 test_genlist17(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
3433 {
3434    Evas_Object *win, *gl, *bx, *bx2, *bt;
3435
3436    win = elm_win_util_standard_add("genlist17", "Genlist Tree Effect");
3437    elm_win_autodel_set(win, EINA_TRUE);
3438
3439    bx = elm_box_add(win);
3440    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
3441    elm_win_resize_object_add(win, bx);
3442    evas_object_show(bx);
3443
3444    gl = elm_genlist_add(win);
3445    evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
3446    evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
3447    evas_object_show(gl);
3448
3449    elm_genlist_tree_effect_enabled_set(gl,EINA_TRUE);
3450
3451    itc17.item_style     = "tree_effect";
3452    itc17.func.text_get = gl17_text_get;
3453    itc17.func.content_get  = gl17_content_get;
3454    itc17.func.state_get = gl17_state_get;
3455    itc17.func.del       = gl17_del;
3456
3457    elm_genlist_item_append(gl, &itc17,
3458                            (void *)1/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
3459                            NULL/* func data */);
3460    elm_genlist_item_append(gl, &itc17,
3461                            (void *)2/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
3462                            NULL/* func data */);
3463    elm_genlist_item_append(gl, &itc17,
3464                            (void *)3/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
3465                            NULL/* func data */);
3466
3467    evas_object_smart_callback_add(gl, "expand,request", gl17_exp_req, gl);
3468    evas_object_smart_callback_add(gl, "contract,request", gl17_con_req, gl);
3469    evas_object_smart_callback_add(gl, "expanded", gl17_exp, gl);
3470    evas_object_smart_callback_add(gl, "contracted", gl17_con, gl);
3471
3472    elm_box_pack_end(bx, gl);
3473    evas_object_show(bx);
3474
3475    bx2 = elm_box_add(win);
3476    elm_box_horizontal_set(bx2, EINA_TRUE);
3477    elm_box_homogeneous_set(bx2, EINA_TRUE);
3478    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
3479    evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
3480
3481    bt = elm_button_add(win);
3482    elm_object_text_set(bt, "Enable");
3483    evas_object_smart_callback_add(bt, "clicked", gl17_enabled_set, gl);
3484    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
3485    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
3486    elm_box_pack_end(bx2, bt);
3487    evas_object_show(bt);
3488
3489    bt = elm_button_add(win);
3490    elm_object_text_set(bt, "Disable");
3491    evas_object_smart_callback_add(bt, "clicked", gl17_disabled_set, gl);
3492    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
3493    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
3494    elm_box_pack_end(bx2, bt);
3495    evas_object_show(bt);
3496
3497    elm_box_pack_end(bx, bx2);
3498    evas_object_show(bx2);
3499
3500    evas_object_resize(win, 320, 320);
3501    evas_object_show(win);
3502 }
3503 >>>>>>> remotes/origin/upstream
3504 #endif