1 #include <Elementary.h>
2 #ifndef ELM_LIB_QUICKLAUNCH
5 * In this example some calls to elm_genlist_item_append() are used which give the
6 * value of an int as 'item data' and 'func data' after casting into (void*). For
7 * sure this works only on architectures where sizeof(int)==sizeof(void*).
8 * For real world usage you should hold a data structure or value in your
9 * application and then give only a pointer to this data as data pointer.
12 typedef struct _Testitem
14 Elm_Genlist_Item *item;
20 static Elm_Genlist_Item_Class itc1;
21 char *gl_label_get(const void *data, Evas_Object *obj, const char *part)
24 snprintf(buf, sizeof(buf), "Item # %i", (int)data);
28 Evas_Object *gl_icon_get(const void *data, Evas_Object *obj, const char *part)
31 Evas_Object *ic = elm_icon_add(obj);
32 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
33 elm_icon_file_set(ic, buf, NULL);
34 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
37 Eina_Bool gl_state_get(const void *data, Evas_Object *obj, const char *part)
41 void gl_del(const void *data, Evas_Object *obj)
46 gl_sel(void *data, Evas_Object *obj, void *event_info)
48 printf("sel item data [%p] on genlist obj [%p], item pointer [%p]\n", data, obj, event_info);
52 _move(void *data, Evas *evas, Evas_Object *obj, void *event_info)
54 Evas_Object *gl = data;
55 Evas_Event_Mouse_Move *ev = event_info;
57 Elm_Genlist_Item *gli;
58 gli = elm_genlist_at_xy_item_get(gl, ev->cur.canvas.x, ev->cur.canvas.y, &where);
60 printf("over %p, where %i\n", elm_genlist_item_data_get(gli), where);
62 printf("over none, where %i\n", where);
66 _bt50_cb(void *data, Evas_Object *obj, void *event_info)
68 elm_genlist_item_bring_in(data);
72 _bt1500_cb(void *data, Evas_Object *obj, void *event_info)
74 elm_genlist_item_middle_bring_in(data);
78 _gl_selected(void *data, Evas_Object *obj, void *event_info)
80 printf("selected: %p\n", event_info);
84 _gl_clicked(void *data, Evas_Object *obj, void *event_info)
86 printf("clicked: %p\n", event_info);
90 _gl_longpress(void *data, Evas_Object *obj, void *event_info)
92 printf("longpress %p\n", event_info);
96 test_genlist(void *data, Evas_Object *obj, void *event_info)
98 Evas_Object *win, *bg, *gl, *bt_50, *bt_1500, *bx;
100 Elm_Genlist_Item *gli;
103 win = elm_win_add(NULL, "genlist", ELM_WIN_BASIC);
104 elm_win_title_set(win, "Genlist");
105 elm_win_autodel_set(win, 1);
107 bg = elm_bg_add(win);
108 elm_win_resize_object_add(win, bg);
109 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
110 evas_object_show(bg);
112 bx = elm_box_add(win);
113 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
114 elm_win_resize_object_add(win, bx);
115 evas_object_show(bx);
117 gl = elm_genlist_add(win);
118 evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
119 evas_object_smart_callback_add(gl, "clicked", _gl_clicked, NULL);
120 evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
121 // FIXME: This causes genlist to resize the horiz axis very slowly :(
122 // Reenable this and resize the window horizontally, then try to resize it back
123 //elm_genlist_horizontal_mode_set(gl, ELM_LIST_LIMIT);
124 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
125 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
126 elm_box_pack_end(bx, gl);
127 evas_object_show(gl);
129 over = evas_object_rectangle_add(evas_object_evas_get(win));
130 evas_object_color_set(over, 0, 0, 0, 0);
131 evas_object_event_callback_add(over, EVAS_CALLBACK_MOUSE_MOVE, _move, gl);
132 evas_object_repeat_events_set(over, 1);
133 evas_object_show(over);
134 evas_object_size_hint_weight_set(over, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
135 elm_win_resize_object_add(win, over);
137 itc1.item_style = "default";
138 itc1.func.label_get = gl_label_get;
139 itc1.func.icon_get = gl_icon_get;
140 itc1.func.state_get = gl_state_get;
141 itc1.func.del = gl_del;
143 bt_50 = elm_button_add(win);
144 elm_button_label_set(bt_50, "Go to 50");
145 evas_object_show(bt_50);
146 elm_box_pack_end(bx, bt_50);
148 bt_1500 = elm_button_add(win);
149 elm_button_label_set(bt_1500, "Go to 1500");
150 evas_object_show(bt_1500);
151 elm_box_pack_end(bx, bt_1500);
153 for (i = 0; i < 2000; i++)
155 gli = elm_genlist_item_append(gl, &itc1,
156 (void *)i/* item data */,
158 ELM_GENLIST_ITEM_NONE,
160 (void *)(i * 10)/* func data */);
162 evas_object_smart_callback_add(bt_50, "clicked", _bt50_cb, gli);
164 evas_object_smart_callback_add(bt_1500, "clicked", _bt1500_cb, gli);
166 evas_object_resize(win, 480, 800);
167 evas_object_show(win);
173 my_gl_clear(void *data, Evas_Object *obj, void *event_info)
175 Evas_Object *gl = data;
176 elm_genlist_clear(gl);
180 my_gl_add(void *data, Evas_Object *obj, void *event_info)
182 Evas_Object *gl = data;
183 Elm_Genlist_Item *gli;
186 itc1.item_style = "default";
187 itc1.func.label_get = gl_label_get;
188 itc1.func.icon_get = gl_icon_get;
189 itc1.func.state_get = gl_state_get;
190 itc1.func.del = gl_del;
192 gli = elm_genlist_item_append(gl, &itc1,
193 (void *)i/* item data */,
195 ELM_GENLIST_ITEM_NONE,
197 (void *)(i * 10)/* func data */);
202 my_gl_insert_before(void *data, Evas_Object *obj, void *event_info)
204 Evas_Object *gl = data;
205 Elm_Genlist_Item *gli;
207 Elm_Genlist_Item *gli_selected;
209 itc1.item_style = "default";
210 itc1.func.label_get = gl_label_get;
211 itc1.func.icon_get = gl_icon_get;
212 itc1.func.state_get = gl_state_get;
213 itc1.func.del = gl_del;
215 gli_selected = elm_genlist_selected_item_get(gl);
218 printf("no item selected\n");
222 gli = elm_genlist_item_insert_before(gl, &itc1,
223 (void *)i/* item data */,
224 gli_selected /* item before */,
225 ELM_GENLIST_ITEM_NONE,
227 (void *)(i * 10)/* func data */);
232 my_gl_insert_after(void *data, Evas_Object *obj, void *event_info)
234 Evas_Object *gl = data;
235 Elm_Genlist_Item *gli;
237 Elm_Genlist_Item *gli_selected;
239 itc1.item_style = "default";
240 itc1.func.label_get = gl_label_get;
241 itc1.func.icon_get = gl_icon_get;
242 itc1.func.state_get = gl_state_get;
243 itc1.func.del = gl_del;
245 gli_selected = elm_genlist_selected_item_get(gl);
248 printf("no item selected\n");
252 gli = elm_genlist_item_insert_after(gl, &itc1,
253 (void *)i/* item data */,
254 gli_selected /* item after */,
255 ELM_GENLIST_ITEM_NONE,
257 (void *)(i * 10)/* func data */);
262 my_gl_del(void *data, Evas_Object *obj, void *event_info)
264 Evas_Object *gl = data;
265 Elm_Genlist_Item *gli = elm_genlist_selected_item_get(gl);
268 printf("no item selected\n");
271 elm_genlist_item_del(gli);
275 my_gl_disable(void *data, Evas_Object *obj, void *event_info)
277 Evas_Object *gl = data;
278 Elm_Genlist_Item *gli = elm_genlist_selected_item_get(gl);
281 printf("no item selected\n");
284 elm_genlist_item_disabled_set(gli, 1);
285 elm_genlist_item_selected_set(gli, 0);
286 elm_genlist_item_update(gli);
290 my_gl_update_all(void *data, Evas_Object *obj, void *event_info)
292 Evas_Object *gl = data;
294 Elm_Genlist_Item *it = elm_genlist_first_item_get(gl);
297 elm_genlist_item_update(it);
300 it = elm_genlist_item_next_get(it);
305 my_gl_first(void *data, Evas_Object *obj, void *event_info)
307 Evas_Object *gl = data;
308 Elm_Genlist_Item *gli = elm_genlist_first_item_get(gl);
310 elm_genlist_item_show(gli);
311 elm_genlist_item_selected_set(gli, 1);
315 my_gl_last(void *data, Evas_Object *obj, void *event_info)
317 Evas_Object *gl = data;
318 Elm_Genlist_Item *gli = elm_genlist_last_item_get(gl);
320 elm_genlist_item_show(gli);
321 elm_genlist_item_selected_set(gli, 1);
325 my_gl_flush_delay(void *data)
332 my_gl_flush(void *data, Evas_Object *obj, void *event_info)
334 ecore_timer_add(1.2, my_gl_flush_delay, NULL);
338 test_genlist2(void *data, Evas_Object *obj, void *event_info)
340 Evas_Object *win, *bg, *gl, *bx, *bx2, *bx3, *bt;
341 Elm_Genlist_Item *gli[10];
344 win = elm_win_add(NULL, "genlist-2", ELM_WIN_BASIC);
345 elm_win_title_set(win, "Genlist 2");
346 elm_win_autodel_set(win, 1);
348 bg = elm_bg_add(win);
349 snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", PACKAGE_DATA_DIR);
350 elm_bg_file_set(bg, buf, NULL);
351 elm_win_resize_object_add(win, bg);
352 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
353 evas_object_show(bg);
355 bx = elm_box_add(win);
356 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
357 elm_win_resize_object_add(win, bx);
358 evas_object_show(bx);
360 gl = elm_genlist_add(win);
361 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
362 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
363 evas_object_show(gl);
365 itc1.item_style = "default";
366 itc1.func.label_get = gl_label_get;
367 itc1.func.icon_get = gl_icon_get;
368 itc1.func.state_get = gl_state_get;
369 itc1.func.del = gl_del;
371 gli[0] = elm_genlist_item_append(gl, &itc1,
372 (void *)1001/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
373 (void *)1001/* func data */);
374 gli[1] = elm_genlist_item_append(gl, &itc1,
375 (void *)1002/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
376 (void *)1002/* func data */);
377 gli[2] = elm_genlist_item_append(gl, &itc1,
378 (void *)1003/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
379 (void *)1003/* func data */);
380 gli[3] = elm_genlist_item_prepend(gl, &itc1,
381 (void *)1004/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
382 (void *)1004/* func data */);
383 gli[4] = elm_genlist_item_prepend(gl, &itc1,
384 (void *)1005/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
385 (void *)1005/* func data */);
386 gli[5] = elm_genlist_item_insert_before(gl, &itc1,
387 (void *)1006/* item data */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
388 (void *)1006/* func data */);
389 gli[6] = elm_genlist_item_insert_after(gl, &itc1,
390 (void *)1007/* item data */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
391 (void *)1007/* func data */);
393 elm_box_pack_end(bx, gl);
395 bx2 = elm_box_add(win);
396 elm_box_horizontal_set(bx2, 1);
397 elm_box_homogenous_set(bx2, 1);
398 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
399 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
401 bt = elm_button_add(win);
402 elm_button_label_set(bt, "/\\");
403 evas_object_smart_callback_add(bt, "clicked", my_gl_first, gl);
404 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
405 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
406 elm_box_pack_end(bx2, bt);
407 evas_object_show(bt);
409 bt = elm_button_add(win);
410 elm_button_label_set(bt, "\\/");
411 evas_object_smart_callback_add(bt, "clicked", my_gl_last, 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_disable, 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, "U");
427 evas_object_smart_callback_add(bt, "clicked", my_gl_update_all, 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 elm_box_pack_end(bx, bx2);
434 evas_object_show(bx2);
436 bx2 = elm_box_add(win);
437 elm_box_horizontal_set(bx2, 1);
438 elm_box_homogenous_set(bx2, 1);
439 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
440 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
442 bt = elm_button_add(win);
443 elm_button_label_set(bt, "X");
444 evas_object_smart_callback_add(bt, "clicked", my_gl_clear, gl);
445 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
446 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
447 elm_box_pack_end(bx2, bt);
448 evas_object_show(bt);
450 bt = elm_button_add(win);
451 elm_button_label_set(bt, "+");
452 evas_object_smart_callback_add(bt, "clicked", my_gl_add, 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_del, 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 elm_box_pack_end(bx, bx2);
467 evas_object_show(bx2);
469 bx3 = elm_box_add(win);
470 elm_box_horizontal_set(bx3, 1);
471 elm_box_homogenous_set(bx3, 1);
472 evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
473 evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
475 bt = elm_button_add(win);
476 elm_button_label_set(bt, "+ before");
477 evas_object_smart_callback_add(bt, "clicked", my_gl_insert_before, gl);
478 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
479 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
480 elm_box_pack_end(bx3, bt);
481 evas_object_show(bt);
483 bt = elm_button_add(win);
484 elm_button_label_set(bt, "+ after");
485 evas_object_smart_callback_add(bt, "clicked", my_gl_insert_after, 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, "Flush");
493 evas_object_smart_callback_add(bt, "clicked", my_gl_flush, 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 elm_box_pack_end(bx, bx3);
500 evas_object_show(bx3);
503 evas_object_resize(win, 320, 320);
504 evas_object_show(win);
509 static Elm_Genlist_Item_Class itc2;
510 char *gl2_label_get(const void *data, Evas_Object *obj, const char *part)
512 const Testitem *tit = data;
514 snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
517 Evas_Object *gl2_icon_get(const void *data, Evas_Object *obj, const char *part)
519 const Testitem *tit = data;
521 Evas_Object *ic = elm_icon_add(obj);
522 if (!strcmp(part, "elm.swallow.icon"))
524 if ((tit->mode & 0x3) == 0)
525 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
526 else if ((tit->mode & 0x3) == 1)
527 snprintf(buf, sizeof(buf), "%s/images/logo.png", PACKAGE_DATA_DIR);
528 else if ((tit->mode & 0x3) == 2)
529 snprintf(buf, sizeof(buf), "%s/images/panel_01.jpg", PACKAGE_DATA_DIR);
530 else if ((tit->mode & 0x3) == 3)
531 snprintf(buf, sizeof(buf), "%s/images/rock_01.jpg", PACKAGE_DATA_DIR);
532 elm_icon_file_set(ic, buf, NULL);
534 else if (!strcmp(part, "elm.swallow.end"))
536 if ((tit->mode & 0x3) == 0)
537 snprintf(buf, sizeof(buf), "%s/images/sky_01.jpg", PACKAGE_DATA_DIR);
538 else if ((tit->mode & 0x3) == 1)
539 snprintf(buf, sizeof(buf), "%s/images/sky_02.jpg", PACKAGE_DATA_DIR);
540 else if ((tit->mode & 0x3) == 2)
541 snprintf(buf, sizeof(buf), "%s/images/sky_03.jpg", PACKAGE_DATA_DIR);
542 else if ((tit->mode & 0x3) == 3)
543 snprintf(buf, sizeof(buf), "%s/images/sky_04.jpg", PACKAGE_DATA_DIR);
544 elm_icon_file_set(ic, buf, NULL);
546 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
549 Eina_Bool gl2_state_get(const void *data, Evas_Object *obj, const char *part)
553 void gl2_del(const void *data, Evas_Object *obj)
558 my_gl_update(void *data, Evas_Object *obj, void *event_info)
560 Testitem *tit = data;
562 elm_genlist_item_update(tit->item);
566 test_genlist3(void *data, Evas_Object *obj, void *event_info)
568 Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
569 static Testitem tit[3];
571 win = elm_win_add(NULL, "genlist-3", ELM_WIN_BASIC);
572 elm_win_title_set(win, "Genlist 3");
573 elm_win_autodel_set(win, 1);
575 bg = elm_bg_add(win);
576 elm_win_resize_object_add(win, bg);
577 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
578 evas_object_show(bg);
580 bx = elm_box_add(win);
581 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
582 elm_win_resize_object_add(win, bx);
583 evas_object_show(bx);
585 gl = elm_genlist_add(win);
586 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
587 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
588 evas_object_show(gl);
590 itc2.item_style = "default";
591 itc2.func.label_get = gl2_label_get;
592 itc2.func.icon_get = gl2_icon_get;
593 itc2.func.state_get = gl2_state_get;
594 itc2.func.del = gl2_del;
597 tit[0].item = elm_genlist_item_append(gl, &itc2,
598 &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
599 NULL/* func data */);
601 tit[1].item = elm_genlist_item_append(gl, &itc2,
602 &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
603 NULL/* func data */);
605 tit[2].item = elm_genlist_item_append(gl, &itc2,
606 &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
607 NULL/* func data */);
609 elm_box_pack_end(bx, gl);
610 evas_object_show(bx);
612 bx2 = elm_box_add(win);
613 elm_box_horizontal_set(bx2, 1);
614 elm_box_homogenous_set(bx2, 1);
615 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
616 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
618 bt = elm_button_add(win);
619 elm_button_label_set(bt, "[1]");
620 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
621 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
622 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
623 elm_box_pack_end(bx2, bt);
624 evas_object_show(bt);
626 bt = elm_button_add(win);
627 elm_button_label_set(bt, "[2]");
628 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
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, "[3]");
636 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
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 elm_box_pack_end(bx, bx2);
643 evas_object_show(bx2);
645 evas_object_resize(win, 320, 320);
646 evas_object_show(win);
652 my_gl_item_check_changed(void *data, Evas_Object *obj, void *event_info)
654 Testitem *tit = data;
655 tit->onoff = elm_check_state_get(obj);
656 printf("item %p onoff = %i\n", tit, tit->onoff);
659 static Elm_Genlist_Item_Class itc3;
660 char *gl3_label_get(const void *data, Evas_Object *obj, const char *part)
662 const Testitem *tit = data;
664 snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
667 Evas_Object *gl3_icon_get(const void *data, Evas_Object *obj, const char *part)
669 const Testitem *tit = data;
671 if (!strcmp(part, "elm.swallow.icon"))
675 lb = elm_label_add(obj);
676 elm_label_line_wrap_set(lb, 1);
677 elm_label_wrap_width_set(lb, 201);
678 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");
679 evas_object_show(lb);
682 Evas_Object *bx = elm_box_add(obj);
684 ic = elm_icon_add(obj);
685 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
686 elm_icon_file_set(ic, buf, NULL);
687 elm_icon_scale_set(ic, 0, 0);
688 evas_object_show(ic);
689 elm_box_pack_end(bx, ic);
690 ic = elm_icon_add(obj);
691 elm_icon_file_set(ic, buf, NULL);
692 elm_icon_scale_set(ic, 0, 0);
693 evas_object_show(ic);
694 elm_box_pack_end(bx, ic);
695 elm_box_horizontal_set(bx, 1);
696 evas_object_show(bx);
699 else if (!strcmp(part, "elm.swallow.end"))
702 ck = elm_check_add(obj);
703 evas_object_propagate_events_set(ck, 0);
704 elm_check_state_set(ck, tit->onoff);
705 evas_object_smart_callback_add(ck, "changed", my_gl_item_check_changed, data);
706 evas_object_show(ck);
711 Eina_Bool gl3_state_get(const void *data, Evas_Object *obj, const char *part)
715 void gl3_del(const void *data, Evas_Object *obj)
720 test_genlist4(void *data, Evas_Object *obj, void *event_info)
722 Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
723 static Testitem tit[3];
725 win = elm_win_add(NULL, "genlist-4", ELM_WIN_BASIC);
726 elm_win_title_set(win, "Genlist 4");
727 elm_win_autodel_set(win, 1);
729 bg = elm_bg_add(win);
730 elm_win_resize_object_add(win, bg);
731 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
732 evas_object_show(bg);
734 bx = elm_box_add(win);
735 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
736 elm_win_resize_object_add(win, bx);
737 evas_object_show(bx);
739 gl = elm_genlist_add(win);
740 elm_genlist_multi_select_set(gl, 1);
741 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
742 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
743 evas_object_show(gl);
745 itc3.item_style = "default";
746 itc3.func.label_get = gl3_label_get;
747 itc3.func.icon_get = gl3_icon_get;
748 itc3.func.state_get = gl3_state_get;
749 itc3.func.del = gl3_del;
752 tit[0].item = elm_genlist_item_append(gl, &itc3,
753 &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
754 NULL/* func data */);
756 tit[1].item = elm_genlist_item_append(gl, &itc3,
757 &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
758 NULL/* func data */);
760 tit[2].item = elm_genlist_item_append(gl, &itc3,
761 &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
762 NULL/* func data */);
764 elm_box_pack_end(bx, gl);
765 evas_object_show(bx);
767 bx2 = elm_box_add(win);
768 elm_box_horizontal_set(bx2, 1);
769 elm_box_homogenous_set(bx2, 1);
770 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
771 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
773 bt = elm_button_add(win);
774 elm_button_label_set(bt, "[1]");
775 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
776 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
777 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
778 elm_box_pack_end(bx2, bt);
779 evas_object_show(bt);
781 bt = elm_button_add(win);
782 elm_button_label_set(bt, "[2]");
783 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
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, "[3]");
791 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
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 elm_box_pack_end(bx, bx2);
798 evas_object_show(bx2);
800 evas_object_resize(win, 320, 320);
801 evas_object_show(win);
807 my_gl_item_check_changed2(void *data, Evas_Object *obj, void *event_info)
809 Testitem *tit = data;
810 tit->onoff = elm_check_state_get(obj);
811 printf("item %p onoff = %i\n", tit, tit->onoff);
814 static Elm_Genlist_Item_Class itc5;
815 char *gl5_label_get(const void *data, Evas_Object *obj, const char *part)
817 const Testitem *tit = data;
819 if (!strcmp(part, "elm.text"))
821 snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
823 else if (!strcmp(part, "elm.text.sub"))
825 snprintf(buf, sizeof(buf), "%i bottles on the wall", tit->mode);
829 Evas_Object *gl5_icon_get(const void *data, Evas_Object *obj, const char *part)
831 const Testitem *tit = data;
833 if (!strcmp(part, "elm.swallow.icon"))
835 Evas_Object *bx = elm_box_add(obj);
837 elm_box_horizontal_set(bx, 1);
838 ic = elm_icon_add(obj);
839 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
840 elm_icon_file_set(ic, buf, NULL);
841 elm_icon_scale_set(ic, 0, 0);
842 evas_object_show(ic);
843 elm_box_pack_end(bx, ic);
844 ic = elm_icon_add(obj);
845 elm_icon_file_set(ic, buf, NULL);
846 elm_icon_scale_set(ic, 0, 0);
847 evas_object_show(ic);
848 elm_box_pack_end(bx, ic);
849 elm_box_horizontal_set(bx, 1);
850 evas_object_show(bx);
853 else if (!strcmp(part, "elm.swallow.end"))
856 ck = elm_check_add(obj);
857 evas_object_propagate_events_set(ck, 0);
858 elm_check_state_set(ck, tit->onoff);
859 evas_object_smart_callback_add(ck, "changed", my_gl_item_check_changed2, data);
860 evas_object_show(ck);
865 Eina_Bool gl5_state_get(const void *data, Evas_Object *obj, const char *part)
869 void gl5_del(const void *data, Evas_Object *obj)
874 item_drag_up(void *data, Evas_Object *obj, void *event_info)
880 item_drag_down(void *data, Evas_Object *obj, void *event_info)
882 printf("drag down\n");
886 item_drag_left(void *data, Evas_Object *obj, void *event_info)
888 printf("drag left\n");
892 item_drag_right(void *data, Evas_Object *obj, void *event_info)
894 printf("drag right\n");
898 item_drag(void *data, Evas_Object *obj, void *event_info)
904 item_drag_stop(void *data, Evas_Object *obj, void *event_info)
906 printf("drag stop\n");
910 item_longpress(void *data, Evas_Object *obj, void *event_info)
912 printf("longpress\n");
916 test_genlist5(void *data, Evas_Object *obj, void *event_info)
918 Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
919 static Testitem tit[3];
921 win = elm_win_add(NULL, "genlist-5", ELM_WIN_BASIC);
922 elm_win_title_set(win, "Genlist 5");
923 elm_win_autodel_set(win, 1);
925 bg = elm_bg_add(win);
926 elm_win_resize_object_add(win, bg);
927 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
928 evas_object_show(bg);
930 bx = elm_box_add(win);
931 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
932 elm_win_resize_object_add(win, bx);
933 evas_object_show(bx);
935 gl = elm_genlist_add(win);
936 elm_genlist_always_select_mode_set(gl, 1);
937 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
938 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
939 evas_object_show(gl);
940 itc5.item_style = "double_label";
941 itc5.func.label_get = gl5_label_get;
942 itc5.func.icon_get = gl5_icon_get;
943 itc5.func.state_get = gl5_state_get;
944 itc5.func.del = gl5_del;
947 tit[0].item = elm_genlist_item_append(gl, &itc5,
948 &(tit[0])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
949 NULL/* func data */);
951 tit[1].item = elm_genlist_item_append(gl, &itc5,
952 &(tit[1])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
953 NULL/* func data */);
955 tit[2].item = elm_genlist_item_append(gl, &itc5,
956 &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
957 NULL/* func data */);
959 elm_box_pack_end(bx, gl);
960 evas_object_show(bx);
962 evas_object_smart_callback_add(gl, "drag,start,up", item_drag_up, NULL);
963 evas_object_smart_callback_add(gl, "drag,start,down", item_drag_down, NULL);
964 evas_object_smart_callback_add(gl, "drag,start,left", item_drag_left, NULL);
965 evas_object_smart_callback_add(gl, "drag,start,right", item_drag_right, NULL);
966 evas_object_smart_callback_add(gl, "drag", item_drag, NULL);
967 evas_object_smart_callback_add(gl, "drag,stop", item_drag_stop, NULL);
968 evas_object_smart_callback_add(gl, "longpressed", item_longpress, NULL);
970 bx2 = elm_box_add(win);
971 elm_box_horizontal_set(bx2, 1);
972 elm_box_homogenous_set(bx2, 1);
973 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
974 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
976 bt = elm_button_add(win);
977 elm_button_label_set(bt, "[1]");
978 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
979 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
980 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
981 elm_box_pack_end(bx2, bt);
982 evas_object_show(bt);
984 bt = elm_button_add(win);
985 elm_button_label_set(bt, "[2]");
986 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
987 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
988 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
989 elm_box_pack_end(bx2, bt);
990 evas_object_show(bt);
992 bt = elm_button_add(win);
993 elm_button_label_set(bt, "[3]");
994 evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
995 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
996 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
997 elm_box_pack_end(bx2, bt);
998 evas_object_show(bt);
1000 elm_box_pack_end(bx, bx2);
1001 evas_object_show(bx2);
1003 evas_object_resize(win, 320, 320);
1004 evas_object_show(win);
1009 static Elm_Genlist_Item_Class itc4;
1012 gl4_sel(void *data, Evas_Object *obj, void *event_info)
1016 gl4_exp(void *data, Evas_Object *obj, void *event_info)
1018 Elm_Genlist_Item *it = event_info;
1019 Evas_Object *gl = elm_genlist_item_genlist_get(it);
1020 int val = (int)elm_genlist_item_data_get(it);
1022 elm_genlist_item_append(gl, &itc4,
1023 (void *)(val + 1)/* item data */, it/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1024 NULL/* func data */);
1025 elm_genlist_item_append(gl, &itc4,
1026 (void *)(val + 2)/* item data */, it/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1027 NULL/* func data */);
1028 elm_genlist_item_append(gl, &itc4,
1029 (void *)(val + 3)/* item data */, it/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1030 NULL/* func data */);
1033 gl4_con(void *data, Evas_Object *obj, void *event_info)
1035 Elm_Genlist_Item *it = event_info;
1036 elm_genlist_item_subitems_clear(it);
1040 gl4_exp_req(void *data, Evas_Object *obj, void *event_info)
1042 Elm_Genlist_Item *it = event_info;
1043 elm_genlist_item_expanded_set(it, 1);
1046 gl4_con_req(void *data, Evas_Object *obj, void *event_info)
1048 Elm_Genlist_Item *it = event_info;
1049 elm_genlist_item_expanded_set(it, 0);
1052 char *gl4_label_get(const void *data, Evas_Object *obj, const char *part)
1055 snprintf(buf, sizeof(buf), "Item mode %i", (int)data);
1058 Evas_Object *gl4_icon_get(const void *data, Evas_Object *obj, const char *part)
1061 if (!strcmp(part, "elm.swallow.icon"))
1063 Evas_Object *ic = elm_icon_add(obj);
1064 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
1065 elm_icon_file_set(ic, buf, NULL);
1066 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
1067 evas_object_show(ic);
1070 else if (!strcmp(part, "elm.swallow.end"))
1073 ck = elm_check_add(obj);
1074 evas_object_show(ck);
1079 Eina_Bool gl4_state_get(const void *data, Evas_Object *obj, const char *part)
1083 void gl4_del(const void *data, Evas_Object *obj)
1088 test_genlist6(void *data, Evas_Object *obj, void *event_info)
1090 Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
1092 win = elm_win_add(NULL, "genlist-tree", ELM_WIN_BASIC);
1093 elm_win_title_set(win, "Genlist Tree");
1094 elm_win_autodel_set(win, 1);
1096 bg = elm_bg_add(win);
1097 elm_win_resize_object_add(win, bg);
1098 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1099 evas_object_show(bg);
1101 bx = elm_box_add(win);
1102 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1103 elm_win_resize_object_add(win, bx);
1104 evas_object_show(bx);
1106 gl = elm_genlist_add(win);
1107 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
1108 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1109 evas_object_show(gl);
1111 itc4.item_style = "default";
1112 itc4.func.label_get = gl4_label_get;
1113 itc4.func.icon_get = gl4_icon_get;
1114 itc4.func.state_get = gl4_state_get;
1115 itc4.func.del = gl4_del;
1117 elm_genlist_item_append(gl, &itc4,
1118 (void *)1/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1119 NULL/* func data */);
1120 elm_genlist_item_append(gl, &itc4,
1121 (void *)2/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
1122 NULL/* func data */);
1123 elm_genlist_item_append(gl, &itc4,
1124 (void *)3/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
1125 NULL/* func data */);
1127 evas_object_smart_callback_add(gl, "expand,request", gl4_exp_req, gl);
1128 evas_object_smart_callback_add(gl, "contract,request", gl4_con_req, gl);
1129 evas_object_smart_callback_add(gl, "expanded", gl4_exp, gl);
1130 evas_object_smart_callback_add(gl, "contracted", gl4_con, gl);
1132 elm_box_pack_end(bx, gl);
1133 evas_object_show(bx);
1135 bx2 = elm_box_add(win);
1136 elm_box_horizontal_set(bx2, 1);
1137 elm_box_homogenous_set(bx2, 1);
1138 evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
1139 evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
1141 bt = elm_button_add(win);
1142 elm_button_label_set(bt, "[1]");
1143 // evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[0]));
1144 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1145 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1146 elm_box_pack_end(bx2, bt);
1147 evas_object_show(bt);
1149 bt = elm_button_add(win);
1150 elm_button_label_set(bt, "[2]");
1151 // evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
1152 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1153 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1154 elm_box_pack_end(bx2, bt);
1155 evas_object_show(bt);
1157 bt = elm_button_add(win);
1158 elm_button_label_set(bt, "[3]");
1159 // evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
1160 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
1161 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
1162 elm_box_pack_end(bx2, bt);
1163 evas_object_show(bt);
1165 elm_box_pack_end(bx, bx2);
1166 evas_object_show(bx2);
1168 evas_object_resize(win, 320, 320);
1169 evas_object_show(win);