1 #include <Elementary.h>
3 # include "elementary_config.h"
5 #ifndef ELM_LIB_QUICKLAUNCH
8 * In this example some calls to elm_genlist_item_append() are used which give the
9 * value of an int as 'item data' and 'func data' after casting into (void*). For
10 * sure this works only on architectures where sizeof(int)==sizeof(void*).
11 * For real world usage you should hold a data structure or value in your
12 * application and then give only a pointer to this data as data pointer.
15 typedef struct _Testitem
17 Elm_Object_Item *item;
22 static Elm_Genlist_Item_Class *itc1;
23 char *gl_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
26 snprintf(buf, sizeof(buf), "Item # %i", (int)(long)data);
30 Evas_Object *gl_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
33 Evas_Object *ic = elm_icon_add(obj);
34 if (!strcmp(part, "elm.swallow.end"))
35 snprintf(buf, sizeof(buf), "%s/images/bubble.png", elm_app_data_dir_get());
37 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
38 elm_icon_file_set(ic, buf, NULL);
39 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
43 Eina_Bool gl_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
49 gl_sel(void *data, Evas_Object *obj, void *event_info)
51 printf("sel item data [%p] on genlist obj [%p], item pointer [%p]\n", data, obj, event_info);
55 _move(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
57 Evas_Object *gl = data;
58 Evas_Event_Mouse_Move *ev = event_info;
61 gli = elm_genlist_at_xy_item_get(gl, ev->cur.canvas.x, ev->cur.canvas.y, &where);
63 printf("over %p, where %i\n", elm_object_item_data_get(gli), where);
65 printf("over none, where %i\n", where);
69 _bt50_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
71 elm_genlist_item_bring_in(data);
75 _bt1500_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
77 elm_genlist_item_middle_bring_in(data);
81 _gl_selected(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
83 printf("selected: %p\n", event_info);
87 _gl_double_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
89 printf("double clicked: %p\n", event_info);
93 _gl_longpress(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
95 printf("longpress %p\n", event_info);
99 test_genlist(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
101 Evas_Object *win, *gl, *bt_50, *bt_1500, *bx;
103 Elm_Object_Item *gli;
106 win = elm_win_util_standard_add("genlist", "Genlist");
107 elm_win_autodel_set(win, EINA_TRUE);
109 bx = elm_box_add(win);
110 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
111 elm_win_resize_object_add(win, bx);
112 evas_object_show(bx);
114 gl = elm_genlist_add(win);
115 evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
116 evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
117 evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
118 // FIXME: This causes genlist to resize the horiz axis very slowly :(
119 // Reenable this and resize the window horizontally, then try to resize it back
120 //elm_genlist_mode_set(gl, ELM_LIST_LIMIT);
121 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
122 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
123 elm_box_pack_end(bx, gl);
124 evas_object_show(gl);
126 over = evas_object_rectangle_add(evas_object_evas_get(win));
127 evas_object_color_set(over, 0, 0, 0, 0);
128 evas_object_event_callback_add(over, EVAS_CALLBACK_MOUSE_MOVE, _move, gl);
129 evas_object_repeat_events_set(over, 1);
130 evas_object_show(over);
131 evas_object_size_hint_weight_set(over, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
132 elm_win_resize_object_add(win, over);
134 itc1 = elm_genlist_item_class_new();
135 itc1->item_style = "default";
136 itc1->func.text_get = gl_text_get;
137 itc1->func.content_get = gl_content_get;
138 itc1->func.state_get = gl_state_get;
139 itc1->func.del = NULL;
141 bt_50 = elm_button_add(win);
142 elm_object_text_set(bt_50, "Go to 50");
143 evas_object_show(bt_50);
144 elm_box_pack_end(bx, bt_50);
146 bt_1500 = elm_button_add(win);
147 elm_object_text_set(bt_1500, "Go to 1500");
148 evas_object_show(bt_1500);
149 elm_box_pack_end(bx, bt_1500);
151 for (i = 0; i < 2000; i++)
153 gli = elm_genlist_item_append(gl, itc1,
154 (void *)(long)i/* item data */,
156 ELM_GENLIST_ITEM_NONE,
158 (void *)(long)(i * 10)/* func data */);
160 evas_object_smart_callback_add(bt_50, "clicked", _bt50_cb, gli);
162 evas_object_smart_callback_add(bt_1500, "clicked", _bt1500_cb, gli);
164 elm_genlist_item_class_free(itc1);
166 evas_object_resize(win, 480, 800);
167 evas_object_show(win);
173 my_gl_clear(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
175 Evas_Object *gl = data;
176 elm_genlist_clear(gl);
180 my_gl_add(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
182 Evas_Object *gl = data;
185 itc1->item_style = "default";
186 itc1->func.text_get = gl_text_get;
187 itc1->func.content_get = gl_content_get;
188 itc1->func.state_get = gl_state_get;
189 itc1->func.del = NULL;
191 elm_genlist_item_append(gl, itc1,
192 (void *)(long)i/* item data */,
194 ELM_GENLIST_ITEM_NONE,
196 (void *)(long)(i * 10)/* func data */);
201 my_gl_insert_before(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
203 Evas_Object *gl = data;
205 Elm_Object_Item *gli_selected;
207 itc1->item_style = "default";
208 itc1->func.text_get = gl_text_get;
209 itc1->func.content_get = gl_content_get;
210 itc1->func.state_get = gl_state_get;
211 itc1->func.del = NULL;
213 gli_selected = elm_genlist_selected_item_get(gl);
216 printf("no item selected\n");
220 elm_genlist_item_insert_before(gl, itc1,
221 (void *)(long)i/* item data */,
223 gli_selected /* item before */,
224 ELM_GENLIST_ITEM_NONE,
226 (void *)(long)(i * 10)/* func data */);
231 my_gl_insert_after(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
233 Evas_Object *gl = data;
235 Elm_Object_Item *gli_selected;
237 itc1->item_style = "default";
238 itc1->func.text_get = gl_text_get;
239 itc1->func.content_get = gl_content_get;
240 itc1->func.state_get = gl_state_get;
241 itc1->func.del = NULL;
243 gli_selected = elm_genlist_selected_item_get(gl);
246 printf("no item selected\n");
250 elm_genlist_item_insert_after(gl, itc1,
251 (void *)(long)i/* item data */,
253 gli_selected /* item after */,
254 ELM_GENLIST_ITEM_NONE,
256 (void *)(long)(i * 10)/* func data */);
261 my_gl_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
263 Evas_Object *gl = data;
264 Elm_Object_Item *gli = elm_genlist_selected_item_get(gl);
267 printf("no item selected\n");
270 elm_object_item_del(gli);
274 my_gl_disable(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
276 Evas_Object *gl = data;
277 Elm_Object_Item *gli = elm_genlist_selected_item_get(gl);
280 printf("no item selected\n");
283 elm_object_item_disabled_set(gli, EINA_TRUE);
284 elm_genlist_item_selected_set(gli, EINA_FALSE);
285 elm_genlist_item_update(gli);
289 my_gl_update_all(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
291 Evas_Object *gl = data;
293 Elm_Object_Item *it = elm_genlist_first_item_get(gl);
296 elm_genlist_item_update(it);
299 it = elm_genlist_item_next_get(it);
304 my_gl_first(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
306 Evas_Object *gl = data;
307 Elm_Object_Item *gli = elm_genlist_first_item_get(gl);
309 elm_genlist_item_show(gli);
310 elm_genlist_item_selected_set(gli, 1);
314 my_gl_last(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
316 Evas_Object *gl = data;
317 Elm_Object_Item *gli = elm_genlist_last_item_get(gl);
319 elm_genlist_item_show(gli);
320 elm_genlist_item_selected_set(gli, 1);
324 my_gl_flush_delay(void *data __UNUSED__)
326 elm_cache_all_flush();
327 return ECORE_CALLBACK_CANCEL;
331 my_gl_flush(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
333 ecore_timer_add(1.2, my_gl_flush_delay, NULL);
337 test_genlist2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
339 Evas_Object *win, *bg, *gl, *bx, *bx2, *bx3, *bt;
340 Elm_Object_Item *gli[10];
343 win = elm_win_add(NULL, "genlist2", ELM_WIN_BASIC);
344 elm_win_title_set(win, "Genlist 2");
345 elm_win_autodel_set(win, EINA_TRUE);
347 bg = elm_bg_add(win);
348 snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
349 elm_bg_file_set(bg, buf, NULL);
350 elm_win_resize_object_add(win, bg);
351 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
352 evas_object_show(bg);
354 bx = elm_box_add(win);
355 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
356 elm_win_resize_object_add(win, bx);
357 evas_object_show(bx);
359 gl = elm_genlist_add(win);
360 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
361 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
362 evas_object_show(gl);
364 itc1 = elm_genlist_item_class_new();
365 itc1->item_style = "default";
366 itc1->func.text_get = gl_text_get;
367 itc1->func.content_get = gl_content_get;
368 itc1->func.state_get = gl_state_get;
369 itc1->func.del = NULL;
371 gli[0] = elm_genlist_item_append(gl, itc1,
372 (void *)1001/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
373 (void *)1001/* func data */);
374 gli[1] = elm_genlist_item_append(gl, itc1,
375 (void *)1002/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
376 (void *)1002/* func data */);
377 gli[2] = elm_genlist_item_append(gl, itc1,
378 (void *)1003/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
379 (void *)1003/* func data */);
380 gli[3] = elm_genlist_item_prepend(gl, itc1,
381 (void *)1004/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
382 (void *)1004/* func data */);
383 gli[4] = elm_genlist_item_prepend(gl, itc1,
384 (void *)1005/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
385 (void *)1005/* func data */);
386 gli[5] = elm_genlist_item_insert_before(gl, itc1,
387 (void *)1006/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
388 gl_sel/* func */, (void *)1006/* func data */);
389 gli[6] = elm_genlist_item_insert_after(gl, itc1,
390 (void *)1007/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
391 gl_sel/* func */, (void *)1007/* func data */);
392 elm_box_pack_end(bx, gl);
394 bx2 = elm_box_add(win);
395 elm_box_horizontal_set(bx2, EINA_TRUE);
396 elm_box_homogeneous_set(bx2, EINA_TRUE);
397 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
398 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
400 bt = elm_button_add(win);
401 elm_object_text_set(bt, "/\\");
402 evas_object_smart_callback_add(bt, "clicked", my_gl_first, gl);
403 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
404 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
405 elm_box_pack_end(bx2, bt);
406 evas_object_show(bt);
408 bt = elm_button_add(win);
409 elm_object_text_set(bt, "\\/");
410 evas_object_smart_callback_add(bt, "clicked", my_gl_last, gl);
411 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
412 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
413 elm_box_pack_end(bx2, bt);
414 evas_object_show(bt);
416 bt = elm_button_add(win);
417 elm_object_text_set(bt, "#");
418 evas_object_smart_callback_add(bt, "clicked", my_gl_disable, gl);
419 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
420 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
421 elm_box_pack_end(bx2, bt);
422 evas_object_show(bt);
424 bt = elm_button_add(win);
425 elm_object_text_set(bt, "U");
426 evas_object_smart_callback_add(bt, "clicked", my_gl_update_all, gl);
427 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
428 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
429 elm_box_pack_end(bx2, bt);
430 evas_object_show(bt);
432 elm_box_pack_end(bx, bx2);
433 evas_object_show(bx2);
435 bx2 = elm_box_add(win);
436 elm_box_horizontal_set(bx2, EINA_TRUE);
437 elm_box_homogeneous_set(bx2, EINA_TRUE);
438 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
439 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
441 bt = elm_button_add(win);
442 elm_object_text_set(bt, "X");
443 evas_object_smart_callback_add(bt, "clicked", my_gl_clear, gl);
444 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
445 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
446 elm_box_pack_end(bx2, bt);
447 evas_object_show(bt);
449 bt = elm_button_add(win);
450 elm_object_text_set(bt, "+");
451 evas_object_smart_callback_add(bt, "clicked", my_gl_add, gl);
452 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
453 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
454 elm_box_pack_end(bx2, bt);
455 evas_object_show(bt);
457 bt = elm_button_add(win);
458 elm_object_text_set(bt, "-");
459 evas_object_smart_callback_add(bt, "clicked", my_gl_del, gl);
460 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
461 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
462 elm_box_pack_end(bx2, bt);
463 evas_object_show(bt);
465 elm_box_pack_end(bx, bx2);
466 evas_object_show(bx2);
468 bx3 = elm_box_add(win);
469 elm_box_horizontal_set(bx3, EINA_TRUE);
470 elm_box_homogeneous_set(bx3, EINA_TRUE);
471 evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
472 evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
474 bt = elm_button_add(win);
475 elm_object_text_set(bt, "+ before");
476 evas_object_smart_callback_add(bt, "clicked", my_gl_insert_before, gl);
477 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
478 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
479 elm_box_pack_end(bx3, bt);
480 evas_object_show(bt);
482 bt = elm_button_add(win);
483 elm_object_text_set(bt, "+ after");
484 evas_object_smart_callback_add(bt, "clicked", my_gl_insert_after, gl);
485 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
486 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
487 elm_box_pack_end(bx3, bt);
488 evas_object_show(bt);
490 bt = elm_button_add(win);
491 elm_object_text_set(bt, "Flush");
492 evas_object_smart_callback_add(bt, "clicked", my_gl_flush, gl);
493 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
494 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
495 elm_box_pack_end(bx3, bt);
496 evas_object_show(bt);
498 elm_box_pack_end(bx, bx3);
499 evas_object_show(bx3);
501 /* item_class_ref is needed for itc1. some items can be added in callbacks */
502 elm_genlist_item_class_ref(itc1);
503 elm_genlist_item_class_free(itc1);
505 evas_object_resize(win, 320, 320);
506 evas_object_show(win);
511 static Elm_Genlist_Item_Class itc2;
513 char *gl2_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
515 const Testitem *tit = data;
517 snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
521 Evas_Object *gl2_content_get(void *data, Evas_Object *obj, const char *part)
523 const Testitem *tit = data;
525 Evas_Object *ic = elm_icon_add(obj);
526 if (!strcmp(part, "elm.swallow.icon"))
528 if (!(tit->mode & 0x3))
529 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
530 else if ((tit->mode & 0x3) == 1)
531 snprintf(buf, sizeof(buf), "%s/images/logo.png", elm_app_data_dir_get());
532 else if ((tit->mode & 0x3) == 2)
533 snprintf(buf, sizeof(buf), "%s/images/panel_01.jpg", elm_app_data_dir_get());
534 else if ((tit->mode & 0x3) == 3)
535 snprintf(buf, sizeof(buf), "%s/images/rock_01.jpg", elm_app_data_dir_get());
536 elm_icon_file_set(ic, buf, NULL);
538 else if (!strcmp(part, "elm.swallow.end"))
540 if (!(tit->mode & 0x3))
541 snprintf(buf, sizeof(buf), "%s/images/sky_01.jpg", elm_app_data_dir_get());
542 else if ((tit->mode & 0x3) == 1)
543 snprintf(buf, sizeof(buf), "%s/images/sky_02.jpg", elm_app_data_dir_get());
544 else if ((tit->mode & 0x3) == 2)
545 snprintf(buf, sizeof(buf), "%s/images/sky_03.jpg", elm_app_data_dir_get());
546 else if ((tit->mode & 0x3) == 3)
547 snprintf(buf, sizeof(buf), "%s/images/sky_04.jpg", elm_app_data_dir_get());
548 elm_icon_file_set(ic, buf, NULL);
550 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
554 Eina_Bool gl2_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
560 my_gl_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
562 Testitem *tit = data;
564 elm_genlist_item_update(tit->item);
568 my_gl_labels_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
570 Testitem *tit = data;
572 elm_genlist_item_fields_update(tit->item, "*", ELM_GENLIST_ITEM_FIELD_LABEL);
576 my_gl_contents_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
578 Testitem *tit = data;
580 elm_genlist_item_fields_update(tit->item, "*", ELM_GENLIST_ITEM_FIELD_CONTENT);
584 test_genlist3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
586 Evas_Object *win, *gl, *bx, *bx2, *bt;
587 static Testitem tit[3];
589 win = elm_win_util_standard_add("genlist3", "Genlist 3");
590 elm_win_autodel_set(win, EINA_TRUE);
592 bx = elm_box_add(win);
593 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
594 elm_win_resize_object_add(win, bx);
595 evas_object_show(bx);
597 gl = elm_genlist_add(win);
598 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
599 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
600 evas_object_show(gl);
602 itc2.item_style = "default";
603 itc2.func.text_get = gl2_text_get;
604 itc2.func.content_get = gl2_content_get;
605 itc2.func.state_get = gl2_state_get;
606 itc2.func.del = NULL;
609 tit[0].item = elm_genlist_item_append(gl, &itc2,
610 &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
611 NULL/* func data */);
613 tit[1].item = elm_genlist_item_append(gl, &itc2,
614 &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
615 NULL/* func data */);
617 tit[2].item = elm_genlist_item_append(gl, &itc2,
618 &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
619 NULL/* func data */);
621 elm_box_pack_end(bx, gl);
622 evas_object_show(bx);
624 bx2 = elm_box_add(win);
625 elm_box_horizontal_set(bx2, EINA_TRUE);
626 elm_box_homogeneous_set(bx2, EINA_TRUE);
627 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
628 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
630 bt = elm_button_add(win);
631 elm_object_text_set(bt, "[1]");
632 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
633 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
634 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
635 elm_box_pack_end(bx2, bt);
636 evas_object_show(bt);
638 bt = elm_button_add(win);
639 elm_object_text_set(bt, "labels");
640 evas_object_smart_callback_add(bt, "clicked", my_gl_labels_update, &(tit[1]));
641 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
642 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
643 elm_box_pack_end(bx2, bt);
644 evas_object_show(bt);
646 bt = elm_button_add(win);
647 elm_object_text_set(bt, "contents");
648 evas_object_smart_callback_add(bt, "clicked", my_gl_contents_update, &(tit[2]));
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(bx2, bt);
652 evas_object_show(bt);
654 elm_box_pack_end(bx, bx2);
655 evas_object_show(bx2);
657 evas_object_resize(win, 320, 320);
658 evas_object_show(win);
664 my_gl_item_check_changed(void *data, Evas_Object *obj, void *event_info __UNUSED__)
666 Testitem *tit = data;
667 tit->onoff = elm_check_state_get(obj);
668 printf("item %p onoff = %i\n", tit, tit->onoff);
671 static Elm_Genlist_Item_Class itc3;
673 char *gl3_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
675 const Testitem *tit = data;
677 snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
681 Evas_Object *gl3_content_get(void *data, Evas_Object *obj, const char *part)
683 const Testitem *tit = data;
684 if (!strcmp(part, "elm.swallow.icon"))
688 lb = elm_label_add(obj);
689 elm_label_line_wrap_set(lb, ELM_WRAP_CHAR);
690 elm_label_wrap_width_set(lb, 201);
691 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");
694 else if (!strcmp(part, "elm.swallow.end"))
697 ck = elm_check_add(obj);
698 evas_object_propagate_events_set(ck, EINA_FALSE);
699 elm_check_state_set(ck, tit->onoff);
700 evas_object_smart_callback_add(ck, "changed", my_gl_item_check_changed, data);
706 Eina_Bool gl3_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
712 test_genlist4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
714 Evas_Object *win, *gl, *bx, *bx2, *bt;
715 static Testitem tit[3];
717 win = elm_win_util_standard_add("genlist4", "Genlist 4");
718 elm_win_autodel_set(win, EINA_TRUE);
720 bx = elm_box_add(win);
721 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
722 elm_win_resize_object_add(win, bx);
723 evas_object_show(bx);
725 gl = elm_genlist_add(win);
726 elm_genlist_height_for_width_mode_set(gl, EINA_TRUE);
727 elm_genlist_multi_select_set(gl, 1);
728 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
729 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
730 evas_object_show(gl);
732 itc3.item_style = "default";
733 itc3.func.text_get = gl3_text_get;
734 itc3.func.content_get = gl3_content_get;
735 itc3.func.state_get = gl3_state_get;
736 itc3.func.del = NULL;
739 tit[0].item = elm_genlist_item_append(gl, &itc3,
740 &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
741 NULL/* func data */);
743 tit[1].item = elm_genlist_item_append(gl, &itc3,
744 &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
745 NULL/* func data */);
747 tit[2].item = elm_genlist_item_append(gl, &itc3,
748 &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
749 NULL/* func data */);
751 elm_box_pack_end(bx, gl);
752 evas_object_show(bx);
754 bx2 = elm_box_add(win);
755 elm_box_horizontal_set(bx2, EINA_TRUE);
756 elm_box_homogeneous_set(bx2, EINA_TRUE);
757 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
758 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
760 bt = elm_button_add(win);
761 elm_object_text_set(bt, "[1]");
762 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
763 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
764 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
765 elm_box_pack_end(bx2, bt);
766 evas_object_show(bt);
768 bt = elm_button_add(win);
769 elm_object_text_set(bt, "[2]");
770 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
771 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
772 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
773 elm_box_pack_end(bx2, bt);
774 evas_object_show(bt);
776 bt = elm_button_add(win);
777 elm_object_text_set(bt, "[3]");
778 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
779 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
780 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
781 elm_box_pack_end(bx2, bt);
782 evas_object_show(bt);
784 elm_box_pack_end(bx, bx2);
785 evas_object_show(bx2);
787 evas_object_resize(win, 320, 320);
788 evas_object_show(win);
794 my_gl_item_check_changed2(void *data, Evas_Object *obj, void *event_info __UNUSED__)
796 Testitem *tit = data;
797 tit->onoff = elm_check_state_get(obj);
798 printf("item %p onoff = %i\n", tit, tit->onoff);
801 static Elm_Genlist_Item_Class itc5;
803 char *gl5_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
805 const Testitem *tit = data;
807 if (!strcmp(part, "elm.text"))
809 snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
811 else if (!strcmp(part, "elm.text.sub"))
813 snprintf(buf, sizeof(buf), "%i bottles on the wall", tit->mode);
818 Evas_Object *gl5_content_get(void *data, Evas_Object *obj, const char *part)
820 const Testitem *tit = data;
822 if (!strcmp(part, "elm.swallow.icon"))
824 Evas_Object *bx = elm_box_add(obj);
826 elm_box_horizontal_set(bx, EINA_TRUE);
827 ic = elm_icon_add(obj);
828 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
829 elm_icon_file_set(ic, buf, NULL);
830 elm_icon_scale_set(ic, 0, 0);
831 evas_object_show(ic);
832 elm_box_pack_end(bx, ic);
833 ic = elm_icon_add(obj);
834 elm_icon_file_set(ic, buf, NULL);
835 elm_icon_scale_set(ic, 0, 0);
836 evas_object_show(ic);
837 elm_box_pack_end(bx, ic);
838 elm_box_horizontal_set(bx, EINA_TRUE);
839 evas_object_show(bx);
842 else if (!strcmp(part, "elm.swallow.end"))
845 ck = elm_check_add(obj);
846 evas_object_propagate_events_set(ck, EINA_FALSE);
847 elm_check_state_set(ck, tit->onoff);
848 evas_object_smart_callback_add(ck, "changed", my_gl_item_check_changed2, data);
849 evas_object_show(ck);
855 Eina_Bool gl5_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
861 item_drag_up(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
867 item_drag_down(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
869 printf("drag down\n");
873 item_drag_left(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
875 printf("drag left\n");
879 item_drag_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
881 printf("drag right\n");
885 scroll_top(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
887 printf("Top edge!\n");
891 scroll_bottom(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
893 printf("Bottom edge!\n");
897 scroll_left(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
899 printf("Left edge!\n");
903 scroll_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
905 printf("Right edge!\n");
909 item_drag(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
915 item_drag_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
917 printf("drag stop\n");
921 item_longpress(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
923 printf("longpress\n");
927 test_genlist5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
929 Evas_Object *win, *gl, *bx, *bx2, *bt;
930 static Testitem tit[3];
932 win = elm_win_util_standard_add("genlist5", "Genlist 5");
933 elm_win_autodel_set(win, EINA_TRUE);
935 bx = elm_box_add(win);
936 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
937 elm_win_resize_object_add(win, bx);
938 evas_object_show(bx);
940 gl = elm_genlist_add(win);
941 elm_genlist_always_select_mode_set(gl, 1);
942 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
943 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
944 evas_object_show(gl);
945 itc5.item_style = "double_label";
946 itc5.func.text_get = gl5_text_get;
947 itc5.func.content_get = gl5_content_get;
948 itc5.func.state_get = gl5_state_get;
949 itc5.func.del = NULL;
952 tit[0].item = elm_genlist_item_append(gl, &itc5,
953 &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
954 NULL/* func data */);
956 tit[1].item = elm_genlist_item_append(gl, &itc5,
957 &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
958 NULL/* func data */);
960 tit[2].item = elm_genlist_item_append(gl, &itc5,
961 &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
962 NULL/* func data */);
964 elm_box_pack_end(bx, gl);
965 evas_object_show(bx);
967 evas_object_smart_callback_add(gl, "drag,start,up", item_drag_up, NULL);
968 evas_object_smart_callback_add(gl, "drag,start,down", item_drag_down, NULL);
969 evas_object_smart_callback_add(gl, "drag,start,left", item_drag_left, NULL);
970 evas_object_smart_callback_add(gl, "drag,start,right", item_drag_right, NULL);
971 evas_object_smart_callback_add(gl, "scroll,edge,top", scroll_top, NULL);
972 evas_object_smart_callback_add(gl, "scroll,edge,bottom", scroll_bottom, NULL);
973 evas_object_smart_callback_add(gl, "scroll,edge,left", scroll_left, NULL);
974 evas_object_smart_callback_add(gl, "scroll,edge,right", scroll_right, NULL);
975 evas_object_smart_callback_add(gl, "drag", item_drag, NULL);
976 evas_object_smart_callback_add(gl, "drag,stop", item_drag_stop, NULL);
977 evas_object_smart_callback_add(gl, "longpressed", item_longpress, NULL);
979 bx2 = elm_box_add(win);
980 elm_box_horizontal_set(bx2, EINA_TRUE);
981 elm_box_homogeneous_set(bx2, EINA_TRUE);
982 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
983 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
985 bt = elm_button_add(win);
986 elm_object_text_set(bt, "[1]");
987 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
988 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
989 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
990 elm_box_pack_end(bx2, bt);
991 evas_object_show(bt);
993 bt = elm_button_add(win);
994 elm_object_text_set(bt, "[2]");
995 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
996 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
997 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
998 elm_box_pack_end(bx2, bt);
999 evas_object_show(bt);
1001 bt = elm_button_add(win);
1002 elm_object_text_set(bt, "[3]");
1003 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
1004 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1005 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1006 elm_box_pack_end(bx2, bt);
1007 evas_object_show(bt);
1009 elm_box_pack_end(bx, bx2);
1010 evas_object_show(bx2);
1012 evas_object_resize(win, 320, 320);
1013 evas_object_show(win);
1018 static Elm_Genlist_Item_Class itc4;
1021 gl4_sel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1023 Elm_Object_Item *glit = event_info;
1024 int depth = elm_genlist_item_expanded_depth_get(glit);
1025 printf("expanded depth for selected item is %d\n", depth);
1029 gl4_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1031 Elm_Object_Item *glit = event_info;
1032 Evas_Object *gl = elm_object_item_widget_get(glit);
1033 int val = (int)(long) elm_object_item_data_get(glit);
1035 elm_genlist_item_append(gl, &itc4,
1036 (void *)(long) (val + 1)/* item data */,
1037 glit/* parent */, ELM_GENLIST_ITEM_NONE,
1039 NULL/* func data */);
1040 elm_genlist_item_append(gl, &itc4,
1041 (void *)(long) (val + 2)/* item data */,
1042 glit/* parent */, ELM_GENLIST_ITEM_NONE,
1044 NULL/* func data */);
1045 elm_genlist_item_append(gl, &itc4,
1046 (void *)(long) (val + 3)/* item data */,
1048 ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1049 NULL/* func data */);
1052 gl4_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1054 Elm_Object_Item *glit = event_info;
1055 elm_genlist_item_subitems_clear(glit);
1059 gl4_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1061 Elm_Object_Item *glit = event_info;
1062 elm_genlist_item_expanded_set(glit, EINA_TRUE);
1066 gl4_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1068 Elm_Object_Item *glit = event_info;
1069 elm_genlist_item_expanded_set(glit, EINA_FALSE);
1072 char *gl4_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1075 snprintf(buf, sizeof(buf), "Item mode %i", (int)(long)data);
1079 Evas_Object *gl4_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
1082 if (!strcmp(part, "elm.swallow.icon"))
1084 Evas_Object *ic = elm_icon_add(obj);
1085 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
1086 elm_icon_file_set(ic, buf, NULL);
1087 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
1088 evas_object_show(ic);
1091 else if (!strcmp(part, "elm.swallow.end"))
1094 ck = elm_check_add(obj);
1095 evas_object_propagate_events_set(ck, EINA_FALSE);
1096 evas_object_show(ck);
1102 Eina_Bool gl4_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1107 void gl4_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
1109 printf("item deleted.\n");
1113 test_genlist6(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1115 Evas_Object *win, *gl, *bx, *bx2, *bt;
1117 win = elm_win_util_standard_add("genlist-tree", "Genlist Tree");
1118 elm_win_autodel_set(win, EINA_TRUE);
1120 bx = elm_box_add(win);
1121 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1122 elm_win_resize_object_add(win, bx);
1123 evas_object_show(bx);
1125 gl = elm_genlist_add(win);
1126 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1127 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1128 evas_object_show(gl);
1130 itc4.item_style = "default";
1131 itc4.func.text_get = gl4_text_get;
1132 itc4.func.content_get = gl4_content_get;
1133 itc4.func.state_get = gl4_state_get;
1134 itc4.func.del = gl4_del;
1136 elm_genlist_item_append(gl, &itc4,
1137 (void *)1/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1138 NULL/* func data */);
1139 elm_genlist_item_append(gl, &itc4,
1140 (void *)2/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1141 NULL/* func data */);
1142 elm_genlist_item_append(gl, &itc4,
1143 (void *)3/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1144 NULL/* func data */);
1146 evas_object_smart_callback_add(gl, "expand,request", gl4_exp_req, gl);
1147 evas_object_smart_callback_add(gl, "contract,request", gl4_con_req, gl);
1148 evas_object_smart_callback_add(gl, "expanded", gl4_exp, gl);
1149 evas_object_smart_callback_add(gl, "contracted", gl4_con, gl);
1151 elm_box_pack_end(bx, gl);
1152 evas_object_show(bx);
1154 bx2 = elm_box_add(win);
1155 elm_box_horizontal_set(bx2, EINA_TRUE);
1156 elm_box_homogeneous_set(bx2, EINA_TRUE);
1157 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1158 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1160 bt = elm_button_add(win);
1161 elm_object_text_set(bt, "[1]");
1162 // evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
1163 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1164 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1165 elm_box_pack_end(bx2, bt);
1166 evas_object_show(bt);
1168 bt = elm_button_add(win);
1169 elm_object_text_set(bt, "[2]");
1170 // evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
1171 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1172 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1173 elm_box_pack_end(bx2, bt);
1174 evas_object_show(bt);
1176 bt = elm_button_add(win);
1177 elm_object_text_set(bt, "[3]");
1178 // evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
1179 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1180 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1181 elm_box_pack_end(bx2, bt);
1182 evas_object_show(bt);
1184 elm_box_pack_end(bx, bx2);
1185 evas_object_show(bx2);
1187 evas_object_resize(win, 320, 320);
1188 evas_object_show(win);
1193 struct genlist7_data
1195 Evas_Object *win, *naviframe;
1198 static Elm_Genlist_Item_Class itc7;
1201 gl_sel7(void *data, Evas_Object *obj, void *event_info)
1203 if (!event_info) return;
1204 elm_genlist_item_item_class_update(event_info, &itc7);
1205 printf("sel item data [%p] on genlist obj [%p], item pointer [%p], new item style [%s] \n", data, obj, event_info, itc7.item_style);
1209 test_genlist7_back_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1211 struct genlist7_data *info = data;
1214 elm_naviframe_item_pop(info->naviframe);
1218 test_genlist7_swipe(void *data, Evas_Object *obj __UNUSED__, void *event_info)
1220 struct genlist7_data *info = data;
1221 Evas_Object *box, *entry, *button;
1222 char item_data[] = "Just a simple test";
1224 if ((!event_info) || (!data)) return;
1226 box = elm_box_add(info->win);
1227 elm_box_homogeneous_set(box, EINA_FALSE);
1228 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1229 evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
1230 evas_object_show(box);
1232 entry = elm_entry_add(info->win);
1233 elm_entry_scrollable_set(entry, EINA_TRUE);
1234 elm_entry_editable_set(entry, EINA_FALSE);
1235 elm_object_text_set(entry, item_data);
1236 evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1237 evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
1238 evas_object_show(entry);
1240 button = elm_button_add(info->win);
1241 elm_object_text_set(button, "back");
1242 evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, 0);
1243 evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0);
1244 evas_object_smart_callback_add(button, "clicked", test_genlist7_back_cb,
1246 evas_object_show(button);
1248 elm_box_pack_start(box, entry);
1249 elm_box_pack_end(box, button);
1251 elm_naviframe_item_simple_push(info->naviframe, box);
1255 test_genlist7(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1257 Evas_Object *win, *gl, *naviframe;
1258 static struct genlist7_data info;
1259 static Testitem tit[3];
1261 win = elm_win_util_standard_add("genlist7", "Genlist 7");
1262 elm_win_autodel_set(win, EINA_TRUE);
1265 naviframe = elm_naviframe_add(win);
1266 elm_win_resize_object_add(win, naviframe);
1267 evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1268 evas_object_size_hint_align_set(naviframe, EVAS_HINT_FILL, EVAS_HINT_FILL);
1269 evas_object_show(naviframe);
1270 info.naviframe = naviframe;
1272 gl = elm_genlist_add(win);
1273 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1274 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1275 evas_object_smart_callback_add(gl, "swipe", test_genlist7_swipe, &info);
1276 evas_object_show(gl);
1277 elm_naviframe_item_simple_push(naviframe, gl);
1279 itc2.item_style = "default";
1280 itc2.func.text_get = gl2_text_get;
1281 itc2.func.content_get = gl2_content_get;
1282 itc2.func.state_get = gl2_state_get;
1283 itc2.func.del = NULL;
1285 itc7.item_style = "double_label";
1286 itc7.func.text_get = gl5_text_get;
1287 itc7.func.content_get = gl5_content_get;
1288 itc7.func.state_get = gl5_state_get;
1289 itc7.func.del = NULL;
1292 tit[0].item = elm_genlist_item_append(gl, &itc2,
1293 &(tit[0])/* item data */, NULL/* parent */,
1294 ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1295 NULL/* func data */);
1297 tit[1].item = elm_genlist_item_append(gl, &itc2,
1298 &(tit[1])/* item data */, NULL/* parent */,
1299 ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1300 NULL/* func data */);
1302 tit[2].item = elm_genlist_item_append(gl, &itc2,
1303 &(tit[2])/* item data */, NULL/* parent */,
1304 ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1305 NULL/* func data */);
1307 evas_object_resize(win, 320, 320);
1308 evas_object_show(win);
1313 static Elm_Genlist_Item_Class itc_group;
1315 char *gl8_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1318 snprintf(buf, sizeof(buf), "Group Index # %i (Item # %i)", (int)((long)data / 10), (int)(long)data);
1323 _bt_show_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1325 elm_genlist_item_top_show(data);
1326 //elm_genlist_item_show(data);
1327 //elm_genlist_item_middle_show(data);
1331 _bt_bring_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1333 elm_genlist_item_top_bring_in(data);
1334 //elm_genlist_item_bring_in(data);
1335 //elm_genlist_item_middle_bring_in(data);
1339 test_genlist8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1341 Evas_Object *win, *gl, *bt[8], *bx, *bx2, *bx3;
1342 Elm_Object_Item *gli = NULL, *git = NULL;
1345 win = elm_win_util_standard_add("genlist-group", "Genlist Group");
1346 elm_win_autodel_set(win, EINA_TRUE);
1348 bx = elm_box_add(win);
1349 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1350 elm_win_resize_object_add(win, bx);
1351 evas_object_show(bx);
1353 gl = elm_genlist_add(win);
1354 evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
1355 evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
1356 evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
1357 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1358 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1359 elm_box_pack_end(bx, gl);
1360 evas_object_show(gl);
1362 itc1 = elm_genlist_item_class_new();
1363 itc1->item_style = "default";
1364 itc1->func.text_get = gl_text_get;
1365 itc1->func.content_get = gl_content_get;
1366 itc1->func.state_get = gl_state_get;
1367 itc1->func.del = NULL;
1369 itc_group.item_style = "group_index";
1370 itc_group.func.text_get = gl8_text_get;
1371 itc_group.func.content_get = NULL;
1372 itc_group.func.state_get = NULL;
1373 itc_group.func.del = NULL;
1375 bx2 = elm_box_add(win);
1376 elm_box_horizontal_set(bx2, EINA_TRUE);
1377 elm_box_homogeneous_set(bx2, EINA_TRUE);
1378 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1379 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1382 bt[bt_num] = elm_button_add(win);
1383 elm_object_text_set(bt[bt_num], "Show 0");
1384 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1385 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1386 evas_object_show(bt[bt_num]);
1387 elm_box_pack_end(bx2, bt[bt_num]);
1389 bt[++bt_num] = elm_button_add(win);
1390 elm_object_text_set(bt[bt_num], "Show 26");
1391 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1392 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1393 evas_object_show(bt[bt_num]);
1394 elm_box_pack_end(bx2, bt[bt_num]);
1396 bt[++bt_num] = elm_button_add(win);
1397 elm_object_text_set(bt[bt_num], "Show 101");
1398 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1399 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1400 evas_object_show(bt[bt_num]);
1401 elm_box_pack_end(bx2, bt[bt_num]);
1403 bt[++bt_num] = elm_button_add(win);
1404 elm_object_text_set(bt[bt_num], "Show 480");
1405 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1406 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1407 evas_object_show(bt[bt_num]);
1408 elm_box_pack_end(bx2, bt[bt_num]);
1410 elm_box_pack_end(bx, bx2);
1411 evas_object_show(bx2);
1413 bx3 = elm_box_add(win);
1414 elm_box_horizontal_set(bx3, EINA_TRUE);
1415 elm_box_homogeneous_set(bx3, EINA_TRUE);
1416 evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
1417 evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
1419 bt[++bt_num] = elm_button_add(win);
1420 elm_object_text_set(bt[bt_num], "Bring top 0");
1421 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1422 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1423 evas_object_show(bt[bt_num]);
1424 elm_box_pack_end(bx3, bt[bt_num]);
1426 bt[++bt_num] = elm_button_add(win);
1427 elm_object_text_set(bt[bt_num], "Bring top 31");
1428 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1429 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1430 evas_object_show(bt[bt_num]);
1431 elm_box_pack_end(bx3, bt[bt_num]);
1433 bt[++bt_num] = elm_button_add(win);
1434 elm_object_text_set(bt[bt_num], "Bring top 239");
1435 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1436 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1437 evas_object_show(bt[bt_num]);
1438 elm_box_pack_end(bx3, bt[bt_num]);
1440 bt[++bt_num] = elm_button_add(win);
1441 elm_object_text_set(bt[bt_num], "Bring top 477");
1442 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1443 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1444 evas_object_show(bt[bt_num]);
1445 elm_box_pack_end(bx3, bt[bt_num]);
1447 elm_box_pack_end(bx, bx3);
1448 evas_object_show(bx3);
1450 for (i = 0; i < 500; i++)
1454 gli = git = elm_genlist_item_append(gl, &itc_group,
1455 (void *)(long)i/* item data */,
1457 ELM_GENLIST_ITEM_GROUP,
1459 (void *)(long)(i * 10)/* func data */);
1460 elm_genlist_item_display_only_set(git, EINA_TRUE);
1464 gli = elm_genlist_item_append(gl, itc1,
1465 (void *)(long)i/* item data */,
1467 ELM_GENLIST_ITEM_NONE,
1469 (void *)(long)(i * 10)/* func data */);
1474 evas_object_smart_callback_add(bt[0], "clicked", _bt_show_cb, gli);
1475 evas_object_smart_callback_add(bt[4], "clicked", _bt_bring_cb, gli);
1478 evas_object_smart_callback_add(bt[1], "clicked", _bt_show_cb, gli);
1481 evas_object_smart_callback_add(bt[5], "clicked", _bt_bring_cb, gli);
1484 evas_object_smart_callback_add(bt[2], "clicked", _bt_show_cb, gli);
1487 evas_object_smart_callback_add(bt[6], "clicked", _bt_bring_cb, gli);
1490 evas_object_smart_callback_add(bt[7], "clicked", _bt_bring_cb, gli);
1493 evas_object_smart_callback_add(bt[3], "clicked", _bt_show_cb, gli);
1497 elm_genlist_item_class_free(itc1);
1499 evas_object_resize(win, 480, 800);
1500 evas_object_show(win);
1506 gl9_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1508 Elm_Object_Item *glit = event_info;
1509 Evas_Object *gl = elm_object_item_widget_get(glit);
1510 int val = (int)(long) elm_object_item_data_get(glit);
1512 elm_genlist_item_append(gl, itc1,
1513 (void *)(long) (val + 1)/* item data */,
1515 ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1516 NULL/* func data */);
1517 elm_genlist_item_append(gl, itc1,
1518 (void *)(long) (val + 2)/* item data */,
1520 ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1521 NULL/* func data */);
1522 elm_genlist_item_append(gl, itc1,
1523 (void *)(long) (val + 3)/* item data */,
1525 ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1526 NULL/* func data */);
1530 gl9_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1532 Elm_Object_Item *glit = event_info;
1533 elm_genlist_item_subitems_clear(glit);
1537 gl9_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1539 Elm_Object_Item *glit = event_info;
1540 elm_genlist_item_expanded_set(glit, EINA_TRUE);
1544 gl9_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1546 Elm_Object_Item *glit = event_info;
1547 elm_genlist_item_expanded_set(glit, EINA_FALSE);
1551 test_genlist9(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1553 Evas_Object *win, *gl, *bx;
1554 Elm_Object_Item *git;
1556 win = elm_win_util_standard_add("genlist-group-tree", "Genlist Group Tree");
1557 elm_win_autodel_set(win, EINA_TRUE);
1559 bx = elm_box_add(win);
1560 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1561 elm_win_resize_object_add(win, bx);
1562 evas_object_show(bx);
1564 gl = elm_genlist_add(win);
1565 evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
1566 evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
1567 evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
1568 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1569 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1570 elm_box_pack_end(bx, gl);
1571 evas_object_show(gl);
1573 itc1 = elm_genlist_item_class_new();
1574 itc1->item_style = "default";
1575 itc1->func.text_get = gl_text_get;
1576 itc1->func.content_get = gl_content_get;
1577 itc1->func.state_get = gl_state_get;
1578 itc1->func.del = NULL;
1580 itc_group.item_style = "group_index";
1581 itc_group.func.text_get = gl8_text_get;
1582 itc_group.func.content_get = NULL;
1583 itc_group.func.state_get = NULL;
1584 itc_group.func.del = NULL;
1586 git = elm_genlist_item_append(gl, &itc_group,
1587 (void *)0/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_GROUP, gl4_sel/* func */,
1588 NULL/* func data */);
1589 elm_genlist_item_display_only_set(git, EINA_TRUE);
1590 elm_genlist_item_append(gl, itc1,
1591 (void *)1/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1592 NULL/* func data */);
1593 elm_genlist_item_append(gl, itc1,
1594 (void *)2/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1595 NULL/* func data */);
1596 elm_genlist_item_append(gl, itc1,
1597 (void *)3/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1598 NULL/* func data */);
1599 git = elm_genlist_item_append(gl, &itc_group,
1600 (void *)4/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_GROUP, gl4_sel/* func */,
1601 NULL/* func data */);
1602 elm_genlist_item_display_only_set(git, EINA_TRUE);
1603 elm_genlist_item_append(gl, itc1,
1604 (void *)5/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1605 NULL/* func data */);
1606 elm_genlist_item_append(gl, itc1,
1607 (void *)6/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1608 NULL/* func data */);
1609 elm_genlist_item_append(gl, itc1,
1610 (void *)7/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1611 NULL/* func data */);
1612 elm_genlist_item_class_free(itc1);
1614 evas_object_smart_callback_add(gl, "expand,request", gl9_exp_req, gl);
1615 evas_object_smart_callback_add(gl, "contract,request", gl9_con_req, gl);
1616 evas_object_smart_callback_add(gl, "expanded", gl9_exp, gl);
1617 evas_object_smart_callback_add(gl, "contracted", gl9_con, gl);
1619 evas_object_resize(win, 480, 800);
1620 evas_object_show(win);
1625 static Elm_Genlist_Item_Class itc10;
1626 static char *mode_type[] = { "slide", "rotate" };
1628 char *gl10_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
1631 if (!strcmp(part, "elm.text.mode"))
1632 snprintf(buf, sizeof(buf), "Mode # %i", (int)(long)data);
1634 snprintf(buf, sizeof(buf), "Item # %i", (int)(long)data);
1638 Evas_Object *gl10_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
1641 Evas_Object *ic = elm_icon_add(obj);
1642 if (!strcmp(part, "elm.swallow.end"))
1643 snprintf(buf, sizeof(buf), "%s/images/bubble.png", elm_app_data_dir_get());
1645 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
1646 elm_icon_file_set(ic, buf, NULL);
1647 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
1652 _gl_sel10(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1655 int v = elm_radio_value_get(data);
1657 elm_genlist_item_mode_set(event_info, mode_type[v], EINA_TRUE);
1661 _my_gl_mode_right(void *data, Evas_Object *obj __UNUSED__, void *event_info)
1664 int v = elm_radio_value_get(data);
1666 elm_genlist_item_mode_set(event_info, mode_type[v], EINA_TRUE);
1670 _my_gl_mode_left(void *data, Evas_Object *obj __UNUSED__, void *event_info)
1673 int v = elm_radio_value_get(data);
1675 elm_genlist_item_mode_set(event_info, mode_type[v], EINA_FALSE);
1679 _my_gl_mode_cancel(void *data, Evas_Object *obj, void *event_info __UNUSED__)
1681 fprintf(stderr, "drag\n");
1683 int v = elm_radio_value_get(data);
1684 Elm_Object_Item *glit = (Elm_Object_Item *) elm_genlist_mode_item_get(obj);
1685 if (glit) elm_genlist_item_mode_set(glit, mode_type[v], EINA_FALSE);
1689 test_genlist10(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1691 Evas_Object *win, *fr, *lb, *bx, *bx2, *bx3, *rd, *rdg, *gl;
1694 win = elm_win_util_standard_add("genlist10", "Genlist Mode");
1695 elm_win_autodel_set(win, EINA_TRUE);
1697 bx = elm_box_add(win);
1698 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1699 elm_win_resize_object_add(win, bx);
1700 evas_object_show(bx);
1702 fr = elm_frame_add(win);
1703 elm_object_text_set(fr, "Mode Type");
1704 elm_box_pack_end(bx, fr);
1705 evas_object_show(fr);
1707 bx2 = elm_box_add(win);
1708 elm_object_content_set(fr, bx2);
1709 evas_object_show(bx2);
1711 lb = elm_label_add(win);
1712 elm_object_text_set(lb,
1713 "Sweep genlist items to the right.<br/>"
1714 "Test this by changing Mode Type to Slide or Rotate.");
1715 elm_box_pack_end(bx2, lb);
1716 evas_object_show(lb);
1718 bx3 = elm_box_add(win);
1719 elm_box_horizontal_set(bx3, EINA_TRUE);
1720 elm_box_pack_end(bx2, bx3);
1721 evas_object_show(bx3);
1723 rd = elm_radio_add(win);
1724 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1725 elm_radio_state_value_set(rd, 0);
1726 elm_object_text_set(rd, "Slide ");
1727 evas_object_show(rd);
1728 elm_box_pack_end(bx3, rd);
1731 rd = elm_radio_add(win);
1732 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1733 elm_radio_state_value_set(rd, 1);
1734 elm_object_text_set(rd, "Rotate");
1735 elm_radio_group_add(rd, rdg);
1736 evas_object_show(rd);
1737 elm_box_pack_end(bx3, rd);
1739 gl = elm_genlist_add(win);
1740 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1741 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1742 evas_object_smart_callback_add(gl, "drag,start,right", _my_gl_mode_right, rdg);
1743 evas_object_smart_callback_add(gl, "drag,start,left", _my_gl_mode_left, rdg);
1744 evas_object_smart_callback_add(gl, "drag,start,up", _my_gl_mode_cancel, rdg);
1745 evas_object_smart_callback_add(gl, "drag,start,down", _my_gl_mode_cancel, rdg);
1746 evas_object_show(gl);
1748 itc10.item_style = "default";
1749 itc10.func.text_get = gl10_text_get;
1750 itc10.func.content_get = gl10_content_get;
1751 itc10.func.state_get = gl_state_get;
1752 itc10.func.del = NULL;
1753 elm_genlist_mode_item_style_set(gl, "mode");
1755 for (i = 0; i < 50; i++)
1756 elm_genlist_item_append(gl,
1758 (void *)(1000 + i)/* item data */,
1760 ELM_GENLIST_ITEM_NONE/* flags */,
1761 _gl_sel10/* func */,
1762 rdg/* func data */);
1764 elm_box_pack_end(bx, gl);
1766 evas_object_resize(win, 520, 520);
1767 evas_object_show(win);
1773 _reorder_tg_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
1775 elm_genlist_reorder_mode_set(data, elm_check_state_get(obj));
1779 * gl_moved is called after an item was reordered.
1780 * This is only called when reorder mode is enabled.
1782 * @param data : the genlist object passed as data.
1783 * @param obj : the genlist object.
1784 * @param item : the moved item.
1786 * If the move_after is true,
1787 * the item(*item) had been moved after the given relative item(*rel_item) in list.
1788 * If the move_after is false,
1789 * the item(*item) had been moved before the given relative item(*rel_item) in list.
1792 static void gl_moved(Evas_Object *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Object_Item *item __UNUSED__)
1794 // if needed, add application logic.
1798 test_genlist11(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1800 Evas_Object *win, *fr, *lb, *bx, *tg, *gl;
1803 win = elm_win_util_standard_add("genlist-reorder-mode", "Genlist Reorder Mode");
1804 elm_win_autodel_set(win, EINA_TRUE);
1806 bx = elm_box_add(win);
1807 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1808 elm_win_resize_object_add(win, bx);
1809 evas_object_show(bx);
1811 fr = elm_frame_add(win);
1813 elm_object_text_set(fr, "Reorder Mode");
1814 elm_box_pack_end(bx, fr);
1815 evas_object_show(fr);
1817 lb = elm_label_add(win);
1818 elm_object_text_set(lb,
1819 "Enable reorder mode if you want to move item.<br/>"
1820 "Then long press and drag item.");
1821 elm_object_content_set(fr, lb);
1822 evas_object_show(lb);
1824 gl = elm_genlist_add(win);
1825 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1826 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1827 evas_object_show(gl);
1829 tg = elm_check_add(win);
1830 elm_object_style_set(tg, "toggle");
1831 elm_object_text_set(tg, "Reorder Mode:");
1832 elm_check_state_set(tg, elm_mirrored_get());
1833 evas_object_smart_callback_add(tg, "changed", _reorder_tg_changed_cb, gl);
1834 elm_box_pack_end(bx, tg);
1835 evas_object_show(tg);
1837 itc1 = elm_genlist_item_class_new();
1838 itc1->item_style = "default";
1839 itc1->func.text_get = gl_text_get;
1840 itc1->func.content_get = gl_content_get;
1841 itc1->func.state_get = gl_state_get;
1842 itc1->func.del = NULL;
1843 evas_object_smart_callback_add(gl, "moved", (Evas_Smart_Cb)gl_moved, gl);
1845 for (i = 0; i < 50; i++)
1846 elm_genlist_item_append(gl,
1848 (void *)(1 + i)/* item data */,
1850 ELM_GENLIST_ITEM_NONE/* flags */,
1852 NULL/* func data */);
1854 elm_genlist_item_class_free(itc1);
1856 elm_box_pack_end(bx, gl);
1858 evas_object_resize(win, 400, 500);
1859 evas_object_show(win);
1862 char *gl12_text_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1864 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).");
1868 test_genlist12(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1870 Evas_Object *win, *bx, *gl;
1873 win = elm_win_util_standard_add("genlist-textblock", "Genlist Textblock");
1874 elm_win_autodel_set(win, EINA_TRUE);
1876 bx = elm_box_add(win);
1877 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1878 elm_win_resize_object_add(win, bx);
1879 evas_object_show(bx);
1881 gl = elm_genlist_add(win);
1882 elm_genlist_height_for_width_mode_set(gl, EINA_TRUE);
1883 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1884 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1885 elm_box_pack_end(bx, gl);
1886 evas_object_show(gl);
1888 itc1->item_style = "message";
1889 itc1->func.text_get = gl12_text_get;
1890 itc1->func.content_get = gl_content_get;
1891 itc1->func.state_get = gl_state_get;
1892 itc1->func.del = NULL;
1894 for (i = 0; i < 1000; i++)
1896 elm_genlist_item_append(gl, itc1,
1897 (void *)(long)i/* item data */,
1899 ELM_GENLIST_ITEM_NONE,
1901 (void *)(long)(i * 10)/* func data */);
1903 elm_genlist_item_class_free(itc1);
1905 evas_object_resize(win, 400, 500);
1906 evas_object_show(win);
1910 gl13_cmp(const void *pa, const void *pb)
1912 const Elm_Object_Item *ia = pa, *ib = pb;
1913 int a = (int)(long) elm_object_item_data_get(ia);
1914 int b = (int)(long) elm_object_item_data_get(ib);
1919 test_genlist13(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1921 Elm_Object_Item *pi[6];
1922 Evas_Object *win, *bx, *gl; int i, base, idx[3] = {1, 10, 15};
1924 win = elm_win_util_standard_add("genlist-tree-insert-sorted", "Genlist Tree, Insert Sorted");
1925 elm_win_autodel_set(win, EINA_TRUE);
1927 bx = elm_box_add(win);
1928 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1929 elm_win_resize_object_add(win, bx);
1930 evas_object_show(bx);
1932 gl = elm_genlist_add(win);
1933 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1934 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1935 evas_object_show(gl);
1937 itc4.item_style = "default";
1938 itc4.func.text_get = gl4_text_get;
1939 itc4.func.content_get = NULL;
1940 itc4.func.state_get = NULL;
1941 itc4.func.del = NULL;
1943 /* mixed order to test insert sorted */
1945 for (i = 0; i < 3; i++)
1947 pi[i] = elm_genlist_item_direct_sorted_insert
1948 (gl, &itc4, (void *)idx[i]/* item data */, NULL/* parent */,
1949 ELM_GENLIST_ITEM_SUBITEMS, gl13_cmp/* cmp */,
1950 NULL/* func */, NULL/* func data */);
1953 for (i = 0, base = 100; i < 3; i++, base += 100)
1956 for (j = 0; j < 3; j++)
1958 elm_genlist_item_direct_sorted_insert
1959 (gl, &itc4, (void *)(idx[j] + base)/* item data */,
1960 pi[i]/* parent */, ELM_GENLIST_ITEM_NONE,
1961 gl13_cmp/* cmp */, NULL/* func */, NULL/* func data */);
1965 for (i = 0; i < 3; i++)
1967 pi[i + 3] = elm_genlist_item_direct_sorted_insert
1968 (gl, &itc4, (void *)(idx[i] * 2)/* item data */, NULL/* parent */,
1969 ELM_GENLIST_ITEM_SUBITEMS, gl13_cmp/* cmp */, NULL/* func */,
1970 NULL/* func data */);
1974 for (i = 0, base = 10000; i < 3; i++, base += 10000)
1977 for (j = 0; j < 3; j++)
1979 elm_genlist_item_direct_sorted_insert
1980 (gl, &itc4, (void *)(idx[j] + base)/* item data */,
1981 pi[i + 3]/* parent */, ELM_GENLIST_ITEM_NONE,
1982 gl13_cmp/* cmp */, NULL/* func */, NULL/* func data */);
1986 elm_box_pack_end(bx, gl);
1987 evas_object_show(bx);
1989 evas_object_resize(win, 320, 320);
1990 evas_object_show(win);
1994 my_gl_insert_before_rel(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1996 Evas_Object *gl = data;
1997 static int i = 1000;
1998 Elm_Object_Item *gli_selected;
2000 itc1->item_style = "default";
2001 itc1->func.text_get = gl_text_get;
2002 itc1->func.content_get = NULL;
2003 itc1->func.state_get = NULL;
2004 itc1->func.del = NULL;
2006 gli_selected = elm_genlist_selected_item_get(gl);
2009 printf("no item selected\n");
2013 elm_genlist_item_insert_before(gl, itc1,
2014 (void *)(long)i/* item data */,
2015 elm_genlist_item_parent_get(gli_selected),
2016 gli_selected/* item before */,
2017 ELM_GENLIST_ITEM_NONE,
2018 NULL/* func */, NULL/* func data */);
2023 my_gl_insert_after_rel(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2025 Evas_Object *gl = data;
2027 Elm_Object_Item *gli_selected;
2029 itc1->item_style = "default";
2030 itc1->func.text_get = gl_text_get;
2031 itc1->func.content_get = NULL;
2032 itc1->func.state_get = NULL;
2033 itc1->func.del = NULL;
2035 gli_selected = elm_genlist_selected_item_get(gl);
2038 printf("no item selected\n");
2042 elm_genlist_item_insert_after(gl, itc1,
2043 (void *)(long)i/* item data */,
2044 elm_genlist_item_parent_get(gli_selected),
2045 gli_selected/* item after */,
2046 ELM_GENLIST_ITEM_NONE,
2047 NULL/* func */, NULL/* func data */);
2052 test_genlist14(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2054 Elm_Object_Item *pi[6];
2055 Evas_Object *win, *bx, *bx2, *bt, *gl;
2057 /* index: 0, 1, 2, 3, 4, 5
2058 * items: 1, 15, 11, 2, 33, 21
2059 * final: 1, 2, 11, 15, 21, 33
2061 const int idx[6] = {1, 15, 11, 2, 33, 21};
2062 const int relative[6] = {
2063 0, /* item '1' - not used */
2064 0, /* item '15' - insert after pi[0], item '1' */
2065 -1, /* item '11' - insert before pi[1], item '15' */
2066 -2, /* item '2' - insert before pi[2], item '11' */
2067 1, /* item '33' - insert after pi[1], item '15' */
2068 -4 /* item '21' - insert before pi[4], item '33' */
2071 win = elm_win_util_standard_add("genlist-tree-insert-relative", "Genlist Tree, Insert Relative");
2072 elm_win_autodel_set(win, EINA_TRUE);
2074 bx = elm_box_add(win);
2075 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2076 elm_win_resize_object_add(win, bx);
2077 evas_object_show(bx);
2079 gl = elm_genlist_add(win);
2080 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
2081 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2082 evas_object_show(gl);
2084 itc1 = elm_genlist_item_class_new();
2086 itc4.item_style = "default";
2087 itc4.func.text_get = gl4_text_get;
2088 itc4.func.content_get = NULL;
2089 itc4.func.state_get = NULL;
2090 itc4.func.del = NULL;
2092 /* mixed order to test insert sorted */
2094 // BUG1: should be able to insert before=NULL, prepend
2095 // BUG2: should be able to insert after=NULL, append
2097 pi[0] = elm_genlist_item_append
2098 (gl, &itc4, (void *)idx[0]/* item data */,
2100 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2102 for (i = 1; i < 3; i++)
2104 if (relative[i] < 0)
2105 pi[i] = elm_genlist_item_insert_before
2106 (gl, &itc4, (void *)idx[i]/* item data */,
2107 NULL/* parent */, pi[-relative[i]],
2108 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2110 pi[i] = elm_genlist_item_insert_after
2111 (gl, &itc4, (void *)idx[i]/* item data */,
2112 NULL/* parent */, pi[relative[i]],
2113 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2116 for (i = 0; i < 3; i++)
2118 Elm_Object_Item *sub_glit[6];
2121 base = 1000 * (int)(long) elm_object_item_data_get(pi[i]);
2123 sub_glit[0] = elm_genlist_item_append
2124 (gl, &itc4, (void *)(long) (idx[0] + base)/* item data */, pi[i]/* parent */,
2125 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2127 for (j = 1; j < 6; j++) {
2128 if (relative[j] < 0)
2129 sub_glit[j] = elm_genlist_item_insert_before
2130 (gl, &itc4, (void *)(long) (idx[j] + base)/* item data */,
2131 pi[i]/* parent */, sub_glit[-relative[j]],
2132 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2134 sub_glit[j] = elm_genlist_item_insert_after
2135 (gl, &itc4, (void *)(long) (idx[j] + base)/* item data */,
2136 pi[i]/* parent */, sub_glit[relative[j]],
2137 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2141 for (i = 3; i < 6; i++)
2143 if (relative[i] < 0)
2144 pi[i] = elm_genlist_item_insert_before
2145 (gl, &itc4, (void *)(long) idx[i]/* item data */,
2146 NULL/* parent */, pi[-relative[i]],
2147 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2149 pi[i] = elm_genlist_item_insert_after
2150 (gl, &itc4, (void *)(long) idx[i]/* item data */,
2151 NULL/* parent */, pi[relative[i]],
2152 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2155 for (i = 3; i < 6; i++)
2157 Elm_Object_Item *sub_glit[6];
2160 base = 1000 * (int)(long) elm_object_item_data_get(pi[i]);
2162 sub_glit[0] = elm_genlist_item_append
2163 (gl, &itc4, (void *)(long) (idx[0] + base)/* item data */, pi[i]/* parent */,
2164 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2166 for (j = 1; j < 6; j++) {
2167 if (relative[j] < 0)
2168 sub_glit[j] = elm_genlist_item_insert_before
2169 (gl, &itc4, (void *)(long) (idx[j] + base)/* item data */,
2170 pi[i]/* parent */, sub_glit[-relative[j]],
2171 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2173 sub_glit[j] = elm_genlist_item_insert_after
2174 (gl, &itc4, (void *)(long) (idx[j] + base)/* item data */,
2175 pi[i]/* parent */, sub_glit[relative[j]],
2176 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2180 elm_box_pack_end(bx, gl);
2181 evas_object_show(bx);
2183 bx2 = elm_box_add(win);
2184 elm_box_horizontal_set(bx2, EINA_TRUE);
2185 elm_box_homogeneous_set(bx2, EINA_TRUE);
2186 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
2187 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
2189 bt = elm_button_add(win);
2190 elm_object_text_set(bt, "+ before");
2191 evas_object_smart_callback_add(bt, "clicked", my_gl_insert_before_rel, gl);
2192 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2193 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2194 elm_box_pack_end(bx2, bt);
2195 evas_object_show(bt);
2197 bt = elm_button_add(win);
2198 elm_object_text_set(bt, "+ after");
2199 evas_object_smart_callback_add(bt, "clicked", my_gl_insert_after_rel, gl);
2200 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2201 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2202 elm_box_pack_end(bx2, bt);
2203 evas_object_show(bt);
2205 elm_box_pack_end(bx, bx2);
2206 evas_object_show(bx2);
2208 /* item_class_ref is needed for itc1. some items can be added in callbacks */
2209 elm_genlist_item_class_ref(itc1);
2210 elm_genlist_item_class_free(itc1);
2212 evas_object_resize(win, 320, 320);
2213 evas_object_show(win);