1 #include <Elementary_Cursor.h>
4 #include "elementary_config.h"
6 #include <Elementary.h>
7 #ifndef ELM_LIB_QUICKLAUNCH
10 unsigned int state; /* What state we are testing */
11 void *box; /* Use this to get box content */
13 typedef struct _api_data api_data;
27 typedef enum _api_state api_state;
30 set_api_state(api_data *api)
32 const Eina_List *items = elm_box_children_get(api->box);
33 if (!eina_list_count(items))
36 Evas_Object *gl = eina_list_nth(items, 0); /* Genlist is the first item */
37 /* use elm_box_children_get() to get list of children */
39 {/* Put all api-changes under switch */
40 case HORIZONTAL_SET: /* 0 */
41 elm_genlist_mode_set(gl, ELM_LIST_LIMIT);
44 case NO_SELECT_MODE_SET: /* 1 */
45 elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_NONE);
46 elm_genlist_mode_set(gl, ELM_LIST_SCROLL); /* Back to default */
49 case COMPRESS_MODE_SET: /* 2 */
50 elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_DEFAULT);
51 elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
54 case BOUNCE_SET: /* 3 */
55 elm_scroller_bounce_set(gl, EINA_FALSE, EINA_FALSE);
58 case HOMOGENEOUS_SET: /* 4 */
59 elm_scroller_bounce_set(gl, EINA_TRUE, EINA_TRUE); /* Back to default */
60 elm_genlist_homogeneous_set(gl, EINA_TRUE);
63 case SCROLLER_POLICY_SET: /* 5 */
64 elm_genlist_homogeneous_set(gl, EINA_FALSE); /* Back to default */
65 elm_scroller_policy_set(gl, ELM_SCROLLER_POLICY_ON, ELM_SCROLLER_POLICY_ON);
68 case TOOLTIP_TEXT_SET: /* 6 */
70 elm_genlist_item_tooltip_text_set(elm_genlist_first_item_get(gl), "Tooltip text from API");
71 elm_genlist_item_bring_in(elm_genlist_first_item_get(gl),
72 ELM_GENLIST_ITEM_SCROLLTO_IN);
76 case ITEM_CURSOR_SET: /* 7 */
77 elm_genlist_item_cursor_set(elm_genlist_first_item_get(gl), ELM_CURSOR_HAND2);
86 _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
87 { /* Will add here a SWITCH command containing code to modify test-object */
88 /* in accordance a->state value. */
92 INF("clicked event on API Button: api_state=<%d>", a->state);
95 sprintf(str, "Next API function (%u)", a->state);
96 elm_object_text_set(obj, str);
97 elm_object_disabled_set(obj, a->state == API_STATE_LAST);
100 * In this example some calls to elm_genlist_item_append() are used which give the
101 * value of an int as 'item data' and 'func data' after casting into (void*). For
102 * sure this works only on architectures where sizeof(int)==sizeof(void*).
103 * For real world usage you should hold a data structure or value in your
104 * application and then give only a pointer to this data as data pointer.
107 typedef struct _Testitem
109 Elm_Object_Item *item;
115 static Elm_Genlist_Item_Class *itc1;
116 char *gl_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
119 snprintf(buf, sizeof(buf), "Item # %i", (int)(long)data);
123 Evas_Object *gl_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
126 Evas_Object *ic = elm_icon_add(obj);
127 if (!strcmp(part, "elm.swallow.end"))
128 snprintf(buf, sizeof(buf), "%s/images/bubble.png", elm_app_data_dir_get());
130 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
131 elm_image_file_set(ic, buf, NULL);
132 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
136 static void on_bt_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
138 printf("button clicked\n");
141 static void on_ck_changed(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
143 printf("checkbox changed\n");
146 Evas_Object *gl_content_full_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
148 Evas_Object *fr, *bx, *ic, *bt, *ck;
150 if (strcmp(part, "elm.swallow.content") != 0) return NULL;
152 fr = elm_frame_add(obj);
153 elm_layout_text_set(fr, NULL, "A Frame");
155 bx = elm_box_add(fr);
156 elm_box_horizontal_set(bx, EINA_TRUE);
158 ic = elm_icon_add(bx);
159 elm_icon_standard_set(ic, "home");
160 evas_object_size_hint_min_set(ic, 32, 32);
161 evas_object_size_hint_align_set(ic, 0.5, EVAS_HINT_FILL);
162 evas_object_show(ic);
163 elm_box_pack_end(bx, ic);
165 bt = elm_button_add(bx);
166 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
167 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
168 evas_object_smart_callback_add(bt, "clicked", on_bt_clicked, NULL);
169 elm_layout_text_set(bt, NULL, "Click Me");
170 evas_object_show(bt);
171 elm_box_pack_end(bx, bt);
173 ck = elm_check_add(bx);
174 evas_object_size_hint_align_set(ck, EVAS_HINT_FILL, EVAS_HINT_FILL);
175 evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
176 evas_object_smart_callback_add(ck, "changed", on_ck_changed, NULL);
177 elm_layout_text_set(ck, NULL, "some checkbox");
178 evas_object_show(ck);
179 elm_box_pack_end(bx, ck);
181 elm_layout_content_set(fr, NULL, bx);
182 evas_object_size_hint_min_set(fr, 100, 100);
188 Eina_Bool gl_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
194 gl_sel(void *data, Evas_Object *obj, void *event_info)
196 printf("sel item data [%p] on genlist obj [%p], item pointer [%p]\n", data, obj, event_info);
200 _move(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
202 Evas_Object *gl = data;
203 Evas_Event_Mouse_Move *ev = event_info;
205 Elm_Object_Item *gli;
206 gli = elm_genlist_at_xy_item_get(gl, ev->cur.canvas.x, ev->cur.canvas.y, &where);
208 INF("over %p, where %i", elm_object_item_data_get(gli), where);
210 INF("over none, where %i", where);
214 _bt50_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
216 elm_genlist_item_bring_in(data, ELM_GENLIST_ITEM_SCROLLTO_IN);
220 _bt1500_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
222 elm_genlist_item_bring_in(data, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
226 _gl_selected(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
228 printf("selected: %p\n", event_info);
232 _gl_double_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
234 printf("double clicked: %p\n", event_info);
238 _gl_longpress(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
240 printf("longpress %p\n", event_info);
244 _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
250 test_genlist(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
252 Evas_Object *win, *gl, *bt_50, *bt_1500, *bx, *bxx, *bt;
254 Elm_Object_Item *gli;
256 api_data *api = calloc(1, sizeof(api_data));
258 win = elm_win_util_standard_add("genlist", "Genlist");
259 elm_win_autodel_set(win, EINA_TRUE);
260 evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
262 bxx = elm_box_add(win);
263 elm_win_resize_object_add(win, bxx);
264 evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
265 evas_object_show(bxx);
267 bx = elm_box_add(win);
268 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
269 evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
271 evas_object_show(bx);
273 bt = elm_button_add(win);
274 elm_object_text_set(bt, "Next API function");
275 evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
276 elm_box_pack_end(bxx, bt);
277 elm_object_disabled_set(bt, api->state == API_STATE_LAST);
278 evas_object_show(bt);
280 elm_box_pack_end(bxx, bx);
282 gl = elm_genlist_add(win);
283 evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
284 evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
285 evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
286 // FIXME: This causes genlist to resize the horiz axis very slowly :(
287 // Reenable this and resize the window horizontally, then try to resize it back
288 //elm_genlist_mode_set(gl, ELM_LIST_LIMIT);
289 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
290 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
291 elm_box_pack_end(bx, gl);
292 evas_object_show(gl);
294 over = evas_object_rectangle_add(evas_object_evas_get(win));
295 evas_object_color_set(over, 0, 0, 0, 0);
296 evas_object_event_callback_add(over, EVAS_CALLBACK_MOUSE_MOVE, _move, gl);
297 evas_object_repeat_events_set(over, 1);
298 evas_object_show(over);
299 evas_object_size_hint_weight_set(over, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
300 elm_win_resize_object_add(win, over);
302 itc1 = elm_genlist_item_class_new();
303 itc1->item_style = "default";
304 itc1->func.text_get = gl_text_get;
305 itc1->func.content_get = gl_content_get;
306 itc1->func.state_get = gl_state_get;
307 itc1->func.del = NULL;
309 bt_50 = elm_button_add(win);
310 elm_object_text_set(bt_50, "Go to 50");
311 evas_object_show(bt_50);
312 elm_box_pack_end(bx, bt_50);
314 bt_1500 = elm_button_add(win);
315 elm_object_text_set(bt_1500, "Go to 1500");
316 evas_object_show(bt_1500);
317 elm_box_pack_end(bx, bt_1500);
319 for (i = 0; i < 2000; i++)
321 gli = elm_genlist_item_append(gl, itc1,
322 (void *)(long)i/* item data */,
324 ELM_GENLIST_ITEM_NONE,
326 (void *)(long)(i * 10)/* func data */);
328 evas_object_smart_callback_add(bt_50, "clicked", _bt50_cb, gli);
330 evas_object_smart_callback_add(bt_1500, "clicked", _bt1500_cb, gli);
332 elm_genlist_item_class_free(itc1);
334 evas_object_resize(win, 480, 800);
335 evas_object_show(win);
341 my_gl_clear(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
343 Evas_Object *gl = data;
344 elm_genlist_clear(gl);
348 my_gl_add(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
350 Evas_Object *gl = data;
353 if (!itc1) itc1 = elm_genlist_item_class_new();
354 itc1->item_style = "default";
355 itc1->func.text_get = gl_text_get;
356 itc1->func.content_get = gl_content_get;
357 itc1->func.state_get = gl_state_get;
358 itc1->func.del = NULL;
360 elm_genlist_item_append(gl, itc1,
361 (void *)(long)i/* item data */,
363 ELM_GENLIST_ITEM_NONE,
365 (void *)(long)(i * 10)/* func data */);
370 my_gl_insert_before(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
372 Evas_Object *gl = data;
374 Elm_Object_Item *gli_selected;
376 if (!itc1) itc1 = elm_genlist_item_class_new();
377 itc1->item_style = "default";
378 itc1->func.text_get = gl_text_get;
379 itc1->func.content_get = gl_content_get;
380 itc1->func.state_get = gl_state_get;
381 itc1->func.del = NULL;
383 gli_selected = elm_genlist_selected_item_get(gl);
386 printf("no item selected\n");
390 elm_genlist_item_insert_before(gl, itc1,
391 (void *)(long)i/* item data */,
393 gli_selected /* item before */,
394 ELM_GENLIST_ITEM_NONE,
396 (void *)(long)(i * 10)/* func data */);
401 my_gl_insert_after(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
403 Evas_Object *gl = data;
405 Elm_Object_Item *gli_selected;
407 if (!itc1) itc1 = elm_genlist_item_class_new();
408 itc1->item_style = "default";
409 itc1->func.text_get = gl_text_get;
410 itc1->func.content_get = gl_content_get;
411 itc1->func.state_get = gl_state_get;
412 itc1->func.del = NULL;
414 gli_selected = elm_genlist_selected_item_get(gl);
417 printf("no item selected\n");
421 elm_genlist_item_insert_after(gl, itc1,
422 (void *)(long)i/* item data */,
424 gli_selected /* item after */,
425 ELM_GENLIST_ITEM_NONE,
427 (void *)(long)(i * 10)/* func data */);
432 my_gl_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
434 Evas_Object *gl = data;
435 Elm_Object_Item *gli = elm_genlist_selected_item_get(gl);
438 printf("no item selected\n");
441 elm_object_item_del(gli);
445 my_gl_disable(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
447 Evas_Object *gl = data;
448 Elm_Object_Item *gli = elm_genlist_selected_item_get(gl);
451 printf("no item selected\n");
454 elm_object_item_disabled_set(gli, EINA_TRUE);
455 elm_genlist_item_selected_set(gli, EINA_FALSE);
456 elm_genlist_item_update(gli);
460 my_gl_update_all(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
462 Evas_Object *gl = data;
464 Elm_Object_Item *it = elm_genlist_first_item_get(gl);
467 elm_genlist_item_update(it);
470 it = elm_genlist_item_next_get(it);
475 my_gl_first(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
477 Evas_Object *gl = data;
478 Elm_Object_Item *gli = elm_genlist_first_item_get(gl);
480 elm_genlist_item_show(gli, ELM_GENLIST_ITEM_SCROLLTO_IN);
481 elm_genlist_item_selected_set(gli, 1);
485 my_gl_last(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
487 Evas_Object *gl = data;
488 Elm_Object_Item *gli = elm_genlist_last_item_get(gl);
490 elm_genlist_item_show(gli, ELM_GENLIST_ITEM_SCROLLTO_IN);
491 elm_genlist_item_selected_set(gli, 1);
495 my_gl_flush_delay(void *data __UNUSED__)
497 elm_cache_all_flush();
498 return ECORE_CALLBACK_CANCEL;
502 my_gl_flush(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
504 ecore_timer_add(1.2, my_gl_flush_delay, NULL);
508 test_genlist2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
510 Evas_Object *win, *bg, *gl, *bx, *bx2, *bx3, *bt;
511 Elm_Object_Item *gli[10];
514 win = elm_win_add(NULL, "genlist2", ELM_WIN_BASIC);
515 elm_win_title_set(win, "Genlist 2");
516 elm_win_autodel_set(win, EINA_TRUE);
518 bg = elm_bg_add(win);
519 snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
520 elm_bg_file_set(bg, buf, NULL);
521 elm_win_resize_object_add(win, bg);
522 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
523 evas_object_show(bg);
525 bx = elm_box_add(win);
526 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
527 elm_win_resize_object_add(win, bx);
528 evas_object_show(bx);
530 gl = elm_genlist_add(win);
531 elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
532 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
533 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
534 evas_object_show(gl);
536 itc1 = elm_genlist_item_class_new();
537 itc1->item_style = "default";
538 itc1->func.text_get = gl_text_get;
539 itc1->func.content_get = gl_content_get;
540 itc1->func.state_get = gl_state_get;
541 itc1->func.del = NULL;
543 gli[0] = elm_genlist_item_append(gl, itc1,
544 (void *)1001/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
545 (void *)1001/* func data */);
546 gli[1] = elm_genlist_item_append(gl, itc1,
547 (void *)1002/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
548 (void *)1002/* func data */);
549 gli[2] = elm_genlist_item_append(gl, itc1,
550 (void *)1003/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
551 (void *)1003/* func data */);
552 gli[3] = elm_genlist_item_prepend(gl, itc1,
553 (void *)1004/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
554 (void *)1004/* func data */);
555 gli[4] = elm_genlist_item_prepend(gl, itc1,
556 (void *)1005/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
557 (void *)1005/* func data */);
558 gli[5] = elm_genlist_item_insert_before(gl, itc1,
559 (void *)1006/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
560 gl_sel/* func */, (void *)1006/* func data */);
561 gli[6] = elm_genlist_item_insert_after(gl, itc1,
562 (void *)1007/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
563 gl_sel/* func */, (void *)1007/* func data */);
564 elm_box_pack_end(bx, gl);
566 bx2 = elm_box_add(win);
567 elm_box_horizontal_set(bx2, EINA_TRUE);
568 elm_box_homogeneous_set(bx2, EINA_TRUE);
569 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
570 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
572 bt = elm_button_add(win);
573 elm_object_text_set(bt, "/\\");
574 evas_object_smart_callback_add(bt, "clicked", my_gl_first, gl);
575 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
576 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
577 elm_box_pack_end(bx2, bt);
578 evas_object_show(bt);
580 bt = elm_button_add(win);
581 elm_object_text_set(bt, "\\/");
582 evas_object_smart_callback_add(bt, "clicked", my_gl_last, gl);
583 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
584 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
585 elm_box_pack_end(bx2, bt);
586 evas_object_show(bt);
588 bt = elm_button_add(win);
589 elm_object_text_set(bt, "#");
590 evas_object_smart_callback_add(bt, "clicked", my_gl_disable, gl);
591 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
592 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
593 elm_box_pack_end(bx2, bt);
594 evas_object_show(bt);
596 bt = elm_button_add(win);
597 elm_object_text_set(bt, "U");
598 evas_object_smart_callback_add(bt, "clicked", my_gl_update_all, gl);
599 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
600 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
601 elm_box_pack_end(bx2, bt);
602 evas_object_show(bt);
604 elm_box_pack_end(bx, bx2);
605 evas_object_show(bx2);
607 bx2 = elm_box_add(win);
608 elm_box_horizontal_set(bx2, EINA_TRUE);
609 elm_box_homogeneous_set(bx2, EINA_TRUE);
610 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
611 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
613 bt = elm_button_add(win);
614 elm_object_text_set(bt, "X");
615 evas_object_smart_callback_add(bt, "clicked", my_gl_clear, gl);
616 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
617 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
618 elm_box_pack_end(bx2, bt);
619 evas_object_show(bt);
621 bt = elm_button_add(win);
622 elm_object_text_set(bt, "+");
623 evas_object_smart_callback_add(bt, "clicked", my_gl_add, gl);
624 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
625 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
626 elm_box_pack_end(bx2, bt);
627 evas_object_show(bt);
629 bt = elm_button_add(win);
630 elm_object_text_set(bt, "-");
631 evas_object_smart_callback_add(bt, "clicked", my_gl_del, gl);
632 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
633 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
634 elm_box_pack_end(bx2, bt);
635 evas_object_show(bt);
637 elm_box_pack_end(bx, bx2);
638 evas_object_show(bx2);
640 bx3 = elm_box_add(win);
641 elm_box_horizontal_set(bx3, EINA_TRUE);
642 elm_box_homogeneous_set(bx3, EINA_TRUE);
643 evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
644 evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
646 bt = elm_button_add(win);
647 elm_object_text_set(bt, "+ before");
648 evas_object_smart_callback_add(bt, "clicked", my_gl_insert_before, gl);
649 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
650 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
651 elm_box_pack_end(bx3, bt);
652 evas_object_show(bt);
654 bt = elm_button_add(win);
655 elm_object_text_set(bt, "+ after");
656 evas_object_smart_callback_add(bt, "clicked", my_gl_insert_after, gl);
657 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
658 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
659 elm_box_pack_end(bx3, bt);
660 evas_object_show(bt);
662 bt = elm_button_add(win);
663 elm_object_text_set(bt, "Flush");
664 evas_object_smart_callback_add(bt, "clicked", my_gl_flush, gl);
665 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
666 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
667 elm_box_pack_end(bx3, bt);
668 evas_object_show(bt);
670 elm_box_pack_end(bx, bx3);
671 evas_object_show(bx3);
673 /* item_class_ref is needed for itc1. some items can be added in callbacks */
674 elm_genlist_item_class_ref(itc1);
675 elm_genlist_item_class_free(itc1);
677 evas_object_resize(win, 320, 320);
678 evas_object_show(win);
683 static Elm_Genlist_Item_Class itc2;
685 char *gl2_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
687 const Testitem *tit = data;
689 snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
693 Evas_Object *gl2_content_get(void *data, Evas_Object *obj, const char *part)
695 const Testitem *tit = data;
697 Evas_Object *ic = elm_icon_add(obj);
698 if (!strcmp(part, "elm.swallow.icon"))
700 if (!(tit->mode & 0x3))
701 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
702 else if ((tit->mode & 0x3) == 1)
703 snprintf(buf, sizeof(buf), "%s/images/logo.png", elm_app_data_dir_get());
704 else if ((tit->mode & 0x3) == 2)
705 snprintf(buf, sizeof(buf), "%s/images/panel_01.jpg", elm_app_data_dir_get());
706 else if ((tit->mode & 0x3) == 3)
707 snprintf(buf, sizeof(buf), "%s/images/rock_01.jpg", elm_app_data_dir_get());
708 elm_image_file_set(ic, buf, NULL);
710 else if (!strcmp(part, "elm.swallow.end"))
712 if (!(tit->mode & 0x3))
713 snprintf(buf, sizeof(buf), "%s/images/sky_01.jpg", elm_app_data_dir_get());
714 else if ((tit->mode & 0x3) == 1)
715 snprintf(buf, sizeof(buf), "%s/images/sky_02.jpg", elm_app_data_dir_get());
716 else if ((tit->mode & 0x3) == 2)
717 snprintf(buf, sizeof(buf), "%s/images/sky_03.jpg", elm_app_data_dir_get());
718 else if ((tit->mode & 0x3) == 3)
719 snprintf(buf, sizeof(buf), "%s/images/sky_04.jpg", elm_app_data_dir_get());
720 elm_image_file_set(ic, buf, NULL);
722 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
726 Eina_Bool gl2_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
732 my_gl_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
734 Testitem *tit = data;
736 elm_genlist_item_update(tit->item);
740 my_gl_labels_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
742 Testitem *tit = data;
744 elm_genlist_item_fields_update(tit->item, "*", ELM_GENLIST_ITEM_FIELD_TEXT);
748 my_gl_contents_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
750 Testitem *tit = data;
752 elm_genlist_item_fields_update(tit->item, "*", ELM_GENLIST_ITEM_FIELD_CONTENT);
756 test_genlist3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
758 Evas_Object *win, *gl, *bx, *bx2, *bt;
759 static Testitem tit[3];
761 win = elm_win_util_standard_add("genlist3", "Genlist 3");
762 elm_win_autodel_set(win, EINA_TRUE);
764 bx = elm_box_add(win);
765 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
766 elm_win_resize_object_add(win, bx);
767 evas_object_show(bx);
769 gl = elm_genlist_add(win);
770 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
771 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
772 evas_object_show(gl);
774 itc2.item_style = "default";
775 itc2.func.text_get = gl2_text_get;
776 itc2.func.content_get = gl2_content_get;
777 itc2.func.state_get = gl2_state_get;
778 itc2.func.del = NULL;
781 tit[0].item = elm_genlist_item_append(gl, &itc2,
782 &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
783 NULL/* func data */);
785 tit[1].item = elm_genlist_item_append(gl, &itc2,
786 &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
787 NULL/* func data */);
789 tit[2].item = elm_genlist_item_append(gl, &itc2,
790 &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
791 NULL/* func data */);
793 elm_box_pack_end(bx, gl);
794 evas_object_show(bx);
796 bx2 = elm_box_add(win);
797 elm_box_horizontal_set(bx2, EINA_TRUE);
798 elm_box_homogeneous_set(bx2, EINA_TRUE);
799 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
800 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
802 bt = elm_button_add(win);
803 elm_object_text_set(bt, "[1]");
804 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
805 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
806 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
807 elm_box_pack_end(bx2, bt);
808 evas_object_show(bt);
810 bt = elm_button_add(win);
811 elm_object_text_set(bt, "labels");
812 evas_object_smart_callback_add(bt, "clicked", my_gl_labels_update, &(tit[1]));
813 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
814 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
815 elm_box_pack_end(bx2, bt);
816 evas_object_show(bt);
818 bt = elm_button_add(win);
819 elm_object_text_set(bt, "contents");
820 evas_object_smart_callback_add(bt, "clicked", my_gl_contents_update, &(tit[2]));
821 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
822 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
823 elm_box_pack_end(bx2, bt);
824 evas_object_show(bt);
826 elm_box_pack_end(bx, bx2);
827 evas_object_show(bx2);
829 evas_object_resize(win, 320, 320);
830 evas_object_show(win);
836 my_gl_item_check_changed(void *data, Evas_Object *obj, void *event_info __UNUSED__)
838 Testitem *tit = data;
839 tit->onoff = elm_check_state_get(obj);
840 printf("item %p onoff = %i\n", tit, tit->onoff);
843 static Elm_Genlist_Item_Class itc3;
845 char *gl3_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
847 const Testitem *tit = data;
849 snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
853 Evas_Object *gl3_content_get(void *data, Evas_Object *obj, const char *part)
855 const Testitem *tit = data;
856 if (!strcmp(part, "elm.swallow.icon"))
860 lb = elm_label_add(obj);
861 elm_label_line_wrap_set(lb, ELM_WRAP_CHAR);
862 elm_label_wrap_width_set(lb, 201);
863 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");
866 else if (!strcmp(part, "elm.swallow.end"))
869 ck = elm_check_add(obj);
870 evas_object_propagate_events_set(ck, EINA_FALSE);
871 elm_check_state_set(ck, tit->onoff);
872 evas_object_smart_callback_add(ck, "changed", my_gl_item_check_changed, data);
878 Eina_Bool gl3_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
884 test_genlist4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
886 Evas_Object *win, *gl, *bx, *bx2, *bt;
887 static Testitem tit[3];
889 win = elm_win_util_standard_add("genlist4", "Genlist 4");
890 elm_win_autodel_set(win, EINA_TRUE);
892 bx = elm_box_add(win);
893 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
894 elm_win_resize_object_add(win, bx);
895 evas_object_show(bx);
897 gl = elm_genlist_add(win);
898 elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
899 elm_genlist_multi_select_set(gl, 1);
900 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
901 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
902 evas_object_show(gl);
904 itc3.item_style = "default";
905 itc3.func.text_get = gl3_text_get;
906 itc3.func.content_get = gl3_content_get;
907 itc3.func.state_get = gl3_state_get;
908 itc3.func.del = NULL;
911 tit[0].item = elm_genlist_item_append(gl, &itc3,
912 &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
913 NULL/* func data */);
915 tit[1].item = elm_genlist_item_append(gl, &itc3,
916 &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
917 NULL/* func data */);
919 tit[2].item = elm_genlist_item_append(gl, &itc3,
920 &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
921 NULL/* func data */);
923 elm_box_pack_end(bx, gl);
924 evas_object_show(bx);
926 bx2 = elm_box_add(win);
927 elm_box_horizontal_set(bx2, EINA_TRUE);
928 elm_box_homogeneous_set(bx2, EINA_TRUE);
929 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
930 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
932 bt = elm_button_add(win);
933 elm_object_text_set(bt, "[1]");
934 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
935 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
936 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
937 elm_box_pack_end(bx2, bt);
938 evas_object_show(bt);
940 bt = elm_button_add(win);
941 elm_object_text_set(bt, "[2]");
942 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
943 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
944 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
945 elm_box_pack_end(bx2, bt);
946 evas_object_show(bt);
948 bt = elm_button_add(win);
949 elm_object_text_set(bt, "[3]");
950 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
951 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
952 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
953 elm_box_pack_end(bx2, bt);
954 evas_object_show(bt);
956 elm_box_pack_end(bx, bx2);
957 evas_object_show(bx2);
959 evas_object_resize(win, 320, 320);
960 evas_object_show(win);
966 my_gl_item_check_changed2(void *data, Evas_Object *obj, void *event_info __UNUSED__)
968 Testitem *tit = data;
969 tit->onoff = elm_check_state_get(obj);
970 printf("item %p onoff = %i\n", tit, tit->onoff);
973 static Elm_Genlist_Item_Class itc5;
975 char *gl5_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
977 const Testitem *tit = data;
979 if (!strcmp(part, "elm.text"))
981 snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
983 else if (!strcmp(part, "elm.text.sub"))
985 snprintf(buf, sizeof(buf), "%i bottles on the wall", tit->mode);
990 Evas_Object *gl5_content_get(void *data, Evas_Object *obj, const char *part)
992 const Testitem *tit = data;
994 if (!strcmp(part, "elm.swallow.icon"))
996 Evas_Object *bx = elm_box_add(obj);
998 elm_box_horizontal_set(bx, EINA_TRUE);
999 ic = elm_icon_add(obj);
1000 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
1001 elm_image_file_set(ic, buf, NULL);
1002 elm_image_resizable_set(ic, 0, 0);
1003 evas_object_show(ic);
1004 elm_box_pack_end(bx, ic);
1005 ic = elm_icon_add(obj);
1006 elm_image_file_set(ic, buf, NULL);
1007 elm_image_resizable_set(ic, 0, 0);
1008 evas_object_show(ic);
1009 elm_box_pack_end(bx, ic);
1010 elm_box_horizontal_set(bx, EINA_TRUE);
1011 evas_object_show(bx);
1014 else if (!strcmp(part, "elm.swallow.end"))
1017 ck = elm_check_add(obj);
1018 evas_object_propagate_events_set(ck, EINA_FALSE);
1019 elm_check_state_set(ck, tit->onoff);
1020 evas_object_smart_callback_add(ck, "changed", my_gl_item_check_changed2, data);
1021 evas_object_show(ck);
1027 Eina_Bool gl5_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1033 item_drag_up(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1039 item_drag_down(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1045 item_drag_left(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1051 item_drag_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1057 scroll_top(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1063 scroll_bottom(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1065 INF("Bottom edge!");
1069 scroll_left(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1075 scroll_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1081 item_drag(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1087 item_drag_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1093 item_longpress(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1099 test_genlist5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1101 Evas_Object *win, *gl, *bx, *bx2, *bt;
1102 static Testitem tit[3];
1104 win = elm_win_util_standard_add("genlist5", "Genlist 5");
1105 elm_win_autodel_set(win, EINA_TRUE);
1107 bx = elm_box_add(win);
1108 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1109 elm_win_resize_object_add(win, bx);
1110 evas_object_show(bx);
1112 gl = elm_genlist_add(win);
1113 elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_ALWAYS);
1114 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1115 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1116 evas_object_show(gl);
1117 itc5.item_style = "double_label";
1118 itc5.func.text_get = gl5_text_get;
1119 itc5.func.content_get = gl5_content_get;
1120 itc5.func.state_get = gl5_state_get;
1121 itc5.func.del = NULL;
1124 tit[0].item = elm_genlist_item_append(gl, &itc5,
1125 &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
1126 NULL/* func data */);
1128 tit[1].item = elm_genlist_item_append(gl, &itc5,
1129 &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
1130 NULL/* func data */);
1132 tit[2].item = elm_genlist_item_append(gl, &itc5,
1133 &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
1134 NULL/* func data */);
1136 elm_box_pack_end(bx, gl);
1137 evas_object_show(bx);
1139 evas_object_smart_callback_add(gl, "drag,start,up", item_drag_up, NULL);
1140 evas_object_smart_callback_add(gl, "drag,start,down", item_drag_down, NULL);
1141 evas_object_smart_callback_add(gl, "drag,start,left", item_drag_left, NULL);
1142 evas_object_smart_callback_add(gl, "drag,start,right", item_drag_right, NULL);
1143 evas_object_smart_callback_add(gl, "scroll,edge,top", scroll_top, NULL);
1144 evas_object_smart_callback_add(gl, "scroll,edge,bottom", scroll_bottom, NULL);
1145 evas_object_smart_callback_add(gl, "scroll,edge,left", scroll_left, NULL);
1146 evas_object_smart_callback_add(gl, "scroll,edge,right", scroll_right, NULL);
1147 evas_object_smart_callback_add(gl, "drag", item_drag, NULL);
1148 evas_object_smart_callback_add(gl, "drag,stop", item_drag_stop, NULL);
1149 evas_object_smart_callback_add(gl, "longpressed", item_longpress, NULL);
1151 bx2 = elm_box_add(win);
1152 elm_box_horizontal_set(bx2, EINA_TRUE);
1153 elm_box_homogeneous_set(bx2, EINA_TRUE);
1154 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1155 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1157 bt = elm_button_add(win);
1158 elm_object_text_set(bt, "[1]");
1159 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
1160 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1161 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1162 elm_box_pack_end(bx2, bt);
1163 evas_object_show(bt);
1165 bt = elm_button_add(win);
1166 elm_object_text_set(bt, "[2]");
1167 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
1168 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1169 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1170 elm_box_pack_end(bx2, bt);
1171 evas_object_show(bt);
1173 bt = elm_button_add(win);
1174 elm_object_text_set(bt, "[3]");
1175 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
1176 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1177 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1178 elm_box_pack_end(bx2, bt);
1179 evas_object_show(bt);
1181 elm_box_pack_end(bx, bx2);
1182 evas_object_show(bx2);
1184 evas_object_resize(win, 320, 320);
1185 evas_object_show(win);
1190 static Elm_Genlist_Item_Class *itc4;
1193 gl4_sel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1195 Elm_Object_Item *glit = event_info;
1196 int depth = elm_genlist_item_expanded_depth_get(glit);
1197 printf("expanded depth for selected item is %d", depth);
1201 gl4_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1203 Elm_Object_Item *glit = event_info;
1204 Evas_Object *gl = elm_object_item_widget_get(glit);
1205 int val = (int)(long) elm_object_item_data_get(glit);
1209 for (i = 0; i < 10; i++)
1211 elm_genlist_item_append(gl, itc4,
1212 (void *)(long) (val + i)/* item data */,
1214 ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
1215 NULL/* func data */);
1220 gl4_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1222 Elm_Object_Item *glit = event_info;
1223 elm_genlist_item_subitems_clear(glit);
1227 gl4_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1229 Elm_Object_Item *glit = event_info;
1230 elm_genlist_item_expanded_set(glit, EINA_TRUE);
1234 gl4_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1236 Elm_Object_Item *glit = event_info;
1237 elm_genlist_item_expanded_set(glit, EINA_FALSE);
1240 char *gl4_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1243 snprintf(buf, sizeof(buf), "Item mode %i", (int)(long)data);
1247 Evas_Object *gl4_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
1250 if (!strcmp(part, "elm.swallow.icon"))
1252 Evas_Object *ic = elm_icon_add(obj);
1253 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
1254 elm_image_file_set(ic, buf, NULL);
1255 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
1256 evas_object_show(ic);
1259 else if (!strcmp(part, "elm.swallow.end"))
1262 ck = elm_check_add(obj);
1263 evas_object_propagate_events_set(ck, EINA_FALSE);
1264 evas_object_show(ck);
1270 Eina_Bool gl4_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1275 void gl4_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
1277 printf("item deleted.\n");
1281 _tree_effect_enable_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1283 elm_genlist_tree_effect_enabled_set(data, EINA_TRUE);
1287 _tree_effect_disable_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1289 elm_genlist_tree_effect_enabled_set(data, EINA_FALSE);
1293 test_genlist6(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1295 Evas_Object *win, *gl, *bx, *fr, *bx2, *rd1, *rd2;
1297 win = elm_win_util_standard_add("genlist-tree", "Genlist Tree");
1298 elm_win_autodel_set(win, EINA_TRUE);
1300 bx = elm_box_add(win);
1301 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1302 elm_win_resize_object_add(win, bx);
1303 evas_object_show(bx);
1305 fr = elm_frame_add(win);
1306 elm_object_text_set(fr, "Genlist Tree Effect");
1307 elm_box_pack_end(bx, fr);
1308 evas_object_show(fr);
1310 bx2 = elm_box_add(win);
1311 elm_box_horizontal_set(bx2, EINA_TRUE);
1312 elm_box_homogeneous_set(bx2, EINA_TRUE);
1313 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1314 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1315 elm_object_content_set(fr, bx2);
1316 evas_object_show(bx2);
1318 rd1 = elm_radio_add(win);
1319 elm_radio_state_value_set(rd1, 0);
1320 elm_object_text_set(rd1, "Enable ");
1321 evas_object_show(rd1);
1322 elm_box_pack_end(bx2, rd1);
1324 rd2 = elm_radio_add(win);
1325 elm_radio_state_value_set(rd2, 1);
1326 elm_radio_group_add(rd1, rd2);
1327 elm_object_text_set(rd2, "Disable");
1328 evas_object_show(rd2);
1329 elm_box_pack_end(bx2, rd2);
1331 gl = elm_genlist_add(win);
1332 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1333 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1334 evas_object_show(gl);
1335 elm_genlist_tree_effect_enabled_set(gl, EINA_TRUE);
1337 itc1 = elm_genlist_item_class_new();
1338 itc1->item_style = "default";
1339 itc1->func.text_get = gl4_text_get;
1340 itc1->func.content_get = gl4_content_get;
1341 itc1->func.state_get = gl4_state_get;
1342 itc1->func.del = gl4_del;
1344 itc4 = elm_genlist_item_class_new();
1345 itc4->item_style = "tree_effect";
1346 itc4->func.text_get = gl4_text_get;
1347 itc4->func.content_get = gl4_content_get;
1348 itc4->func.state_get = gl4_state_get;
1349 itc4->func.del = gl4_del;
1351 elm_genlist_item_append(gl, itc4,
1352 (void *)1/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
1353 NULL/* func data */);
1354 elm_genlist_item_append(gl, itc4,
1355 (void *)2/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
1356 NULL/* func data */);
1357 elm_genlist_item_append(gl, itc1,
1358 (void *)3/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1359 NULL/* func data */);
1361 elm_genlist_item_class_free(itc1);
1362 elm_genlist_item_class_free(itc4);
1364 evas_object_smart_callback_add(gl, "expand,request", gl4_exp_req, gl);
1365 evas_object_smart_callback_add(gl, "contract,request", gl4_con_req, gl);
1366 evas_object_smart_callback_add(gl, "expanded", gl4_exp, gl);
1367 evas_object_smart_callback_add(gl, "contracted", gl4_con, gl);
1369 elm_box_pack_end(bx, gl);
1371 evas_object_smart_callback_add(rd1, "changed", _tree_effect_enable_cb, gl);
1372 evas_object_smart_callback_add(rd2, "changed", _tree_effect_disable_cb, gl);
1374 evas_object_resize(win, 320, 320);
1375 evas_object_show(win);
1380 struct genlist7_data
1382 Evas_Object *win, *naviframe;
1385 static Elm_Genlist_Item_Class itc7;
1388 gl_sel7(void *data, Evas_Object *obj, void *event_info)
1390 if (!event_info) return;
1391 elm_genlist_item_item_class_update(event_info, &itc7);
1392 printf("sel item data [%p] on genlist obj [%p], item pointer [%p], new item style [%s] \n", data, obj, event_info, itc7.item_style);
1396 test_genlist7_back_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1398 struct genlist7_data *info = data;
1401 elm_naviframe_item_pop(info->naviframe);
1405 test_genlist7_swipe(void *data, Evas_Object *obj __UNUSED__, void *event_info)
1407 struct genlist7_data *info = data;
1408 Evas_Object *box, *entry, *button;
1409 char item_data[] = "Just a simple test";
1411 if ((!event_info) || (!data)) return;
1413 box = elm_box_add(info->win);
1414 elm_box_homogeneous_set(box, EINA_FALSE);
1415 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1416 evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
1417 evas_object_show(box);
1419 entry = elm_entry_add(info->win);
1420 elm_entry_scrollable_set(entry, EINA_TRUE);
1421 elm_entry_editable_set(entry, EINA_FALSE);
1422 elm_object_text_set(entry, item_data);
1423 evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1424 evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
1425 evas_object_show(entry);
1427 button = elm_button_add(info->win);
1428 elm_object_text_set(button, "back");
1429 evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, 0);
1430 evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0);
1431 evas_object_smart_callback_add(button, "clicked", test_genlist7_back_cb,
1433 evas_object_show(button);
1435 elm_box_pack_start(box, entry);
1436 elm_box_pack_end(box, button);
1438 elm_naviframe_item_simple_push(info->naviframe, box);
1442 test_genlist7(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1444 Evas_Object *win, *gl, *naviframe;
1445 static struct genlist7_data info;
1446 static Testitem tit[3];
1448 win = elm_win_util_standard_add("genlist7", "Genlist 7");
1449 elm_win_autodel_set(win, EINA_TRUE);
1452 naviframe = elm_naviframe_add(win);
1453 elm_win_resize_object_add(win, naviframe);
1454 evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1455 evas_object_size_hint_align_set(naviframe, EVAS_HINT_FILL, EVAS_HINT_FILL);
1456 evas_object_show(naviframe);
1457 info.naviframe = naviframe;
1459 gl = elm_genlist_add(win);
1460 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1461 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1462 evas_object_smart_callback_add(gl, "swipe", test_genlist7_swipe, &info);
1463 evas_object_show(gl);
1464 elm_naviframe_item_simple_push(naviframe, gl);
1466 itc2.item_style = "default";
1467 itc2.func.text_get = gl2_text_get;
1468 itc2.func.content_get = gl2_content_get;
1469 itc2.func.state_get = gl2_state_get;
1470 itc2.func.del = NULL;
1472 itc7.item_style = "double_label";
1473 itc7.func.text_get = gl5_text_get;
1474 itc7.func.content_get = gl5_content_get;
1475 itc7.func.state_get = gl5_state_get;
1476 itc7.func.del = NULL;
1479 tit[0].item = elm_genlist_item_append(gl, &itc2,
1480 &(tit[0])/* item data */, NULL/* parent */,
1481 ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1482 NULL/* func data */);
1484 tit[1].item = elm_genlist_item_append(gl, &itc2,
1485 &(tit[1])/* item data */, NULL/* parent */,
1486 ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1487 NULL/* func data */);
1489 tit[2].item = elm_genlist_item_append(gl, &itc2,
1490 &(tit[2])/* item data */, NULL/* parent */,
1491 ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1492 NULL/* func data */);
1494 evas_object_resize(win, 320, 320);
1495 evas_object_show(win);
1500 static Elm_Genlist_Item_Class *itc_group;
1502 char *gl8_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1505 snprintf(buf, sizeof(buf), "Group Index # %i (Item # %i)", (int)((long)data / 10), (int)(long)data);
1510 _bt_show_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1512 elm_genlist_item_show(data, ELM_GENLIST_ITEM_SCROLLTO_TOP);
1516 _bt_bring_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1518 elm_genlist_item_bring_in(data, ELM_GENLIST_ITEM_SCROLLTO_TOP);
1522 test_genlist8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1524 Evas_Object *win, *gl, *bt[8], *bx, *bx2, *bx3;
1525 Elm_Object_Item *gli = NULL, *git = NULL;
1528 win = elm_win_util_standard_add("genlist-group", "Genlist Group");
1529 elm_win_autodel_set(win, EINA_TRUE);
1531 bx = elm_box_add(win);
1532 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1533 elm_win_resize_object_add(win, bx);
1534 evas_object_show(bx);
1536 gl = elm_genlist_add(win);
1537 evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
1538 evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
1539 evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
1540 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1541 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1542 elm_box_pack_end(bx, gl);
1543 evas_object_show(gl);
1545 // Use homogeneous mode for group index + homogeneous test.
1546 // Homogeneous is not mandatory for group index.
1547 elm_genlist_homogeneous_set(gl, EINA_TRUE);
1549 itc1 = elm_genlist_item_class_new();
1550 itc1->item_style = "default";
1551 itc1->func.text_get = gl_text_get;
1552 itc1->func.content_get = gl_content_get;
1553 itc1->func.state_get = gl_state_get;
1554 itc1->func.del = NULL;
1556 itc_group = elm_genlist_item_class_new();
1557 itc_group->item_style = "group_index";
1558 itc_group->func.text_get = gl8_text_get;
1559 itc_group->func.content_get = NULL;
1560 itc_group->func.state_get = NULL;
1561 itc_group->func.del = NULL;
1563 bx2 = elm_box_add(win);
1564 elm_box_horizontal_set(bx2, EINA_TRUE);
1565 elm_box_homogeneous_set(bx2, EINA_TRUE);
1566 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1567 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1570 bt[bt_num] = elm_button_add(win);
1571 elm_object_text_set(bt[bt_num], "Show 0");
1572 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1573 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1574 evas_object_show(bt[bt_num]);
1575 elm_box_pack_end(bx2, bt[bt_num]);
1577 bt[++bt_num] = elm_button_add(win);
1578 elm_object_text_set(bt[bt_num], "Show 26");
1579 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1580 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1581 evas_object_show(bt[bt_num]);
1582 elm_box_pack_end(bx2, bt[bt_num]);
1584 bt[++bt_num] = elm_button_add(win);
1585 elm_object_text_set(bt[bt_num], "Show 101");
1586 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1587 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1588 evas_object_show(bt[bt_num]);
1589 elm_box_pack_end(bx2, bt[bt_num]);
1591 bt[++bt_num] = elm_button_add(win);
1592 elm_object_text_set(bt[bt_num], "Show 480");
1593 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1594 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1595 evas_object_show(bt[bt_num]);
1596 elm_box_pack_end(bx2, bt[bt_num]);
1598 elm_box_pack_end(bx, bx2);
1599 evas_object_show(bx2);
1601 bx3 = elm_box_add(win);
1602 elm_box_horizontal_set(bx3, EINA_TRUE);
1603 elm_box_homogeneous_set(bx3, EINA_TRUE);
1604 evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
1605 evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
1607 bt[++bt_num] = elm_button_add(win);
1608 elm_object_text_set(bt[bt_num], "Bring top 0");
1609 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1610 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1611 evas_object_show(bt[bt_num]);
1612 elm_box_pack_end(bx3, bt[bt_num]);
1614 bt[++bt_num] = elm_button_add(win);
1615 elm_object_text_set(bt[bt_num], "Bring top 31");
1616 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1617 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1618 evas_object_show(bt[bt_num]);
1619 elm_box_pack_end(bx3, bt[bt_num]);
1621 bt[++bt_num] = elm_button_add(win);
1622 elm_object_text_set(bt[bt_num], "Bring top 239");
1623 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1624 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1625 evas_object_show(bt[bt_num]);
1626 elm_box_pack_end(bx3, bt[bt_num]);
1628 bt[++bt_num] = elm_button_add(win);
1629 elm_object_text_set(bt[bt_num], "Bring top 477");
1630 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1631 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1632 evas_object_show(bt[bt_num]);
1633 elm_box_pack_end(bx3, bt[bt_num]);
1635 elm_box_pack_end(bx, bx3);
1636 evas_object_show(bx3);
1638 for (i = 0; i < 500; i++)
1642 gli = git = elm_genlist_item_append(gl, itc_group,
1643 (void *)(long)i/* item data */,
1645 ELM_GENLIST_ITEM_GROUP,
1647 (void *)(long)(i * 10)/* func data */);
1648 elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1652 gli = elm_genlist_item_append(gl, itc1,
1653 (void *)(long)i/* item data */,
1655 ELM_GENLIST_ITEM_NONE,
1657 (void *)(long)(i * 10)/* func data */);
1662 evas_object_smart_callback_add(bt[0], "clicked", _bt_show_cb, gli);
1663 evas_object_smart_callback_add(bt[4], "clicked", _bt_bring_cb, gli);
1666 evas_object_smart_callback_add(bt[1], "clicked", _bt_show_cb, gli);
1669 evas_object_smart_callback_add(bt[5], "clicked", _bt_bring_cb, gli);
1672 evas_object_smart_callback_add(bt[2], "clicked", _bt_show_cb, gli);
1675 evas_object_smart_callback_add(bt[6], "clicked", _bt_bring_cb, gli);
1678 evas_object_smart_callback_add(bt[7], "clicked", _bt_bring_cb, gli);
1681 evas_object_smart_callback_add(bt[3], "clicked", _bt_show_cb, gli);
1685 elm_genlist_item_class_free(itc1);
1686 elm_genlist_item_class_free(itc_group);
1688 evas_object_resize(win, 480, 800);
1689 evas_object_show(win);
1695 gl9_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1697 Elm_Object_Item *glit = event_info;
1698 Evas_Object *gl = elm_object_item_widget_get(glit);
1699 int val = (int)(long) elm_object_item_data_get(glit);
1701 elm_genlist_item_append(gl, itc1,
1702 (void *)(long) (val + 1)/* item data */,
1704 ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1705 NULL/* func data */);
1706 elm_genlist_item_append(gl, itc1,
1707 (void *)(long) (val + 2)/* item data */,
1709 ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1710 NULL/* func data */);
1711 elm_genlist_item_append(gl, itc1,
1712 (void *)(long) (val + 3)/* item data */,
1714 ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
1715 NULL/* func data */);
1719 gl9_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1721 Elm_Object_Item *glit = event_info;
1722 elm_genlist_item_subitems_clear(glit);
1726 gl9_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1728 Elm_Object_Item *glit = event_info;
1729 elm_genlist_item_expanded_set(glit, EINA_TRUE);
1733 gl9_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1735 Elm_Object_Item *glit = event_info;
1736 elm_genlist_item_expanded_set(glit, EINA_FALSE);
1740 test_genlist9(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1742 Evas_Object *win, *gl, *bx;
1743 Elm_Object_Item *git;
1745 win = elm_win_util_standard_add("genlist-group-tree", "Genlist Group Tree");
1746 elm_win_autodel_set(win, EINA_TRUE);
1748 bx = elm_box_add(win);
1749 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1750 elm_win_resize_object_add(win, bx);
1751 evas_object_show(bx);
1753 gl = elm_genlist_add(win);
1754 evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
1755 evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
1756 evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
1757 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1758 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1759 elm_box_pack_end(bx, gl);
1760 evas_object_show(gl);
1762 itc1 = elm_genlist_item_class_new();
1763 itc1->item_style = "default";
1764 itc1->func.text_get = gl_text_get;
1765 itc1->func.content_get = gl_content_get;
1766 itc1->func.state_get = gl_state_get;
1767 itc1->func.del = NULL;
1769 itc_group = elm_genlist_item_class_new();
1770 itc_group->item_style = "group_index";
1771 itc_group->func.text_get = gl8_text_get;
1772 itc_group->func.content_get = NULL;
1773 itc_group->func.state_get = NULL;
1774 itc_group->func.del = NULL;
1776 git = elm_genlist_item_append(gl, itc_group,
1777 (void *)0/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_GROUP, gl4_sel/* func */,
1778 NULL/* func data */);
1779 elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1781 elm_genlist_item_append(gl, itc1,
1782 (void *)1/* item data */, git/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
1783 NULL/* func data */);
1784 elm_genlist_item_append(gl, itc1,
1785 (void *)2/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1786 NULL/* func data */);
1787 elm_genlist_item_append(gl, itc1,
1788 (void *)3/* item data */, git/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
1789 NULL/* func data */);
1790 git = elm_genlist_item_append(gl, itc_group,
1791 (void *)4/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_GROUP, gl4_sel/* func */,
1792 NULL/* func data */);
1793 elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1795 elm_genlist_item_append(gl, itc1,
1796 (void *)5/* item data */, git/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
1797 NULL/* func data */);
1798 elm_genlist_item_append(gl, itc1,
1799 (void *)6/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1800 NULL/* func data */);
1801 elm_genlist_item_append(gl, itc1,
1802 (void *)7/* item data */, git/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
1803 NULL/* func data */);
1804 elm_genlist_item_class_free(itc1);
1805 elm_genlist_item_class_free(itc_group);
1807 evas_object_smart_callback_add(gl, "expand,request", gl9_exp_req, gl);
1808 evas_object_smart_callback_add(gl, "contract,request", gl9_con_req, gl);
1809 evas_object_smart_callback_add(gl, "expanded", gl9_exp, gl);
1810 evas_object_smart_callback_add(gl, "contracted", gl9_con, gl);
1812 evas_object_resize(win, 480, 800);
1813 evas_object_show(win);
1818 static Elm_Genlist_Item_Class itc10;
1819 static char *mode_type[] = { "slide", "rotate" };
1821 char *gl10_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
1824 if (!strcmp(part, "elm.text.mode"))
1825 snprintf(buf, sizeof(buf), "Mode # %i", (int)(long)data);
1827 snprintf(buf, sizeof(buf), "Item # %i", (int)(long)data);
1831 Evas_Object *gl10_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
1834 Evas_Object *ic = elm_icon_add(obj);
1835 if (!strcmp(part, "elm.swallow.end"))
1836 snprintf(buf, sizeof(buf), "%s/images/bubble.png", elm_app_data_dir_get());
1838 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
1839 elm_image_file_set(ic, buf, NULL);
1840 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
1845 _gl_sel10(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1848 int v = elm_radio_value_get(data);
1850 elm_genlist_item_decorate_mode_set(event_info, mode_type[v], EINA_TRUE);
1854 _my_gl_mode_right(void *data, Evas_Object *obj __UNUSED__, void *event_info)
1857 int v = elm_radio_value_get(data);
1859 elm_genlist_item_decorate_mode_set(event_info, mode_type[v], EINA_TRUE);
1863 _my_gl_mode_left(void *data, Evas_Object *obj __UNUSED__, void *event_info)
1866 int v = elm_radio_value_get(data);
1868 elm_genlist_item_decorate_mode_set(event_info, mode_type[v], EINA_FALSE);
1872 _my_gl_mode_cancel(void *data, Evas_Object *obj, void *event_info __UNUSED__)
1874 fprintf(stderr, "drag\n");
1876 int v = elm_radio_value_get(data);
1877 Elm_Object_Item *glit = elm_genlist_decorated_item_get(obj);
1878 if (glit) elm_genlist_item_decorate_mode_set(glit, mode_type[v], EINA_FALSE);
1882 test_genlist10(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1884 Evas_Object *win, *fr, *bx, *bx2, *rd, *rdg, *gl;
1887 win = elm_win_util_standard_add("genlist-decorate-item-mode", "Genlist Decorate Item Mode");
1888 elm_win_autodel_set(win, EINA_TRUE);
1890 bx = elm_box_add(win);
1891 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1892 elm_win_resize_object_add(win, bx);
1893 evas_object_show(bx);
1895 fr = elm_frame_add(win);
1896 elm_object_text_set(fr, "Decorate Mode Type");
1897 elm_box_pack_end(bx, fr);
1898 evas_object_show(fr);
1900 bx2 = elm_box_add(win);
1901 elm_object_content_set(fr, bx2);
1902 evas_object_show(bx2);
1904 rd = elm_radio_add(win);
1905 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1906 elm_radio_state_value_set(rd, 0);
1907 elm_object_text_set(rd, "Slide : Sweep genlist items to the right.");
1908 evas_object_show(rd);
1909 elm_box_pack_end(bx2, rd);
1912 rd = elm_radio_add(win);
1913 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1914 elm_radio_state_value_set(rd, 1);
1915 elm_object_text_set(rd, "Rotate : Click each item.");
1916 elm_radio_group_add(rd, rdg);
1917 evas_object_show(rd);
1918 elm_box_pack_end(bx2, rd);
1920 gl = elm_genlist_add(win);
1921 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1922 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1923 evas_object_smart_callback_add(gl, "drag,start,right", _my_gl_mode_right, rdg);
1924 evas_object_smart_callback_add(gl, "drag,start,left", _my_gl_mode_left, rdg);
1925 evas_object_smart_callback_add(gl, "drag,start,up", _my_gl_mode_cancel, rdg);
1926 evas_object_smart_callback_add(gl, "drag,start,down", _my_gl_mode_cancel, rdg);
1927 evas_object_show(gl);
1929 itc10.item_style = "default";
1930 itc10.decorate_item_style = "mode";
1931 itc10.func.text_get = gl10_text_get;
1932 itc10.func.content_get = gl10_content_get;
1933 itc10.func.state_get = gl_state_get;
1934 itc10.func.del = NULL;
1936 for (i = 0; i < 50; i++)
1937 elm_genlist_item_append(gl,
1939 (void *)(long)(1000 + i)/* item data */,
1941 ELM_GENLIST_ITEM_NONE/* flags */,
1942 _gl_sel10/* func */,
1943 rdg/* func data */);
1945 elm_box_pack_end(bx, gl);
1947 evas_object_resize(win, 520, 520);
1948 evas_object_show(win);
1954 _reorder_tg_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
1956 elm_genlist_reorder_mode_set(data, elm_check_state_get(obj));
1960 * gl_moved is called after an item was reordered.
1961 * This is only called when reorder mode is enabled.
1963 * @param data : the genlist object passed as data.
1964 * @param obj : the genlist object.
1965 * @param item : the moved item.
1967 * the item(*item) had been moved
1970 static void gl_moved(Evas_Object *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Object_Item *item __UNUSED__)
1972 // if needed, add application logic.
1976 * gl_moved_after is called after an item was reordered.
1977 * This is only called when reorder mode is enabled.
1979 * @param data : the genlist object passed as data.
1980 * @param obj : the genlist object.
1981 * @param item : the moved item.
1983 * the item(*item) had been moved after the given relative item(*rel_item) in list.
1986 static void gl_moved_after(Evas_Object *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Object_Item *item __UNUSED__)
1988 // if needed, add application logic.
1989 Elm_Object_Item *it;
1990 it = elm_genlist_item_prev_get(item);
1991 printf("it=%p, prev_it=%p\n",item,it);
1995 * gl_moved_before is called after an item was reordered.
1996 * This is only called when reorder mode is enabled.
1998 * @param data : the genlist object passed as data.
1999 * @param obj : the genlist object.
2000 * @param item : the moved item.
2002 * the item(*item) had been moved before the given relative item(*rel_item) in list.
2005 static void gl_moved_before(Evas_Object *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Object_Item *item __UNUSED__)
2007 // if needed, add application logic.
2008 Elm_Object_Item *it;
2009 it = elm_genlist_item_next_get(item);
2010 printf("it=%p, next_it=%p\n",item,it);
2014 test_genlist11(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2016 Evas_Object *win, *fr, *lb, *bx, *tg, *gl;
2019 win = elm_win_util_standard_add("genlist-reorder-mode", "Genlist Reorder Mode");
2020 elm_win_autodel_set(win, EINA_TRUE);
2022 bx = elm_box_add(win);
2023 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2024 elm_win_resize_object_add(win, bx);
2025 evas_object_show(bx);
2027 fr = elm_frame_add(win);
2029 elm_object_text_set(fr, "Reorder Mode");
2030 elm_box_pack_end(bx, fr);
2031 evas_object_show(fr);
2033 lb = elm_label_add(win);
2034 elm_object_text_set(lb,
2035 "Enable reorder mode if you want to move item.<br/>"
2036 "Then long press and drag item.");
2037 elm_object_content_set(fr, lb);
2038 evas_object_show(lb);
2040 gl = elm_genlist_add(win);
2041 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
2042 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2043 evas_object_show(gl);
2045 tg = elm_check_add(win);
2046 elm_object_style_set(tg, "toggle");
2047 elm_object_text_set(tg, "Reorder Mode:");
2048 elm_check_state_set(tg, elm_config_mirrored_get());
2049 evas_object_smart_callback_add(tg, "changed", _reorder_tg_changed_cb, gl);
2050 elm_box_pack_end(bx, tg);
2051 evas_object_show(tg);
2053 itc1 = elm_genlist_item_class_new();
2054 itc1->item_style = "default";
2055 itc1->func.text_get = gl_text_get;
2056 itc1->func.content_get = gl_content_get;
2057 itc1->func.state_get = gl_state_get;
2058 itc1->func.del = NULL;
2059 evas_object_smart_callback_add(gl, "moved", (Evas_Smart_Cb)gl_moved, gl);
2060 evas_object_smart_callback_add(gl, "moved,after", (Evas_Smart_Cb)gl_moved_after, gl);
2061 evas_object_smart_callback_add(gl, "moved,before", (Evas_Smart_Cb)gl_moved_before, gl);
2063 for (i = 0; i < 50; i++)
2064 elm_genlist_item_append(gl,
2066 (void *)(long)(1 + i)/* item data */,
2068 ELM_GENLIST_ITEM_NONE/* flags */,
2070 NULL/* func data */);
2072 elm_genlist_item_class_free(itc1);
2074 elm_box_pack_end(bx, gl);
2076 evas_object_resize(win, 400, 500);
2077 evas_object_show(win);
2082 char *gl12_text_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
2084 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).");
2088 test_genlist12(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2090 Evas_Object *win, *bx, *gl;
2093 win = elm_win_util_standard_add("genlist-textblock", "Genlist Textblock");
2094 elm_win_autodel_set(win, EINA_TRUE);
2096 bx = elm_box_add(win);
2097 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2098 elm_win_resize_object_add(win, bx);
2099 evas_object_show(bx);
2101 gl = elm_genlist_add(win);
2102 elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
2103 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2104 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
2105 elm_box_pack_end(bx, gl);
2106 evas_object_show(gl);
2108 itc1 = elm_genlist_item_class_new();
2109 itc1->item_style = "message";
2110 itc1->func.text_get = gl12_text_get;
2111 itc1->func.content_get = gl_content_get;
2112 itc1->func.state_get = gl_state_get;
2113 itc1->func.del = NULL;
2115 for (i = 0; i < 1000; i++)
2117 elm_genlist_item_append(gl, itc1,
2118 (void *)(long)i/* item data */,
2120 ELM_GENLIST_ITEM_NONE,
2122 (void *)(long)(i * 10)/* func data */);
2124 elm_genlist_item_class_free(itc1);
2126 evas_object_resize(win, 400, 500);
2127 evas_object_show(win);
2133 gl13_cmp(const void *pa, const void *pb)
2135 const Elm_Object_Item *ia = pa, *ib = pb;
2136 int a = (int)(long) elm_object_item_data_get(ia);
2137 int b = (int)(long) elm_object_item_data_get(ib);
2142 test_genlist13(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2144 Elm_Object_Item *pi[6];
2145 Evas_Object *win, *bx, *gl; int i, base, idx[3] = {1, 10, 15};
2147 win = elm_win_util_standard_add("genlist-tree-insert-sorted", "Genlist Tree, Insert Sorted");
2148 elm_win_autodel_set(win, EINA_TRUE);
2150 bx = elm_box_add(win);
2151 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2152 elm_win_resize_object_add(win, bx);
2153 evas_object_show(bx);
2155 gl = elm_genlist_add(win);
2156 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
2157 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2158 evas_object_show(gl);
2160 itc4 = elm_genlist_item_class_new();
2161 itc4->item_style = "default";
2162 itc4->func.text_get = gl4_text_get;
2163 itc4->func.content_get = NULL;
2164 itc4->func.state_get = NULL;
2165 itc4->func.del = NULL;
2167 /* mixed order to test insert sorted */
2169 for (i = 0; i < 3; i++)
2171 pi[i] = elm_genlist_item_sorted_insert
2172 (gl, itc4, (void *)(long)idx[i]/* item data */, NULL/* parent */,
2173 ELM_GENLIST_ITEM_TREE, gl13_cmp/* cmp */,
2174 NULL/* func */, NULL/* func data */);
2177 for (i = 0, base = 100; i < 3; i++, base += 100)
2180 for (j = 0; j < 3; j++)
2182 elm_genlist_item_sorted_insert
2183 (gl, itc4, (void *)(long)(idx[j] + base)/* item data */,
2184 pi[i]/* parent */, ELM_GENLIST_ITEM_NONE,
2185 gl13_cmp/* cmp */, NULL/* func */, NULL/* func data */);
2189 for (i = 0; i < 3; i++)
2191 pi[i + 3] = elm_genlist_item_sorted_insert
2192 (gl, itc4, (void *)(long)(idx[i] * 2)/* item data */, NULL/* parent */,
2193 ELM_GENLIST_ITEM_TREE, gl13_cmp/* cmp */, NULL/* func */,
2194 NULL/* func data */);
2198 for (i = 0, base = 10000; i < 3; i++, base += 10000)
2201 for (j = 0; j < 3; j++)
2203 elm_genlist_item_sorted_insert
2204 (gl, itc4, (void *)(long)(idx[j] + base)/* item data */,
2205 pi[i + 3]/* parent */, ELM_GENLIST_ITEM_NONE,
2206 gl13_cmp/* cmp */, NULL/* func */, NULL/* func data */);
2209 elm_genlist_item_class_free(itc4);
2210 elm_box_pack_end(bx, gl);
2211 evas_object_show(bx);
2213 evas_object_resize(win, 320, 320);
2214 evas_object_show(win);
2220 my_gl_insert_before_rel(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2222 Evas_Object *gl = data;
2223 static int i = 1000;
2224 Elm_Object_Item *gli_selected;
2226 if (!itc1) itc1 = elm_genlist_item_class_new();
2227 itc1->item_style = "default";
2228 itc1->func.text_get = gl_text_get;
2229 itc1->func.content_get = NULL;
2230 itc1->func.state_get = NULL;
2231 itc1->func.del = NULL;
2233 gli_selected = elm_genlist_selected_item_get(gl);
2236 printf("no item selected\n");
2240 elm_genlist_item_insert_before(gl, itc1,
2241 (void *)(long)i/* item data */,
2242 elm_genlist_item_parent_get(gli_selected),
2243 gli_selected/* item before */,
2244 ELM_GENLIST_ITEM_NONE,
2245 NULL/* func */, NULL/* func data */);
2250 my_gl_insert_after_rel(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2252 Evas_Object *gl = data;
2254 Elm_Object_Item *gli_selected;
2256 if (!itc1) itc1 = elm_genlist_item_class_new();
2257 itc1->item_style = "default";
2258 itc1->func.text_get = gl_text_get;
2259 itc1->func.content_get = NULL;
2260 itc1->func.state_get = NULL;
2261 itc1->func.del = NULL;
2263 gli_selected = elm_genlist_selected_item_get(gl);
2266 printf("no item selected\n");
2270 elm_genlist_item_insert_after(gl, itc1,
2271 (void *)(long)i/* item data */,
2272 elm_genlist_item_parent_get(gli_selected),
2273 gli_selected/* item after */,
2274 ELM_GENLIST_ITEM_NONE,
2275 NULL/* func */, NULL/* func data */);
2280 test_genlist14(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2282 Elm_Object_Item *pi[6];
2283 Evas_Object *win, *bx, *bx2, *bt, *gl;
2285 /* index: 0, 1, 2, 3, 4, 5
2286 * items: 1, 15, 11, 2, 33, 21
2287 * final: 1, 2, 11, 15, 21, 33
2289 const int idx[6] = {1, 15, 11, 2, 33, 21};
2290 const int relative[6] = {
2291 0, /* item '1' - not used */
2292 0, /* item '15' - insert after pi[0], item '1' */
2293 -1, /* item '11' - insert before pi[1], item '15' */
2294 -2, /* item '2' - insert before pi[2], item '11' */
2295 1, /* item '33' - insert after pi[1], item '15' */
2296 -4 /* item '21' - insert before pi[4], item '33' */
2299 win = elm_win_util_standard_add("genlist-tree-insert-relative", "Genlist Tree, Insert Relative");
2300 elm_win_autodel_set(win, EINA_TRUE);
2302 bx = elm_box_add(win);
2303 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2304 elm_win_resize_object_add(win, bx);
2305 evas_object_show(bx);
2307 gl = elm_genlist_add(win);
2308 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
2309 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2310 evas_object_show(gl);
2312 itc4 = elm_genlist_item_class_new();
2313 itc4->item_style = "default";
2314 itc4->func.text_get = gl4_text_get;
2315 itc4->func.content_get = NULL;
2316 itc4->func.state_get = NULL;
2317 itc4->func.del = NULL;
2319 /* mixed order to test insert sorted */
2321 // BUG1: should be able to insert before=NULL, prepend
2322 // BUG2: should be able to insert after=NULL, append
2324 pi[0] = elm_genlist_item_append
2325 (gl, itc4, (void *)(long)idx[0]/* item data */,
2327 ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2329 for (i = 1; i < 3; i++)
2331 if (relative[i] < 0)
2332 pi[i] = elm_genlist_item_insert_before
2333 (gl, itc4, (void *)(long)idx[i]/* item data */,
2334 NULL/* parent */, pi[-relative[i]],
2335 ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2337 pi[i] = elm_genlist_item_insert_after
2338 (gl, itc4, (void *)(long)idx[i]/* item data */,
2339 NULL/* parent */, pi[relative[i]],
2340 ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2343 for (i = 0; i < 3; i++)
2345 Elm_Object_Item *sub_glit[6];
2348 base = 1000 * (int)(long) elm_object_item_data_get(pi[i]);
2350 sub_glit[0] = elm_genlist_item_append
2351 (gl, itc4, (void *)(long) (idx[0] + base)/* item data */, pi[i]/* parent */,
2352 ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2354 for (j = 1; j < 6; j++) {
2355 if (relative[j] < 0)
2356 sub_glit[j] = elm_genlist_item_insert_before
2357 (gl, itc4, (void *)(long) (idx[j] + base)/* item data */,
2358 pi[i]/* parent */, sub_glit[-relative[j]],
2359 ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2361 sub_glit[j] = elm_genlist_item_insert_after
2362 (gl, itc4, (void *)(long) (idx[j] + base)/* item data */,
2363 pi[i]/* parent */, sub_glit[relative[j]],
2364 ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2368 for (i = 3; i < 6; i++)
2370 if (relative[i] < 0)
2371 pi[i] = elm_genlist_item_insert_before
2372 (gl, itc4, (void *)(long) idx[i]/* item data */,
2373 NULL/* parent */, pi[-relative[i]],
2374 ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2376 pi[i] = elm_genlist_item_insert_after
2377 (gl, itc4, (void *)(long) idx[i]/* item data */,
2378 NULL/* parent */, pi[relative[i]],
2379 ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2382 for (i = 3; i < 6; i++)
2384 Elm_Object_Item *sub_glit[6];
2387 base = 1000 * (int)(long) elm_object_item_data_get(pi[i]);
2389 sub_glit[0] = elm_genlist_item_append
2390 (gl, itc4, (void *)(long) (idx[0] + base)/* item data */, pi[i]/* parent */,
2391 ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2393 for (j = 1; j < 6; j++) {
2394 if (relative[j] < 0)
2395 sub_glit[j] = elm_genlist_item_insert_before
2396 (gl, itc4, (void *)(long) (idx[j] + base)/* item data */,
2397 pi[i]/* parent */, sub_glit[-relative[j]],
2398 ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2400 sub_glit[j] = elm_genlist_item_insert_after
2401 (gl, itc4, (void *)(long) (idx[j] + base)/* item data */,
2402 pi[i]/* parent */, sub_glit[relative[j]],
2403 ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
2407 elm_box_pack_end(bx, gl);
2408 evas_object_show(bx);
2410 bx2 = elm_box_add(win);
2411 elm_box_horizontal_set(bx2, EINA_TRUE);
2412 elm_box_homogeneous_set(bx2, EINA_TRUE);
2413 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
2414 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
2416 bt = elm_button_add(win);
2417 elm_object_text_set(bt, "+ before");
2418 evas_object_smart_callback_add(bt, "clicked", my_gl_insert_before_rel, gl);
2419 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2420 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2421 elm_box_pack_end(bx2, bt);
2422 evas_object_show(bt);
2424 bt = elm_button_add(win);
2425 elm_object_text_set(bt, "+ after");
2426 evas_object_smart_callback_add(bt, "clicked", my_gl_insert_after_rel, gl);
2427 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2428 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2429 elm_box_pack_end(bx2, bt);
2430 evas_object_show(bt);
2432 elm_box_pack_end(bx, bx2);
2433 evas_object_show(bx2);
2435 /* item_class_ref is needed for itc4. some items can be added in callbacks */
2436 elm_genlist_item_class_ref(itc4);
2437 elm_genlist_item_class_free(itc4);
2439 evas_object_resize(win, 320, 320);
2440 evas_object_show(win);
2445 static void _edit_icon_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2447 Elm_Object_Item *item = (Elm_Object_Item *)data;
2448 elm_object_item_del(item);
2451 char *gl15_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
2453 const Testitem *tit = data;
2455 snprintf(buf, sizeof(buf), "Item #%i", tit->mode);
2459 Evas_Object *gl15_content_get(void *data, Evas_Object *obj, const char *part)
2461 Testitem *tit = data;
2464 // "edit_default" EDC layout is like below. each part is swallow part.
2465 // the existing item is swllowed to elm.swallow.edit.content part.
2466 // --------------------------------------------------------------------
2467 // | elm.edit.icon.1 | elm.swallow.decorate.content | elm.edit.icon,2 |
2468 // --------------------------------------------------------------------
2470 if (!strcmp(part, "elm.swallow.end"))
2472 Evas_Object *ic = elm_icon_add(obj);
2473 snprintf(buf, sizeof(buf), "%s/images/bubble.png", PACKAGE_DATA_DIR);
2474 elm_image_file_set(ic, buf, NULL);
2475 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
2478 else if (!strcmp(part, "elm.edit.icon.1"))
2481 ck = elm_check_add(obj);
2482 elm_check_state_pointer_set(ck, &tit->checked);
2483 evas_object_propagate_events_set(ck, EINA_FALSE);
2484 evas_object_show(ck);
2487 else if (!strcmp(part, "elm.edit.icon.2"))
2489 Evas_Object *icn = elm_icon_add(obj);
2490 snprintf(buf, sizeof(buf), "%s/images/icon_06.png", PACKAGE_DATA_DIR);
2491 elm_image_file_set(icn, buf, NULL);
2492 evas_object_propagate_events_set(icn, EINA_FALSE);
2493 evas_object_size_hint_aspect_set(icn, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
2494 evas_object_smart_callback_add(icn, "clicked", _edit_icon_clicked_cb, (void *)tit->item);
2501 gl15_sel(void *data, Evas_Object *obj, void *event_info __UNUSED__)
2503 Testitem *tit = data;
2504 if (elm_genlist_decorate_mode_get(obj))
2506 if (!tit->checked) tit->checked = EINA_TRUE;
2507 else tit->checked = EINA_FALSE;
2509 elm_genlist_item_update(tit->item);
2513 gl15_deco_all_mode(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2515 elm_genlist_decorate_mode_set(data, EINA_TRUE);
2516 elm_genlist_select_mode_set(data, ELM_OBJECT_SELECT_MODE_ALWAYS);
2520 gl15_normal_mode(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2522 elm_genlist_decorate_mode_set(data, EINA_FALSE);
2523 elm_genlist_select_mode_set(data, ELM_OBJECT_SELECT_MODE_DEFAULT);
2526 void gl15_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
2528 printf("item deleted.\n");
2531 static Elm_Genlist_Item_Class *itc15;
2533 test_genlist15(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2535 Evas_Object *win, *bx, *bx2, *bt, *gl;
2537 static Testitem tit[100];
2539 win = elm_win_util_standard_add("genlist-decorate-all-mode", "Genlist Decorate All Mode");
2540 elm_win_autodel_set(win, EINA_TRUE);
2542 bx = elm_box_add(win);
2543 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2544 elm_win_resize_object_add(win, bx);
2545 evas_object_show(bx);
2547 gl = elm_genlist_add(win);
2548 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
2549 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2550 evas_object_show(gl);
2552 itc15 = elm_genlist_item_class_new();
2553 itc15->item_style = "default";
2554 itc15->func.text_get = gl15_text_get;
2555 itc15->func.content_get = gl15_content_get;
2556 itc15->func.state_get = gl_state_get;
2557 itc15->func.del = gl15_del;
2558 itc15->decorate_all_item_style = "edit";
2560 for (i = 0; i < 100; i++)
2563 tit[i].item = elm_genlist_item_append(gl, itc15,
2564 &(tit[i])/* item data */,
2566 ELM_GENLIST_ITEM_NONE/* flags */,
2568 (void *)(long)&(tit[i])/* func data */);
2570 elm_genlist_item_class_free(itc15);
2571 elm_box_pack_end(bx, gl);
2572 evas_object_show(bx);
2574 bx2 = elm_box_add(win);
2575 elm_box_horizontal_set(bx2, EINA_TRUE);
2576 elm_box_homogeneous_set(bx2, EINA_TRUE);
2577 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
2578 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
2580 bt = elm_button_add(win);
2581 elm_object_text_set(bt, "Decorate All mode");
2582 evas_object_smart_callback_add(bt, "clicked", gl15_deco_all_mode, gl);
2583 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2584 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2585 elm_box_pack_end(bx2, bt);
2586 evas_object_show(bt);
2588 bt = elm_button_add(win);
2589 elm_object_text_set(bt, "Normal mode");
2590 evas_object_smart_callback_add(bt, "clicked", gl15_normal_mode,gl);
2591 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2592 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2593 elm_box_pack_end(bx2, bt);
2594 evas_object_show(bt);
2596 elm_box_pack_end(bx, bx2);
2597 evas_object_show(bx2);
2599 evas_object_resize(win, 520, 520);
2600 evas_object_show(win);
2605 static void _flip_icon_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2607 const Testitem *tit = data;
2609 if (elm_genlist_item_flip_get(tit->item))
2610 elm_genlist_item_flip_set(tit->item, EINA_FALSE);
2612 elm_genlist_item_flip_set(tit->item, EINA_TRUE);
2615 char *gl16_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
2617 const Testitem *tit = data;
2619 snprintf(buf, sizeof(buf), "Item #%i", tit->mode);
2623 Evas_Object *gl16_content_get(void *data, Evas_Object *obj, const char *part)
2625 Testitem *tit = data;
2628 if (!strcmp(part, "elm.text.flip"))
2630 Evas_Object *btn = elm_button_add(obj);
2631 elm_object_text_set(btn, "flipped content placement");
2632 evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
2633 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
2634 evas_object_smart_callback_add(btn, "clicked", _flip_icon_clicked_cb, (void *)tit);
2635 evas_object_show(btn);
2638 else if (!strcmp(part, "elm.edit.icon.1"))
2640 Evas_Object *icn = elm_icon_add(obj);
2641 snprintf(buf, sizeof(buf), "%s/images/icon_04.png", PACKAGE_DATA_DIR);
2642 elm_image_file_set(icn, buf, NULL);
2643 evas_object_propagate_events_set(icn, EINA_FALSE);
2644 evas_object_size_hint_aspect_set(icn, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
2647 else if (!strcmp(part, "elm.edit.icon.2"))
2649 Evas_Object *icn = elm_icon_add(obj);
2650 snprintf(buf, sizeof(buf), "%s/images/icon_09.png", PACKAGE_DATA_DIR);
2651 elm_image_file_set(icn, buf, NULL);
2652 evas_object_propagate_events_set(icn, EINA_FALSE);
2653 evas_object_size_hint_aspect_set(icn, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
2654 evas_object_smart_callback_add(icn, "clicked", _flip_icon_clicked_cb, (void *)tit);
2661 test_genlist16(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2663 Evas_Object *win, *bx, *gl;
2665 static Testitem tit[100];
2667 win = elm_win_util_standard_add("genlist-flip-mode", "Genlist Flip Mode");
2668 elm_win_autodel_set(win, EINA_TRUE);
2670 bx = elm_box_add(win);
2671 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2672 elm_win_resize_object_add(win, bx);
2673 evas_object_show(bx);
2675 gl = elm_genlist_add(win);
2676 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
2677 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2678 evas_object_show(gl);
2680 /* note: flip mode can be used with/without edit mode */
2681 elm_genlist_decorate_mode_set(gl, EINA_TRUE);
2682 elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_ALWAYS);
2684 itc15 = elm_genlist_item_class_new();
2685 itc15->item_style = "default";
2686 itc15->func.text_get = gl16_text_get;
2687 itc15->func.content_get = gl16_content_get;
2688 itc15->func.state_get = gl_state_get;
2689 itc15->func.del = NULL;
2690 itc15->decorate_all_item_style = "edit";
2692 for (i = 0; i < 100; i++)
2695 tit[i].item = elm_genlist_item_append(gl, itc15,
2696 &(tit[i])/* item data */,
2698 ELM_GENLIST_ITEM_NONE/* flags */,
2700 (void *)(long)&(tit[i])/* func data */);
2702 elm_genlist_item_class_free(itc15);
2703 elm_box_pack_end(bx, gl);
2704 evas_object_show(bx);
2706 evas_object_resize(win, 520, 520);
2707 evas_object_show(win);
2712 static Elm_Genlist_Item_Class *itc17;
2715 gl17_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
2717 const Testitem *tit = data;
2719 if (!strcmp(part, "elm.text.mode"))
2720 snprintf(buf, sizeof(buf), "Mode # %i", tit->mode);
2722 snprintf(buf, sizeof(buf), "Item # %i", (int)(long)data);
2727 _decorate_item_mode_frame_new(Evas_Object *win, Evas_Object **rdg)
2729 Evas_Object *fr, *bx, *rd;
2731 fr = elm_frame_add(win);
2732 evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2733 evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
2734 elm_object_text_set(fr, "Decorate Item Mode Type");
2735 evas_object_show(fr);
2737 bx = elm_box_add(win);
2738 elm_object_content_set(fr, bx);
2739 evas_object_show(bx);
2741 rd = elm_radio_add(win);
2742 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2743 elm_radio_state_value_set(rd, 0);
2744 elm_object_text_set(rd, "Slide : Sweep genlist items to the right.");
2745 evas_object_show(rd);
2746 elm_box_pack_end(bx, rd);
2749 rd = elm_radio_add(win);
2750 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2751 elm_radio_state_value_set(rd, 1);
2752 elm_object_text_set(rd, "Rotate : Click each item.");
2753 elm_radio_group_add(rd, *rdg);
2754 evas_object_show(rd);
2755 elm_box_pack_end(bx, rd);
2761 _decorate_all_set_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
2766 gl = evas_object_data_get(obj, "gl");
2769 if (evas_object_data_get(gl, "tree_effect"))
2770 elm_genlist_tree_effect_enabled_set(gl, EINA_FALSE);
2771 elm_genlist_decorate_mode_set(gl, EINA_TRUE);
2775 _decorate_all_unset_btn_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2777 if (evas_object_data_get(data, "tree_effect"))
2778 elm_genlist_tree_effect_enabled_set(data, EINA_TRUE);
2779 elm_genlist_decorate_mode_set(data, EINA_FALSE);
2783 _decorate_all_mode_frame_new(Evas_Object *win, Evas_Object *rdg, Evas_Object *gl)
2785 Evas_Object *fr, *bx, *btn;
2787 fr = elm_frame_add(win);
2788 evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2789 evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
2790 elm_object_text_set(fr, "Decorate All Mode Type");
2791 evas_object_show(fr);
2793 bx = elm_box_add(win);
2794 elm_object_content_set(fr, bx);
2795 evas_object_show(bx);
2797 btn = elm_button_add(win);
2798 evas_object_data_set(btn, "gl", gl);
2799 elm_object_text_set(btn, "Set Decorate All Mode");
2800 evas_object_smart_callback_add(btn, "clicked", _decorate_all_set_btn_clicked_cb, rdg);
2801 elm_box_pack_end(bx, btn);
2802 evas_object_show(btn);
2804 btn = elm_button_add(win);
2805 elm_object_text_set(btn, "Unset Decorate All Mode");
2806 evas_object_smart_callback_add(btn, "clicked", _decorate_all_unset_btn_clicked_cb, gl);
2807 elm_box_pack_end(bx, btn);
2808 evas_object_show(btn);
2814 test_genlist17(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2816 Evas_Object *win, *fr1, *fr2, *bx, *bx2, *rdg = NULL, *gl;
2818 static Testitem tit[50];
2820 win = elm_win_util_standard_add("genlist-decorate-modes", "Genlist Decorate Modes");
2821 elm_win_autodel_set(win, EINA_TRUE);
2823 bx = elm_box_add(win);
2824 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2825 elm_win_resize_object_add(win, bx);
2826 evas_object_show(bx);
2828 bx2 = elm_box_add(win);
2829 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
2830 elm_box_horizontal_set(bx2, EINA_TRUE);
2831 elm_box_pack_end(bx, bx2);
2832 evas_object_show(bx2);
2834 fr1 = _decorate_item_mode_frame_new(win, &rdg);
2835 elm_box_pack_end(bx2, fr1);
2837 gl = elm_genlist_add(win);
2838 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
2839 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2840 evas_object_smart_callback_add(gl, "drag,start,right", _my_gl_mode_right, rdg);
2841 evas_object_smart_callback_add(gl, "drag,start,left", _my_gl_mode_left, rdg);
2842 evas_object_smart_callback_add(gl, "drag,start,up", _my_gl_mode_cancel, rdg);
2843 evas_object_smart_callback_add(gl, "drag,start,down", _my_gl_mode_cancel, rdg);
2844 evas_object_show(gl);
2846 itc17 = elm_genlist_item_class_new();
2847 itc17->item_style = "default";
2848 itc17->decorate_item_style = "mode";
2849 itc17->func.text_get = gl15_text_get;
2850 itc17->func.content_get = gl15_content_get;
2851 itc17->func.state_get = gl_state_get;
2852 itc17->func.del = NULL;
2853 itc17->decorate_all_item_style = "edit";
2855 for (i = 0; i < 50; i++)
2857 tit[i].checked = EINA_FALSE;
2859 tit[i].item = elm_genlist_item_append(gl,
2861 &(tit[i])/* item data */,
2863 ELM_GENLIST_ITEM_NONE/* flags */,
2864 NULL/* select func */,
2865 NULL/* func data */);
2868 elm_genlist_item_class_free(itc17);
2869 elm_box_pack_end(bx, gl);
2871 fr2 = _decorate_all_mode_frame_new(win, rdg, gl);
2872 elm_box_pack_end(bx2, fr2);
2874 evas_object_resize(win, 520, 520);
2875 evas_object_show(win);
2880 Elm_Genlist_Item_Class *itc18, *itc18_tree;
2882 _tree_effect_frame_new(Evas_Object *win, Evas_Object **rdg, Evas_Object *gl)
2884 Evas_Object *fr, *bx, *rd;
2886 fr = elm_frame_add(win);
2887 elm_object_text_set(fr, "Genlist Tree Effect");
2888 evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2889 evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
2890 evas_object_show(fr);
2892 bx = elm_box_add(win);
2893 elm_box_homogeneous_set(bx, EINA_TRUE);
2894 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2895 evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
2896 elm_object_content_set(fr, bx);
2897 evas_object_show(bx);
2899 rd = elm_radio_add(win);
2900 elm_radio_state_value_set(rd, 0);
2901 elm_object_text_set(rd, "Enable");
2902 evas_object_smart_callback_add(rd, "changed", _tree_effect_enable_cb, gl);
2903 evas_object_show(rd);
2904 elm_box_pack_end(bx, rd);
2907 rd = elm_radio_add(win);
2908 elm_radio_state_value_set(rd, 1);
2909 elm_radio_group_add(rd, *rdg);
2910 elm_object_text_set(rd, "Disable");
2911 evas_object_smart_callback_add(rd, "changed", _tree_effect_disable_cb, gl);
2912 evas_object_show(rd);
2913 elm_box_pack_end(bx, rd);
2920 gl18_sel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
2922 Elm_Object_Item *glit = event_info;
2923 int depth = elm_genlist_item_expanded_depth_get(glit);
2924 printf("expanded depth for selected item is %d\n", depth);
2928 gl18_del(void *data, Evas_Object *obj __UNUSED__)
2934 gl18_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
2936 Elm_Object_Item *glit = event_info;
2937 Evas_Object *gl = elm_object_item_widget_get(glit);
2938 Testitem *tit = elm_object_item_data_get(glit);
2941 val = tit->mode * 10;
2942 for (i = 0; i < 100; i++)
2944 tit = calloc(1, sizeof(Testitem));
2945 tit->mode = val + i;
2946 tit->item = elm_genlist_item_append(gl,
2950 ELM_GENLIST_ITEM_TREE,
2952 NULL/* func data */);
2954 for (j = 0; j < 3; j++)
2956 tit = calloc(1, sizeof(Testitem));
2958 tit->item = elm_genlist_item_append(gl,
2962 ELM_GENLIST_ITEM_NONE,
2964 NULL/* func data */);
2970 gl18_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
2972 Elm_Object_Item *glit = event_info;
2973 elm_genlist_item_subitems_clear(glit);
2977 gl18_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__,
2980 Elm_Object_Item *glit = event_info;
2981 elm_genlist_item_expanded_set(glit, EINA_TRUE);
2985 gl18_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__,
2988 Elm_Object_Item *glit = event_info;
2989 elm_genlist_item_expanded_set(glit, EINA_FALSE);
2993 test_genlist18(void *data __UNUSED__,
2994 Evas_Object *obj __UNUSED__,
2995 void *event_info __UNUSED__)
2997 Evas_Object *win, *gl, *bx, *fr1, *fr2, *bx2, *rdg;
2998 Testitem *tit = NULL;
3001 win = elm_win_util_standard_add("genlist-tree-decorate-all",
3002 "Genlist Tree and Decorate All Mode");
3003 elm_win_autodel_set(win, EINA_TRUE);
3005 bx = elm_box_add(win);
3006 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
3007 elm_win_resize_object_add(win, bx);
3008 evas_object_show(bx);
3010 bx2 = elm_box_add(win);
3011 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
3012 elm_box_horizontal_set(bx2, EINA_TRUE);
3013 elm_box_pack_end(bx, bx2);
3014 evas_object_show(bx2);
3016 gl = elm_genlist_add(win);
3017 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
3018 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
3019 evas_object_show(gl);
3021 elm_genlist_tree_effect_enabled_set(gl, EINA_TRUE);
3022 evas_object_data_set(gl, "tree_effect", "true");
3025 itc18 = elm_genlist_item_class_new();
3026 itc18->item_style = "tree_effect"; /* item/tree_effect */
3027 itc18->func.text_get = gl15_text_get;
3028 itc18->func.content_get = gl15_content_get;
3029 itc18->func.state_get = gl_state_get;
3030 itc18->func.del = gl18_del;
3031 itc18->decorate_all_item_style = "edit";
3033 /* expandable item */
3034 itc18_tree = elm_genlist_item_class_new();
3035 itc18_tree->item_style = "tree_effect"; /* tree/tree_effect */
3036 itc18_tree->func.text_get = gl15_text_get;
3037 itc18_tree->func.content_get = gl15_content_get;
3038 itc18_tree->func.state_get = gl_state_get;
3039 itc18_tree->func.del = gl18_del;
3040 itc18_tree->decorate_all_item_style = "edit";
3042 for (i = 0; i < 5; i++)
3044 tit = calloc(1, sizeof(Testitem));
3046 tit->item = elm_genlist_item_append(gl,
3050 ELM_GENLIST_ITEM_TREE,
3052 NULL/* func data */);
3055 for (j = 0; j < 3; j++)
3057 tit = calloc(1, sizeof(Testitem));
3059 tit->item = elm_genlist_item_append(gl,
3063 ELM_GENLIST_ITEM_NONE,
3065 NULL/* func data */);
3069 elm_genlist_item_class_free(itc18);
3070 elm_genlist_item_class_free(itc18_tree);
3072 evas_object_smart_callback_add(gl, "expand,request", gl18_exp_req, gl);
3073 evas_object_smart_callback_add(gl, "contract,request", gl18_con_req, gl);
3074 evas_object_smart_callback_add(gl, "expanded", gl18_exp, gl);
3075 evas_object_smart_callback_add(gl, "contracted", gl18_con, gl);
3077 elm_box_pack_end(bx, gl);
3079 fr1 = _tree_effect_frame_new(win, &rdg, gl);
3080 elm_box_pack_end(bx2, fr1);
3082 fr2 = _decorate_all_mode_frame_new(win, rdg, gl);
3083 elm_box_pack_end(bx2, fr2);
3085 evas_object_resize(win, 400, 800);
3086 evas_object_show(win);
3090 test_genlist19(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
3092 Evas_Object *win, *gl, *bt_50, *bt_1500, *bx, *bxx, *bt;
3094 Elm_Object_Item *gli;
3096 api_data *api = calloc(1, sizeof(api_data));
3098 win = elm_win_util_standard_add("genlist-full", "Genlist Full");
3099 elm_win_autodel_set(win, EINA_TRUE);
3100 evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
3102 bxx = elm_box_add(win);
3103 elm_win_resize_object_add(win, bxx);
3104 evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
3105 evas_object_show(bxx);
3107 bx = elm_box_add(win);
3108 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
3109 evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
3111 evas_object_show(bx);
3113 bt = elm_button_add(win);
3114 elm_object_text_set(bt, "Next API function");
3115 evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
3116 elm_box_pack_end(bxx, bt);
3117 elm_object_disabled_set(bt, api->state == API_STATE_LAST);
3118 evas_object_show(bt);
3120 elm_box_pack_end(bxx, bx);
3122 gl = elm_genlist_add(win);
3123 evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
3124 evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
3125 evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
3126 // FIXME: This causes genlist to resize the horiz axis very slowly :(
3127 // Reenable this and resize the window horizontally, then try to resize it back
3128 //elm_genlist_mode_set(gl, ELM_LIST_LIMIT);
3129 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
3130 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
3131 elm_box_pack_end(bx, gl);
3132 evas_object_show(gl);
3134 over = evas_object_rectangle_add(evas_object_evas_get(win));
3135 evas_object_color_set(over, 0, 0, 0, 0);
3136 evas_object_event_callback_add(over, EVAS_CALLBACK_MOUSE_MOVE, _move, gl);
3137 evas_object_repeat_events_set(over, 1);
3138 evas_object_show(over);
3139 evas_object_size_hint_weight_set(over, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
3140 elm_win_resize_object_add(win, over);
3142 itc1 = elm_genlist_item_class_new();
3143 itc1->item_style = "full";
3144 itc1->func.text_get = gl_text_get;
3145 itc1->func.content_get = gl_content_full_get;
3146 itc1->func.state_get = gl_state_get;
3147 itc1->func.del = NULL;
3149 bt_50 = elm_button_add(win);
3150 elm_object_text_set(bt_50, "Go to 50");
3151 evas_object_show(bt_50);
3152 elm_box_pack_end(bx, bt_50);
3154 bt_1500 = elm_button_add(win);
3155 elm_object_text_set(bt_1500, "Go to 1500");
3156 evas_object_show(bt_1500);
3157 elm_box_pack_end(bx, bt_1500);
3159 for (i = 0; i < 2000; i++)
3161 gli = elm_genlist_item_append(gl, itc1,
3162 (void *)(long)i/* item data */,
3164 ELM_GENLIST_ITEM_NONE,
3166 (void *)(long)(i * 10)/* func data */);
3168 evas_object_smart_callback_add(bt_50, "clicked", _bt50_cb, gli);
3170 evas_object_smart_callback_add(bt_1500, "clicked", _bt1500_cb, gli);
3172 elm_genlist_item_class_free(itc1);
3174 evas_object_resize(win, 480, 800);
3175 evas_object_show(win);