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;
23 static Elm_Genlist_Item_Class *itc1;
24 char *gl_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
27 snprintf(buf, sizeof(buf), "Item # %i", (int)(long)data);
31 Evas_Object *gl_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
34 Evas_Object *ic = elm_icon_add(obj);
35 if (!strcmp(part, "elm.swallow.end"))
36 snprintf(buf, sizeof(buf), "%s/images/bubble.png", elm_app_data_dir_get());
38 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
39 elm_icon_file_set(ic, buf, NULL);
40 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__)
47 void gl_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
52 gl_sel(void *data, Evas_Object *obj, void *event_info)
54 printf("sel item data [%p] on genlist obj [%p], item pointer [%p]\n", data, obj, event_info);
58 _move(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
60 Evas_Object *gl = data;
61 Evas_Event_Mouse_Move *ev = event_info;
64 gli = elm_genlist_at_xy_item_get(gl, ev->cur.canvas.x, ev->cur.canvas.y, &where);
66 printf("over %p, where %i\n", elm_object_item_data_get(gli), where);
68 printf("over none, where %i\n", where);
72 _bt50_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
74 elm_genlist_item_bring_in(data);
78 _bt1500_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
80 elm_genlist_item_middle_bring_in(data);
84 _gl_selected(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
86 printf("selected: %p\n", event_info);
90 _gl_double_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
92 printf("double clicked: %p\n", event_info);
96 _gl_longpress(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
98 printf("longpress %p\n", event_info);
102 test_genlist(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
104 Evas_Object *win, *bg, *gl, *bt_50, *bt_1500, *bx;
106 Elm_Object_Item *gli;
109 win = elm_win_add(NULL, "genlist", ELM_WIN_BASIC);
110 elm_win_title_set(win, "Genlist");
111 elm_win_autodel_set(win, EINA_TRUE);
113 bg = elm_bg_add(win);
114 elm_win_resize_object_add(win, bg);
115 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
116 evas_object_show(bg);
118 bx = elm_box_add(win);
119 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
120 elm_win_resize_object_add(win, bx);
121 evas_object_show(bx);
123 gl = elm_genlist_add(win);
124 evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
125 evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
126 evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
127 // FIXME: This causes genlist to resize the horiz axis very slowly :(
128 // Reenable this and resize the window horizontally, then try to resize it back
129 //elm_genlist_mode_set(gl, ELM_LIST_LIMIT);
130 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
131 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
132 elm_box_pack_end(bx, gl);
133 evas_object_show(gl);
135 over = evas_object_rectangle_add(evas_object_evas_get(win));
136 evas_object_color_set(over, 0, 0, 0, 0);
137 evas_object_event_callback_add(over, EVAS_CALLBACK_MOUSE_MOVE, _move, gl);
138 evas_object_repeat_events_set(over, 1);
139 evas_object_show(over);
140 evas_object_size_hint_weight_set(over, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
141 elm_win_resize_object_add(win, over);
143 itc1 = elm_genlist_item_class_new();
144 itc1->item_style = "default";
145 itc1->func.text_get = gl_text_get;
146 itc1->func.content_get = gl_content_get;
147 itc1->func.state_get = gl_state_get;
148 itc1->func.del = gl_del;
150 bt_50 = elm_button_add(win);
151 elm_object_text_set(bt_50, "Go to 50");
152 evas_object_show(bt_50);
153 elm_box_pack_end(bx, bt_50);
155 bt_1500 = elm_button_add(win);
156 elm_object_text_set(bt_1500, "Go to 1500");
157 evas_object_show(bt_1500);
158 elm_box_pack_end(bx, bt_1500);
160 for (i = 0; i < 2000; i++)
162 gli = elm_genlist_item_append(gl, itc1,
163 (void *)(long)i/* item data */,
165 ELM_GENLIST_ITEM_NONE,
167 (void *)(long)(i * 10)/* func data */);
169 evas_object_smart_callback_add(bt_50, "clicked", _bt50_cb, gli);
171 evas_object_smart_callback_add(bt_1500, "clicked", _bt1500_cb, gli);
173 elm_genlist_item_class_free(itc1);
175 evas_object_resize(win, 480, 800);
176 evas_object_show(win);
182 my_gl_clear(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
184 Evas_Object *gl = data;
185 elm_genlist_clear(gl);
189 my_gl_add(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
191 Evas_Object *gl = data;
194 itc1->item_style = "default";
195 itc1->func.text_get = gl_text_get;
196 itc1->func.content_get = gl_content_get;
197 itc1->func.state_get = gl_state_get;
198 itc1->func.del = gl_del;
200 elm_genlist_item_append(gl, itc1,
201 (void *)(long)i/* item data */,
203 ELM_GENLIST_ITEM_NONE,
205 (void *)(long)(i * 10)/* func data */);
210 my_gl_insert_before(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
212 Evas_Object *gl = data;
214 Elm_Object_Item *gli_selected;
216 itc1->item_style = "default";
217 itc1->func.text_get = gl_text_get;
218 itc1->func.content_get = gl_content_get;
219 itc1->func.state_get = gl_state_get;
220 itc1->func.del = gl_del;
222 gli_selected = elm_genlist_selected_item_get(gl);
225 printf("no item selected\n");
229 elm_genlist_item_insert_before(gl, itc1,
230 (void *)(long)i/* item data */,
232 gli_selected /* item before */,
233 ELM_GENLIST_ITEM_NONE,
235 (void *)(long)(i * 10)/* func data */);
240 my_gl_insert_after(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
242 Evas_Object *gl = data;
244 Elm_Object_Item *gli_selected;
246 itc1->item_style = "default";
247 itc1->func.text_get = gl_text_get;
248 itc1->func.content_get = gl_content_get;
249 itc1->func.state_get = gl_state_get;
250 itc1->func.del = gl_del;
252 gli_selected = elm_genlist_selected_item_get(gl);
255 printf("no item selected\n");
259 elm_genlist_item_insert_after(gl, itc1,
260 (void *)(long)i/* item data */,
262 gli_selected /* item after */,
263 ELM_GENLIST_ITEM_NONE,
265 (void *)(long)(i * 10)/* func data */);
270 my_gl_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
272 Evas_Object *gl = data;
273 Elm_Object_Item *gli = elm_genlist_selected_item_get(gl);
276 printf("no item selected\n");
279 elm_object_item_del(gli);
283 my_gl_disable(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
285 Evas_Object *gl = data;
286 Elm_Object_Item *gli = elm_genlist_selected_item_get(gl);
289 printf("no item selected\n");
292 elm_object_item_disabled_set(gli, EINA_TRUE);
293 elm_genlist_item_selected_set(gli, EINA_FALSE);
294 elm_genlist_item_update(gli);
298 my_gl_update_all(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
300 Evas_Object *gl = data;
302 Elm_Object_Item *it = elm_genlist_first_item_get(gl);
305 elm_genlist_item_update(it);
308 it = elm_genlist_item_next_get(it);
313 my_gl_first(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
315 Evas_Object *gl = data;
316 Elm_Object_Item *gli = elm_genlist_first_item_get(gl);
318 elm_genlist_item_show(gli);
319 elm_genlist_item_selected_set(gli, 1);
323 my_gl_last(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
325 Evas_Object *gl = data;
326 Elm_Object_Item *gli = elm_genlist_last_item_get(gl);
328 elm_genlist_item_show(gli);
329 elm_genlist_item_selected_set(gli, 1);
333 my_gl_flush_delay(void *data __UNUSED__)
335 elm_cache_all_flush();
336 return ECORE_CALLBACK_CANCEL;
340 my_gl_flush(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
342 ecore_timer_add(1.2, my_gl_flush_delay, NULL);
346 test_genlist2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
348 Evas_Object *win, *bg, *gl, *bx, *bx2, *bx3, *bt;
349 Elm_Object_Item *gli[10];
352 win = elm_win_add(NULL, "genlist2", ELM_WIN_BASIC);
353 elm_win_title_set(win, "Genlist 2");
354 elm_win_autodel_set(win, EINA_TRUE);
356 bg = elm_bg_add(win);
357 snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
358 elm_bg_file_set(bg, buf, NULL);
359 elm_win_resize_object_add(win, bg);
360 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
361 evas_object_show(bg);
363 bx = elm_box_add(win);
364 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
365 elm_win_resize_object_add(win, bx);
366 evas_object_show(bx);
368 gl = elm_genlist_add(win);
369 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
370 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
371 evas_object_show(gl);
373 itc1 = elm_genlist_item_class_new();
374 itc1->item_style = "default";
375 itc1->func.text_get = gl_text_get;
376 itc1->func.content_get = gl_content_get;
377 itc1->func.state_get = gl_state_get;
378 itc1->func.del = gl_del;
380 gli[0] = elm_genlist_item_append(gl, itc1,
381 (void *)1001/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
382 (void *)1001/* func data */);
383 gli[1] = elm_genlist_item_append(gl, itc1,
384 (void *)1002/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
385 (void *)1002/* func data */);
386 gli[2] = elm_genlist_item_append(gl, itc1,
387 (void *)1003/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
388 (void *)1003/* func data */);
389 gli[3] = elm_genlist_item_prepend(gl, itc1,
390 (void *)1004/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
391 (void *)1004/* func data */);
392 gli[4] = elm_genlist_item_prepend(gl, itc1,
393 (void *)1005/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
394 (void *)1005/* func data */);
395 gli[5] = elm_genlist_item_insert_before(gl, itc1,
396 (void *)1006/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
397 gl_sel/* func */, (void *)1006/* func data */);
398 gli[6] = elm_genlist_item_insert_after(gl, itc1,
399 (void *)1007/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
400 gl_sel/* func */, (void *)1007/* func data */);
401 elm_box_pack_end(bx, gl);
403 bx2 = elm_box_add(win);
404 elm_box_horizontal_set(bx2, EINA_TRUE);
405 elm_box_homogeneous_set(bx2, EINA_TRUE);
406 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
407 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
409 bt = elm_button_add(win);
410 elm_object_text_set(bt, "/\\");
411 evas_object_smart_callback_add(bt, "clicked", my_gl_first, gl);
412 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
413 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
414 elm_box_pack_end(bx2, bt);
415 evas_object_show(bt);
417 bt = elm_button_add(win);
418 elm_object_text_set(bt, "\\/");
419 evas_object_smart_callback_add(bt, "clicked", my_gl_last, gl);
420 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
421 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
422 elm_box_pack_end(bx2, bt);
423 evas_object_show(bt);
425 bt = elm_button_add(win);
426 elm_object_text_set(bt, "#");
427 evas_object_smart_callback_add(bt, "clicked", my_gl_disable, gl);
428 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
429 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
430 elm_box_pack_end(bx2, bt);
431 evas_object_show(bt);
433 bt = elm_button_add(win);
434 elm_object_text_set(bt, "U");
435 evas_object_smart_callback_add(bt, "clicked", my_gl_update_all, gl);
436 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
437 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
438 elm_box_pack_end(bx2, bt);
439 evas_object_show(bt);
441 elm_box_pack_end(bx, bx2);
442 evas_object_show(bx2);
444 bx2 = elm_box_add(win);
445 elm_box_horizontal_set(bx2, EINA_TRUE);
446 elm_box_homogeneous_set(bx2, EINA_TRUE);
447 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
448 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
450 bt = elm_button_add(win);
451 elm_object_text_set(bt, "X");
452 evas_object_smart_callback_add(bt, "clicked", my_gl_clear, gl);
453 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
454 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
455 elm_box_pack_end(bx2, bt);
456 evas_object_show(bt);
458 bt = elm_button_add(win);
459 elm_object_text_set(bt, "+");
460 evas_object_smart_callback_add(bt, "clicked", my_gl_add, gl);
461 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
462 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
463 elm_box_pack_end(bx2, bt);
464 evas_object_show(bt);
466 bt = elm_button_add(win);
467 elm_object_text_set(bt, "-");
468 evas_object_smart_callback_add(bt, "clicked", my_gl_del, gl);
469 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
470 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
471 elm_box_pack_end(bx2, bt);
472 evas_object_show(bt);
474 elm_box_pack_end(bx, bx2);
475 evas_object_show(bx2);
477 bx3 = elm_box_add(win);
478 elm_box_horizontal_set(bx3, EINA_TRUE);
479 elm_box_homogeneous_set(bx3, EINA_TRUE);
480 evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
481 evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
483 bt = elm_button_add(win);
484 elm_object_text_set(bt, "+ before");
485 evas_object_smart_callback_add(bt, "clicked", my_gl_insert_before, gl);
486 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
487 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
488 elm_box_pack_end(bx3, bt);
489 evas_object_show(bt);
491 bt = elm_button_add(win);
492 elm_object_text_set(bt, "+ after");
493 evas_object_smart_callback_add(bt, "clicked", my_gl_insert_after, gl);
494 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
495 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
496 elm_box_pack_end(bx3, bt);
497 evas_object_show(bt);
499 bt = elm_button_add(win);
500 elm_object_text_set(bt, "Flush");
501 evas_object_smart_callback_add(bt, "clicked", my_gl_flush, gl);
502 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
503 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
504 elm_box_pack_end(bx3, bt);
505 evas_object_show(bt);
507 elm_box_pack_end(bx, bx3);
508 evas_object_show(bx3);
510 /* item_class_ref is needed for itc1. some items can be added in callbacks */
511 elm_genlist_item_class_ref(itc1);
512 elm_genlist_item_class_free(itc1);
514 evas_object_resize(win, 320, 320);
515 evas_object_show(win);
520 static Elm_Genlist_Item_Class itc2;
521 char *gl2_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
523 const Testitem *tit = data;
525 snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
528 Evas_Object *gl2_content_get(void *data, Evas_Object *obj, const char *part)
530 const Testitem *tit = data;
532 Evas_Object *ic = elm_icon_add(obj);
533 if (!strcmp(part, "elm.swallow.icon"))
535 if (!(tit->mode & 0x3))
536 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
537 else if ((tit->mode & 0x3) == 1)
538 snprintf(buf, sizeof(buf), "%s/images/logo.png", elm_app_data_dir_get());
539 else if ((tit->mode & 0x3) == 2)
540 snprintf(buf, sizeof(buf), "%s/images/panel_01.jpg", elm_app_data_dir_get());
541 else if ((tit->mode & 0x3) == 3)
542 snprintf(buf, sizeof(buf), "%s/images/rock_01.jpg", elm_app_data_dir_get());
543 elm_icon_file_set(ic, buf, NULL);
545 else if (!strcmp(part, "elm.swallow.end"))
547 if (!(tit->mode & 0x3))
548 snprintf(buf, sizeof(buf), "%s/images/sky_01.jpg", elm_app_data_dir_get());
549 else if ((tit->mode & 0x3) == 1)
550 snprintf(buf, sizeof(buf), "%s/images/sky_02.jpg", elm_app_data_dir_get());
551 else if ((tit->mode & 0x3) == 2)
552 snprintf(buf, sizeof(buf), "%s/images/sky_03.jpg", elm_app_data_dir_get());
553 else if ((tit->mode & 0x3) == 3)
554 snprintf(buf, sizeof(buf), "%s/images/sky_04.jpg", elm_app_data_dir_get());
555 elm_icon_file_set(ic, buf, NULL);
557 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
560 Eina_Bool gl2_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
564 void gl2_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
569 my_gl_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
571 Testitem *tit = data;
573 elm_genlist_item_update(tit->item);
577 my_gl_labels_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
579 Testitem *tit = data;
581 elm_genlist_item_fields_update(tit->item, "*", ELM_GENLIST_ITEM_FIELD_LABEL);
585 my_gl_contents_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
587 Testitem *tit = data;
589 elm_genlist_item_fields_update(tit->item, "*", ELM_GENLIST_ITEM_FIELD_CONTENT);
593 test_genlist3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
595 Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
596 static Testitem tit[3];
598 win = elm_win_add(NULL, "genlist3", ELM_WIN_BASIC);
599 elm_win_title_set(win, "Genlist 3");
600 elm_win_autodel_set(win, EINA_TRUE);
602 bg = elm_bg_add(win);
603 elm_win_resize_object_add(win, bg);
604 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
605 evas_object_show(bg);
607 bx = elm_box_add(win);
608 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
609 elm_win_resize_object_add(win, bx);
610 evas_object_show(bx);
612 gl = elm_genlist_add(win);
613 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
614 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
615 evas_object_show(gl);
617 itc2.item_style = "default";
618 itc2.func.text_get = gl2_text_get;
619 itc2.func.content_get = gl2_content_get;
620 itc2.func.state_get = gl2_state_get;
621 itc2.func.del = gl2_del;
624 tit[0].item = elm_genlist_item_append(gl, &itc2,
625 &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
626 NULL/* func data */);
628 tit[1].item = elm_genlist_item_append(gl, &itc2,
629 &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
630 NULL/* func data */);
632 tit[2].item = elm_genlist_item_append(gl, &itc2,
633 &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
634 NULL/* func data */);
636 elm_box_pack_end(bx, gl);
637 evas_object_show(bx);
639 bx2 = elm_box_add(win);
640 elm_box_horizontal_set(bx2, EINA_TRUE);
641 elm_box_homogeneous_set(bx2, EINA_TRUE);
642 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
643 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
645 bt = elm_button_add(win);
646 elm_object_text_set(bt, "[1]");
647 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
648 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
649 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
650 elm_box_pack_end(bx2, bt);
651 evas_object_show(bt);
653 bt = elm_button_add(win);
654 elm_object_text_set(bt, "labels");
655 evas_object_smart_callback_add(bt, "clicked", my_gl_labels_update, &(tit[1]));
656 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
657 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
658 elm_box_pack_end(bx2, bt);
659 evas_object_show(bt);
661 bt = elm_button_add(win);
662 elm_object_text_set(bt, "contents");
663 evas_object_smart_callback_add(bt, "clicked", my_gl_contents_update, &(tit[2]));
664 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
665 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
666 elm_box_pack_end(bx2, bt);
667 evas_object_show(bt);
669 elm_box_pack_end(bx, bx2);
670 evas_object_show(bx2);
672 evas_object_resize(win, 320, 320);
673 evas_object_show(win);
679 my_gl_item_check_changed(void *data, Evas_Object *obj, void *event_info __UNUSED__)
681 Testitem *tit = data;
682 tit->onoff = elm_check_state_get(obj);
683 printf("item %p onoff = %i\n", tit, tit->onoff);
686 static Elm_Genlist_Item_Class itc3;
687 char *gl3_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
689 const Testitem *tit = data;
691 snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
694 Evas_Object *gl3_content_get(void *data, Evas_Object *obj, const char *part)
696 const Testitem *tit = data;
697 if (!strcmp(part, "elm.swallow.icon"))
701 lb = elm_label_add(obj);
702 elm_label_line_wrap_set(lb, ELM_WRAP_CHAR);
703 elm_label_wrap_width_set(lb, 201);
704 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");
707 else if (!strcmp(part, "elm.swallow.end"))
710 ck = elm_check_add(obj);
711 evas_object_propagate_events_set(ck, EINA_FALSE);
712 elm_check_state_set(ck, tit->onoff);
713 evas_object_smart_callback_add(ck, "changed", my_gl_item_check_changed, data);
718 Eina_Bool gl3_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
722 void gl3_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
727 test_genlist4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
729 Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
730 static Testitem tit[3];
732 win = elm_win_add(NULL, "genlist4", ELM_WIN_BASIC);
733 elm_win_title_set(win, "Genlist 4");
734 elm_win_autodel_set(win, EINA_TRUE);
736 bg = elm_bg_add(win);
737 elm_win_resize_object_add(win, bg);
738 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
739 evas_object_show(bg);
741 bx = elm_box_add(win);
742 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
743 elm_win_resize_object_add(win, bx);
744 evas_object_show(bx);
746 gl = elm_genlist_add(win);
747 elm_genlist_height_for_width_mode_set(gl, EINA_TRUE);
748 elm_genlist_multi_select_set(gl, 1);
749 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
750 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
751 evas_object_show(gl);
753 itc3.item_style = "default";
754 itc3.func.text_get = gl3_text_get;
755 itc3.func.content_get = gl3_content_get;
756 itc3.func.state_get = gl3_state_get;
757 itc3.func.del = gl3_del;
760 tit[0].item = elm_genlist_item_append(gl, &itc3,
761 &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
762 NULL/* func data */);
764 tit[1].item = elm_genlist_item_append(gl, &itc3,
765 &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
766 NULL/* func data */);
768 tit[2].item = elm_genlist_item_append(gl, &itc3,
769 &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
770 NULL/* func data */);
772 elm_box_pack_end(bx, gl);
773 evas_object_show(bx);
775 bx2 = elm_box_add(win);
776 elm_box_horizontal_set(bx2, EINA_TRUE);
777 elm_box_homogeneous_set(bx2, EINA_TRUE);
778 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
779 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
781 bt = elm_button_add(win);
782 elm_object_text_set(bt, "[1]");
783 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
784 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
785 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
786 elm_box_pack_end(bx2, bt);
787 evas_object_show(bt);
789 bt = elm_button_add(win);
790 elm_object_text_set(bt, "[2]");
791 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
792 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
793 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
794 elm_box_pack_end(bx2, bt);
795 evas_object_show(bt);
797 bt = elm_button_add(win);
798 elm_object_text_set(bt, "[3]");
799 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
800 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
801 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
802 elm_box_pack_end(bx2, bt);
803 evas_object_show(bt);
805 elm_box_pack_end(bx, bx2);
806 evas_object_show(bx2);
808 evas_object_resize(win, 320, 320);
809 evas_object_show(win);
815 my_gl_item_check_changed2(void *data, Evas_Object *obj, void *event_info __UNUSED__)
817 Testitem *tit = data;
818 tit->onoff = elm_check_state_get(obj);
819 printf("item %p onoff = %i\n", tit, tit->onoff);
822 static Elm_Genlist_Item_Class itc5;
823 char *gl5_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
825 const Testitem *tit = data;
827 if (!strcmp(part, "elm.text"))
829 snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
831 else if (!strcmp(part, "elm.text.sub"))
833 snprintf(buf, sizeof(buf), "%i bottles on the wall", tit->mode);
837 Evas_Object *gl5_content_get(void *data, Evas_Object *obj, const char *part)
839 const Testitem *tit = data;
841 if (!strcmp(part, "elm.swallow.icon"))
843 Evas_Object *bx = elm_box_add(obj);
845 elm_box_horizontal_set(bx, EINA_TRUE);
846 ic = elm_icon_add(obj);
847 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
848 elm_icon_file_set(ic, buf, NULL);
849 elm_icon_scale_set(ic, 0, 0);
850 evas_object_show(ic);
851 elm_box_pack_end(bx, ic);
852 ic = elm_icon_add(obj);
853 elm_icon_file_set(ic, buf, NULL);
854 elm_icon_scale_set(ic, 0, 0);
855 evas_object_show(ic);
856 elm_box_pack_end(bx, ic);
857 elm_box_horizontal_set(bx, EINA_TRUE);
858 evas_object_show(bx);
861 else if (!strcmp(part, "elm.swallow.end"))
864 ck = elm_check_add(obj);
865 evas_object_propagate_events_set(ck, EINA_FALSE);
866 elm_check_state_set(ck, tit->onoff);
867 evas_object_smart_callback_add(ck, "changed", my_gl_item_check_changed2, data);
868 evas_object_show(ck);
873 Eina_Bool gl5_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
877 void gl5_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
882 item_drag_up(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
888 item_drag_down(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
890 printf("drag down\n");
894 item_drag_left(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
896 printf("drag left\n");
900 item_drag_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
902 printf("drag right\n");
906 scroll_top(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
908 printf("Top edge!\n");
912 scroll_bottom(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
914 printf("Bottom edge!\n");
918 scroll_left(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
920 printf("Left edge!\n");
924 scroll_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
926 printf("Right edge!\n");
930 item_drag(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
936 item_drag_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
938 printf("drag stop\n");
942 item_longpress(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
944 printf("longpress\n");
948 test_genlist5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
950 Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
951 static Testitem tit[3];
953 win = elm_win_add(NULL, "genlist5", ELM_WIN_BASIC);
954 elm_win_title_set(win, "Genlist 5");
955 elm_win_autodel_set(win, EINA_TRUE);
957 bg = elm_bg_add(win);
958 elm_win_resize_object_add(win, bg);
959 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
960 evas_object_show(bg);
962 bx = elm_box_add(win);
963 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
964 elm_win_resize_object_add(win, bx);
965 evas_object_show(bx);
967 gl = elm_genlist_add(win);
968 elm_genlist_always_select_mode_set(gl, 1);
969 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
970 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
971 evas_object_show(gl);
972 itc5.item_style = "double_label";
973 itc5.func.text_get = gl5_text_get;
974 itc5.func.content_get = gl5_content_get;
975 itc5.func.state_get = gl5_state_get;
976 itc5.func.del = gl5_del;
979 tit[0].item = elm_genlist_item_append(gl, &itc5,
980 &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
981 NULL/* func data */);
983 tit[1].item = elm_genlist_item_append(gl, &itc5,
984 &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
985 NULL/* func data */);
987 tit[2].item = elm_genlist_item_append(gl, &itc5,
988 &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
989 NULL/* func data */);
991 elm_box_pack_end(bx, gl);
992 evas_object_show(bx);
994 evas_object_smart_callback_add(gl, "drag,start,up", item_drag_up, NULL);
995 evas_object_smart_callback_add(gl, "drag,start,down", item_drag_down, NULL);
996 evas_object_smart_callback_add(gl, "drag,start,left", item_drag_left, NULL);
997 evas_object_smart_callback_add(gl, "drag,start,right", item_drag_right, NULL);
998 evas_object_smart_callback_add(gl, "scroll,edge,top", scroll_top, NULL);
999 evas_object_smart_callback_add(gl, "scroll,edge,bottom", scroll_bottom, NULL);
1000 evas_object_smart_callback_add(gl, "scroll,edge,left", scroll_left, NULL);
1001 evas_object_smart_callback_add(gl, "scroll,edge,right", scroll_right, NULL);
1002 evas_object_smart_callback_add(gl, "drag", item_drag, NULL);
1003 evas_object_smart_callback_add(gl, "drag,stop", item_drag_stop, NULL);
1004 evas_object_smart_callback_add(gl, "longpressed", item_longpress, NULL);
1006 bx2 = elm_box_add(win);
1007 elm_box_horizontal_set(bx2, EINA_TRUE);
1008 elm_box_homogeneous_set(bx2, EINA_TRUE);
1009 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1010 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1012 bt = elm_button_add(win);
1013 elm_object_text_set(bt, "[1]");
1014 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
1015 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1016 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1017 elm_box_pack_end(bx2, bt);
1018 evas_object_show(bt);
1020 bt = elm_button_add(win);
1021 elm_object_text_set(bt, "[2]");
1022 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
1023 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1024 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1025 elm_box_pack_end(bx2, bt);
1026 evas_object_show(bt);
1028 bt = elm_button_add(win);
1029 elm_object_text_set(bt, "[3]");
1030 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
1031 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1032 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1033 elm_box_pack_end(bx2, bt);
1034 evas_object_show(bt);
1036 elm_box_pack_end(bx, bx2);
1037 evas_object_show(bx2);
1039 evas_object_resize(win, 320, 320);
1040 evas_object_show(win);
1045 static Elm_Genlist_Item_Class itc4;
1048 gl4_sel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1050 Elm_Object_Item *glit = event_info;
1051 int depth = elm_genlist_item_expanded_depth_get(glit);
1052 printf("expanded depth for selected item is %d\n", depth);
1056 gl4_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1058 Elm_Object_Item *glit = event_info;
1059 Evas_Object *gl = elm_object_item_widget_get(glit);
1060 int val = (int)(long) elm_object_item_data_get(glit);
1062 elm_genlist_item_append(gl, &itc4,
1063 (void *)(long) (val + 1)/* item data */,
1064 glit/* parent */, ELM_GENLIST_ITEM_NONE,
1066 NULL/* func data */);
1067 elm_genlist_item_append(gl, &itc4,
1068 (void *)(long) (val + 2)/* item data */,
1069 glit/* parent */, ELM_GENLIST_ITEM_NONE,
1071 NULL/* func data */);
1072 elm_genlist_item_append(gl, &itc4,
1073 (void *)(long) (val + 3)/* item data */,
1075 ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1076 NULL/* func data */);
1079 gl4_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1081 Elm_Object_Item *glit = event_info;
1082 elm_genlist_item_subitems_clear(glit);
1086 gl4_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1088 Elm_Object_Item *glit = event_info;
1089 elm_genlist_item_expanded_set(glit, EINA_TRUE);
1092 gl4_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1094 Elm_Object_Item *glit = event_info;
1095 elm_genlist_item_expanded_set(glit, EINA_FALSE);
1098 char *gl4_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1101 snprintf(buf, sizeof(buf), "Item mode %i", (int)(long)data);
1104 Evas_Object *gl4_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
1107 if (!strcmp(part, "elm.swallow.icon"))
1109 Evas_Object *ic = elm_icon_add(obj);
1110 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
1111 elm_icon_file_set(ic, buf, NULL);
1112 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
1113 evas_object_show(ic);
1116 else if (!strcmp(part, "elm.swallow.end"))
1119 ck = elm_check_add(obj);
1120 evas_object_propagate_events_set(ck, EINA_FALSE);
1121 evas_object_show(ck);
1126 Eina_Bool gl4_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1130 void gl4_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
1135 test_genlist6(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1137 Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
1139 win = elm_win_add(NULL, "genlist-tree", ELM_WIN_BASIC);
1140 elm_win_title_set(win, "Genlist Tree");
1141 elm_win_autodel_set(win, EINA_TRUE);
1143 bg = elm_bg_add(win);
1144 elm_win_resize_object_add(win, bg);
1145 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1146 evas_object_show(bg);
1148 bx = elm_box_add(win);
1149 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1150 elm_win_resize_object_add(win, bx);
1151 evas_object_show(bx);
1153 gl = elm_genlist_add(win);
1154 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1155 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1156 evas_object_show(gl);
1158 itc4.item_style = "default";
1159 itc4.func.text_get = gl4_text_get;
1160 itc4.func.content_get = gl4_content_get;
1161 itc4.func.state_get = gl4_state_get;
1162 itc4.func.del = gl4_del;
1164 elm_genlist_item_append(gl, &itc4,
1165 (void *)1/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1166 NULL/* func data */);
1167 elm_genlist_item_append(gl, &itc4,
1168 (void *)2/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1169 NULL/* func data */);
1170 elm_genlist_item_append(gl, &itc4,
1171 (void *)3/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1172 NULL/* func data */);
1174 evas_object_smart_callback_add(gl, "expand,request", gl4_exp_req, gl);
1175 evas_object_smart_callback_add(gl, "contract,request", gl4_con_req, gl);
1176 evas_object_smart_callback_add(gl, "expanded", gl4_exp, gl);
1177 evas_object_smart_callback_add(gl, "contracted", gl4_con, gl);
1179 elm_box_pack_end(bx, gl);
1180 evas_object_show(bx);
1182 bx2 = elm_box_add(win);
1183 elm_box_horizontal_set(bx2, EINA_TRUE);
1184 elm_box_homogeneous_set(bx2, EINA_TRUE);
1185 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1186 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1188 bt = elm_button_add(win);
1189 elm_object_text_set(bt, "[1]");
1190 // evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
1191 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1192 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1193 elm_box_pack_end(bx2, bt);
1194 evas_object_show(bt);
1196 bt = elm_button_add(win);
1197 elm_object_text_set(bt, "[2]");
1198 // evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
1199 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1200 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1201 elm_box_pack_end(bx2, bt);
1202 evas_object_show(bt);
1204 bt = elm_button_add(win);
1205 elm_object_text_set(bt, "[3]");
1206 // evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
1207 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1208 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1209 elm_box_pack_end(bx2, bt);
1210 evas_object_show(bt);
1212 elm_box_pack_end(bx, bx2);
1213 evas_object_show(bx2);
1215 evas_object_resize(win, 320, 320);
1216 evas_object_show(win);
1221 struct genlist7_data
1223 Evas_Object *win, *naviframe;
1226 static Elm_Genlist_Item_Class itc7;
1228 gl_sel7(void *data, Evas_Object *obj, void *event_info)
1230 if (!event_info) return;
1231 elm_genlist_item_item_class_update(event_info, &itc7);
1232 printf("sel item data [%p] on genlist obj [%p], item pointer [%p], new item style [%s] \n", data, obj, event_info, itc7.item_style);
1236 test_genlist7_back_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1238 struct genlist7_data *info = data;
1241 elm_naviframe_item_pop(info->naviframe);
1245 test_genlist7_swipe(void *data, Evas_Object *obj __UNUSED__, void *event_info)
1247 struct genlist7_data *info = data;
1248 Evas_Object *box, *entry, *button;
1249 char item_data[] = "Just a simple test";
1251 if ((!event_info) || (!data)) return;
1253 box = elm_box_add(info->win);
1254 elm_box_homogeneous_set(box, EINA_FALSE);
1255 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1256 evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
1257 evas_object_show(box);
1259 entry = elm_entry_add(info->win);
1260 elm_entry_scrollable_set(entry, EINA_TRUE);
1261 elm_entry_editable_set(entry, EINA_FALSE);
1262 elm_object_text_set(entry, item_data);
1263 evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1264 evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
1265 evas_object_show(entry);
1267 button = elm_button_add(info->win);
1268 elm_object_text_set(button, "back");
1269 evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, 0);
1270 evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0);
1271 evas_object_smart_callback_add(button, "clicked", test_genlist7_back_cb,
1273 evas_object_show(button);
1275 elm_box_pack_start(box, entry);
1276 elm_box_pack_end(box, button);
1278 elm_naviframe_item_simple_push(info->naviframe, box);
1282 test_genlist7(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1284 Evas_Object *win, *bg, *gl, *naviframe;
1285 static struct genlist7_data info;
1286 static Testitem tit[3];
1288 win = elm_win_add(NULL, "genlist7", ELM_WIN_BASIC);
1289 elm_win_title_set(win, "Genlist 7");
1290 elm_win_autodel_set(win, EINA_TRUE);
1293 bg = elm_bg_add(win);
1294 elm_win_resize_object_add(win, bg);
1295 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1296 evas_object_show(bg);
1298 naviframe = elm_naviframe_add(win);
1299 elm_win_resize_object_add(win, naviframe);
1300 evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1301 evas_object_size_hint_align_set(naviframe, EVAS_HINT_FILL, EVAS_HINT_FILL);
1302 evas_object_show(naviframe);
1303 info.naviframe = naviframe;
1305 gl = elm_genlist_add(win);
1306 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1307 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1308 evas_object_smart_callback_add(gl, "swipe", test_genlist7_swipe, &info);
1309 evas_object_show(gl);
1310 elm_naviframe_item_simple_push(naviframe, gl);
1312 itc2.item_style = "default";
1313 itc2.func.text_get = gl2_text_get;
1314 itc2.func.content_get = gl2_content_get;
1315 itc2.func.state_get = gl2_state_get;
1316 itc2.func.del = gl2_del;
1318 itc7.item_style = "double_label";
1319 itc7.func.text_get = gl5_text_get;
1320 itc7.func.content_get = gl5_content_get;
1321 itc7.func.state_get = gl5_state_get;
1322 itc7.func.del = gl5_del;
1325 tit[0].item = elm_genlist_item_append(gl, &itc2,
1326 &(tit[0])/* item data */, NULL/* parent */,
1327 ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1328 NULL/* func data */);
1330 tit[1].item = elm_genlist_item_append(gl, &itc2,
1331 &(tit[1])/* item data */, NULL/* parent */,
1332 ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1333 NULL/* func data */);
1335 tit[2].item = elm_genlist_item_append(gl, &itc2,
1336 &(tit[2])/* item data */, NULL/* parent */,
1337 ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1338 NULL/* func data */);
1340 evas_object_resize(win, 320, 320);
1341 evas_object_show(win);
1346 static Elm_Genlist_Item_Class itc_group;
1347 char *gl8_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1350 snprintf(buf, sizeof(buf), "Group Index # %i (Item # %i)", (int)((long)data / 10), (int)(long)data);
1355 _bt_show_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1357 elm_genlist_item_top_show(data);
1358 //elm_genlist_item_show(data);
1359 //elm_genlist_item_middle_show(data);
1362 _bt_bring_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1364 elm_genlist_item_top_bring_in(data);
1365 //elm_genlist_item_bring_in(data);
1366 //elm_genlist_item_middle_bring_in(data);
1370 test_genlist8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1372 Evas_Object *win, *bg, *gl, *bt[8], *bx, *bx2, *bx3;
1373 Elm_Object_Item *gli = NULL, *git = NULL;
1376 win = elm_win_add(NULL, "genlist-group", ELM_WIN_BASIC);
1377 elm_win_title_set(win, "Genlist Group");
1378 elm_win_autodel_set(win, EINA_TRUE);
1380 bg = elm_bg_add(win);
1381 elm_win_resize_object_add(win, bg);
1382 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1383 evas_object_show(bg);
1385 bx = elm_box_add(win);
1386 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1387 elm_win_resize_object_add(win, bx);
1388 evas_object_show(bx);
1390 gl = elm_genlist_add(win);
1391 evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
1392 evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
1393 evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
1394 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1395 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1396 elm_box_pack_end(bx, gl);
1397 evas_object_show(gl);
1399 itc1 = elm_genlist_item_class_new();
1400 itc1->item_style = "default";
1401 itc1->func.text_get = gl_text_get;
1402 itc1->func.content_get = gl_content_get;
1403 itc1->func.state_get = gl_state_get;
1404 itc1->func.del = gl_del;
1406 itc_group.item_style = "group_index";
1407 itc_group.func.text_get = gl8_text_get;
1408 itc_group.func.content_get = NULL;
1409 itc_group.func.state_get = NULL;
1410 itc_group.func.del = gl_del;
1412 bx2 = elm_box_add(win);
1413 elm_box_horizontal_set(bx2, EINA_TRUE);
1414 elm_box_homogeneous_set(bx2, EINA_TRUE);
1415 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1416 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1419 bt[bt_num] = elm_button_add(win);
1420 elm_object_text_set(bt[bt_num], "Show 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(bx2, bt[bt_num]);
1426 bt[++bt_num] = elm_button_add(win);
1427 elm_object_text_set(bt[bt_num], "Show 26");
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(bx2, bt[bt_num]);
1433 bt[++bt_num] = elm_button_add(win);
1434 elm_object_text_set(bt[bt_num], "Show 101");
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(bx2, bt[bt_num]);
1440 bt[++bt_num] = elm_button_add(win);
1441 elm_object_text_set(bt[bt_num], "Show 480");
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(bx2, bt[bt_num]);
1447 elm_box_pack_end(bx, bx2);
1448 evas_object_show(bx2);
1450 bx3 = elm_box_add(win);
1451 elm_box_horizontal_set(bx3, EINA_TRUE);
1452 elm_box_homogeneous_set(bx3, EINA_TRUE);
1453 evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
1454 evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
1456 bt[++bt_num] = elm_button_add(win);
1457 elm_object_text_set(bt[bt_num], "Bring top 0");
1458 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1459 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1460 evas_object_show(bt[bt_num]);
1461 elm_box_pack_end(bx3, bt[bt_num]);
1463 bt[++bt_num] = elm_button_add(win);
1464 elm_object_text_set(bt[bt_num], "Bring top 31");
1465 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1466 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1467 evas_object_show(bt[bt_num]);
1468 elm_box_pack_end(bx3, bt[bt_num]);
1470 bt[++bt_num] = elm_button_add(win);
1471 elm_object_text_set(bt[bt_num], "Bring top 239");
1472 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1473 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1474 evas_object_show(bt[bt_num]);
1475 elm_box_pack_end(bx3, bt[bt_num]);
1477 bt[++bt_num] = elm_button_add(win);
1478 elm_object_text_set(bt[bt_num], "Bring top 477");
1479 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1480 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1481 evas_object_show(bt[bt_num]);
1482 elm_box_pack_end(bx3, bt[bt_num]);
1484 elm_box_pack_end(bx, bx3);
1485 evas_object_show(bx3);
1487 for (i = 0; i < 500; i++)
1491 gli = git = elm_genlist_item_append(gl, &itc_group,
1492 (void *)(long)i/* item data */,
1494 ELM_GENLIST_ITEM_GROUP,
1496 (void *)(long)(i * 10)/* func data */);
1497 elm_genlist_item_display_only_set(git, EINA_TRUE);
1501 gli = elm_genlist_item_append(gl, itc1,
1502 (void *)(long)i/* item data */,
1504 ELM_GENLIST_ITEM_NONE,
1506 (void *)(long)(i * 10)/* func data */);
1511 evas_object_smart_callback_add(bt[0], "clicked", _bt_show_cb, gli);
1512 evas_object_smart_callback_add(bt[4], "clicked", _bt_bring_cb, gli);
1515 evas_object_smart_callback_add(bt[1], "clicked", _bt_show_cb, gli);
1518 evas_object_smart_callback_add(bt[5], "clicked", _bt_bring_cb, gli);
1521 evas_object_smart_callback_add(bt[2], "clicked", _bt_show_cb, gli);
1524 evas_object_smart_callback_add(bt[6], "clicked", _bt_bring_cb, gli);
1527 evas_object_smart_callback_add(bt[7], "clicked", _bt_bring_cb, gli);
1530 evas_object_smart_callback_add(bt[3], "clicked", _bt_show_cb, gli);
1534 elm_genlist_item_class_free(itc1);
1536 evas_object_resize(win, 480, 800);
1537 evas_object_show(win);
1543 gl9_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1545 Elm_Object_Item *glit = event_info;
1546 Evas_Object *gl = elm_object_item_widget_get(glit);
1547 int val = (int)(long) elm_object_item_data_get(glit);
1549 elm_genlist_item_append(gl, itc1,
1550 (void *)(long) (val + 1)/* item data */,
1552 ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1553 NULL/* func data */);
1554 elm_genlist_item_append(gl, itc1,
1555 (void *)(long) (val + 2)/* item data */,
1557 ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1558 NULL/* func data */);
1559 elm_genlist_item_append(gl, itc1,
1560 (void *)(long) (val + 3)/* item data */,
1562 ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1563 NULL/* func data */);
1566 gl9_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1568 Elm_Object_Item *glit = event_info;
1569 elm_genlist_item_subitems_clear(glit);
1573 gl9_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1575 Elm_Object_Item *glit = event_info;
1576 elm_genlist_item_expanded_set(glit, EINA_TRUE);
1579 gl9_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1581 Elm_Object_Item *glit = event_info;
1582 elm_genlist_item_expanded_set(glit, EINA_FALSE);
1586 test_genlist9(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1588 Evas_Object *win, *bg, *gl, *bx;
1589 Elm_Object_Item *git;
1591 win = elm_win_add(NULL, "genlist-group-tree", ELM_WIN_BASIC);
1592 elm_win_title_set(win, "Genlist Group Tree");
1593 elm_win_autodel_set(win, EINA_TRUE);
1595 bg = elm_bg_add(win);
1596 elm_win_resize_object_add(win, bg);
1597 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1598 evas_object_show(bg);
1600 bx = elm_box_add(win);
1601 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1602 elm_win_resize_object_add(win, bx);
1603 evas_object_show(bx);
1605 gl = elm_genlist_add(win);
1606 evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
1607 evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
1608 evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
1609 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1610 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1611 elm_box_pack_end(bx, gl);
1612 evas_object_show(gl);
1614 itc1 = elm_genlist_item_class_new();
1615 itc1->item_style = "default";
1616 itc1->func.text_get = gl_text_get;
1617 itc1->func.content_get = gl_content_get;
1618 itc1->func.state_get = gl_state_get;
1619 itc1->func.del = gl_del;
1621 itc_group.item_style = "group_index";
1622 itc_group.func.text_get = gl8_text_get;
1623 itc_group.func.content_get = NULL;
1624 itc_group.func.state_get = NULL;
1625 itc_group.func.del = gl_del;
1627 git = elm_genlist_item_append(gl, &itc_group,
1628 (void *)0/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_GROUP, gl4_sel/* func */,
1629 NULL/* func data */);
1630 elm_genlist_item_display_only_set(git, EINA_TRUE);
1631 elm_genlist_item_append(gl, itc1,
1632 (void *)1/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1633 NULL/* func data */);
1634 elm_genlist_item_append(gl, itc1,
1635 (void *)2/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1636 NULL/* func data */);
1637 elm_genlist_item_append(gl, itc1,
1638 (void *)3/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1639 NULL/* func data */);
1640 git = elm_genlist_item_append(gl, &itc_group,
1641 (void *)4/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_GROUP, gl4_sel/* func */,
1642 NULL/* func data */);
1643 elm_genlist_item_display_only_set(git, EINA_TRUE);
1644 elm_genlist_item_append(gl, itc1,
1645 (void *)5/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1646 NULL/* func data */);
1647 elm_genlist_item_append(gl, itc1,
1648 (void *)6/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1649 NULL/* func data */);
1650 elm_genlist_item_append(gl, itc1,
1651 (void *)7/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1652 NULL/* func data */);
1653 elm_genlist_item_class_free(itc1);
1655 evas_object_smart_callback_add(gl, "expand,request", gl9_exp_req, gl);
1656 evas_object_smart_callback_add(gl, "contract,request", gl9_con_req, gl);
1657 evas_object_smart_callback_add(gl, "expanded", gl9_exp, gl);
1658 evas_object_smart_callback_add(gl, "contracted", gl9_con, gl);
1660 evas_object_resize(win, 480, 800);
1661 evas_object_show(win);
1666 static Elm_Genlist_Item_Class itc10;
1667 static char *mode_type[] = { "slide", "rotate" };
1668 char *gl10_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
1671 if (!strcmp(part, "elm.text.mode"))
1672 snprintf(buf, sizeof(buf), "Mode # %i", (int)(long)data);
1674 snprintf(buf, sizeof(buf), "Item # %i", (int)(long)data);
1678 Evas_Object *gl10_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
1681 Evas_Object *ic = elm_icon_add(obj);
1682 if (!strcmp(part, "elm.swallow.end"))
1683 snprintf(buf, sizeof(buf), "%s/images/bubble.png", elm_app_data_dir_get());
1685 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
1686 elm_icon_file_set(ic, buf, NULL);
1687 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
1691 _gl_sel10(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1694 int v = elm_radio_value_get(data);
1696 elm_genlist_item_mode_set(event_info, mode_type[v], EINA_TRUE);
1700 _my_gl_mode_right(void *data, Evas_Object *obj __UNUSED__, void *event_info)
1703 int v = elm_radio_value_get(data);
1705 elm_genlist_item_mode_set(event_info, mode_type[v], EINA_TRUE);
1709 _my_gl_mode_left(void *data, Evas_Object *obj __UNUSED__, void *event_info)
1712 int v = elm_radio_value_get(data);
1714 elm_genlist_item_mode_set(event_info, mode_type[v], EINA_FALSE);
1718 _my_gl_mode_cancel(void *data, Evas_Object *obj, void *event_info __UNUSED__)
1720 fprintf(stderr, "drag\n");
1722 int v = elm_radio_value_get(data);
1723 Elm_Object_Item *glit = (Elm_Object_Item *) elm_genlist_mode_item_get(obj);
1724 if (glit) elm_genlist_item_mode_set(glit, mode_type[v], EINA_FALSE);
1728 test_genlist10(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1730 Evas_Object *win, *bg, *fr, *lb, *bx, *bx2, *bx3, *rd, *rdg, *gl;
1733 win = elm_win_add(NULL, "genlist10", ELM_WIN_BASIC);
1734 elm_win_title_set(win, "Genlist Mode");
1735 elm_win_autodel_set(win, EINA_TRUE);
1737 bg = elm_bg_add(win);
1738 elm_win_resize_object_add(win, bg);
1739 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1740 evas_object_show(bg);
1742 bx = elm_box_add(win);
1743 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1744 elm_win_resize_object_add(win, bx);
1745 evas_object_show(bx);
1747 fr = elm_frame_add(win);
1748 elm_object_text_set(fr, "Mode Type");
1749 elm_box_pack_end(bx, fr);
1750 evas_object_show(fr);
1752 bx2 = elm_box_add(win);
1753 elm_object_content_set(fr, bx2);
1754 evas_object_show(bx2);
1756 lb = elm_label_add(win);
1757 elm_object_text_set(lb,
1758 "Sweep genlist items to the right.<br/>"
1759 "Test this by changing Mode Type to Slide or Rotate.");
1760 elm_box_pack_end(bx2, lb);
1761 evas_object_show(lb);
1763 bx3 = elm_box_add(win);
1764 elm_box_horizontal_set(bx3, EINA_TRUE);
1765 elm_box_pack_end(bx2, bx3);
1766 evas_object_show(bx3);
1768 rd = elm_radio_add(win);
1769 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1770 elm_radio_state_value_set(rd, 0);
1771 elm_object_text_set(rd, "Slide ");
1772 evas_object_show(rd);
1773 elm_box_pack_end(bx3, rd);
1776 rd = elm_radio_add(win);
1777 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1778 elm_radio_state_value_set(rd, 1);
1779 elm_object_text_set(rd, "Rotate");
1780 elm_radio_group_add(rd, rdg);
1781 evas_object_show(rd);
1782 elm_box_pack_end(bx3, rd);
1784 gl = elm_genlist_add(win);
1785 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1786 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1787 evas_object_smart_callback_add(gl, "drag,start,right", _my_gl_mode_right, rdg);
1788 evas_object_smart_callback_add(gl, "drag,start,left", _my_gl_mode_left, rdg);
1789 evas_object_smart_callback_add(gl, "drag,start,up", _my_gl_mode_cancel, rdg);
1790 evas_object_smart_callback_add(gl, "drag,start,down", _my_gl_mode_cancel, rdg);
1791 evas_object_show(gl);
1793 itc10.item_style = "default";
1794 itc10.func.text_get = gl10_text_get;
1795 itc10.func.content_get = gl10_content_get;
1796 itc10.func.state_get = gl_state_get;
1797 itc10.func.del = gl_del;
1798 elm_genlist_mode_item_style_set(gl, "mode");
1800 for (i = 0; i < 50; i++)
1801 elm_genlist_item_append(gl,
1803 (void *)(1000 + i)/* item data */,
1805 ELM_GENLIST_ITEM_NONE/* flags */,
1806 _gl_sel10/* func */,
1807 rdg/* func data */);
1809 elm_box_pack_end(bx, gl);
1811 evas_object_resize(win, 520, 520);
1812 evas_object_show(win);
1818 _reorder_tg_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
1820 elm_genlist_reorder_mode_set(data, elm_check_state_get(obj));
1824 * gl_moved is called after an item was reordered.
1825 * This is only called when reorder mode is enabled.
1827 * @param data : the genlist object passed as data.
1828 * @param obj : the genlist object.
1829 * @param item : the moved item.
1831 * If the move_after is true,
1832 * the item(*item) had been moved after the given relative item(*rel_item) in list.
1833 * If the move_after is false,
1834 * the item(*item) had been moved before the given relative item(*rel_item) in list.
1837 static void gl_moved(Evas_Object *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Object_Item *item __UNUSED__)
1839 // if needed, add application logic.
1843 test_genlist11(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1845 Evas_Object *win, *bg, *fr, *lb, *bx, *tg, *gl;
1848 win = elm_win_add(NULL, "genlist-reorder-mode", ELM_WIN_BASIC);
1849 elm_win_title_set(win, "Genlist Reorder Mode");
1850 elm_win_autodel_set(win, EINA_TRUE);
1852 bg = elm_bg_add(win);
1853 elm_win_resize_object_add(win, bg);
1854 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1855 evas_object_show(bg);
1857 bx = elm_box_add(win);
1858 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1859 elm_win_resize_object_add(win, bx);
1860 evas_object_show(bx);
1862 fr = elm_frame_add(win);
1864 elm_object_text_set(fr, "Reorder Mode");
1865 elm_box_pack_end(bx, fr);
1866 evas_object_show(fr);
1868 lb = elm_label_add(win);
1869 elm_object_text_set(lb,
1870 "Enable reorder mode if you want to move item.<br/>"
1871 "Then long press and drag item.");
1872 elm_object_content_set(fr, lb);
1873 evas_object_show(lb);
1875 gl = elm_genlist_add(win);
1876 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1877 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1878 evas_object_show(gl);
1880 tg = elm_check_add(win);
1881 elm_object_style_set(tg, "toggle");
1882 elm_object_text_set(tg, "Reorder Mode:");
1883 elm_check_state_set(tg, elm_mirrored_get());
1884 evas_object_smart_callback_add(tg, "changed", _reorder_tg_changed_cb, gl);
1885 elm_box_pack_end(bx, tg);
1886 evas_object_show(tg);
1888 itc1 = elm_genlist_item_class_new();
1889 itc1->item_style = "default";
1890 itc1->func.text_get = gl_text_get;
1891 itc1->func.content_get = gl_content_get;
1892 itc1->func.state_get = gl_state_get;
1893 itc1->func.del = gl_del;
1894 evas_object_smart_callback_add(gl, "moved", (Evas_Smart_Cb)gl_moved, gl);
1896 for (i = 0; i < 50; i++)
1897 elm_genlist_item_append(gl,
1899 (void *)(1 + i)/* item data */,
1901 ELM_GENLIST_ITEM_NONE/* flags */,
1903 NULL/* func data */);
1905 elm_genlist_item_class_free(itc1);
1907 elm_box_pack_end(bx, gl);
1909 evas_object_resize(win, 400, 500);
1910 evas_object_show(win);
1913 char *gl12_text_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1915 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).");
1919 test_genlist12(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1921 Evas_Object *win, *bg, *bx, *gl;
1924 win = elm_win_add(NULL, "genlist-textblock", ELM_WIN_BASIC);
1925 elm_win_title_set(win, "Genlist Textblock");
1926 elm_win_autodel_set(win, EINA_TRUE);
1928 bg = elm_bg_add(win);
1929 elm_win_resize_object_add(win, bg);
1930 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1931 evas_object_show(bg);
1933 bx = elm_box_add(win);
1934 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1935 elm_win_resize_object_add(win, bx);
1936 evas_object_show(bx);
1938 gl = elm_genlist_add(win);
1939 elm_genlist_height_for_width_mode_set(gl, EINA_TRUE);
1940 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1941 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1942 elm_box_pack_end(bx, gl);
1943 evas_object_show(gl);
1945 itc1->item_style = "message";
1946 itc1->func.text_get = gl12_text_get;
1947 itc1->func.content_get = gl_content_get;
1948 itc1->func.state_get = gl_state_get;
1949 itc1->func.del = gl_del;
1951 for (i = 0; i < 1000; i++)
1953 elm_genlist_item_append(gl, itc1,
1954 (void *)(long)i/* item data */,
1956 ELM_GENLIST_ITEM_NONE,
1958 (void *)(long)(i * 10)/* func data */);
1960 elm_genlist_item_class_free(itc1);
1962 evas_object_resize(win, 400, 500);
1963 evas_object_show(win);
1967 gl13_cmp(const void *pa, const void *pb)
1969 const Elm_Object_Item *ia = pa, *ib = pb;
1970 int a = (int)(long) elm_object_item_data_get(ia);
1971 int b = (int)(long) elm_object_item_data_get(ib);
1976 test_genlist13(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1978 Elm_Object_Item *pi[6];
1979 Evas_Object *win, *bg, *bx, *gl;
1980 int i, base, idx[3] = {1, 10, 15};
1982 win = elm_win_add(NULL, "genlist-tree-insert-sorted", ELM_WIN_BASIC);
1983 elm_win_title_set(win, "Genlist Tree, Insert Sorted");
1984 elm_win_autodel_set(win, EINA_TRUE);
1986 bg = elm_bg_add(win);
1987 elm_win_resize_object_add(win, bg);
1988 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1989 evas_object_show(bg);
1991 bx = elm_box_add(win);
1992 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1993 elm_win_resize_object_add(win, bx);
1994 evas_object_show(bx);
1996 gl = elm_genlist_add(win);
1997 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1998 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1999 evas_object_show(gl);
2001 itc4.item_style = "default";
2002 itc4.func.text_get = gl4_text_get;
2003 itc4.func.content_get = NULL;
2004 itc4.func.state_get = NULL;
2005 itc4.func.del = NULL;
2007 /* mixed order to test insert sorted */
2009 for (i = 0; i < 3; i++)
2011 pi[i] = elm_genlist_item_direct_sorted_insert
2012 (gl, &itc4, (void *)idx[i]/* item data */, NULL/* parent */,
2013 ELM_GENLIST_ITEM_SUBITEMS, gl13_cmp/* cmp */,
2014 NULL/* func */, NULL/* func data */);
2017 for (i = 0, base = 100; i < 3; i++, base += 100)
2020 for (j = 0; j < 3; j++)
2022 elm_genlist_item_direct_sorted_insert
2023 (gl, &itc4, (void *)(idx[j] + base)/* item data */,
2024 pi[i]/* parent */, ELM_GENLIST_ITEM_NONE,
2025 gl13_cmp/* cmp */, NULL/* func */, NULL/* func data */);
2029 for (i = 0; i < 3; i++)
2031 pi[i + 3] = elm_genlist_item_direct_sorted_insert
2032 (gl, &itc4, (void *)(idx[i] * 2)/* item data */, NULL/* parent */,
2033 ELM_GENLIST_ITEM_SUBITEMS, gl13_cmp/* cmp */, NULL/* func */,
2034 NULL/* func data */);
2038 for (i = 0, base = 10000; i < 3; i++, base += 10000)
2041 for (j = 0; j < 3; j++)
2043 elm_genlist_item_direct_sorted_insert
2044 (gl, &itc4, (void *)(idx[j] + base)/* item data */,
2045 pi[i + 3]/* parent */, ELM_GENLIST_ITEM_NONE,
2046 gl13_cmp/* cmp */, NULL/* func */, NULL/* func data */);
2050 elm_box_pack_end(bx, gl);
2051 evas_object_show(bx);
2053 evas_object_resize(win, 320, 320);
2054 evas_object_show(win);
2058 my_gl_insert_before_rel(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2060 Evas_Object *gl = data;
2061 static int i = 1000;
2062 Elm_Object_Item *gli_selected;
2064 itc1->item_style = "default";
2065 itc1->func.text_get = gl_text_get;
2066 itc1->func.content_get = NULL;
2067 itc1->func.state_get = NULL;
2068 itc1->func.del = NULL;
2070 gli_selected = elm_genlist_selected_item_get(gl);
2073 printf("no item selected\n");
2077 elm_genlist_item_insert_before(gl, itc1,
2078 (void *)(long)i/* item data */,
2079 elm_genlist_item_parent_get(gli_selected),
2080 gli_selected/* item before */,
2081 ELM_GENLIST_ITEM_NONE,
2082 NULL/* func */, NULL/* func data */);
2087 my_gl_insert_after_rel(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2089 Evas_Object *gl = data;
2091 Elm_Object_Item *gli_selected;
2093 itc1->item_style = "default";
2094 itc1->func.text_get = gl_text_get;
2095 itc1->func.content_get = NULL;
2096 itc1->func.state_get = NULL;
2097 itc1->func.del = NULL;
2099 gli_selected = elm_genlist_selected_item_get(gl);
2102 printf("no item selected\n");
2106 elm_genlist_item_insert_after(gl, itc1,
2107 (void *)(long)i/* item data */,
2108 elm_genlist_item_parent_get(gli_selected),
2109 gli_selected/* item after */,
2110 ELM_GENLIST_ITEM_NONE,
2111 NULL/* func */, NULL/* func data */);
2116 test_genlist14(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
2118 Elm_Object_Item *pi[6];
2119 Evas_Object *win, *bg, *bx, *bx2, *bt, *gl;
2121 /* index: 0, 1, 2, 3, 4, 5
2122 * items: 1, 15, 11, 2, 33, 21
2123 * final: 1, 2, 11, 15, 21, 33
2125 const int idx[6] = {1, 15, 11, 2, 33, 21};
2126 const int relative[6] = {
2127 0, /* item '1' - not used */
2128 0, /* item '15' - insert after pi[0], item '1' */
2129 -1, /* item '11' - insert before pi[1], item '15' */
2130 -2, /* item '2' - insert before pi[2], item '11' */
2131 1, /* item '33' - insert after pi[1], item '15' */
2132 -4 /* item '21' - insert before pi[4], item '33' */
2135 win = elm_win_add(NULL, "genlist-tree-insert-relative", ELM_WIN_BASIC);
2136 elm_win_title_set(win, "Genlist Tree, Insert Relative");
2137 elm_win_autodel_set(win, EINA_TRUE);
2139 bg = elm_bg_add(win);
2140 elm_win_resize_object_add(win, bg);
2141 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2142 evas_object_show(bg);
2144 bx = elm_box_add(win);
2145 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2146 elm_win_resize_object_add(win, bx);
2147 evas_object_show(bx);
2149 gl = elm_genlist_add(win);
2150 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
2151 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2152 evas_object_show(gl);
2154 itc1 = elm_genlist_item_class_new();
2156 itc4.item_style = "default";
2157 itc4.func.text_get = gl4_text_get;
2158 itc4.func.content_get = NULL;
2159 itc4.func.state_get = NULL;
2160 itc4.func.del = NULL;
2162 /* mixed order to test insert sorted */
2164 // BUG1: should be able to insert before=NULL, prepend
2165 // BUG2: should be able to insert after=NULL, append
2167 pi[0] = elm_genlist_item_append
2168 (gl, &itc4, (void *)idx[0]/* item data */,
2170 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2172 for (i = 1; i < 3; i++)
2174 if (relative[i] < 0)
2175 pi[i] = elm_genlist_item_insert_before
2176 (gl, &itc4, (void *)idx[i]/* item data */,
2177 NULL/* parent */, pi[-relative[i]],
2178 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2180 pi[i] = elm_genlist_item_insert_after
2181 (gl, &itc4, (void *)idx[i]/* item data */,
2182 NULL/* parent */, pi[relative[i]],
2183 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2186 for (i = 0; i < 3; i++)
2188 Elm_Object_Item *sub_glit[6];
2191 base = 1000 * (int)(long) elm_object_item_data_get(pi[i]);
2193 sub_glit[0] = elm_genlist_item_append
2194 (gl, &itc4, (void *)(long) (idx[0] + base)/* item data */, pi[i]/* parent */,
2195 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2197 for (j = 1; j < 6; j++) {
2198 if (relative[j] < 0)
2199 sub_glit[j] = elm_genlist_item_insert_before
2200 (gl, &itc4, (void *)(long) (idx[j] + base)/* item data */,
2201 pi[i]/* parent */, sub_glit[-relative[j]],
2202 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2204 sub_glit[j] = elm_genlist_item_insert_after
2205 (gl, &itc4, (void *)(long) (idx[j] + base)/* item data */,
2206 pi[i]/* parent */, sub_glit[relative[j]],
2207 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2211 for (i = 3; i < 6; i++)
2213 if (relative[i] < 0)
2214 pi[i] = elm_genlist_item_insert_before
2215 (gl, &itc4, (void *)(long) idx[i]/* item data */,
2216 NULL/* parent */, pi[-relative[i]],
2217 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2219 pi[i] = elm_genlist_item_insert_after
2220 (gl, &itc4, (void *)(long) idx[i]/* item data */,
2221 NULL/* parent */, pi[relative[i]],
2222 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2225 for (i = 3; i < 6; i++)
2227 Elm_Object_Item *sub_glit[6];
2230 base = 1000 * (int)(long) elm_object_item_data_get(pi[i]);
2232 sub_glit[0] = elm_genlist_item_append
2233 (gl, &itc4, (void *)(long) (idx[0] + base)/* item data */, pi[i]/* parent */,
2234 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2236 for (j = 1; j < 6; j++) {
2237 if (relative[j] < 0)
2238 sub_glit[j] = elm_genlist_item_insert_before
2239 (gl, &itc4, (void *)(long) (idx[j] + base)/* item data */,
2240 pi[i]/* parent */, sub_glit[-relative[j]],
2241 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2243 sub_glit[j] = elm_genlist_item_insert_after
2244 (gl, &itc4, (void *)(long) (idx[j] + base)/* item data */,
2245 pi[i]/* parent */, sub_glit[relative[j]],
2246 ELM_GENLIST_ITEM_SUBITEMS, NULL/* func */, NULL/* func data */);
2250 elm_box_pack_end(bx, gl);
2251 evas_object_show(bx);
2253 bx2 = elm_box_add(win);
2254 elm_box_horizontal_set(bx2, EINA_TRUE);
2255 elm_box_homogeneous_set(bx2, EINA_TRUE);
2256 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
2257 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
2259 bt = elm_button_add(win);
2260 elm_object_text_set(bt, "+ before");
2261 evas_object_smart_callback_add(bt, "clicked", my_gl_insert_before_rel, gl);
2262 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2263 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2264 elm_box_pack_end(bx2, bt);
2265 evas_object_show(bt);
2267 bt = elm_button_add(win);
2268 elm_object_text_set(bt, "+ after");
2269 evas_object_smart_callback_add(bt, "clicked", my_gl_insert_after_rel, gl);
2270 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
2271 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
2272 elm_box_pack_end(bx2, bt);
2273 evas_object_show(bt);
2275 elm_box_pack_end(bx, bx2);
2276 evas_object_show(bx2);
2278 /* item_class_ref is needed for itc1. some items can be added in callbacks */
2279 elm_genlist_item_class_ref(itc1);
2280 elm_genlist_item_class_free(itc1);
2282 evas_object_resize(win, 320, 320);
2283 evas_object_show(win);