1 #include <Elementary.h>
3 # include "elementary_config.h"
5 #ifndef ELM_LIB_QUICKLAUNCH
9 BOX_PACK_POSITION_START,
10 BOX_PACK_POSITION_BEFORE,
11 BOX_PACK_POSITION_AFTER,
16 test_box_vert(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
18 Evas_Object *win, *bg, *bx, *ic;
21 win = elm_win_add(NULL, "box-vert", ELM_WIN_BASIC);
22 elm_win_title_set(win, "Box Vert");
23 elm_win_autodel_set(win, EINA_TRUE);
26 elm_win_resize_object_add(win, bg);
27 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
30 bx = elm_box_add(win);
31 elm_win_resize_object_add(win, bx);
32 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
35 ic = elm_icon_add(win);
36 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
37 elm_icon_file_set(ic, buf, NULL);
38 elm_icon_scale_set(ic, 0, 0);
39 evas_object_size_hint_align_set(ic, 0.5, 0.5);
40 elm_box_pack_end(bx, ic);
43 ic = elm_icon_add(win);
44 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
45 elm_icon_file_set(ic, buf, NULL);
46 elm_icon_scale_set(ic, 0, 0);
47 evas_object_size_hint_align_set(ic, 0.0, 0.5);
48 elm_box_pack_end(bx, ic);
51 ic = elm_icon_add(win);
52 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
53 elm_icon_file_set(ic, buf, NULL);
54 elm_icon_scale_set(ic, 0, 0);
55 evas_object_size_hint_align_set(ic, EVAS_HINT_EXPAND, 0.5);
56 elm_box_pack_end(bx, ic);
59 evas_object_show(win);
63 _del_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
65 elm_box_unpack(data, obj);
66 evas_object_move(obj, 0, 0);
67 evas_object_color_set(obj, 128, 64, 0, 128);
68 // evas_object_del(obj);
72 test_box_vert2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
74 Evas_Object *win, *bg, *bx, *bt;
76 win = elm_win_add(NULL, "box-vert2", ELM_WIN_BASIC);
77 elm_win_title_set(win, "Box Vert 2");
78 elm_win_autodel_set(win, EINA_TRUE);
81 elm_win_resize_object_add(win, bg);
82 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
85 bx = elm_box_add(win);
86 elm_win_resize_object_add(win, bx);
87 elm_box_padding_set(bx, 10, 10);
88 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
91 bt = elm_button_add(win);
92 elm_object_text_set(bt, "Button 1");
93 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
94 evas_object_size_hint_weight_set(bt, 0.0, 0.0);
95 evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);
96 elm_box_pack_end(bx, bt);
99 bt = elm_button_add(win);
100 elm_object_text_set(bt, "Button 2");
101 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
102 evas_object_size_hint_weight_set(bt, 0.0, 0.0);
103 evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);
104 elm_box_pack_end(bx, bt);
105 evas_object_show(bt);
107 bt = elm_button_add(win);
108 elm_object_text_set(bt, "Button 3");
109 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
110 evas_object_size_hint_weight_set(bt, 0.0, 0.0);
111 evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);
112 elm_box_pack_end(bx, bt);
113 evas_object_show(bt);
115 bt = elm_button_add(win);
116 elm_object_text_set(bt, "Button 4");
117 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
118 evas_object_size_hint_weight_set(bt, 0.0, 0.0);
119 evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);
120 elm_box_pack_end(bx, bt);
121 evas_object_show(bt);
123 bt = elm_button_add(win);
124 elm_object_text_set(bt, "Button 5");
125 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
126 evas_object_size_hint_weight_set(bt, 0.0, 0.0);
127 evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);
128 elm_box_pack_end(bx, bt);
129 evas_object_show(bt);
131 evas_object_show(win);
135 test_box_horiz(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
137 Evas_Object *win, *bg, *bx, *ic;
140 win = elm_win_add(NULL, "box-horiz", ELM_WIN_BASIC);
141 elm_win_title_set(win, "Box Horiz");
142 elm_win_autodel_set(win, EINA_TRUE);
144 bg = elm_bg_add(win);
145 elm_win_resize_object_add(win, bg);
146 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
147 evas_object_show(bg);
149 bx = elm_box_add(win);
150 elm_box_horizontal_set(bx, EINA_TRUE);
151 elm_win_resize_object_add(win, bx);
152 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
153 evas_object_show(bx);
155 ic = elm_icon_add(win);
156 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
157 elm_icon_file_set(ic, buf, NULL);
158 elm_icon_scale_set(ic, 0, 0);
159 evas_object_size_hint_align_set(ic, 0.5, 0.5);
160 elm_box_pack_end(bx, ic);
161 evas_object_show(ic);
163 ic = elm_icon_add(win);
164 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
165 elm_icon_file_set(ic, buf, NULL);
166 elm_icon_scale_set(ic, 0, 0);
167 evas_object_size_hint_align_set(ic, 0.5, 0.0);
168 elm_box_pack_end(bx, ic);
169 evas_object_show(ic);
171 ic = elm_icon_add(win);
172 snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
173 elm_icon_file_set(ic, buf, NULL);
174 elm_icon_scale_set(ic, 0, 0);
175 evas_object_size_hint_align_set(ic, 0.0, EVAS_HINT_EXPAND);
176 elm_box_pack_end(bx, ic);
177 evas_object_show(ic);
179 evas_object_show(win);
183 _unpack_btn_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
185 Evas_Object *box, *radio;
189 box = (Evas_Object *) data;
191 rl = (Eina_List *) evas_object_data_get(box, "radio-list");
192 EINA_LIST_FOREACH(rl, l, radio)
194 value = elm_radio_value_get(radio);
195 svalue = elm_radio_state_value_get(radio);
197 if (value != svalue) continue;
199 elm_radio_value_set(radio, -1);
200 elm_box_unpack(box, radio);
201 rl = eina_list_remove(rl, radio);
202 evas_object_data_set(box, "radio-list", rl);
203 evas_object_del(radio);
208 _unpack_all_btn_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
210 Evas_Object *box, *radio;
213 box = (Evas_Object *) data;
214 elm_box_unpack_all(box);
216 rl = (Eina_List *) evas_object_data_get(box, "radio-list");
217 EINA_LIST_FOREACH(rl, l, radio) evas_object_del(radio);
219 evas_object_data_del(box, "radio-list");
224 _radio_new(Evas_Object *obj, int index)
226 Evas_Object *ic, *rd;
229 ic = elm_icon_add(obj);
230 snprintf(buf, sizeof(buf), "%s/images/icon_0%d.png",
231 elm_app_data_dir_get(), index);
232 elm_icon_file_set(ic, buf, NULL);
233 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
235 rd = elm_radio_add(obj);
236 elm_radio_state_value_set(rd, index);
237 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
238 evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, 0.5);
239 elm_object_part_content_set(rd, "icon", ic);
241 evas_object_show(rd);
242 evas_object_show(ic);
248 _pack(Evas_Object *box, _Box_Pack_Position pos)
251 Evas_Object *rd, *rdg = NULL;
252 Eina_List *rl, *l = NULL;
253 int value, svalue, count;
255 rl = (Eina_List *) evas_object_data_get(box, "radio-list");
256 if (!rl && (pos == BOX_PACK_POSITION_START || pos == BOX_PACK_POSITION_END))
258 rd = _radio_new(box, 0);
259 if (pos == BOX_PACK_POSITION_START) elm_box_pack_start(box, rd);
260 else elm_box_pack_end(box, rd);
262 l = eina_list_append(l, rd);
263 evas_object_data_set(box, "radio-list", l);
266 evas_object_data_set(box, "radio-group", rdg);
271 count = eina_list_count(rl);
272 EINA_LIST_FOREACH(rl, l, radio)
274 value = elm_radio_value_get(radio);
275 svalue = elm_radio_state_value_get(radio);
277 if (value != svalue) continue;
279 rd = _radio_new(box, count);
283 case BOX_PACK_POSITION_START:
284 elm_box_pack_start(box, rd);
286 case BOX_PACK_POSITION_BEFORE:
287 elm_box_pack_before(box, rd, radio);
289 case BOX_PACK_POSITION_AFTER:
290 elm_box_pack_after(box, rd, radio);
292 case BOX_PACK_POSITION_END:
293 elm_box_pack_end(box, rd);
297 rdg = evas_object_data_get(box, "radio-group");
298 elm_radio_group_add(rd, rdg);
300 rl = eina_list_append(rl, rd);
301 evas_object_data_set(box, "radio-list", rl);
306 _pack_start_btn_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
311 box = (Evas_Object *) data;
312 _pack(box, BOX_PACK_POSITION_START);
316 _pack_before_btn_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
321 box = (Evas_Object *) data;
322 _pack(box, BOX_PACK_POSITION_BEFORE);
326 _pack_after_btn_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
331 box = (Evas_Object *) data;
332 _pack(box, BOX_PACK_POSITION_AFTER);
336 _pack_end_btn_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
341 box = (Evas_Object *) data;
342 _pack(box, BOX_PACK_POSITION_END);
346 test_box_pack(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
348 Evas_Object *win, *bg;
349 Evas_Object *box, *lbox, *rbox;
352 Evas_Object *rd, *rdg = NULL;
356 win = elm_win_add(NULL, "box-pack", ELM_WIN_BASIC);
357 elm_win_title_set(win, "Box Pack");
358 elm_win_autodel_set(win, EINA_TRUE);
360 bg = elm_bg_add(win);
361 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
362 elm_win_resize_object_add(win, bg);
363 evas_object_show(bg);
365 box = elm_box_add(win);
366 elm_box_horizontal_set(box, EINA_TRUE);
367 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
368 evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
369 elm_win_resize_object_add(win, box);
370 evas_object_show(box);
373 lbox = elm_box_add(win);
374 evas_object_size_hint_weight_set(lbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
375 evas_object_size_hint_align_set(lbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
377 sc = elm_scroller_add(win);
378 elm_scroller_bounce_set(sc, 0, 1);
379 evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
380 evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
382 for(i = 0; i < 3; i++)
384 rd = _radio_new(win, i);
385 elm_box_pack_end(lbox, rd);
386 l = eina_list_append(l, rd);
387 if (i == 0) rdg = rd;
388 else elm_radio_group_add(rd, rdg);
391 evas_object_data_set(lbox, "radio-list", l);
392 evas_object_data_set(lbox, "radio-group", rdg);
393 elm_object_content_set(sc, lbox);
394 evas_object_show(lbox);
395 elm_box_pack_end(box, sc);
396 evas_object_show(sc);
399 rbox = elm_box_add(win);
400 evas_object_size_hint_weight_set(rbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
401 evas_object_size_hint_align_set(rbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
402 evas_object_show(rbox);
403 elm_box_pack_end(box, rbox);
405 bt = elm_button_add(win);
406 elm_object_text_set(bt, "Pack Start");
407 evas_object_show(bt);
408 elm_box_pack_end(rbox, bt);
409 evas_object_smart_callback_add(bt, "clicked", _pack_start_btn_cb, lbox);
411 bt = elm_button_add(win);
412 elm_object_text_set(bt, "Pack Before");
413 evas_object_show(bt);
414 elm_box_pack_end(rbox, bt);
415 evas_object_smart_callback_add(bt, "clicked", _pack_before_btn_cb, lbox);
417 bt = elm_button_add(win);
418 elm_object_text_set(bt, "Pack After");
419 evas_object_show(bt);
420 elm_box_pack_end(rbox, bt);
421 evas_object_smart_callback_add(bt, "clicked", _pack_after_btn_cb, lbox);
423 bt = elm_button_add(win);
424 elm_object_text_set(bt, "Pack End");
425 evas_object_show(bt);
426 elm_box_pack_end(rbox, bt);
427 evas_object_smart_callback_add(bt, "clicked", _pack_end_btn_cb, lbox);
429 bt = elm_button_add(win);
430 elm_object_text_set(bt, "Unpack");
431 evas_object_show(bt);
432 elm_box_pack_end(rbox, bt);
433 evas_object_smart_callback_add(bt, "clicked", _unpack_btn_cb, lbox);
435 bt = elm_button_add(win);
436 elm_object_text_set(bt, "Unpack All");
437 evas_object_show(bt);
438 elm_box_pack_end(rbox, bt);
439 evas_object_smart_callback_add(bt, "clicked", _unpack_all_btn_cb, lbox);
441 evas_object_resize(win, 320, 320);
442 evas_object_show(win);
446 _cb_check_changed(void *data, Evas_Object *obj, void *event __UNUSED__)
449 Evas_Object *box = data;
451 homo = elm_check_state_get(obj);
452 elm_box_homogeneous_set(box, homo);
457 test_box_homo(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
459 Evas_Object *win, *bg;
460 Evas_Object *box, *o_bg;
464 win = elm_win_add(NULL, "box-homogeneous", ELM_WIN_BASIC);
465 elm_win_title_set(win, "Box Homogeneous");
466 elm_win_autodel_set(win, EINA_TRUE);
468 bg = elm_bg_add(win);
469 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
470 elm_win_resize_object_add(win, bg);
471 evas_object_show(bg);
473 box = elm_box_add(win);
474 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
475 elm_win_resize_object_add(win, box);
476 evas_object_show(box);
478 o_bg = elm_bg_add(win);
479 snprintf(buf, sizeof(buf), "%s/images/twofish.jpg", elm_app_data_dir_get());
480 elm_bg_file_set(o_bg, buf, NULL);
481 evas_object_size_hint_weight_set(o_bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
482 evas_object_size_hint_align_set(o_bg, EVAS_HINT_FILL, EVAS_HINT_FILL);
483 elm_box_pack_end(box, o_bg);
485 rd = elm_check_add(win);
486 elm_object_text_set(rd, "Homogeneous");
487 evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
488 evas_object_smart_callback_add(rd, "changed", _cb_check_changed, box);
489 elm_box_pack_end(box, rd);
490 evas_object_show(rd);
492 evas_object_show(o_bg);
493 evas_object_size_hint_min_set(bg, 160, 160);
494 evas_object_size_hint_max_set(bg, 640, 640);
495 evas_object_resize(win, 320, 320);
496 evas_object_show(win);
501 Eina_List *transitions;
503 Evas_Object_Box_Layout last_layout;
507 _test_box_transition_change(void *data)
509 Transitions_Data *tdata = data;
510 Elm_Box_Transition *layout_data;
511 Evas_Object_Box_Layout next_layout;
514 next_layout = eina_list_data_get(tdata->transitions);
515 layout_data = elm_box_transition_new(2.0, tdata->last_layout,
516 NULL, NULL, next_layout, NULL, NULL,
517 _test_box_transition_change, tdata);
518 elm_box_layout_set(tdata->box, elm_box_layout_transition, layout_data, elm_box_transition_free);
519 tdata->last_layout = next_layout;
521 tdata->transitions = eina_list_demote_list(tdata->transitions, tdata->transitions);
525 _win_del(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
527 Transitions_Data *tdata = data;
533 test_box_transition(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
535 Evas_Object *win, *bg, *bx, *bt;
536 Transitions_Data *tdata;
538 win = elm_win_add(NULL, "box-transition", ELM_WIN_BASIC);
539 elm_win_title_set(win, "Box Transition");
540 elm_win_autodel_set(win, EINA_TRUE);
542 bg = elm_bg_add(win);
543 elm_win_resize_object_add(win, bg);
544 evas_object_size_hint_weight_set(bg, 1.0, 1.0);
545 evas_object_show(bg);
547 bx = elm_box_add(win);
548 elm_win_resize_object_add(win, bx);
549 evas_object_size_hint_weight_set(bx, 1.0, 1.0);
551 evas_object_show(bx);
553 bt = elm_button_add(win);
554 elm_object_text_set(bt, "Button 1");
555 evas_object_size_hint_weight_set(bt, 1.0, 1.0);
556 evas_object_size_hint_align_set(bt, -1.0, -1.0);
557 evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);
558 elm_box_pack_end(bx, bt);
559 evas_object_resize(bt, 100, 100);
560 evas_object_show(bt);
562 bt = elm_button_add(win);
563 elm_object_text_set(bt, "Button 2");
564 evas_object_size_hint_weight_set(bt, 1.0, 1.0);
565 evas_object_size_hint_align_set(bt, -1.0, -1.0);
566 evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);
567 elm_box_pack_end(bx, bt);
568 evas_object_resize(bt, 100, 100);
569 evas_object_show(bt);
571 bt = elm_button_add(win);
572 elm_object_text_set(bt, "Button 3");
573 evas_object_size_hint_weight_set(bt, 1.0, 1.0);
574 evas_object_size_hint_align_set(bt, -1.0, -1.0);
575 evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);
576 elm_box_pack_end(bx, bt);
577 evas_object_resize(bt, 100, 100);
578 evas_object_show(bt);
580 tdata = calloc(1, sizeof(Transitions_Data));
582 tdata->last_layout = evas_object_box_layout_horizontal;
583 tdata->transitions = eina_list_append(tdata->transitions,
584 evas_object_box_layout_vertical);
585 tdata->transitions = eina_list_append(tdata->transitions,
586 evas_object_box_layout_horizontal);
587 tdata->transitions = eina_list_append(tdata->transitions,
588 evas_object_box_layout_stack);
589 tdata->transitions = eina_list_append(tdata->transitions,
590 evas_object_box_layout_homogeneous_vertical);
591 tdata->transitions = eina_list_append(tdata->transitions,
592 evas_object_box_layout_homogeneous_horizontal);
593 tdata->transitions = eina_list_append(tdata->transitions,
594 evas_object_box_layout_flow_vertical);
595 tdata->transitions = eina_list_append(tdata->transitions,
596 evas_object_box_layout_flow_horizontal);
597 tdata->transitions = eina_list_append(tdata->transitions,
598 evas_object_box_layout_stack);
600 evas_object_resize(win, 300, 300);
601 evas_object_resize(bx, 300, 300);
602 evas_object_smart_callback_add(win, "delete,request", _win_del, tdata);
603 evas_object_show(win);
604 elm_box_layout_set(bx, evas_object_box_layout_horizontal, NULL, NULL);
605 _test_box_transition_change(tdata);