efl
888 строк · 27.0 Кб
1#include "test.h"2#ifdef HAVE_CONFIG_H3# include "elementary_config.h"4#endif5#include <Efl_Ui.h>6#include <Elementary.h>7
8#define ICON_MAX 249
10typedef enum11{
12BOX_PACK_POSITION_START,13BOX_PACK_POSITION_BEFORE,14BOX_PACK_POSITION_AFTER,15BOX_PACK_POSITION_END
16} Box_Pack_Position;17
18struct _api_data19{
20unsigned int state; /* What state we are testing */21void *box; /* Use this to get box content */22};23typedef struct _api_data api_data;24
25enum _api_state26{
27BOX_PACK_START,28BOX_PACK_BEFORE,29BOX_PACK_AFTER,30BOX_PADDING_SET,31BOX_ALIGN_SET,32BOX_HOMOGENEOUS_SET,33BOX_UNPACK_ALL,34BOX_CLEAR,35API_STATE_LAST
36};37typedef enum _api_state api_state;38
39static void40set_api_state(api_data *api)41{
42const Eina_List *items = elm_box_children_get(api->box);43if (!eina_list_count(items))44return;45
46/* use elm_box_children_get() to get list of children */47switch(api->state)48{ /* Put all api-changes under switch */49case BOX_PACK_START: /* Move last item to beginning */50elm_box_unpack(api->box, eina_list_data_get(eina_list_last(items)));51elm_box_pack_start(api->box, eina_list_data_get(eina_list_last(items)));52break;53
54case BOX_PACK_BEFORE:55if (eina_list_count(items) > 1)56{ /* Put last item before the one preceding it */57elm_box_unpack(api->box, eina_list_data_get(eina_list_last(items)));58elm_box_pack_before(api->box,59eina_list_data_get(eina_list_last(items)),60eina_list_nth(items, eina_list_count(items)-2));61}62break;63
64case BOX_PACK_AFTER:65if (eina_list_count(items) > 1)66{ /* Put item before last to last */67elm_box_unpack(api->box, eina_list_nth(items,68eina_list_count(items)-2));69elm_box_pack_after(api->box,70eina_list_nth(items, eina_list_count(items)-2),71eina_list_data_get(eina_list_last(items)));72}73break;74
75case BOX_PADDING_SET:76elm_box_padding_set(api->box, 30, 15);77break;78
79case BOX_ALIGN_SET:80elm_box_align_set(api->box, 0.25, 0.75);81break;82
83case BOX_HOMOGENEOUS_SET:84elm_box_homogeneous_set(api->box, EINA_TRUE);85break;86
87case BOX_UNPACK_ALL:88{89Eina_List *l;90Evas_Object *data;91elm_box_unpack_all(api->box);92EINA_LIST_REVERSE_FOREACH(items, l, data)93elm_box_pack_end(api->box, data);94}95break;96
97case BOX_CLEAR:98elm_box_clear(api->box);99break;100
101case API_STATE_LAST:102
103break;104default:105return;106}107}
108
109static void110_api_bt_clicked(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)111{ /* Will add here a SWITCH command containing code to modify test-object */112/* in accordance a->state value. */113api_data *a = data;114char str[128];115
116printf("clicked event on API Button: api_state=<%d>\n", a->state);117set_api_state(a);118a->state++;119sprintf(str, "Next API function (%u)", a->state);120elm_object_text_set(obj, str);121elm_object_disabled_set(obj, a->state == API_STATE_LAST);122}
123
124static void125_cleanup_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)126{
127free(data);128}
129
130void
131test_box_vert(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)132{
133Evas_Object *win, *bx, *ic, *bxx, *bt;134char buf[PATH_MAX];135api_data *api = calloc(1, sizeof(api_data));136
137win = elm_win_util_standard_add("box-vert", "Box Vert");138elm_win_autodel_set(win, EINA_TRUE);139evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);140
141bxx = elm_box_add(win);142evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);143elm_win_resize_object_add(win, bxx);144evas_object_show(bxx);145
146bx = elm_box_add(win);147api->box = bx;148evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);149evas_object_show(bx);150
151bt = elm_button_add(win);152elm_object_text_set(bt, "Next API function");153evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);154elm_box_pack_end(bxx, bt);155elm_object_disabled_set(bt, api->state == API_STATE_LAST);156evas_object_show(bt);157
158elm_box_pack_end(bxx, bx);159
160ic = elm_icon_add(win);161snprintf(buf, sizeof(buf), "%s/images/icon_01.png", elm_app_data_dir_get());162elm_image_file_set(ic, buf, NULL);163elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);164evas_object_size_hint_align_set(ic, 0.5, 0.5);165elm_box_pack_end(bx, ic);166evas_object_show(ic);167
168ic = elm_icon_add(win);169snprintf(buf, sizeof(buf), "%s/images/icon_02.png", elm_app_data_dir_get());170elm_image_file_set(ic, buf, NULL);171elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);172evas_object_size_hint_align_set(ic, 0.0, 0.5);173elm_box_pack_end(bx, ic);174evas_object_show(ic);175
176ic = elm_icon_add(win);177snprintf(buf, sizeof(buf), "%s/images/icon_03.png", elm_app_data_dir_get());178elm_image_file_set(ic, buf, NULL);179elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);180evas_object_size_hint_align_set(ic, EVAS_HINT_EXPAND, 0.5);181elm_box_pack_end(bx, ic);182evas_object_show(ic);183
184evas_object_show(win);185}
186
187static void188_del_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)189{
190elm_box_unpack(data, obj);191evas_object_move(obj, 0, 0);192evas_object_color_set(obj, 128, 64, 0, 128);193evas_object_del(obj);194}
195
196void
197test_box_vert2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)198{
199Evas_Object *win, *bx, *bt;200
201win = elm_win_util_standard_add("box-vert2", "Box Vert 2");202elm_win_autodel_set(win, EINA_TRUE);203
204bx = elm_box_add(win);205evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);206elm_win_resize_object_add(win, bx);207elm_box_padding_set(bx, 10, 10);208evas_object_show(bx);209
210bt = elm_button_add(win);211elm_object_text_set(bt, "Button 1");212evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);213evas_object_size_hint_weight_set(bt, 0.0, 0.0);214evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);215elm_box_pack_end(bx, bt);216evas_object_show(bt);217
218bt = elm_button_add(win);219elm_object_text_set(bt, "Button 2");220evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);221evas_object_size_hint_weight_set(bt, 0.0, 0.0);222evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);223elm_box_pack_end(bx, bt);224evas_object_show(bt);225
226bt = elm_button_add(win);227elm_object_text_set(bt, "Button 3");228evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);229evas_object_size_hint_weight_set(bt, 0.0, 0.0);230evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);231elm_box_pack_end(bx, bt);232evas_object_show(bt);233
234bt = elm_button_add(win);235elm_object_text_set(bt, "Button 4");236evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);237evas_object_size_hint_weight_set(bt, 0.0, 0.0);238evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);239elm_box_pack_end(bx, bt);240evas_object_show(bt);241
242bt = elm_button_add(win);243elm_object_text_set(bt, "Button 5");244evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);245evas_object_size_hint_weight_set(bt, 0.0, 0.0);246evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);247elm_box_pack_end(bx, bt);248evas_object_show(bt);249
250evas_object_show(win);251}
252
253void
254test_box_horiz(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)255{
256Evas_Object *win, *bx, *ic, *bxx, *bt;257char buf[PATH_MAX];258api_data *api = calloc(1, sizeof(api_data));259
260win = elm_win_util_standard_add("box-horiz", "Box Horiz");261elm_win_autodel_set(win, EINA_TRUE);262evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);263
264bxx = elm_box_add(win);265evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);266elm_win_resize_object_add(win, bxx);267evas_object_show(bxx);268
269bx = elm_box_add(win);270elm_box_horizontal_set(bx, EINA_TRUE);271evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);272api->box = bx;273evas_object_show(bx);274
275bt = elm_button_add(win);276elm_object_text_set(bt, "Next API function");277evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);278elm_box_pack_end(bxx, bt);279elm_object_disabled_set(bt, api->state == API_STATE_LAST);280evas_object_show(bt);281
282elm_box_pack_end(bxx, bx);283
284ic = elm_icon_add(win);285snprintf(buf, sizeof(buf), "%s/images/icon_01.png", elm_app_data_dir_get());286elm_image_file_set(ic, buf, NULL);287elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);288evas_object_size_hint_align_set(ic, 0.5, 0.5);289elm_box_pack_end(bx, ic);290evas_object_show(ic);291
292ic = elm_icon_add(win);293snprintf(buf, sizeof(buf), "%s/images/icon_02.png", elm_app_data_dir_get());294elm_image_file_set(ic, buf, NULL);295elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);296evas_object_size_hint_align_set(ic, 0.5, 0.0);297elm_box_pack_end(bx, ic);298evas_object_show(ic);299
300ic = elm_icon_add(win);301snprintf(buf, sizeof(buf), "%s/images/icon_03.png", elm_app_data_dir_get());302elm_image_file_set(ic, buf, NULL);303elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);304evas_object_size_hint_align_set(ic, 0.0, EVAS_HINT_EXPAND);305elm_box_pack_end(bx, ic);306evas_object_show(ic);307
308evas_object_show(win);309}
310
311static Eina_Bool radio_index[ICON_MAX];312
313static int314_index_get(void)315{
316int i;317for (i = 0; i < ICON_MAX; i++)318{319if (!radio_index[i])320{321radio_index[i] = EINA_TRUE;322return i;323}324
325}326return -1;327}
328
329static void330_index_remove(int i)331{
332if (i >= ICON_MAX) return;333radio_index[i] = EINA_FALSE;334}
335
336static void337_index_clear()338{
339int i;340for (i = 0; i < ICON_MAX; i++)341radio_index[i] = EINA_FALSE;342}
343
344static Evas_Object *345_radio_new(Evas_Object *obj)346{
347Evas_Object *ic, *rd;348int idx;349char buf[PATH_MAX];350Evas_Object *rdg;351
352idx = _index_get();353if (idx == -1) return NULL;354
355ic = elm_icon_add(obj);356snprintf(buf, sizeof(buf), "%s/images/icon_%02d.png",357elm_app_data_dir_get(), idx);358elm_image_file_set(ic, buf, NULL);359evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);360
361rd = elm_radio_add(obj);362elm_radio_state_value_set(rd, idx);363evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);364evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, 0.5);365elm_object_part_content_set(rd, "icon", ic);366
367rdg = evas_object_data_get(obj, "radio-group");368if (rdg) elm_radio_group_add(rd, rdg);369
370evas_object_show(rd);371evas_object_show(ic);372
373return rd;374}
375
376static void377_pack_start_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)378{
379Evas_Object *rd;380if (!data) return;381
382rd = _radio_new(data);383if (!rd) return;384elm_box_pack_start(data, rd);385}
386
387static void388_pack_before_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)389{
390Evas_Object *rd, *selected_rd, *rdg;391if (!data) return;392
393rdg = evas_object_data_get(data, "radio-group");394if (!rdg) return;395
396selected_rd = elm_radio_selected_object_get(rdg);397if (!selected_rd || (selected_rd == rdg)) return;398
399rd = _radio_new(data);400if (!rd) return;401elm_box_pack_before(data, rd, selected_rd);402}
403
404static void405_pack_after_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)406{
407Evas_Object *rd, *selected_rd, *rdg;408if (!data) return;409
410rdg = evas_object_data_get(data, "radio-group");411if (!rdg) return;412
413selected_rd = elm_radio_selected_object_get(rdg);414if (!selected_rd || (selected_rd == rdg)) return;415
416rd = _radio_new(data);417if (!rd) return;418elm_box_pack_after(data, rd, selected_rd);419}
420
421static void422_pack_end_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)423{
424Evas_Object *rd;425if (!data) return;426
427rd = _radio_new(data);428if (!rd) return;429elm_box_pack_end(data, rd);430}
431
432static void433_unpack_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)434{
435Evas_Object *rdg, *selected_rd;436if (!data) return;437
438rdg = evas_object_data_get(data, "radio-group");439if (!rdg) return;440
441selected_rd = elm_radio_selected_object_get(rdg);442if (selected_rd == rdg) return;443
444_index_remove(elm_radio_value_get(selected_rd));445elm_box_unpack(data, selected_rd);446evas_object_del(selected_rd);447elm_radio_value_set(rdg, -1);448}
449
450static void451_unpack_all_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)452{
453Evas_Object *radio, *rdg;454Eina_List *rl, *l;455if (!data) return;456
457rdg = evas_object_data_get(data, "radio-group");458if (!rdg) return;459
460_index_clear();461rl = elm_box_children_get(data);462EINA_LIST_FOREACH(rl, l, radio)463{464if (radio != rdg)465evas_object_del(radio);466}467elm_box_unpack_all(data);468elm_radio_value_set(rdg, -1);469}
470
471void
472test_box_pack(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)473{
474Evas_Object *win, *sc, *bt;475Evas_Object *box, *lbox, *rbox;476Evas_Object *rd, *rdg = NULL;477int i;478
479win = elm_win_util_standard_add("box-pack", "Box Pack");480elm_win_autodel_set(win, EINA_TRUE);481
482box = elm_box_add(win);483elm_box_horizontal_set(box, EINA_TRUE);484evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);485elm_win_resize_object_add(win, box);486evas_object_show(box);487
488// left side489lbox = elm_box_add(win);490evas_object_size_hint_weight_set(lbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);491evas_object_size_hint_align_set(lbox, EVAS_HINT_FILL, EVAS_HINT_FILL);492
493sc = elm_scroller_add(win);494elm_scroller_bounce_set(sc, EINA_FALSE, EINA_TRUE);495evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);496evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);497
498rdg = elm_radio_add(win); /* a radio for easy group handling */499elm_radio_state_value_set(rdg, -1);500evas_object_data_set(lbox, "radio-group", rdg);501
502for (i = 0; i < 3; i++)503{504rd = _radio_new(lbox);505elm_box_pack_end(lbox, rd);506}507
508elm_object_content_set(sc, lbox);509evas_object_show(lbox);510elm_box_pack_end(box, sc);511evas_object_show(sc);512
513// right side514rbox = elm_box_add(win);515evas_object_size_hint_weight_set(rbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);516evas_object_size_hint_align_set(rbox, EVAS_HINT_FILL, EVAS_HINT_FILL);517evas_object_show(rbox);518elm_box_pack_end(box, rbox);519
520bt = elm_button_add(win);521elm_object_text_set(bt, "Pack Start");522evas_object_show(bt);523elm_box_pack_end(rbox, bt);524evas_object_smart_callback_add(bt, "clicked", _pack_start_btn_cb, lbox);525
526bt = elm_button_add(win);527elm_object_text_set(bt, "Pack Before");528evas_object_show(bt);529elm_box_pack_end(rbox, bt);530evas_object_smart_callback_add(bt, "clicked", _pack_before_btn_cb, lbox);531
532bt = elm_button_add(win);533elm_object_text_set(bt, "Pack After");534evas_object_show(bt);535elm_box_pack_end(rbox, bt);536evas_object_smart_callback_add(bt, "clicked", _pack_after_btn_cb, lbox);537
538bt = elm_button_add(win);539elm_object_text_set(bt, "Pack End");540evas_object_show(bt);541elm_box_pack_end(rbox, bt);542evas_object_smart_callback_add(bt, "clicked", _pack_end_btn_cb, lbox);543
544bt = elm_button_add(win);545elm_object_text_set(bt, "Unpack");546evas_object_show(bt);547elm_box_pack_end(rbox, bt);548evas_object_smart_callback_add(bt, "clicked", _unpack_btn_cb, lbox);549
550bt = elm_button_add(win);551elm_object_text_set(bt, "Unpack All");552evas_object_show(bt);553elm_box_pack_end(rbox, bt);554evas_object_smart_callback_add(bt, "clicked", _unpack_all_btn_cb, lbox);555
556evas_object_resize(win, 320 * elm_config_scale_get(),557320 * elm_config_scale_get());558evas_object_show(win);559}
560
561static void562_cb_check_changed(void *data, Evas_Object *obj, void *event EINA_UNUSED)563{
564Eina_Bool homo;565Evas_Object *box = data;566
567homo = elm_check_state_get(obj);568elm_box_homogeneous_set(box, homo);569}
570
571void
572test_box_homo(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)573{
574Evas_Object *win;575Evas_Object *box, *o_bg;576Evas_Object *rd;577char buf[PATH_MAX];578
579win = elm_win_util_standard_add("box-homogeneous", "Box Homogeneous");580elm_win_autodel_set(win, EINA_TRUE);581
582box = elm_box_add(win);583evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);584elm_win_resize_object_add(win, box);585evas_object_show(box);586
587o_bg = elm_bg_add(win);588snprintf(buf, sizeof(buf), "%s/images/twofish.jpg", elm_app_data_dir_get());589elm_bg_file_set(o_bg, buf, NULL);590evas_object_size_hint_weight_set(o_bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);591evas_object_size_hint_align_set(o_bg, EVAS_HINT_FILL, EVAS_HINT_FILL);592elm_box_pack_end(box, o_bg);593
594rd = elm_check_add(win);595elm_object_text_set(rd, "Homogeneous");596evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_FILL);597evas_object_smart_callback_add(rd, "changed", _cb_check_changed, box);598elm_box_pack_end(box, rd);599evas_object_show(rd);600evas_object_show(o_bg);601
602evas_object_resize(win, 320 * elm_config_scale_get(),603320 * elm_config_scale_get());604evas_object_show(win);605}
606
607typedef struct608{
609Eina_List *transitions;610Evas_Object *box;611Evas_Object_Box_Layout last_layout;612} Transitions_Data;613
614static void615_test_box_transition_change(void *data)616{
617Transitions_Data *tdata = data;618Elm_Box_Transition *layout_data;619Evas_Object_Box_Layout next_layout;620
621if (!data) return;622next_layout = eina_list_data_get(tdata->transitions);623layout_data = elm_box_transition_new(2.0, tdata->last_layout,624NULL, NULL, next_layout, NULL, NULL,625_test_box_transition_change, tdata);626elm_box_layout_set(tdata->box, elm_box_layout_transition, layout_data, elm_box_transition_free);627tdata->last_layout = next_layout;628
629tdata->transitions = eina_list_demote_list(tdata->transitions, tdata->transitions);630}
631
632static void633_win_del(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)634{
635Transitions_Data *tdata = data;636if (!data) return;637free(tdata);638}
639
640void
641test_box_transition(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)642{
643Evas_Object *win, *bx, *bt;644Transitions_Data *tdata;645
646win = elm_win_util_standard_add("box-transition", "Box Transition");647elm_win_autodel_set(win, EINA_TRUE);648
649bx = elm_box_add(win);650evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);651elm_win_resize_object_add(win, bx);652evas_object_show(bx);653
654bt = elm_button_add(win);655elm_object_text_set(bt, "Button 1");656evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);657evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);658evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);659elm_box_pack_end(bx, bt);660evas_object_show(bt);661
662bt = elm_button_add(win);663elm_object_text_set(bt, "Button 2");664evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);665evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);666evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);667elm_box_pack_end(bx, bt);668evas_object_show(bt);669
670bt = elm_button_add(win);671elm_object_text_set(bt, "Button 3");672evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);673evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);674evas_object_smart_callback_add(bt, "clicked", _del_cb, bx);675elm_box_pack_end(bx, bt);676evas_object_show(bt);677
678tdata = calloc(1, sizeof(Transitions_Data));679tdata->box = bx;680tdata->last_layout = evas_object_box_layout_horizontal;681tdata->transitions = eina_list_append(tdata->transitions,682evas_object_box_layout_vertical);683tdata->transitions = eina_list_append(tdata->transitions,684evas_object_box_layout_horizontal);685tdata->transitions = eina_list_append(tdata->transitions,686evas_object_box_layout_stack);687tdata->transitions = eina_list_append(tdata->transitions,688evas_object_box_layout_homogeneous_vertical);689tdata->transitions = eina_list_append(tdata->transitions,690evas_object_box_layout_homogeneous_horizontal);691tdata->transitions = eina_list_append(tdata->transitions,692evas_object_box_layout_flow_vertical);693tdata->transitions = eina_list_append(tdata->transitions,694evas_object_box_layout_flow_horizontal);695tdata->transitions = eina_list_append(tdata->transitions,696evas_object_box_layout_stack);697
698evas_object_smart_callback_add(win, "delete,request", _win_del, tdata);699elm_box_layout_set(bx, evas_object_box_layout_horizontal, NULL, NULL);700_test_box_transition_change(tdata);701
702evas_object_resize(win, 300 * elm_config_scale_get(),703300 * elm_config_scale_get());704evas_object_show(win);705}
706
707typedef struct _Box_Align_Data Box_Align_Data;708struct _Box_Align_Data709{
710Evas_Object *hor_box; // target box horizontal711Evas_Object *vert_box; // target box vertical712double hor; // horizontal slider713double vert; // vertical slider714};715
716static void717_box_align_win_del_cb(void *data, Evas *e EINA_UNUSED,718Evas_Object *obj EINA_UNUSED,719void *event_info EINA_UNUSED)720{
721free(data);722}
723
724static void725_hor_slider_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)726{
727Box_Align_Data *bdata = data;728
729bdata->hor = elm_slider_value_get(obj);730printf("box align: %0.2f %0.2f\n", bdata->hor, bdata->vert);731elm_box_align_set(bdata->hor_box, bdata->hor, bdata->vert);732elm_box_align_set(bdata->vert_box, bdata->hor, bdata->vert);733}
734
735static void736_vert_slider_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)737{
738Box_Align_Data *bdata = data;739
740bdata->vert = elm_slider_value_get(obj);741printf("box align: %0.2f %0.2f\n", bdata->hor, bdata->vert);742elm_box_align_set(bdata->hor_box, bdata->hor, bdata->vert);743elm_box_align_set(bdata->vert_box, bdata->hor, bdata->vert);744}
745
746void
747_description_add(Evas_Object *bx_out, Box_Align_Data *bdata)748{
749Evas_Object *fr, *bx, *lb, *sl, *tb;750
751// description752fr = elm_frame_add(bx_out);753evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, 0.0);754evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);755elm_box_pack_end(bx_out, fr);756elm_object_text_set(fr, "Description");757evas_object_show(fr);758
759bx = elm_box_add(fr);760elm_object_content_set(fr, bx);761evas_object_show(bx);762
763lb = elm_label_add(fr);764elm_object_text_set(lb, "This test shows how elm_box_align_set() works.");765evas_object_size_hint_align_set(lb, 0.0, EVAS_HINT_FILL);766elm_box_pack_end(bx, lb);767evas_object_show(lb);768
769tb = elm_table_add(bx);770evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);771evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);772elm_box_pack_end(bx, tb);773evas_object_show(tb);774
775lb = elm_label_add(tb);776elm_object_text_set(lb, " Horizontal ");777elm_table_pack(tb, lb, 0, 0, 1, 1);778evas_object_show(lb);779
780lb = elm_label_add(tb);781elm_object_text_set(lb, " Vertical ");782elm_table_pack(tb, lb, 0, 1, 1, 1);783evas_object_show(lb);784
785sl = elm_slider_add(fr);786elm_slider_unit_format_set(sl, "%1.2f");787elm_slider_min_max_set(sl, 0.0, 1.0);788elm_slider_value_set(sl, 0.5);789bdata->hor = 0.5;790evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);791evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, EVAS_HINT_FILL);792elm_table_pack(tb, sl, 1, 0, 1, 1);793evas_object_show(sl);794evas_object_smart_callback_add(sl, "changed", _hor_slider_changed_cb, bdata);795
796sl = elm_slider_add(fr);797elm_slider_unit_format_set(sl, "%1.2f");798elm_slider_min_max_set(sl, 0.0, 1.0);799elm_slider_value_set(sl, 0.5);800bdata->vert = 0.5;801evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, 0.0);802evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, EVAS_HINT_FILL);803elm_table_pack(tb, sl, 1, 1, 1, 1);804evas_object_show(sl);805evas_object_smart_callback_add(sl, "changed", _vert_slider_changed_cb, bdata);806}
807
808void
809_align_box_add(Evas_Object *bx_out, Box_Align_Data *bdata)810{
811Evas_Object *bx, *sp, *bt;812
813// test box - vertical814bdata->vert_box = bx = elm_box_add(bx_out);815evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);816evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);817elm_box_pack_end(bx_out, bx);818elm_box_align_set(bx, 0.5, 0.5);819evas_object_show(bx);820
821bt = elm_button_add(bx);822elm_object_text_set(bt, "Button 1");823evas_object_size_hint_weight_set(bt, 0.0, 0.0);824evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);825elm_box_pack_end(bx, bt);826evas_object_show(bt);827
828bt = elm_button_add(bx);829elm_object_text_set(bt, "Button 2");830evas_object_size_hint_weight_set(bt, 0.0, 0.0);831evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);832elm_box_pack_end(bx, bt);833evas_object_show(bt);834
835// separator836sp = elm_separator_add(bx_out);837elm_separator_horizontal_set(sp, EINA_TRUE);838elm_box_pack_end(bx_out, sp);839evas_object_show(sp);840
841// test box - horizontal842bdata->hor_box = bx = elm_box_add(bx_out);843evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);844evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);845elm_box_pack_end(bx_out, bx);846elm_box_align_set(bx, 0.5, 0.5);847elm_box_horizontal_set(bx, EINA_TRUE);848evas_object_show(bx);849
850bt = elm_button_add(bx);851elm_object_text_set(bt, "Button 1");852evas_object_size_hint_weight_set(bt, 0.0, 0.0);853evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);854elm_box_pack_end(bx, bt);855evas_object_show(bt);856
857bt = elm_button_add(bx);858elm_object_text_set(bt, "Button 2");859evas_object_size_hint_weight_set(bt, 0.0, 0.0);860evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);861elm_box_pack_end(bx, bt);862evas_object_show(bt);863}
864
865void
866test_box_align(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,867void *event_info EINA_UNUSED)868{
869Evas_Object *win, *bx_out;870Box_Align_Data *bdata= (Box_Align_Data *)calloc(1, sizeof(Box_Align_Data));871
872win = elm_win_util_standard_add("box-align", "Box Align");873elm_win_autodel_set(win, EINA_TRUE);874evas_object_event_callback_add(win, EVAS_CALLBACK_DEL,875_box_align_win_del_cb, bdata);876
877bx_out = elm_box_add(win);878evas_object_size_hint_weight_set(bx_out, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);879elm_win_resize_object_add(win, bx_out);880evas_object_show(bx_out);881
882_description_add(bx_out, bdata);883_align_box_add(bx_out, bdata);884
885evas_object_resize(win, 300 * elm_config_scale_get(),886400 * elm_config_scale_get());887evas_object_show(win);888}
889