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_Genlist_Item *item;
23 static Elm_Genlist_Item_Class itc1;
24 char *gl_label_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_icon_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;
63 Elm_Genlist_Item *gli;
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_genlist_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_Genlist_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_horizontal_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.item_style = "default";
144 itc1.func.label_get = gl_label_get;
145 itc1.func.icon_get = gl_icon_get;
146 itc1.func.state_get = gl_state_get;
147 itc1.func.del = gl_del;
149 bt_50 = elm_button_add(win);
150 elm_object_text_set(bt_50, "Go to 50");
151 evas_object_show(bt_50);
152 elm_box_pack_end(bx, bt_50);
154 bt_1500 = elm_button_add(win);
155 elm_object_text_set(bt_1500, "Go to 1500");
156 evas_object_show(bt_1500);
157 elm_box_pack_end(bx, bt_1500);
159 for (i = 0; i < 2000; i++)
161 gli = elm_genlist_item_append(gl, &itc1,
162 (void *)(long)i/* item data */,
164 ELM_GENLIST_ITEM_NONE,
166 (void *)(long)(i * 10)/* func data */);
168 evas_object_smart_callback_add(bt_50, "clicked", _bt50_cb, gli);
170 evas_object_smart_callback_add(bt_1500, "clicked", _bt1500_cb, gli);
172 evas_object_resize(win, 480, 800);
173 evas_object_show(win);
179 my_gl_clear(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
181 Evas_Object *gl = data;
182 elm_genlist_clear(gl);
186 my_gl_add(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
188 Evas_Object *gl = data;
191 itc1.item_style = "default";
192 itc1.func.label_get = gl_label_get;
193 itc1.func.icon_get = gl_icon_get;
194 itc1.func.state_get = gl_state_get;
195 itc1.func.del = gl_del;
197 elm_genlist_item_append(gl, &itc1,
198 (void *)(long)i/* item data */,
200 ELM_GENLIST_ITEM_NONE,
202 (void *)(long)(i * 10)/* func data */);
207 my_gl_insert_before(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
209 Evas_Object *gl = data;
211 Elm_Genlist_Item *gli_selected;
213 itc1.item_style = "default";
214 itc1.func.label_get = gl_label_get;
215 itc1.func.icon_get = gl_icon_get;
216 itc1.func.state_get = gl_state_get;
217 itc1.func.del = gl_del;
219 gli_selected = elm_genlist_selected_item_get(gl);
222 printf("no item selected\n");
226 elm_genlist_item_insert_before(gl, &itc1,
227 (void *)(long)i/* item data */,
229 gli_selected /* item before */,
230 ELM_GENLIST_ITEM_NONE,
232 (void *)(long)(i * 10)/* func data */);
237 my_gl_insert_after(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
239 Evas_Object *gl = data;
241 Elm_Genlist_Item *gli_selected;
243 itc1.item_style = "default";
244 itc1.func.label_get = gl_label_get;
245 itc1.func.icon_get = gl_icon_get;
246 itc1.func.state_get = gl_state_get;
247 itc1.func.del = gl_del;
249 gli_selected = elm_genlist_selected_item_get(gl);
252 printf("no item selected\n");
256 elm_genlist_item_insert_after(gl, &itc1,
257 (void *)(long)i/* item data */,
259 gli_selected /* item after */,
260 ELM_GENLIST_ITEM_NONE,
262 (void *)(long)(i * 10)/* func data */);
267 my_gl_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
269 Evas_Object *gl = data;
270 Elm_Genlist_Item *gli = elm_genlist_selected_item_get(gl);
273 printf("no item selected\n");
276 elm_genlist_item_del(gli);
280 my_gl_disable(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
282 Evas_Object *gl = data;
283 Elm_Genlist_Item *gli = elm_genlist_selected_item_get(gl);
286 printf("no item selected\n");
289 elm_genlist_item_disabled_set(gli, 1);
290 elm_genlist_item_selected_set(gli, 0);
291 elm_genlist_item_update(gli);
295 my_gl_update_all(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
297 Evas_Object *gl = data;
299 Elm_Genlist_Item *it = elm_genlist_first_item_get(gl);
302 elm_genlist_item_update(it);
305 it = elm_genlist_item_next_get(it);
310 my_gl_first(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
312 Evas_Object *gl = data;
313 Elm_Genlist_Item *gli = elm_genlist_first_item_get(gl);
315 elm_genlist_item_show(gli);
316 elm_genlist_item_selected_set(gli, 1);
320 my_gl_last(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
322 Evas_Object *gl = data;
323 Elm_Genlist_Item *gli = elm_genlist_last_item_get(gl);
325 elm_genlist_item_show(gli);
326 elm_genlist_item_selected_set(gli, 1);
330 my_gl_flush_delay(void *data __UNUSED__)
333 return ECORE_CALLBACK_CANCEL;
337 my_gl_flush(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
339 ecore_timer_add(1.2, my_gl_flush_delay, NULL);
343 test_genlist2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
345 Evas_Object *win, *bg, *gl, *bx, *bx2, *bx3, *bt;
346 Elm_Genlist_Item *gli[10];
349 win = elm_win_add(NULL, "genlist2", ELM_WIN_BASIC);
350 elm_win_title_set(win, "Genlist 2");
351 elm_win_autodel_set(win, EINA_TRUE);
353 bg = elm_bg_add(win);
354 snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
355 elm_bg_file_set(bg, buf, NULL);
356 elm_win_resize_object_add(win, bg);
357 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
358 evas_object_show(bg);
360 bx = elm_box_add(win);
361 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
362 elm_win_resize_object_add(win, bx);
363 evas_object_show(bx);
365 gl = elm_genlist_add(win);
366 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
367 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
368 evas_object_show(gl);
370 itc1.item_style = "default";
371 itc1.func.label_get = gl_label_get;
372 itc1.func.icon_get = gl_icon_get;
373 itc1.func.state_get = gl_state_get;
374 itc1.func.del = gl_del;
376 gli[0] = elm_genlist_item_append(gl, &itc1,
377 (void *)1001/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
378 (void *)1001/* func data */);
379 gli[1] = elm_genlist_item_append(gl, &itc1,
380 (void *)1002/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
381 (void *)1002/* func data */);
382 gli[2] = elm_genlist_item_append(gl, &itc1,
383 (void *)1003/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
384 (void *)1003/* func data */);
385 gli[3] = elm_genlist_item_prepend(gl, &itc1,
386 (void *)1004/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
387 (void *)1004/* func data */);
388 gli[4] = elm_genlist_item_prepend(gl, &itc1,
389 (void *)1005/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
390 (void *)1005/* func data */);
391 gli[5] = elm_genlist_item_insert_before(gl, &itc1,
392 (void *)1006/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
393 gl_sel/* func */, (void *)1006/* func data */);
394 gli[6] = elm_genlist_item_insert_after(gl, &itc1,
395 (void *)1007/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
396 gl_sel/* func */, (void *)1007/* func data */);
398 elm_box_pack_end(bx, gl);
400 bx2 = elm_box_add(win);
401 elm_box_horizontal_set(bx2, EINA_TRUE);
402 elm_box_homogeneous_set(bx2, EINA_TRUE);
403 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
404 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
406 bt = elm_button_add(win);
407 elm_object_text_set(bt, "/\\");
408 evas_object_smart_callback_add(bt, "clicked", my_gl_first, gl);
409 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
410 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
411 elm_box_pack_end(bx2, bt);
412 evas_object_show(bt);
414 bt = elm_button_add(win);
415 elm_object_text_set(bt, "\\/");
416 evas_object_smart_callback_add(bt, "clicked", my_gl_last, gl);
417 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
418 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
419 elm_box_pack_end(bx2, bt);
420 evas_object_show(bt);
422 bt = elm_button_add(win);
423 elm_object_text_set(bt, "#");
424 evas_object_smart_callback_add(bt, "clicked", my_gl_disable, gl);
425 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
426 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
427 elm_box_pack_end(bx2, bt);
428 evas_object_show(bt);
430 bt = elm_button_add(win);
431 elm_object_text_set(bt, "U");
432 evas_object_smart_callback_add(bt, "clicked", my_gl_update_all, gl);
433 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
434 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
435 elm_box_pack_end(bx2, bt);
436 evas_object_show(bt);
438 elm_box_pack_end(bx, bx2);
439 evas_object_show(bx2);
441 bx2 = elm_box_add(win);
442 elm_box_horizontal_set(bx2, EINA_TRUE);
443 elm_box_homogeneous_set(bx2, EINA_TRUE);
444 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
445 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
447 bt = elm_button_add(win);
448 elm_object_text_set(bt, "X");
449 evas_object_smart_callback_add(bt, "clicked", my_gl_clear, gl);
450 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
451 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
452 elm_box_pack_end(bx2, bt);
453 evas_object_show(bt);
455 bt = elm_button_add(win);
456 elm_object_text_set(bt, "+");
457 evas_object_smart_callback_add(bt, "clicked", my_gl_add, gl);
458 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
459 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
460 elm_box_pack_end(bx2, bt);
461 evas_object_show(bt);
463 bt = elm_button_add(win);
464 elm_object_text_set(bt, "-");
465 evas_object_smart_callback_add(bt, "clicked", my_gl_del, gl);
466 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
467 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
468 elm_box_pack_end(bx2, bt);
469 evas_object_show(bt);
471 elm_box_pack_end(bx, bx2);
472 evas_object_show(bx2);
474 bx3 = elm_box_add(win);
475 elm_box_horizontal_set(bx3, EINA_TRUE);
476 elm_box_homogeneous_set(bx3, EINA_TRUE);
477 evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
478 evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
480 bt = elm_button_add(win);
481 elm_object_text_set(bt, "+ before");
482 evas_object_smart_callback_add(bt, "clicked", my_gl_insert_before, gl);
483 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
484 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
485 elm_box_pack_end(bx3, bt);
486 evas_object_show(bt);
488 bt = elm_button_add(win);
489 elm_object_text_set(bt, "+ after");
490 evas_object_smart_callback_add(bt, "clicked", my_gl_insert_after, gl);
491 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
492 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
493 elm_box_pack_end(bx3, bt);
494 evas_object_show(bt);
496 bt = elm_button_add(win);
497 elm_object_text_set(bt, "Flush");
498 evas_object_smart_callback_add(bt, "clicked", my_gl_flush, gl);
499 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
500 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
501 elm_box_pack_end(bx3, bt);
502 evas_object_show(bt);
504 elm_box_pack_end(bx, bx3);
505 evas_object_show(bx3);
508 evas_object_resize(win, 320, 320);
509 evas_object_show(win);
514 static Elm_Genlist_Item_Class itc2;
515 char *gl2_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
517 const Testitem *tit = data;
519 snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
522 Evas_Object *gl2_icon_get(void *data, Evas_Object *obj, const char *part)
524 const Testitem *tit = data;
526 Evas_Object *ic = elm_icon_add(obj);
527 if (!strcmp(part, "elm.swallow.icon"))
529 if (!(tit->mode & 0x3))
530 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
531 else if ((tit->mode & 0x3) == 1)
532 snprintf(buf, sizeof(buf), "%s/images/logo.png", elm_app_data_dir_get());
533 else if ((tit->mode & 0x3) == 2)
534 snprintf(buf, sizeof(buf), "%s/images/panel_01.jpg", elm_app_data_dir_get());
535 else if ((tit->mode & 0x3) == 3)
536 snprintf(buf, sizeof(buf), "%s/images/rock_01.jpg", elm_app_data_dir_get());
537 elm_icon_file_set(ic, buf, NULL);
539 else if (!strcmp(part, "elm.swallow.end"))
541 if (!(tit->mode & 0x3))
542 snprintf(buf, sizeof(buf), "%s/images/sky_01.jpg", elm_app_data_dir_get());
543 else if ((tit->mode & 0x3) == 1)
544 snprintf(buf, sizeof(buf), "%s/images/sky_02.jpg", elm_app_data_dir_get());
545 else if ((tit->mode & 0x3) == 2)
546 snprintf(buf, sizeof(buf), "%s/images/sky_03.jpg", elm_app_data_dir_get());
547 else if ((tit->mode & 0x3) == 3)
548 snprintf(buf, sizeof(buf), "%s/images/sky_04.jpg", elm_app_data_dir_get());
549 elm_icon_file_set(ic, buf, NULL);
551 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__)
558 void gl2_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
563 my_gl_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
565 Testitem *tit = data;
567 elm_genlist_item_update(tit->item);
571 test_genlist3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
573 Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
574 static Testitem tit[3];
576 win = elm_win_add(NULL, "genlist3", ELM_WIN_BASIC);
577 elm_win_title_set(win, "Genlist 3");
578 elm_win_autodel_set(win, EINA_TRUE);
580 bg = elm_bg_add(win);
581 elm_win_resize_object_add(win, bg);
582 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
583 evas_object_show(bg);
585 bx = elm_box_add(win);
586 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
587 elm_win_resize_object_add(win, bx);
588 evas_object_show(bx);
590 gl = elm_genlist_add(win);
591 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
592 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
593 evas_object_show(gl);
595 itc2.item_style = "default";
596 itc2.func.label_get = gl2_label_get;
597 itc2.func.icon_get = gl2_icon_get;
598 itc2.func.state_get = gl2_state_get;
599 itc2.func.del = gl2_del;
602 tit[0].item = elm_genlist_item_append(gl, &itc2,
603 &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
604 NULL/* func data */);
606 tit[1].item = elm_genlist_item_append(gl, &itc2,
607 &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
608 NULL/* func data */);
610 tit[2].item = elm_genlist_item_append(gl, &itc2,
611 &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
612 NULL/* func data */);
614 elm_box_pack_end(bx, gl);
615 evas_object_show(bx);
617 bx2 = elm_box_add(win);
618 elm_box_horizontal_set(bx2, EINA_TRUE);
619 elm_box_homogeneous_set(bx2, EINA_TRUE);
620 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
621 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
623 bt = elm_button_add(win);
624 elm_object_text_set(bt, "[1]");
625 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
626 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
627 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
628 elm_box_pack_end(bx2, bt);
629 evas_object_show(bt);
631 bt = elm_button_add(win);
632 elm_object_text_set(bt, "[2]");
633 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
634 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
635 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
636 elm_box_pack_end(bx2, bt);
637 evas_object_show(bt);
639 bt = elm_button_add(win);
640 elm_object_text_set(bt, "[3]");
641 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
642 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
643 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
644 elm_box_pack_end(bx2, bt);
645 evas_object_show(bt);
647 elm_box_pack_end(bx, bx2);
648 evas_object_show(bx2);
650 evas_object_resize(win, 320, 320);
651 evas_object_show(win);
657 my_gl_item_check_changed(void *data, Evas_Object *obj, void *event_info __UNUSED__)
659 Testitem *tit = data;
660 tit->onoff = elm_check_state_get(obj);
661 printf("item %p onoff = %i\n", tit, tit->onoff);
664 static Elm_Genlist_Item_Class itc3;
665 char *gl3_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
667 const Testitem *tit = data;
669 snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
672 Evas_Object *gl3_icon_get(void *data, Evas_Object *obj, const char *part)
674 const Testitem *tit = data;
675 if (!strcmp(part, "elm.swallow.icon"))
679 lb = elm_label_add(obj);
680 elm_label_line_wrap_set(lb, ELM_WRAP_CHAR);
681 elm_label_wrap_width_set(lb, 201);
682 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");
685 else if (!strcmp(part, "elm.swallow.end"))
688 ck = elm_check_add(obj);
689 evas_object_propagate_events_set(ck, EINA_FALSE);
690 elm_check_state_set(ck, tit->onoff);
691 evas_object_smart_callback_add(ck, "changed", my_gl_item_check_changed, data);
696 Eina_Bool gl3_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
700 void gl3_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
705 test_genlist4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
707 Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
708 static Testitem tit[3];
710 win = elm_win_add(NULL, "genlist4", ELM_WIN_BASIC);
711 elm_win_title_set(win, "Genlist 4");
712 elm_win_autodel_set(win, EINA_TRUE);
714 bg = elm_bg_add(win);
715 elm_win_resize_object_add(win, bg);
716 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
717 evas_object_show(bg);
719 bx = elm_box_add(win);
720 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
721 elm_win_resize_object_add(win, bx);
722 evas_object_show(bx);
724 gl = elm_genlist_add(win);
725 elm_genlist_height_for_width_mode_set(gl, EINA_TRUE);
726 elm_genlist_multi_select_set(gl, 1);
727 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
728 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
729 evas_object_show(gl);
731 itc3.item_style = "default";
732 itc3.func.label_get = gl3_label_get;
733 itc3.func.icon_get = gl3_icon_get;
734 itc3.func.state_get = gl3_state_get;
735 itc3.func.del = gl3_del;
738 tit[0].item = elm_genlist_item_append(gl, &itc3,
739 &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
740 NULL/* func data */);
742 tit[1].item = elm_genlist_item_append(gl, &itc3,
743 &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
744 NULL/* func data */);
746 tit[2].item = elm_genlist_item_append(gl, &itc3,
747 &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
748 NULL/* func data */);
750 elm_box_pack_end(bx, gl);
751 evas_object_show(bx);
753 bx2 = elm_box_add(win);
754 elm_box_horizontal_set(bx2, EINA_TRUE);
755 elm_box_homogeneous_set(bx2, EINA_TRUE);
756 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
757 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
759 bt = elm_button_add(win);
760 elm_object_text_set(bt, "[1]");
761 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
762 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
763 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
764 elm_box_pack_end(bx2, bt);
765 evas_object_show(bt);
767 bt = elm_button_add(win);
768 elm_object_text_set(bt, "[2]");
769 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
770 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
771 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
772 elm_box_pack_end(bx2, bt);
773 evas_object_show(bt);
775 bt = elm_button_add(win);
776 elm_object_text_set(bt, "[3]");
777 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
778 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
779 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
780 elm_box_pack_end(bx2, bt);
781 evas_object_show(bt);
783 elm_box_pack_end(bx, bx2);
784 evas_object_show(bx2);
786 evas_object_resize(win, 320, 320);
787 evas_object_show(win);
793 my_gl_item_check_changed2(void *data, Evas_Object *obj, void *event_info __UNUSED__)
795 Testitem *tit = data;
796 tit->onoff = elm_check_state_get(obj);
797 printf("item %p onoff = %i\n", tit, tit->onoff);
800 static Elm_Genlist_Item_Class itc5;
801 char *gl5_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
803 const Testitem *tit = data;
805 if (!strcmp(part, "elm.text"))
807 snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
809 else if (!strcmp(part, "elm.text.sub"))
811 snprintf(buf, sizeof(buf), "%i bottles on the wall", tit->mode);
815 Evas_Object *gl5_icon_get(void *data, Evas_Object *obj, const char *part)
817 const Testitem *tit = data;
819 if (!strcmp(part, "elm.swallow.icon"))
821 Evas_Object *bx = elm_box_add(obj);
823 elm_box_horizontal_set(bx, EINA_TRUE);
824 ic = elm_icon_add(obj);
825 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
826 elm_icon_file_set(ic, buf, NULL);
827 elm_icon_scale_set(ic, 0, 0);
828 evas_object_show(ic);
829 elm_box_pack_end(bx, ic);
830 ic = elm_icon_add(obj);
831 elm_icon_file_set(ic, buf, NULL);
832 elm_icon_scale_set(ic, 0, 0);
833 evas_object_show(ic);
834 elm_box_pack_end(bx, ic);
835 elm_box_horizontal_set(bx, EINA_TRUE);
836 evas_object_show(bx);
839 else if (!strcmp(part, "elm.swallow.end"))
842 ck = elm_check_add(obj);
843 evas_object_propagate_events_set(ck, EINA_FALSE);
844 elm_check_state_set(ck, tit->onoff);
845 evas_object_smart_callback_add(ck, "changed", my_gl_item_check_changed2, data);
846 evas_object_show(ck);
851 Eina_Bool gl5_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
855 void gl5_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
860 item_drag_up(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
866 item_drag_down(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
868 printf("drag down\n");
872 item_drag_left(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
874 printf("drag left\n");
878 item_drag_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
880 printf("drag right\n");
884 scroll_top(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
886 printf("Top edge!\n");
890 scroll_bottom(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
892 printf("Bottom edge!\n");
896 scroll_left(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
898 printf("Left edge!\n");
902 scroll_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
904 printf("Right edge!\n");
908 item_drag(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
914 item_drag_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
916 printf("drag stop\n");
920 item_longpress(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
922 printf("longpress\n");
926 test_genlist5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
928 Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
929 static Testitem tit[3];
931 win = elm_win_add(NULL, "genlist5", ELM_WIN_BASIC);
932 elm_win_title_set(win, "Genlist 5");
933 elm_win_autodel_set(win, EINA_TRUE);
935 bg = elm_bg_add(win);
936 elm_win_resize_object_add(win, bg);
937 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
938 evas_object_show(bg);
940 bx = elm_box_add(win);
941 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
942 elm_win_resize_object_add(win, bx);
943 evas_object_show(bx);
945 gl = elm_genlist_add(win);
946 elm_genlist_always_select_mode_set(gl, 1);
947 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
948 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
949 evas_object_show(gl);
950 itc5.item_style = "double_label";
951 itc5.func.label_get = gl5_label_get;
952 itc5.func.icon_get = gl5_icon_get;
953 itc5.func.state_get = gl5_state_get;
954 itc5.func.del = gl5_del;
957 tit[0].item = elm_genlist_item_append(gl, &itc5,
958 &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
959 NULL/* func data */);
961 tit[1].item = elm_genlist_item_append(gl, &itc5,
962 &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
963 NULL/* func data */);
965 tit[2].item = elm_genlist_item_append(gl, &itc5,
966 &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
967 NULL/* func data */);
969 elm_box_pack_end(bx, gl);
970 evas_object_show(bx);
972 evas_object_smart_callback_add(gl, "drag,start,up", item_drag_up, NULL);
973 evas_object_smart_callback_add(gl, "drag,start,down", item_drag_down, NULL);
974 evas_object_smart_callback_add(gl, "drag,start,left", item_drag_left, NULL);
975 evas_object_smart_callback_add(gl, "drag,start,right", item_drag_right, NULL);
976 evas_object_smart_callback_add(gl, "scroll,edge,top", scroll_top, NULL);
977 evas_object_smart_callback_add(gl, "scroll,edge,bottom", scroll_bottom, NULL);
978 evas_object_smart_callback_add(gl, "scroll,edge,left", scroll_left, NULL);
979 evas_object_smart_callback_add(gl, "scroll,edge,right", scroll_right, NULL);
980 evas_object_smart_callback_add(gl, "drag", item_drag, NULL);
981 evas_object_smart_callback_add(gl, "drag,stop", item_drag_stop, NULL);
982 evas_object_smart_callback_add(gl, "longpressed", item_longpress, NULL);
984 bx2 = elm_box_add(win);
985 elm_box_horizontal_set(bx2, EINA_TRUE);
986 elm_box_homogeneous_set(bx2, EINA_TRUE);
987 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
988 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
990 bt = elm_button_add(win);
991 elm_object_text_set(bt, "[1]");
992 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
993 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
994 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
995 elm_box_pack_end(bx2, bt);
996 evas_object_show(bt);
998 bt = elm_button_add(win);
999 elm_object_text_set(bt, "[2]");
1000 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
1001 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1002 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1003 elm_box_pack_end(bx2, bt);
1004 evas_object_show(bt);
1006 bt = elm_button_add(win);
1007 elm_object_text_set(bt, "[3]");
1008 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
1009 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1010 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1011 elm_box_pack_end(bx2, bt);
1012 evas_object_show(bt);
1014 elm_box_pack_end(bx, bx2);
1015 evas_object_show(bx2);
1017 evas_object_resize(win, 320, 320);
1018 evas_object_show(win);
1023 static Elm_Genlist_Item_Class itc4;
1026 gl4_sel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1028 Elm_Genlist_Item *it = (Elm_Genlist_Item *)event_info;
1031 depth = elm_genlist_item_expanded_depth_get(it);
1032 printf("expanded depth for selected item is %d\n", depth);
1036 gl4_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1038 Elm_Genlist_Item *it = event_info;
1039 Evas_Object *gl = elm_genlist_item_genlist_get(it);
1040 int val = (int)(long)elm_genlist_item_data_get(it);
1042 elm_genlist_item_append(gl, &itc4,
1043 (void *)(long)(val + 1)/* item data */, it/* parent */,
1044 ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1045 NULL/* func data */);
1046 elm_genlist_item_append(gl, &itc4,
1047 (void *)(long)(val + 2)/* item data */, it/* parent */,
1048 ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1049 NULL/* func data */);
1050 elm_genlist_item_append(gl, &itc4,
1051 (void *)(long)(val + 3)/* item data */, it/* parent */,
1052 ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1053 NULL/* func data */);
1056 gl4_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1058 Elm_Genlist_Item *it = event_info;
1059 elm_genlist_item_subitems_clear(it);
1063 gl4_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1065 Elm_Genlist_Item *it = event_info;
1066 elm_genlist_item_expanded_set(it, 1);
1069 gl4_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1071 Elm_Genlist_Item *it = event_info;
1072 elm_genlist_item_expanded_set(it, 0);
1075 char *gl4_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1078 snprintf(buf, sizeof(buf), "Item mode %i", (int)(long)data);
1081 Evas_Object *gl4_icon_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
1084 if (!strcmp(part, "elm.swallow.icon"))
1086 Evas_Object *ic = elm_icon_add(obj);
1087 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
1088 elm_icon_file_set(ic, buf, NULL);
1089 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
1090 evas_object_show(ic);
1093 else if (!strcmp(part, "elm.swallow.end"))
1096 ck = elm_check_add(obj);
1097 evas_object_propagate_events_set(ck, EINA_FALSE);
1098 evas_object_show(ck);
1103 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__)
1112 test_genlist6(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1114 Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
1116 win = elm_win_add(NULL, "genlist-tree", ELM_WIN_BASIC);
1117 elm_win_title_set(win, "Genlist Tree");
1118 elm_win_autodel_set(win, EINA_TRUE);
1120 bg = elm_bg_add(win);
1121 elm_win_resize_object_add(win, bg);
1122 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1123 evas_object_show(bg);
1125 bx = elm_box_add(win);
1126 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1127 elm_win_resize_object_add(win, bx);
1128 evas_object_show(bx);
1130 gl = elm_genlist_add(win);
1131 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1132 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1133 evas_object_show(gl);
1135 itc4.item_style = "default";
1136 itc4.func.label_get = gl4_label_get;
1137 itc4.func.icon_get = gl4_icon_get;
1138 itc4.func.state_get = gl4_state_get;
1139 itc4.func.del = gl4_del;
1141 elm_genlist_item_append(gl, &itc4,
1142 (void *)1/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1143 NULL/* func data */);
1144 elm_genlist_item_append(gl, &itc4,
1145 (void *)2/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1146 NULL/* func data */);
1147 elm_genlist_item_append(gl, &itc4,
1148 (void *)3/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1149 NULL/* func data */);
1151 evas_object_smart_callback_add(gl, "expand,request", gl4_exp_req, gl);
1152 evas_object_smart_callback_add(gl, "contract,request", gl4_con_req, gl);
1153 evas_object_smart_callback_add(gl, "expanded", gl4_exp, gl);
1154 evas_object_smart_callback_add(gl, "contracted", gl4_con, gl);
1156 elm_box_pack_end(bx, gl);
1157 evas_object_show(bx);
1159 bx2 = elm_box_add(win);
1160 elm_box_horizontal_set(bx2, EINA_TRUE);
1161 elm_box_homogeneous_set(bx2, EINA_TRUE);
1162 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1163 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1165 bt = elm_button_add(win);
1166 elm_object_text_set(bt, "[1]");
1167 // evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
1168 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1169 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1170 elm_box_pack_end(bx2, bt);
1171 evas_object_show(bt);
1173 bt = elm_button_add(win);
1174 elm_object_text_set(bt, "[2]");
1175 // evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
1176 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1177 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1178 elm_box_pack_end(bx2, bt);
1179 evas_object_show(bt);
1181 bt = elm_button_add(win);
1182 elm_object_text_set(bt, "[3]");
1183 // evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
1184 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1185 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1186 elm_box_pack_end(bx2, bt);
1187 evas_object_show(bt);
1189 elm_box_pack_end(bx, bx2);
1190 evas_object_show(bx2);
1192 evas_object_resize(win, 320, 320);
1193 evas_object_show(win);
1198 struct genlist7_data
1200 Evas_Object *win, *pager;
1203 static Elm_Genlist_Item_Class itc7;
1205 gl_sel7(void *data, Evas_Object *obj, void *event_info)
1207 if (!event_info) return;
1208 elm_genlist_item_item_class_update(event_info, &itc7);
1209 printf("sel item data [%p] on genlist obj [%p], item pointer [%p], new item style [%s] \n", data, obj, event_info, itc7.item_style);
1213 test_genlist7_back_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1215 struct genlist7_data *info = data;
1218 elm_pager_content_pop(info->pager);
1222 test_genlist7_swipe(void *data, Evas_Object *obj __UNUSED__, void *event_info)
1224 struct genlist7_data *info = data;
1225 Evas_Object *box, *entry, *button;
1226 char item_data[] = "Just a simple test";
1228 if ((!event_info) || (!data)) return;
1230 box = elm_box_add(info->win);
1231 elm_box_homogeneous_set(box, EINA_FALSE);
1232 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1233 evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
1234 evas_object_show(box);
1236 entry = elm_entry_add(info->win);
1237 elm_entry_scrollable_set(entry, EINA_TRUE);
1238 elm_entry_editable_set(entry, EINA_FALSE);
1239 elm_entry_entry_set(entry, item_data);
1240 evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1241 evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
1242 evas_object_show(entry);
1244 button = elm_button_add(info->win);
1245 elm_object_text_set(button, "back");
1246 evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, 0);
1247 evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0);
1248 evas_object_smart_callback_add(button, "clicked", test_genlist7_back_cb,
1250 evas_object_show(button);
1252 elm_box_pack_start(box, entry);
1253 elm_box_pack_end(box, button);
1255 elm_pager_content_push(info->pager, box);
1259 test_genlist7(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1261 Evas_Object *win, *bg, *gl, *pager;
1262 static struct genlist7_data info;
1263 static Testitem tit[3];
1265 win = elm_win_add(NULL, "genlist7", ELM_WIN_BASIC);
1266 elm_win_title_set(win, "Genlist 7");
1267 elm_win_autodel_set(win, EINA_TRUE);
1270 bg = elm_bg_add(win);
1271 elm_win_resize_object_add(win, bg);
1272 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1273 evas_object_show(bg);
1275 pager = elm_pager_add(win);
1276 elm_win_resize_object_add(win, pager);
1277 evas_object_size_hint_weight_set(pager, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1278 evas_object_size_hint_align_set(pager, EVAS_HINT_FILL, EVAS_HINT_FILL);
1279 evas_object_show(pager);
1282 gl = elm_genlist_add(win);
1283 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1284 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1285 evas_object_smart_callback_add(gl, "swipe", test_genlist7_swipe, &info);
1286 evas_object_show(gl);
1287 elm_pager_content_push(pager, gl);
1289 itc2.item_style = "default";
1290 itc2.func.label_get = gl2_label_get;
1291 itc2.func.icon_get = gl2_icon_get;
1292 itc2.func.state_get = gl2_state_get;
1293 itc2.func.del = gl2_del;
1295 itc7.item_style = "double_label";
1296 itc7.func.label_get = gl5_label_get;
1297 itc7.func.icon_get = gl5_icon_get;
1298 itc7.func.state_get = gl5_state_get;
1299 itc7.func.del = gl5_del;
1302 tit[0].item = elm_genlist_item_append(gl, &itc2,
1303 &(tit[0])/* item data */, NULL/* parent */,
1304 ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1305 NULL/* func data */);
1307 tit[1].item = elm_genlist_item_append(gl, &itc2,
1308 &(tit[1])/* item data */, NULL/* parent */,
1309 ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1310 NULL/* func data */);
1312 tit[2].item = elm_genlist_item_append(gl, &itc2,
1313 &(tit[2])/* item data */, NULL/* parent */,
1314 ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1315 NULL/* func data */);
1317 evas_object_resize(win, 320, 320);
1318 evas_object_show(win);
1323 static Elm_Genlist_Item_Class itc_group;
1324 char *gl8_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1327 snprintf(buf, sizeof(buf), "Group Index # %i (Item # %i)", (int)((long)data / 10), (int)(long)data);
1332 _bt_show_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1334 elm_genlist_item_top_show(data);
1335 //elm_genlist_item_show(data);
1336 //elm_genlist_item_middle_show(data);
1339 _bt_bring_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1341 elm_genlist_item_top_bring_in(data);
1342 //elm_genlist_item_bring_in(data);
1343 //elm_genlist_item_middle_bring_in(data);
1347 test_genlist8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1349 Evas_Object *win, *bg, *gl, *bt[8], *bx, *bx2, *bx3;
1350 Elm_Genlist_Item *gli = NULL, *git = NULL;
1351 int i, bt_count, bt_num;
1353 win = elm_win_add(NULL, "genlist-group", ELM_WIN_BASIC);
1354 elm_win_title_set(win, "Genlist Group");
1355 elm_win_autodel_set(win, EINA_TRUE);
1357 bg = elm_bg_add(win);
1358 elm_win_resize_object_add(win, bg);
1359 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1360 evas_object_show(bg);
1362 bx = elm_box_add(win);
1363 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1364 elm_win_resize_object_add(win, bx);
1365 evas_object_show(bx);
1367 gl = elm_genlist_add(win);
1368 evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
1369 evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
1370 evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
1371 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1372 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1373 elm_box_pack_end(bx, gl);
1374 evas_object_show(gl);
1376 itc1.item_style = "default";
1377 itc1.func.label_get = gl_label_get;
1378 itc1.func.icon_get = gl_icon_get;
1379 itc1.func.state_get = gl_state_get;
1380 itc1.func.del = gl_del;
1382 itc_group.item_style = "group_index";
1383 itc_group.func.label_get = gl8_label_get;
1384 itc_group.func.icon_get = NULL;
1385 itc_group.func.state_get = NULL;
1386 itc_group.func.del = gl_del;
1388 bx2 = elm_box_add(win);
1389 elm_box_horizontal_set(bx2, EINA_TRUE);
1390 elm_box_homogeneous_set(bx2, EINA_TRUE);
1391 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1392 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1395 bt[bt_num] = elm_button_add(win);
1396 elm_object_text_set(bt[bt_num], "Show 0");
1397 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1398 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1399 evas_object_show(bt[bt_num]);
1400 elm_box_pack_end(bx2, bt[bt_num]);
1402 bt[++bt_num] = elm_button_add(win);
1403 elm_object_text_set(bt[bt_num], "Show 26");
1404 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1405 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1406 evas_object_show(bt[bt_num]);
1407 elm_box_pack_end(bx2, bt[bt_num]);
1409 bt[++bt_num] = elm_button_add(win);
1410 elm_object_text_set(bt[bt_num], "Show 101");
1411 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1412 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1413 evas_object_show(bt[bt_num]);
1414 elm_box_pack_end(bx2, bt[bt_num]);
1416 bt[++bt_num] = elm_button_add(win);
1417 elm_object_text_set(bt[bt_num], "Show 480");
1418 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1419 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1420 evas_object_show(bt[bt_num]);
1421 elm_box_pack_end(bx2, bt[bt_num]);
1423 elm_box_pack_end(bx, bx2);
1424 evas_object_show(bx2);
1426 bx3 = elm_box_add(win);
1427 elm_box_horizontal_set(bx3, EINA_TRUE);
1428 elm_box_homogeneous_set(bx3, EINA_TRUE);
1429 evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
1430 evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
1432 bt[++bt_num] = elm_button_add(win);
1433 elm_object_text_set(bt[bt_num], "Bring top 0");
1434 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1435 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1436 evas_object_show(bt[bt_num]);
1437 elm_box_pack_end(bx3, bt[bt_num]);
1439 bt[++bt_num] = elm_button_add(win);
1440 elm_object_text_set(bt[bt_num], "Bring top 31");
1441 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1442 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1443 evas_object_show(bt[bt_num]);
1444 elm_box_pack_end(bx3, bt[bt_num]);
1446 bt[++bt_num] = elm_button_add(win);
1447 elm_object_text_set(bt[bt_num], "Bring top 239");
1448 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1449 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1450 evas_object_show(bt[bt_num]);
1451 elm_box_pack_end(bx3, bt[bt_num]);
1453 bt[++bt_num] = elm_button_add(win);
1454 elm_object_text_set(bt[bt_num], "Bring top 477");
1455 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1456 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1457 evas_object_show(bt[bt_num]);
1458 elm_box_pack_end(bx3, bt[bt_num]);
1460 elm_box_pack_end(bx, bx3);
1461 evas_object_show(bx3);
1464 for (i = 0; i < 500; i++)
1468 gli = git = elm_genlist_item_append(gl, &itc_group,
1469 (void *)(long)i/* item data */,
1471 ELM_GENLIST_ITEM_GROUP,
1473 (void *)(long)(i * 10)/* func data */);
1474 elm_genlist_item_display_only_set(git, EINA_TRUE);
1478 gli = elm_genlist_item_append(gl, &itc1,
1479 (void *)(long)i/* item data */,
1481 ELM_GENLIST_ITEM_NONE,
1483 (void *)(long)(i * 10)/* func data */);
1488 evas_object_smart_callback_add(bt[0], "clicked", _bt_show_cb, gli);
1489 evas_object_smart_callback_add(bt[4], "clicked", _bt_bring_cb, gli);
1492 evas_object_smart_callback_add(bt[1], "clicked", _bt_show_cb, gli);
1495 evas_object_smart_callback_add(bt[5], "clicked", _bt_bring_cb, gli);
1498 evas_object_smart_callback_add(bt[2], "clicked", _bt_show_cb, gli);
1501 evas_object_smart_callback_add(bt[6], "clicked", _bt_bring_cb, gli);
1504 evas_object_smart_callback_add(bt[7], "clicked", _bt_bring_cb, gli);
1507 evas_object_smart_callback_add(bt[3], "clicked", _bt_show_cb, gli);
1512 evas_object_resize(win, 480, 800);
1513 evas_object_show(win);
1519 gl9_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1521 Elm_Genlist_Item *it = event_info;
1522 Evas_Object *gl = elm_genlist_item_genlist_get(it);
1523 int val = (int)(long)elm_genlist_item_data_get(it);
1525 elm_genlist_item_append(gl, &itc1,
1526 (void *)(long)(val + 1)/* item data */, it/* parent */,
1527 ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1528 NULL/* func data */);
1529 elm_genlist_item_append(gl, &itc1,
1530 (void *)(long)(val + 2)/* item data */, it/* parent */,
1531 ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1532 NULL/* func data */);
1533 elm_genlist_item_append(gl, &itc1,
1534 (void *)(long)(val + 3)/* item data */, it/* parent */,
1535 ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1536 NULL/* func data */);
1539 gl9_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1541 Elm_Genlist_Item *it = event_info;
1542 elm_genlist_item_subitems_clear(it);
1546 gl9_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1548 Elm_Genlist_Item *it = event_info;
1549 elm_genlist_item_expanded_set(it, EINA_TRUE);
1552 gl9_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1554 Elm_Genlist_Item *it = event_info;
1555 elm_genlist_item_expanded_set(it, EINA_FALSE);
1559 test_genlist9(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1561 Evas_Object *win, *bg, *gl, *bx;
1562 Elm_Genlist_Item *git;
1564 win = elm_win_add(NULL, "genlist-group-tree", ELM_WIN_BASIC);
1565 elm_win_title_set(win, "Genlist Group Tree");
1566 elm_win_autodel_set(win, EINA_TRUE);
1568 bg = elm_bg_add(win);
1569 elm_win_resize_object_add(win, bg);
1570 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1571 evas_object_show(bg);
1573 bx = elm_box_add(win);
1574 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1575 elm_win_resize_object_add(win, bx);
1576 evas_object_show(bx);
1578 gl = elm_genlist_add(win);
1579 evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
1580 evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
1581 evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
1582 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1583 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1584 elm_box_pack_end(bx, gl);
1585 evas_object_show(gl);
1587 itc1.item_style = "default";
1588 itc1.func.label_get = gl_label_get;
1589 itc1.func.icon_get = gl_icon_get;
1590 itc1.func.state_get = gl_state_get;
1591 itc1.func.del = gl_del;
1593 itc_group.item_style = "group_index";
1594 itc_group.func.label_get = gl8_label_get;
1595 itc_group.func.icon_get = NULL;
1596 itc_group.func.state_get = NULL;
1597 itc_group.func.del = gl_del;
1599 git = elm_genlist_item_append(gl, &itc_group,
1600 (void *)0/* 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 *)1/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1605 NULL/* func data */);
1606 elm_genlist_item_append(gl, &itc1,
1607 (void *)2/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1608 NULL/* func data */);
1609 elm_genlist_item_append(gl, &itc1,
1610 (void *)3/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1611 NULL/* func data */);
1612 git = elm_genlist_item_append(gl, &itc_group,
1613 (void *)4/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_GROUP, gl4_sel/* func */,
1614 NULL/* func data */);
1615 elm_genlist_item_display_only_set(git, EINA_TRUE);
1616 elm_genlist_item_append(gl, &itc1,
1617 (void *)5/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1618 NULL/* func data */);
1619 elm_genlist_item_append(gl, &itc1,
1620 (void *)6/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1621 NULL/* func data */);
1622 elm_genlist_item_append(gl, &itc1,
1623 (void *)7/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1624 NULL/* func data */);
1626 evas_object_smart_callback_add(gl, "expand,request", gl9_exp_req, gl);
1627 evas_object_smart_callback_add(gl, "contract,request", gl9_con_req, gl);
1628 evas_object_smart_callback_add(gl, "expanded", gl9_exp, gl);
1629 evas_object_smart_callback_add(gl, "contracted", gl9_con, gl);
1631 evas_object_resize(win, 480, 800);
1632 evas_object_show(win);
1637 static Elm_Genlist_Item_Class itc10;
1638 static char *mode_type[] = { "slide", "rotate" };
1639 char *gl10_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
1642 if (!strcmp(part, "elm.text.mode"))
1643 snprintf(buf, sizeof(buf), "Mode # %i", (int)(long)data);
1645 snprintf(buf, sizeof(buf), "Item # %i", (int)(long)data);
1649 Evas_Object *gl10_icon_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
1652 Evas_Object *ic = elm_icon_add(obj);
1653 if (!strcmp(part, "elm.swallow.end"))
1654 snprintf(buf, sizeof(buf), "%s/images/bubble.png", elm_app_data_dir_get());
1656 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
1657 elm_icon_file_set(ic, buf, NULL);
1658 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
1662 _gl_sel10(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1665 int v = elm_radio_value_get(data);
1667 elm_genlist_item_mode_set(event_info, mode_type[v], EINA_TRUE);
1671 _my_gl_mode_right(void *data, Evas_Object *obj __UNUSED__, void *event_info)
1674 int v = elm_radio_value_get(data);
1676 elm_genlist_item_mode_set(event_info, mode_type[v], EINA_TRUE);
1680 _my_gl_mode_left(void *data, Evas_Object *obj __UNUSED__, void *event_info)
1683 int v = elm_radio_value_get(data);
1685 elm_genlist_item_mode_set(event_info, mode_type[v], EINA_FALSE);
1689 _my_gl_mode_cancel(void *data, Evas_Object *obj, void *event_info __UNUSED__)
1691 fprintf(stderr, "drag\n");
1693 int v = elm_radio_value_get(data);
1694 Elm_Genlist_Item *it = (Elm_Genlist_Item *)elm_genlist_mode_item_get(obj);
1696 elm_genlist_item_mode_set(it, mode_type[v], EINA_FALSE);
1700 test_genlist10(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1702 Evas_Object *win, *bg, *fr, *lb, *bx, *bx2, *bx3, *rd, *rdg, *gl;
1705 win = elm_win_add(NULL, "genlist10", ELM_WIN_BASIC);
1706 elm_win_title_set(win, "Genlist Mode");
1707 elm_win_autodel_set(win, EINA_TRUE);
1709 bg = elm_bg_add(win);
1710 elm_win_resize_object_add(win, bg);
1711 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1712 evas_object_show(bg);
1714 bx = elm_box_add(win);
1715 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1716 elm_win_resize_object_add(win, bx);
1717 evas_object_show(bx);
1719 fr = elm_frame_add(win);
1720 elm_object_text_set(fr, "Mode Type");
1721 elm_box_pack_end(bx, fr);
1722 evas_object_show(fr);
1724 bx2 = elm_box_add(win);
1725 elm_frame_content_set(fr, bx2);
1726 evas_object_show(bx2);
1728 lb = elm_label_add(win);
1729 elm_object_text_set(lb,
1730 "Sweep genlist items to the right.<br>"
1731 "Test this by changing Mode Type to Slide or Rotate.");
1732 elm_box_pack_end(bx2, lb);
1733 evas_object_show(lb);
1735 bx3 = elm_box_add(win);
1736 elm_box_horizontal_set(bx3, EINA_TRUE);
1737 elm_box_pack_end(bx2, bx3);
1738 evas_object_show(bx3);
1740 rd = elm_radio_add(win);
1741 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1742 elm_radio_state_value_set(rd, 0);
1743 elm_object_text_set(rd, "Slide ");
1744 evas_object_show(rd);
1745 elm_box_pack_end(bx3, rd);
1748 rd = elm_radio_add(win);
1749 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1750 elm_radio_state_value_set(rd, 1);
1751 elm_object_text_set(rd, "Rotate");
1752 elm_radio_group_add(rd, rdg);
1753 evas_object_show(rd);
1754 elm_box_pack_end(bx3, rd);
1756 gl = elm_genlist_add(win);
1757 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1758 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1759 evas_object_smart_callback_add(gl, "drag,start,right", _my_gl_mode_right, rdg);
1760 evas_object_smart_callback_add(gl, "drag,start,left", _my_gl_mode_left, rdg);
1761 evas_object_smart_callback_add(gl, "drag,start,up", _my_gl_mode_cancel, rdg);
1762 evas_object_smart_callback_add(gl, "drag,start,down", _my_gl_mode_cancel, rdg);
1763 evas_object_show(gl);
1765 itc10.item_style = "default";
1766 itc10.func.label_get = gl10_label_get;
1767 itc10.func.icon_get = gl10_icon_get;
1768 itc10.func.state_get = gl_state_get;
1769 itc10.func.del = gl_del;
1770 elm_genlist_mode_item_style_set(gl, "mode");
1772 for (i = 0; i < 50; i++)
1773 elm_genlist_item_append(gl,
1775 (void *)(1000 + i)/* item data */,
1777 ELM_GENLIST_ITEM_NONE/* flags */,
1778 _gl_sel10/* func */,
1779 rdg/* func data */);
1781 elm_box_pack_end(bx, gl);
1783 evas_object_resize(win, 520, 520);
1784 evas_object_show(win);
1790 _reorder_tg_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
1792 elm_genlist_reorder_mode_set(data, elm_check_state_get(obj));
1796 * gl_moved is called after an item was reordered.
1797 * This is only called when reorder mode is enabled.
1799 * @param data : the genlist object passed as data.
1800 * @param obj : the genlist object.
1801 * @param item : the moved item.
1803 * If the move_after is true,
1804 * the item(*item) had been moved after the given relative item(*rel_item) in list.
1805 * If the move_after is false,
1806 * the item(*item) had been moved before the given relative item(*rel_item) in list.
1809 static void gl_moved(Evas_Object *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Genlist_Item *item __UNUSED__)
1811 // if needed, add application logic.
1815 test_genlist11(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1817 Evas_Object *win, *bg, *fr, *lb, *bx, *tg, *gl;
1820 win = elm_win_add(NULL, "genlist-reorder-mode", ELM_WIN_BASIC);
1821 elm_win_title_set(win, "Genlist Reorder Mode");
1822 elm_win_autodel_set(win, EINA_TRUE);
1824 bg = elm_bg_add(win);
1825 elm_win_resize_object_add(win, bg);
1826 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1827 evas_object_show(bg);
1829 bx = elm_box_add(win);
1830 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1831 elm_win_resize_object_add(win, bx);
1832 evas_object_show(bx);
1834 fr = elm_frame_add(win);
1836 elm_object_text_set(fr, "Reorder Mode");
1837 elm_box_pack_end(bx, fr);
1838 evas_object_show(fr);
1840 lb = elm_label_add(win);
1841 elm_object_text_set(lb,
1842 "Enable reorder mode if you want to move item.<br>"
1843 "Then long press and drag item.");
1844 elm_frame_content_set(fr, lb);
1845 evas_object_show(lb);
1847 gl = elm_genlist_add(win);
1848 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1849 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1850 evas_object_show(gl);
1852 tg = elm_check_add(win);
1853 elm_object_style_set(tg, "toggle");
1854 elm_object_text_set(tg, "Reorder Mode:");
1855 elm_check_state_set(tg, elm_mirrored_get());
1856 evas_object_smart_callback_add(tg, "changed", _reorder_tg_changed_cb, gl);
1857 elm_box_pack_end(bx, tg);
1858 evas_object_show(tg);
1860 itc1.item_style = "default";
1861 itc1.func.label_get = gl_label_get;
1862 itc1.func.icon_get = gl_icon_get;
1863 itc1.func.state_get = gl_state_get;
1864 itc1.func.del = gl_del;
1865 evas_object_smart_callback_add(gl, "moved", (Evas_Smart_Cb)gl_moved, gl);
1867 for (i = 0; i < 50; i++)
1868 elm_genlist_item_append(gl,
1870 (void *)(1 + i)/* item data */,
1872 ELM_GENLIST_ITEM_NONE/* flags */,
1874 NULL/* func data */);
1876 elm_box_pack_end(bx, gl);
1878 evas_object_resize(win, 400, 500);
1879 evas_object_show(win);
1882 char *gl12_label_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1884 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).");
1888 test_genlist12(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1890 Evas_Object *win, *bg, *bx, *gl;
1892 Elm_Genlist_Item *gli;
1894 win = elm_win_add(NULL, "genlist-textblock", ELM_WIN_BASIC);
1895 elm_win_title_set(win, "Genlist Textblock");
1896 elm_win_autodel_set(win, EINA_TRUE);
1898 bg = elm_bg_add(win);
1899 elm_win_resize_object_add(win, bg);
1900 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1901 evas_object_show(bg);
1903 bx = elm_box_add(win);
1904 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1905 elm_win_resize_object_add(win, bx);
1906 evas_object_show(bx);
1908 gl = elm_genlist_add(win);
1909 elm_genlist_height_for_width_mode_set(gl, EINA_TRUE);
1910 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1911 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1912 elm_box_pack_end(bx, gl);
1913 evas_object_show(gl);
1915 itc1.item_style = "message";
1916 itc1.func.label_get = gl12_label_get;
1917 itc1.func.icon_get = gl_icon_get;
1918 itc1.func.state_get = gl_state_get;
1919 itc1.func.del = gl_del;
1921 for (i = 0; i < 1000; i++)
1923 gli = elm_genlist_item_append(gl, &itc1,
1924 (void *)(long)i/* item data */,
1926 ELM_GENLIST_ITEM_NONE,
1928 (void *)(long)(i * 10)/* func data */);
1931 evas_object_resize(win, 400, 500);
1932 evas_object_show(win);