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(const void *data, Evas_Object *obj, const char *part)
27 snprintf(buf, sizeof(buf), "Item # %i", (int)data);
31 Evas_Object *gl_icon_get(const void *data, Evas_Object *obj, const char *part)
34 Evas_Object *ic = elm_icon_add(obj);
35 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
36 elm_icon_file_set(ic, buf, NULL);
37 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
40 Eina_Bool gl_state_get(const void *data, Evas_Object *obj, const char *part)
44 void gl_del(const void *data, Evas_Object *obj)
49 gl_sel(void *data, Evas_Object *obj, void *event_info)
51 printf("sel item data [%p] on genlist obj [%p], item pointer [%p]\n", data, obj, event_info);
55 _move(void *data, Evas *evas, Evas_Object *obj, void *event_info)
57 Evas_Object *gl = data;
58 Evas_Event_Mouse_Move *ev = event_info;
60 Elm_Genlist_Item *gli;
61 gli = elm_genlist_at_xy_item_get(gl, ev->cur.canvas.x, ev->cur.canvas.y, &where);
63 printf("over %p, where %i\n", elm_genlist_item_data_get(gli), where);
65 printf("over none, where %i\n", where);
69 _bt50_cb(void *data, Evas_Object *obj, void *event_info)
71 elm_genlist_item_bring_in(data);
75 _bt1500_cb(void *data, Evas_Object *obj, void *event_info)
77 elm_genlist_item_middle_bring_in(data);
81 _gl_selected(void *data, Evas_Object *obj, void *event_info)
83 printf("selected: %p\n", event_info);
87 _gl_clicked(void *data, Evas_Object *obj, void *event_info)
89 printf("clicked: %p\n", event_info);
93 _gl_longpress(void *data, Evas_Object *obj, void *event_info)
95 printf("longpress %p\n", event_info);
99 test_genlist(void *data, Evas_Object *obj, void *event_info)
101 Evas_Object *win, *bg, *gl, *bt_50, *bt_1500, *bx;
103 Elm_Genlist_Item *gli;
106 win = elm_win_add(NULL, "genlist", ELM_WIN_BASIC);
107 elm_win_title_set(win, "Genlist");
108 elm_win_autodel_set(win, 1);
110 bg = elm_bg_add(win);
111 elm_win_resize_object_add(win, bg);
112 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
113 evas_object_show(bg);
115 bx = elm_box_add(win);
116 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
117 elm_win_resize_object_add(win, bx);
118 evas_object_show(bx);
120 gl = elm_genlist_add(win);
121 evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
122 evas_object_smart_callback_add(gl, "clicked", _gl_clicked, NULL);
123 evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
124 // FIXME: This causes genlist to resize the horiz axis very slowly :(
125 // Reenable this and resize the window horizontally, then try to resize it back
126 //elm_genlist_horizontal_mode_set(gl, ELM_LIST_LIMIT);
127 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
128 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
129 elm_box_pack_end(bx, gl);
130 evas_object_show(gl);
132 over = evas_object_rectangle_add(evas_object_evas_get(win));
133 evas_object_color_set(over, 0, 0, 0, 0);
134 evas_object_event_callback_add(over, EVAS_CALLBACK_MOUSE_MOVE, _move, gl);
135 evas_object_repeat_events_set(over, 1);
136 evas_object_show(over);
137 evas_object_size_hint_weight_set(over, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
138 elm_win_resize_object_add(win, over);
140 itc1.item_style = "default";
141 itc1.func.label_get = gl_label_get;
142 itc1.func.icon_get = gl_icon_get;
143 itc1.func.state_get = gl_state_get;
144 itc1.func.del = gl_del;
146 bt_50 = elm_button_add(win);
147 elm_button_label_set(bt_50, "Go to 50");
148 evas_object_show(bt_50);
149 elm_box_pack_end(bx, bt_50);
151 bt_1500 = elm_button_add(win);
152 elm_button_label_set(bt_1500, "Go to 1500");
153 evas_object_show(bt_1500);
154 elm_box_pack_end(bx, bt_1500);
156 for (i = 0; i < 2000; i++)
158 gli = elm_genlist_item_append(gl, &itc1,
159 (void *)i/* item data */,
161 ELM_GENLIST_ITEM_NONE,
163 (void *)(i * 10)/* func data */);
165 evas_object_smart_callback_add(bt_50, "clicked", _bt50_cb, gli);
167 evas_object_smart_callback_add(bt_1500, "clicked", _bt1500_cb, gli);
169 evas_object_resize(win, 480, 800);
170 evas_object_show(win);
176 my_gl_clear(void *data, Evas_Object *obj, void *event_info)
178 Evas_Object *gl = data;
179 elm_genlist_clear(gl);
183 my_gl_add(void *data, Evas_Object *obj, void *event_info)
185 Evas_Object *gl = data;
186 Elm_Genlist_Item *gli;
189 itc1.item_style = "default";
190 itc1.func.label_get = gl_label_get;
191 itc1.func.icon_get = gl_icon_get;
192 itc1.func.state_get = gl_state_get;
193 itc1.func.del = gl_del;
195 gli = elm_genlist_item_append(gl, &itc1,
196 (void *)i/* item data */,
198 ELM_GENLIST_ITEM_NONE,
200 (void *)(i * 10)/* func data */);
205 my_gl_insert_before(void *data, Evas_Object *obj, void *event_info)
207 Evas_Object *gl = data;
208 Elm_Genlist_Item *gli;
210 Elm_Genlist_Item *gli_selected;
212 itc1.item_style = "default";
213 itc1.func.label_get = gl_label_get;
214 itc1.func.icon_get = gl_icon_get;
215 itc1.func.state_get = gl_state_get;
216 itc1.func.del = gl_del;
218 gli_selected = elm_genlist_selected_item_get(gl);
221 printf("no item selected\n");
225 elm_genlist_item_insert_before(gl, &itc1,
226 (void *)(long)i/* item data */,
228 gli_selected /* item before */,
229 ELM_GENLIST_ITEM_NONE,
231 (void *)(long)(i * 10)/* func data */);
237 my_gl_insert_after(void *data, Evas_Object *obj, void *event_info)
239 Evas_Object *gl = data;
240 Elm_Genlist_Item *gli;
242 Elm_Genlist_Item *gli_selected;
244 itc1.item_style = "default";
245 itc1.func.label_get = gl_label_get;
246 itc1.func.icon_get = gl_icon_get;
247 itc1.func.state_get = gl_state_get;
248 itc1.func.del = gl_del;
250 gli_selected = elm_genlist_selected_item_get(gl);
253 printf("no item selected\n");
257 elm_genlist_item_insert_after(gl, &itc1,
258 (void *)(long)i/* item data */,
260 gli_selected /* item after */,
261 ELM_GENLIST_ITEM_NONE,
263 (void *)(long)(i * 10)/* func data */);
269 my_gl_del(void *data, Evas_Object *obj, void *event_info)
271 Evas_Object *gl = data;
272 Elm_Genlist_Item *gli = elm_genlist_selected_item_get(gl);
275 printf("no item selected\n");
278 elm_genlist_item_del(gli);
282 my_gl_disable(void *data, Evas_Object *obj, void *event_info)
284 Evas_Object *gl = data;
285 Elm_Genlist_Item *gli = elm_genlist_selected_item_get(gl);
288 printf("no item selected\n");
291 elm_genlist_item_disabled_set(gli, 1);
292 elm_genlist_item_selected_set(gli, 0);
293 elm_genlist_item_update(gli);
297 my_gl_update_all(void *data, Evas_Object *obj, void *event_info)
299 Evas_Object *gl = data;
301 Elm_Genlist_Item *it = elm_genlist_first_item_get(gl);
304 elm_genlist_item_update(it);
307 it = elm_genlist_item_next_get(it);
312 my_gl_first(void *data, Evas_Object *obj, void *event_info)
314 Evas_Object *gl = data;
315 Elm_Genlist_Item *gli = elm_genlist_first_item_get(gl);
317 elm_genlist_item_show(gli);
318 elm_genlist_item_selected_set(gli, 1);
322 my_gl_last(void *data, Evas_Object *obj, void *event_info)
324 Evas_Object *gl = data;
325 Elm_Genlist_Item *gli = elm_genlist_last_item_get(gl);
327 elm_genlist_item_show(gli);
328 elm_genlist_item_selected_set(gli, 1);
332 my_gl_flush_delay(void *data)
335 return ECORE_CALLBACK_CANCEL;
339 my_gl_flush(void *data, Evas_Object *obj, void *event_info)
341 ecore_timer_add(1.2, my_gl_flush_delay, NULL);
345 test_genlist2(void *data, Evas_Object *obj, void *event_info)
347 Evas_Object *win, *bg, *gl, *bx, *bx2, *bx3, *bt;
348 Elm_Genlist_Item *gli[10];
351 win = elm_win_add(NULL, "genlist-2", ELM_WIN_BASIC);
352 elm_win_title_set(win, "Genlist 2");
353 elm_win_autodel_set(win, 1);
355 bg = elm_bg_add(win);
356 snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", PACKAGE_DATA_DIR);
357 elm_bg_file_set(bg, buf, NULL);
358 elm_win_resize_object_add(win, bg);
359 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
360 evas_object_show(bg);
362 bx = elm_box_add(win);
363 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
364 elm_win_resize_object_add(win, bx);
365 evas_object_show(bx);
367 gl = elm_genlist_add(win);
368 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
369 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
370 evas_object_show(gl);
372 itc1.item_style = "default";
373 itc1.func.label_get = gl_label_get;
374 itc1.func.icon_get = gl_icon_get;
375 itc1.func.state_get = gl_state_get;
376 itc1.func.del = gl_del;
378 gli[0] = elm_genlist_item_append(gl, &itc1,
379 (void *)1001/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
380 (void *)1001/* func data */);
381 gli[1] = elm_genlist_item_append(gl, &itc1,
382 (void *)1002/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
383 (void *)1002/* func data */);
384 gli[2] = elm_genlist_item_append(gl, &itc1,
385 (void *)1003/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
386 (void *)1003/* func data */);
387 gli[3] = elm_genlist_item_prepend(gl, &itc1,
388 (void *)1004/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
389 (void *)1004/* func data */);
390 gli[4] = elm_genlist_item_prepend(gl, &itc1,
391 (void *)1005/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
392 (void *)1005/* func data */);
393 gli[5] = elm_genlist_item_insert_before(gl, &itc1,
394 (void *)1006/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
395 gl_sel/* func */, (void *)1006/* func data */);
396 gli[6] = elm_genlist_item_insert_after(gl, &itc1,
397 (void *)1007/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
398 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, 1);
405 elm_box_homogenous_set(bx2, 1);
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_button_label_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_button_label_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_button_label_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_button_label_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, 1);
446 elm_box_homogenous_set(bx2, 1);
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_button_label_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_button_label_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_button_label_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, 1);
479 elm_box_homogenous_set(bx3, 1);
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_button_label_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_button_label_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_button_label_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);
511 evas_object_resize(win, 320, 320);
512 evas_object_show(win);
517 static Elm_Genlist_Item_Class itc2;
518 char *gl2_label_get(const void *data, Evas_Object *obj, const char *part)
520 const Testitem *tit = data;
522 snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
525 Evas_Object *gl2_icon_get(const void *data, Evas_Object *obj, const char *part)
527 const Testitem *tit = data;
529 Evas_Object *ic = elm_icon_add(obj);
530 if (!strcmp(part, "elm.swallow.icon"))
532 if (!(tit->mode & 0x3))
533 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
534 else if ((tit->mode & 0x3) == 1)
535 snprintf(buf, sizeof(buf), "%s/images/logo.png", PACKAGE_DATA_DIR);
536 else if ((tit->mode & 0x3) == 2)
537 snprintf(buf, sizeof(buf), "%s/images/panel_01.jpg", PACKAGE_DATA_DIR);
538 else if ((tit->mode & 0x3) == 3)
539 snprintf(buf, sizeof(buf), "%s/images/rock_01.jpg", PACKAGE_DATA_DIR);
540 elm_icon_file_set(ic, buf, NULL);
542 else if (!strcmp(part, "elm.swallow.end"))
544 if (!(tit->mode & 0x3))
545 snprintf(buf, sizeof(buf), "%s/images/sky_01.jpg", PACKAGE_DATA_DIR);
546 else if ((tit->mode & 0x3) == 1)
547 snprintf(buf, sizeof(buf), "%s/images/sky_02.jpg", PACKAGE_DATA_DIR);
548 else if ((tit->mode & 0x3) == 2)
549 snprintf(buf, sizeof(buf), "%s/images/sky_03.jpg", PACKAGE_DATA_DIR);
550 else if ((tit->mode & 0x3) == 3)
551 snprintf(buf, sizeof(buf), "%s/images/sky_04.jpg", PACKAGE_DATA_DIR);
552 elm_icon_file_set(ic, buf, NULL);
554 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
557 Eina_Bool gl2_state_get(const void *data, Evas_Object *obj, const char *part)
561 void gl2_del(const void *data, Evas_Object *obj)
566 my_gl_update(void *data, Evas_Object *obj, void *event_info)
568 Testitem *tit = data;
570 elm_genlist_item_update(tit->item);
574 test_genlist3(void *data, Evas_Object *obj, void *event_info)
576 Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
577 static Testitem tit[3];
579 win = elm_win_add(NULL, "genlist-3", ELM_WIN_BASIC);
580 elm_win_title_set(win, "Genlist 3");
581 elm_win_autodel_set(win, 1);
583 bg = elm_bg_add(win);
584 elm_win_resize_object_add(win, bg);
585 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
586 evas_object_show(bg);
588 bx = elm_box_add(win);
589 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
590 elm_win_resize_object_add(win, bx);
591 evas_object_show(bx);
593 gl = elm_genlist_add(win);
594 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
595 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
596 evas_object_show(gl);
598 itc2.item_style = "default";
599 itc2.func.label_get = gl2_label_get;
600 itc2.func.icon_get = gl2_icon_get;
601 itc2.func.state_get = gl2_state_get;
602 itc2.func.del = gl2_del;
605 tit[0].item = elm_genlist_item_append(gl, &itc2,
606 &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
607 NULL/* func data */);
609 tit[1].item = elm_genlist_item_append(gl, &itc2,
610 &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
611 NULL/* func data */);
613 tit[2].item = elm_genlist_item_append(gl, &itc2,
614 &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
615 NULL/* func data */);
617 elm_box_pack_end(bx, gl);
618 evas_object_show(bx);
620 bx2 = elm_box_add(win);
621 elm_box_horizontal_set(bx2, 1);
622 elm_box_homogenous_set(bx2, 1);
623 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
624 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
626 bt = elm_button_add(win);
627 elm_button_label_set(bt, "[1]");
628 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
629 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
630 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
631 elm_box_pack_end(bx2, bt);
632 evas_object_show(bt);
634 bt = elm_button_add(win);
635 elm_button_label_set(bt, "[2]");
636 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
637 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
638 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
639 elm_box_pack_end(bx2, bt);
640 evas_object_show(bt);
642 bt = elm_button_add(win);
643 elm_button_label_set(bt, "[3]");
644 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
645 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
646 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
647 elm_box_pack_end(bx2, bt);
648 evas_object_show(bt);
650 elm_box_pack_end(bx, bx2);
651 evas_object_show(bx2);
653 evas_object_resize(win, 320, 320);
654 evas_object_show(win);
660 my_gl_item_check_changed(void *data, Evas_Object *obj, void *event_info)
662 Testitem *tit = data;
663 tit->onoff = elm_check_state_get(obj);
664 printf("item %p onoff = %i\n", tit, tit->onoff);
667 static Elm_Genlist_Item_Class itc3;
668 char *gl3_label_get(const void *data, Evas_Object *obj, const char *part)
670 const Testitem *tit = data;
672 snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
675 Evas_Object *gl3_icon_get(const void *data, Evas_Object *obj, const char *part)
677 const Testitem *tit = data;
679 if (!strcmp(part, "elm.swallow.icon"))
683 lb = elm_label_add(obj);
684 elm_label_line_wrap_set(lb, 1);
685 elm_label_wrap_width_set(lb, 201);
686 elm_label_label_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");
687 evas_object_show(lb);
690 Evas_Object *bx = elm_box_add(obj);
692 ic = elm_icon_add(obj);
693 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
694 elm_icon_file_set(ic, buf, NULL);
695 elm_icon_scale_set(ic, 0, 0);
696 evas_object_show(ic);
697 elm_box_pack_end(bx, ic);
698 ic = elm_icon_add(obj);
699 elm_icon_file_set(ic, buf, NULL);
700 elm_icon_scale_set(ic, 0, 0);
701 evas_object_show(ic);
702 elm_box_pack_end(bx, ic);
703 elm_box_horizontal_set(bx, 1);
704 evas_object_show(bx);
707 else if (!strcmp(part, "elm.swallow.end"))
710 ck = elm_check_add(obj);
711 evas_object_propagate_events_set(ck, 0);
712 elm_check_state_set(ck, tit->onoff);
713 evas_object_smart_callback_add(ck, "changed", my_gl_item_check_changed, data);
714 evas_object_show(ck);
719 Eina_Bool gl3_state_get(const void *data, Evas_Object *obj, const char *part)
723 void gl3_del(const void *data, Evas_Object *obj)
728 test_genlist4(void *data, Evas_Object *obj, void *event_info)
730 Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
731 static Testitem tit[3];
733 win = elm_win_add(NULL, "genlist-4", ELM_WIN_BASIC);
734 elm_win_title_set(win, "Genlist 4");
735 elm_win_autodel_set(win, 1);
737 bg = elm_bg_add(win);
738 elm_win_resize_object_add(win, bg);
739 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
740 evas_object_show(bg);
742 bx = elm_box_add(win);
743 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
744 elm_win_resize_object_add(win, bx);
745 evas_object_show(bx);
747 gl = elm_genlist_add(win);
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.label_get = gl3_label_get;
755 itc3.func.icon_get = gl3_icon_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, 1);
777 elm_box_homogenous_set(bx2, 1);
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_button_label_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_button_label_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_button_label_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)
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_label_get(const void *data, Evas_Object *obj, 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_icon_get(const 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, 1);
846 ic = elm_icon_add(obj);
847 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
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, 1);
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, 0);
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(const void *data, Evas_Object *obj, const char *part)
877 void gl5_del(const void *data, Evas_Object *obj)
882 item_drag_up(void *data, Evas_Object *obj, void *event_info)
888 item_drag_down(void *data, Evas_Object *obj, void *event_info)
890 printf("drag down\n");
894 item_drag_left(void *data, Evas_Object *obj, void *event_info)
896 printf("drag left\n");
900 item_drag_right(void *data, Evas_Object *obj, void *event_info)
902 printf("drag right\n");
906 scroll_top(void *data, Evas_Object *obj, void *event_info)
908 printf("Top edge!\n");
912 scroll_bottom(void *data, Evas_Object *obj, void *event_info)
914 printf("Bottom edge!\n");
918 scroll_left(void *data, Evas_Object *obj, void *event_info)
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, Evas_Object *obj, void *event_info)
936 item_drag_stop(void *data, Evas_Object *obj, void *event_info)
938 printf("drag stop\n");
942 item_longpress(void *data, Evas_Object *obj, void *event_info)
944 printf("longpress\n");
948 test_genlist5(void *data, Evas_Object *obj, void *event_info)
950 Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
951 static Testitem tit[5];
953 win = elm_win_add(NULL, "genlist-5", ELM_WIN_BASIC);
954 elm_win_title_set(win, "Genlist 5");
955 elm_win_autodel_set(win, 1);
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.label_get = gl5_label_get;
974 itc5.func.icon_get = gl5_icon_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 tit[3].item = elm_genlist_item_append(gl, &itc5,
992 &(tit[3])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
993 NULL/* func data */);
996 tit[4].item = elm_genlist_item_append(gl, &itc5,
997 &(tit[4])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
998 NULL/* func data */);
999 elm_box_pack_end(bx, gl);
1000 evas_object_show(bx);
1002 evas_object_smart_callback_add(gl, "drag,start,up", item_drag_up, NULL);
1003 evas_object_smart_callback_add(gl, "drag,start,down", item_drag_down, NULL);
1004 evas_object_smart_callback_add(gl, "drag,start,left", item_drag_left, NULL);
1005 evas_object_smart_callback_add(gl, "drag,start,right", item_drag_right, NULL);
1006 evas_object_smart_callback_add(gl, "scroll,edge,top", scroll_top, NULL);
1007 evas_object_smart_callback_add(gl, "scroll,edge,bottom", scroll_bottom, NULL);
1008 evas_object_smart_callback_add(gl, "scroll,edge,left", scroll_left, NULL);
1009 evas_object_smart_callback_add(gl, "scroll,edge,right", scroll_right, NULL);
1010 evas_object_smart_callback_add(gl, "drag", item_drag, NULL);
1011 evas_object_smart_callback_add(gl, "drag,stop", item_drag_stop, NULL);
1012 evas_object_smart_callback_add(gl, "longpressed", item_longpress, NULL);
1014 bx2 = elm_box_add(win);
1015 elm_box_horizontal_set(bx2, 1);
1016 elm_box_homogenous_set(bx2, 1);
1017 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1018 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1020 bt = elm_button_add(win);
1021 elm_button_label_set(bt, "[1]");
1022 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
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_button_label_set(bt, "[2]");
1030 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
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 bt = elm_button_add(win);
1037 elm_button_label_set(bt, "[3]");
1038 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
1039 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1040 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1041 elm_box_pack_end(bx2, bt);
1042 evas_object_show(bt);
1044 elm_box_pack_end(bx, bx2);
1045 evas_object_show(bx2);
1047 evas_object_resize(win, 320, 320);
1048 evas_object_show(win);
1053 static Elm_Genlist_Item_Class itc4;
1056 gl4_sel(void *data, Evas_Object *obj, void *event_info)
1060 gl4_exp(void *data, Evas_Object *obj, void *event_info)
1062 Elm_Genlist_Item *it = event_info;
1063 Evas_Object *gl = elm_genlist_item_genlist_get(it);
1064 int val = (int)elm_genlist_item_data_get(it);
1066 elm_genlist_item_append(gl, &itc4,
1067 (void *)(val + 1)/* item data */, it/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1068 NULL/* func data */);
1069 elm_genlist_item_append(gl, &itc4,
1070 (void *)(val + 2)/* item data */, it/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1071 NULL/* func data */);
1072 elm_genlist_item_append(gl, &itc4,
1073 (void *)(val + 3)/* item data */, it/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1074 NULL/* func data */);
1077 gl4_con(void *data, Evas_Object *obj, void *event_info)
1079 Elm_Genlist_Item *it = event_info;
1080 elm_genlist_item_subitems_clear(it);
1084 gl4_exp_req(void *data, Evas_Object *obj, void *event_info)
1086 Elm_Genlist_Item *it = event_info;
1087 elm_genlist_item_expanded_set(it, 1);
1090 gl4_con_req(void *data, Evas_Object *obj, void *event_info)
1092 Elm_Genlist_Item *it = event_info;
1093 elm_genlist_item_expanded_set(it, 0);
1096 char *gl4_label_get(const void *data, Evas_Object *obj, const char *part)
1099 snprintf(buf, sizeof(buf), "Item mode %i", (int)data);
1102 Evas_Object *gl4_icon_get(const void *data, Evas_Object *obj, const char *part)
1105 if (!strcmp(part, "elm.swallow.icon"))
1107 Evas_Object *ic = elm_icon_add(obj);
1108 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
1109 elm_icon_file_set(ic, buf, NULL);
1110 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
1111 evas_object_show(ic);
1114 else if (!strcmp(part, "elm.swallow.end"))
1117 ck = elm_check_add(obj);
1118 evas_object_show(ck);
1123 Eina_Bool gl4_state_get(const void *data, Evas_Object *obj, const char *part)
1127 void gl4_del(const void *data, Evas_Object *obj)
1132 test_genlist6(void *data, Evas_Object *obj, void *event_info)
1134 Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
1136 win = elm_win_add(NULL, "genlist-tree", ELM_WIN_BASIC);
1137 elm_win_title_set(win, "Genlist Tree");
1138 elm_win_autodel_set(win, 1);
1140 bg = elm_bg_add(win);
1141 elm_win_resize_object_add(win, bg);
1142 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1143 evas_object_show(bg);
1145 bx = elm_box_add(win);
1146 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1147 elm_win_resize_object_add(win, bx);
1148 evas_object_show(bx);
1150 gl = elm_genlist_add(win);
1151 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1152 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1153 evas_object_show(gl);
1155 itc4.item_style = "default";
1156 itc4.func.label_get = gl4_label_get;
1157 itc4.func.icon_get = gl4_icon_get;
1158 itc4.func.state_get = gl4_state_get;
1159 itc4.func.del = gl4_del;
1161 elm_genlist_item_append(gl, &itc4,
1162 (void *)1/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1163 NULL/* func data */);
1164 elm_genlist_item_append(gl, &itc4,
1165 (void *)2/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1166 NULL/* func data */);
1167 elm_genlist_item_append(gl, &itc4,
1168 (void *)3/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1169 NULL/* func data */);
1171 evas_object_smart_callback_add(gl, "expand,request", gl4_exp_req, gl);
1172 evas_object_smart_callback_add(gl, "contract,request", gl4_con_req, gl);
1173 evas_object_smart_callback_add(gl, "expanded", gl4_exp, gl);
1174 evas_object_smart_callback_add(gl, "contracted", gl4_con, gl);
1176 elm_box_pack_end(bx, gl);
1177 evas_object_show(bx);
1179 bx2 = elm_box_add(win);
1180 elm_box_horizontal_set(bx2, 1);
1181 elm_box_homogenous_set(bx2, 1);
1182 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1183 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1185 bt = elm_button_add(win);
1186 elm_button_label_set(bt, "[1]");
1187 // evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
1188 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1189 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1190 elm_box_pack_end(bx2, bt);
1191 evas_object_show(bt);
1193 bt = elm_button_add(win);
1194 elm_button_label_set(bt, "[2]");
1195 // evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
1196 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1197 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1198 elm_box_pack_end(bx2, bt);
1199 evas_object_show(bt);
1201 bt = elm_button_add(win);
1202 elm_button_label_set(bt, "[3]");
1203 // evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
1204 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1205 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1206 elm_box_pack_end(bx2, bt);
1207 evas_object_show(bt);
1209 elm_box_pack_end(bx, bx2);
1210 evas_object_show(bx2);
1212 evas_object_resize(win, 320, 320);
1213 evas_object_show(win);
1218 struct genlist7_data
1220 Evas_Object *win, *pager;
1223 static Elm_Genlist_Item_Class itc7;
1225 gl_sel7(void *data, Evas_Object *obj, void *event_info)
1227 if (!event_info) return;
1228 elm_genlist_item_item_class_update(event_info, &itc7);
1229 printf("sel item data [%p] on genlist obj [%p], item pointer [%p], new item style [%s] \n", data, obj, event_info, itc7.item_style);
1233 test_genlist7_back_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1235 struct genlist7_data *info = data;
1238 elm_pager_content_pop(info->pager);
1242 test_genlist7_swipe(void *data, Evas_Object *obj __UNUSED__, void *event_info)
1244 struct genlist7_data *info = data;
1245 Evas_Object *box, *entry, *button;
1246 char item_data[] = "Just a simple test";
1248 if ((!event_info) || (!data)) return;
1250 box = elm_box_add(info->win);
1251 elm_box_homogenous_set(box, 0);
1252 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1253 evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
1254 evas_object_show(box);
1256 entry = elm_scrolled_entry_add(info->win);
1257 elm_scrolled_entry_editable_set(entry, EINA_FALSE);
1258 elm_scrolled_entry_entry_set(entry, item_data);
1259 evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1260 evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
1261 evas_object_show(entry);
1263 button = elm_button_add(info->win);
1264 elm_button_label_set(button, "back");
1265 evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, 0);
1266 evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0);
1267 evas_object_smart_callback_add(button, "clicked", test_genlist7_back_cb,
1269 evas_object_show(button);
1271 elm_box_pack_start(box, entry);
1272 elm_box_pack_end(box, button);
1274 elm_pager_content_push(info->pager, box);
1278 test_genlist7(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1280 Evas_Object *win, *bg, *gl, *pager;
1281 static struct genlist7_data info;
1282 static Testitem tit[3];
1284 win = elm_win_add(NULL, "genlist-7", ELM_WIN_BASIC);
1285 elm_win_title_set(win, "Genlist 7");
1286 elm_win_autodel_set(win, 1);
1289 bg = elm_bg_add(win);
1290 elm_win_resize_object_add(win, bg);
1291 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1292 evas_object_show(bg);
1294 pager = elm_pager_add(win);
1295 elm_win_resize_object_add(win, pager);
1296 evas_object_size_hint_weight_set(pager, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1297 evas_object_size_hint_align_set(pager, EVAS_HINT_FILL, EVAS_HINT_FILL);
1298 evas_object_show(pager);
1301 gl = elm_genlist_add(win);
1302 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1303 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1304 evas_object_smart_callback_add(gl, "swipe", test_genlist7_swipe, &info);
1305 evas_object_show(gl);
1306 elm_pager_content_push(pager, gl);
1308 itc2.item_style = "default";
1309 itc2.func.label_get = gl2_label_get;
1310 itc2.func.icon_get = gl2_icon_get;
1311 itc2.func.state_get = gl2_state_get;
1312 itc2.func.del = gl2_del;
1314 itc7.item_style = "double_label";
1315 itc7.func.label_get = gl5_label_get;
1316 itc7.func.icon_get = gl5_icon_get;
1317 itc7.func.state_get = gl5_state_get;
1318 itc7.func.del = gl5_del;
1321 tit[0].item = elm_genlist_item_append(gl, &itc2,
1322 &(tit[0])/* item data */, NULL/* parent */,
1323 ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1324 NULL/* func data */);
1326 tit[1].item = elm_genlist_item_append(gl, &itc2,
1327 &(tit[1])/* item data */, NULL/* parent */,
1328 ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1329 NULL/* func data */);
1331 tit[2].item = elm_genlist_item_append(gl, &itc2,
1332 &(tit[2])/* item data */, NULL/* parent */,
1333 ELM_GENLIST_ITEM_NONE, gl_sel7/* func */,
1334 NULL/* func data */);
1336 evas_object_resize(win, 320, 320);
1337 evas_object_show(win);
1341 static Elm_Genlist_Item_Class itc_group;
1342 char *gl8_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
1345 snprintf(buf, sizeof(buf), "Group Index # %i (Item # %i)", (int)((long)data / 10), (int)(long)data);
1350 _bt_show_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1352 elm_genlist_item_top_show(data);
1353 //elm_genlist_item_show(data);
1354 //elm_genlist_item_middle_show(data);
1357 _bt_bring_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1359 elm_genlist_item_top_bring_in(data);
1360 //elm_genlist_item_bring_in(data);
1361 //elm_genlist_item_middle_bring_in(data);
1365 test_genlist8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1367 Evas_Object *win, *bg, *gl, *bt[8], *bx, *bx2, *bx3;
1369 Elm_Genlist_Item *gli, *git;
1370 int i, bt_count, bt_num;
1372 win = elm_win_add(NULL, "genlist-group", ELM_WIN_BASIC);
1373 elm_win_title_set(win, "Genlist Group");
1374 elm_win_autodel_set(win, 1);
1376 bg = elm_bg_add(win);
1377 elm_win_resize_object_add(win, bg);
1378 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1379 evas_object_show(bg);
1381 bx = elm_box_add(win);
1382 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1383 elm_win_resize_object_add(win, bx);
1384 evas_object_show(bx);
1386 gl = elm_genlist_add(win);
1387 evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
1388 evas_object_smart_callback_add(gl, "clicked", _gl_clicked, NULL);
1389 evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
1390 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1391 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1392 elm_box_pack_end(bx, gl);
1393 evas_object_show(gl);
1395 itc1.item_style = "default";
1396 itc1.func.label_get = gl_label_get;
1397 itc1.func.icon_get = gl_icon_get;
1398 itc1.func.state_get = gl_state_get;
1399 itc1.func.del = gl_del;
1401 itc_group.item_style = "group_title";
1402 itc_group.func.label_get = gl8_label_get;
1403 itc_group.func.icon_get = NULL;
1404 itc_group.func.state_get = NULL;
1405 itc_group.func.del = gl_del;
1407 bx2 = elm_box_add(win);
1408 elm_box_horizontal_set(bx2, EINA_TRUE);
1409 elm_box_homogenous_set(bx2, EINA_TRUE);
1410 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1411 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1414 bt[bt_num] = elm_button_add(win);
1415 elm_button_label_set(bt[bt_num], "Show 0");
1416 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1417 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1418 evas_object_show(bt[bt_num]);
1419 elm_box_pack_end(bx2, bt[bt_num]);
1421 bt[++bt_num] = elm_button_add(win);
1422 elm_button_label_set(bt[bt_num], "Show 26");
1423 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1424 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1425 evas_object_show(bt[bt_num]);
1426 elm_box_pack_end(bx2, bt[bt_num]);
1428 bt[++bt_num] = elm_button_add(win);
1429 elm_button_label_set(bt[bt_num], "Show 101");
1430 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1431 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1432 evas_object_show(bt[bt_num]);
1433 elm_box_pack_end(bx2, bt[bt_num]);
1435 bt[++bt_num] = elm_button_add(win);
1436 elm_button_label_set(bt[bt_num], "Show 480");
1437 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1438 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1439 evas_object_show(bt[bt_num]);
1440 elm_box_pack_end(bx2, bt[bt_num]);
1442 elm_box_pack_end(bx, bx2);
1443 evas_object_show(bx2);
1445 bx3 = elm_box_add(win);
1446 elm_box_horizontal_set(bx3, EINA_TRUE);
1447 elm_box_homogenous_set(bx3, EINA_TRUE);
1448 evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
1449 evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
1451 bt[++bt_num] = elm_button_add(win);
1452 elm_button_label_set(bt[bt_num], "Bring top 0");
1453 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1454 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1455 evas_object_show(bt[bt_num]);
1456 elm_box_pack_end(bx3, bt[bt_num]);
1458 bt[++bt_num] = elm_button_add(win);
1459 elm_button_label_set(bt[bt_num], "Bring top 31");
1460 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1461 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1462 evas_object_show(bt[bt_num]);
1463 elm_box_pack_end(bx3, bt[bt_num]);
1465 bt[++bt_num] = elm_button_add(win);
1466 elm_button_label_set(bt[bt_num], "Bring top 239");
1467 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1468 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1469 evas_object_show(bt[bt_num]);
1470 elm_box_pack_end(bx3, bt[bt_num]);
1472 bt[++bt_num] = elm_button_add(win);
1473 elm_button_label_set(bt[bt_num], "Bring top 477");
1474 evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
1475 evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
1476 evas_object_show(bt[bt_num]);
1477 elm_box_pack_end(bx3, bt[bt_num]);
1479 elm_box_pack_end(bx, bx3);
1480 evas_object_show(bx3);
1483 for (i = 0; i < 500; i++)
1487 gli = git = elm_genlist_item_append(gl, &itc_group,
1488 (void *)(long)i/* item data */,
1490 ELM_GENLIST_ITEM_GROUP,
1492 (void *)(long)(i * 10)/* func data */);
1496 gli = elm_genlist_item_append(gl, &itc1,
1497 (void *)(long)i/* item data */,
1499 ELM_GENLIST_ITEM_NONE,
1501 (void *)(long)(i * 10)/* func data */);
1503 //elm_genlist_item_display_only_set(gli, EINA_TRUE);
1507 evas_object_smart_callback_add(bt[0], "clicked", _bt_show_cb, gli);
1508 evas_object_smart_callback_add(bt[4], "clicked", _bt_bring_cb, gli);
1511 evas_object_smart_callback_add(bt[1], "clicked", _bt_show_cb, gli);
1514 evas_object_smart_callback_add(bt[5], "clicked", _bt_bring_cb, gli);
1517 evas_object_smart_callback_add(bt[2], "clicked", _bt_show_cb, gli);
1520 evas_object_smart_callback_add(bt[6], "clicked", _bt_bring_cb, gli);
1523 evas_object_smart_callback_add(bt[7], "clicked", _bt_bring_cb, gli);
1526 evas_object_smart_callback_add(bt[3], "clicked", _bt_show_cb, gli);
1531 evas_object_resize(win, 480, 800);
1532 evas_object_show(win);
1538 gl9_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1540 Elm_Genlist_Item *it = event_info;
1541 Evas_Object *gl = elm_genlist_item_genlist_get(it);
1542 int val = (int)(long)elm_genlist_item_data_get(it);
1544 elm_genlist_item_append(gl, &itc1,
1545 (void *)(long)(val + 1)/* item data */, it/* parent */,
1546 ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1547 NULL/* func data */);
1548 elm_genlist_item_append(gl, &itc1,
1549 (void *)(long)(val + 2)/* item data */, it/* parent */,
1550 ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1551 NULL/* func data */);
1552 elm_genlist_item_append(gl, &itc1,
1553 (void *)(long)(val + 3)/* item data */, it/* parent */,
1554 ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1555 NULL/* func data */);
1558 gl9_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1560 Elm_Genlist_Item *it = event_info;
1561 elm_genlist_item_subitems_clear(it);
1565 gl9_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1567 Elm_Genlist_Item *it = event_info;
1568 elm_genlist_item_expanded_set(it, EINA_TRUE);
1571 gl9_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
1573 Elm_Genlist_Item *it = event_info;
1574 elm_genlist_item_expanded_set(it, EINA_FALSE);
1578 test_genlist9(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
1580 Evas_Object *win, *bg, *gl, *bt[8], *bx, *bx2, *bx3;
1582 Elm_Genlist_Item *git;
1584 win = elm_win_add(NULL, "genlist-group-tree", ELM_WIN_BASIC);
1585 elm_win_title_set(win, "Genlist Group Tree");
1586 elm_win_autodel_set(win, 1);
1588 bg = elm_bg_add(win);
1589 elm_win_resize_object_add(win, bg);
1590 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1591 evas_object_show(bg);
1593 bx = elm_box_add(win);
1594 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1595 elm_win_resize_object_add(win, bx);
1596 evas_object_show(bx);
1598 gl = elm_genlist_add(win);
1599 evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
1600 evas_object_smart_callback_add(gl, "clicked", _gl_clicked, NULL);
1601 evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
1602 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1603 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1604 elm_box_pack_end(bx, gl);
1605 evas_object_show(gl);
1607 itc1.item_style = "default";
1608 itc1.func.label_get = gl_label_get;
1609 itc1.func.icon_get = gl_icon_get;
1610 itc1.func.state_get = gl_state_get;
1611 itc1.func.del = gl_del;
1613 itc_group.item_style = "group_title";
1614 itc_group.func.label_get = gl8_label_get;
1615 itc_group.func.icon_get = NULL;
1616 itc_group.func.state_get = NULL;
1617 itc_group.func.del = gl_del;
1619 git = elm_genlist_item_append(gl, &itc_group,
1620 (void *)0/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_GROUP, gl4_sel/* func */,
1621 NULL/* func data */);
1622 elm_genlist_item_append(gl, &itc1,
1623 (void *)1/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1624 NULL/* func data */);
1625 elm_genlist_item_append(gl, &itc1,
1626 (void *)2/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1627 NULL/* func data */);
1628 elm_genlist_item_append(gl, &itc1,
1629 (void *)3/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1630 NULL/* func data */);
1631 git = elm_genlist_item_append(gl, &itc_group,
1632 (void *)4/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_GROUP, gl4_sel/* func */,
1633 NULL/* func data */);
1634 elm_genlist_item_append(gl, &itc1,
1635 (void *)5/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1636 NULL/* func data */);
1637 elm_genlist_item_append(gl, &itc1,
1638 (void *)6/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1639 NULL/* func data */);
1640 elm_genlist_item_append(gl, &itc1,
1641 (void *)7/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1642 NULL/* func data */);
1644 evas_object_smart_callback_add(gl, "expand,request", gl9_exp_req, gl);
1645 evas_object_smart_callback_add(gl, "contract,request", gl9_con_req, gl);
1646 evas_object_smart_callback_add(gl, "expanded", gl9_exp, gl);
1647 evas_object_smart_callback_add(gl, "contracted", gl9_con, gl);
1649 evas_object_resize(win, 480, 800);
1650 evas_object_show(win);