From 7e31e6d2121ef69bdbb08c9532fc9dd50883bdaf Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Tue, 24 Feb 2009 09:23:51 +0000 Subject: [PATCH] radio widget working. SVN revision: 39173 --- legacy/elementary/data/themes/Makefile.am | 5 +- legacy/elementary/data/themes/default.edc | 144 +++++++++- legacy/elementary/data/themes/radio.png | Bin 0 -> 4684 bytes legacy/elementary/data/themes/radio2.png | Bin 0 -> 4406 bytes legacy/elementary/data/themes/radio_base.png | Bin 0 -> 3125 bytes legacy/elementary/src/bin/test.c | 117 ++++++-- legacy/elementary/src/lib/Elementary.h.in | 14 +- legacy/elementary/src/lib/Makefile.am | 1 + legacy/elementary/src/lib/elm_check.c | 5 + legacy/elementary/src/lib/elm_radio.c | 280 +++++++++++++++++++ legacy/elementary/src/lib/elm_toggle.c | 4 + 11 files changed, 541 insertions(+), 29 deletions(-) create mode 100644 legacy/elementary/data/themes/radio.png create mode 100644 legacy/elementary/data/themes/radio2.png create mode 100644 legacy/elementary/data/themes/radio_base.png create mode 100644 legacy/elementary/src/lib/elm_radio.c diff --git a/legacy/elementary/data/themes/Makefile.am b/legacy/elementary/data/themes/Makefile.am index 4df239b7b3..7a0441616a 100644 --- a/legacy/elementary/data/themes/Makefile.am +++ b/legacy/elementary/data/themes/Makefile.am @@ -114,7 +114,10 @@ slv_bg_over.png \ slv_units.png \ check_base.png \ check.png \ -check2.png +check2.png \ +radio_base.png \ +radio.png \ +radio2.png default.edj: Makefile $(EXTRA_DIST) $(EDJE_CC) $(EDJE_FLAGS) \ diff --git a/legacy/elementary/data/themes/default.edc b/legacy/elementary/data/themes/default.edc index e7043677fc..f8e9b7cc83 100644 --- a/legacy/elementary/data/themes/default.edc +++ b/legacy/elementary/data/themes/default.edc @@ -1240,7 +1240,7 @@ collections { part { name: "elm.swallow.content"; type: SWALLOW; description { state: "default" 0.0; -// fixed: 1 1; + fixed: 1 0; visible: 0; align: 0.0 0.5; rel1.offset: 4 4; @@ -1249,7 +1249,7 @@ collections { } description { state: "visible" 0.0; inherit: "default" 0.0; -// fixed: 0 0; + fixed: 1 1; visible: 1; aspect: 1.0 1.0; aspect_preference: VERTICAL; @@ -7587,7 +7587,7 @@ collections { part { name: "elm.swallow.content"; type: SWALLOW; description { state: "default" 0.0; -// fixed: 1 1; + fixed: 1 0; visible: 0; align: 0.0 0.5; rel1.to_x: "bg"; @@ -7599,7 +7599,7 @@ collections { } description { state: "visible" 0.0; inherit: "default" 0.0; -// fixed: 0 0; + fixed: 1 1; visible: 1; aspect: 1.0 1.0; aspect_preference: VERTICAL; @@ -7682,4 +7682,140 @@ collections { } } } + +/////////////////////////////////////////////////////////////////////////////// + group { name: "elm/radio/base/default"; + images { + image: "radio_base.png" COMP; + image: "radio.png" COMP; + image: "radio2.png" COMP; + } + parts { + part { name: "bg"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1.offset: 1 1; + rel2.relative: 0.0 1.0; + rel2.offset: 1 -2; + align: 0.0 0.5; + min: 16 16; + max: 16 16; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + image.normal: "radio_base.png"; + } + } + part { name: "radio"; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1.to: "bg"; + rel2.to: "bg"; + visible: 0; + image.normal: "radio.png"; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + description { state: "default" 0.0; + fixed: 1 0; + visible: 0; + align: 0.0 0.5; + rel1.to_x: "bg"; + rel1.relative: 1.0 0.0; + rel1.offset: 1 1; + rel2.to_x: "bg"; + rel2.relative: 1.0 1.0; + rel2.offset: 2 -2; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + fixed: 1 1; + visible: 1; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + } + } + part { name: "elm.text"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + visible: 0; + rel1.to_x: "elm.swallow.content"; + rel1.relative: 1.0 0.0; + rel1.offset: 1 1; + rel2.relative: 1.0 1.0; + rel2.offset: -2 -2; + color: 0 0 0 255; + text { + font: "Sans,Edje-Vera"; + size: 10; + min: 0 0; + align: 0.0 0.5; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + text.min: 1 1; + } + } + part { name: "events"; + type: RECT; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } + programs { + program { name: "click"; + signal: "mouse,up,1"; + source: "events"; + action: SIGNAL_EMIT "elm,action,radio,toggle" ""; + } + program { name: "radio_on"; + signal: "elm,state,radio,on"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "radio"; + } + program { name: "radio_off"; + signal: "elm,state,radio,off"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "radio"; + } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.text"; + } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.text"; + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.swallow.content"; + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.content"; + } + } + } } diff --git a/legacy/elementary/data/themes/radio.png b/legacy/elementary/data/themes/radio.png new file mode 100644 index 0000000000000000000000000000000000000000..f964acd7f590be6ecf9c25afdd311367ebfcdf27 GIT binary patch literal 4684 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 JE>p1%|39ABAq)Tj literal 0 HcmV?d00001 diff --git a/legacy/elementary/data/themes/radio2.png b/legacy/elementary/data/themes/radio2.png new file mode 100644 index 0000000000000000000000000000000000000000..b83e5527d3edf0518220526c580756fc2c149c67 GIT binary patch literal 4406 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 RU+|6tFw!&CrE0sx{|{{bMFIc- literal 0 HcmV?d00001 diff --git a/legacy/elementary/data/themes/radio_base.png b/legacy/elementary/data/themes/radio_base.png new file mode 100644 index 0000000000000000000000000000000000000000..d21940030513732358329db1627473ff3df084c4 GIT binary patch literal 3125 zcmV-549fF~P)K~#90?VMX|RL2>|e{;_6dc9`tg~h>kF*X;2xg=2S18H1U zAx)}aLLpLkpd@XgNR^tXswy=>NRg^ORY7VVqDU!~+Vr89i1eWmi9}n}raYjATts-G z6$YXtE#VRq8*F^r{rWI7duET%nziu-U;fhQ820QrGyna6-#7EkMTrOtm^flH`EsR{ z4=e$yosx7)6(B%Aa1$7CuD0}uNPgNYZ=j}Ifl8?=paJ*_unhepD!?;W0SdRcx_^%V zUjUbZD6_>G0_ShH3v^oqDy34u26X>T2uw9ho-MA~mh*R&R!BM5uwQgd zIUZ50Sr4Ft%)q!B?p9)=1eyrD)>NoKsp^JIanCT>ZfNjbHke;xaaS@JA_;RL{psBSEXh#3D^An=bcI;h3X=a$3*V_-}I%?q0e zdhv=NScH{VG>tonI2R!`MhzFkk^3&C)TOc7b1MZd1ybfEJ^^{I@?5jMW65)2)Ci8X z7+7Uin`;$N3-pwGmRIfrrBn<(JQFn0w!31Ztu@=CBc2W9S(v)I$qPGzvTd|MCvDtV zB*s!;mO#=4M)&hdqU~%V&myEm7w))P0cmt@aTFpIXwp(?0`-MQ8Eyx8R+4AoDABgZ z9T;FfOBstCg>ojm#9V!Xp<1|;JnPA`2$2{bT@_6^>bs)|G?P9yaKtH9Ur7#cE|6zo z+G17cl4!d<36r`jL6ia)n=i$khq(DX8*%3<>_EZIUs@H`gl{e(&@gO=G**3XN@`X{ z+)6P_k z+g37DHWy*rZF#T+76XX~#jJ~+9I^zuU6wf;dCMUpBHQWD(FCH+)~e4k9-i=?uLuVf z4-gYGiUit@qDQIYEJ@4HQ z%}XQ_J_IK05*Rk$1tK*BC=3q|7wYTl4~Yb}5b4h|MFnT&5! zTTwo6fxKu4AZN~;8A_+qej<^GL(q*86Pg!@8ykhz)>cxflwVU*6ZpWLJ9n!3`g+yX z)s-I{9E8#t`~_$Tp!V+F>t!+-YpI&RTrNjlU7erFWaQGNaV<`ocW7>Iwkx~_F@LaO z!v+Do#fujg41wV#Vhb=_WV6{gnzsTNAGmz^a#~tiR8v!v?aC}58eUypT@^v@Kr67Z zu~G8*yuWhgN+@03xqtu)P|0M{5}3#QL2GNP^!4?rwzf8_zy%Tw%viWs7A;y-MKEU+ zbYp62YP`GezT4d{us~ud6yQ}?S636v85Ic}2E5MBPL?fOwm{ryC_wGry}K%vO4Xuy z>jOuDXcGNhyLN?l|IBwXi+fO>d+xa`T7A8QOc?aGEdS9*AGKShO2~`YPB7;YTJi6# zTeog0nwxHWk4s=b;6L!d1F=jd6G`Gcg#uJAmy2gI8B5?5`=Lu<9vDm{60v>z_St3s zt{Kl)C_o)NcyOuj`*F1S78jp~S0>y5yxqHZ+rExnV5rcFo;O5>x-Z_QO`96foLqMA z3lrE2_#GV`)eQ{|ae~Fx^VN(MpdNhi!9+HjZ9;SLxqCyHz(JtDy1F{{$}6wb5~y&# zny~`B*Is*Vo$vcebnqzIlo+)>@KeCwv17;LTrOw#*A_{f4`%F`uXo_Ufttp~#`S0p zPK~;^%xvW*VA;u&CwsPT-TEoPc?ZQcf^&76(Bb&{x0nP!(!uOY3BYht5 za=Bdno;`a~%s*3BfOq)t;Y>E0Z8!gZKk~*ggtQS@dG_qt-nDDj{)b?5&74(XSbcqc zeGjKnsaD`4;2%-nDZ9}I=mMmzt!?QGFT9W;*lTN}@?3=i{1YcmEKj9UYtdpkS?=bs z2pq(i@__>f)^~PxE~3&;YqxIQx&z(T4>5^@NQlT-#S@WjBJ!PU z*RFlLwY9YYy?4wWBjRD)z-%rAW*gtLXV0Rcp`jm$$WKM&3By6z?^d$qzY5q6)Lp!I z@$;sprVr5maMo}2f>D0Yzj^cKW65N4BYM31OLPyUEXFcni$SylEi^VZt~hn-R6BYr zgdM5O+Wujfyq=z(`;*D!SJC45J+~kaDkBi|cF%VJwR!XAd)|EW%@#C)F`SIeY$7o{ z);)Lb+mwVmeQeKEr&`81U*7|7w{i>wX}I{?$HMvu4eQ%z`cdFgigB_`SWo+tcavPITS>4!k~|XO2gK z7ViN61iaO&SKrs&-TiPbm#d~!iSFX{I|5E!JivSAnP-wiLqp$Br_+y_|N9f;BoDY{ zH)gD|T157X$j=4_2A+NX`RA9Tw}jd*PDw_4hPx<5#R2iR-+sFxpU=N2B8Nrf*CMic zqR+qG)7$ESCxH5qk&&Cnjvf2+_U+q0W(E)5u?U%K@i2+AXU}d}wQALmJkQGj{{?;y zd^X|tOhS87z~ktH$YTBd{b$~If;6LcQzPub+JN)mQ(vfB*h#jB)tbWD!|Laq8&Nqf57K+xFc=BJr^K zybm}G`~fpLep{GipHnL$`$XiBi2O!Ge%0OGz4xi7o~lQ0R!$O}aXKkJlF>dc1|(j3 z>7^xoeSOc0$Z-+*m%08#M6#3WW2eY@H;Bj&MdWuP@_Ig>|80MN|Bo+RxN!f|Pd{xB z-gb$c5Qz?XJ`g)}=ullxPtW$@;o%oW`ceZPQ_e zk&%(pH*VZGdHneCcX#dD)s5pLrNRnXlkMv2s&8&?ekc};earK_uMr$oFao>>`~vOo zrUcVUe+53C>V{4GQSj(PE$#!p0c=GFomhp%o#3*2`ufl#h_`^h;H(;$4$K6B zE~?Ro*xqHzG6JO$i P00000NkvXXu0mjf5VFiE literal 0 HcmV?d00001 diff --git a/legacy/elementary/src/bin/test.c b/legacy/elementary/src/bin/test.c index 5685d4e5df..a4400da21b 100644 --- a/legacy/elementary/src/bin/test.c +++ b/legacy/elementary/src/bin/test.c @@ -2460,7 +2460,7 @@ my_bt_31(void *data, Evas_Object *obj, void *event_info) static void my_bt_32(void *data, Evas_Object *obj, void *event_info) { - Evas_Object *win, *bg, *bx, *ic, *tg; + Evas_Object *win, *bg, *bx, *ic, *ck; char buf[PATH_MAX]; win = elm_win_add(NULL, "check", ELM_WIN_BASIC); @@ -2481,45 +2481,117 @@ my_bt_32(void *data, Evas_Object *obj, void *event_info) snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR); elm_icon_file_set(ic, buf, NULL); evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); - tg = elm_check_add(win); - evas_object_size_hint_weight_set(tg, 1.0, 1.0); - evas_object_size_hint_align_set(tg, -1.0, 0.5); - elm_check_label_set(tg, "Icon sized to check"); - elm_check_icon_set(tg, ic); - elm_check_state_set(tg, 1); - elm_box_pack_end(bx, tg); - evas_object_show(tg); + ck = elm_check_add(win); + evas_object_size_hint_weight_set(ck, 1.0, 1.0); + evas_object_size_hint_align_set(ck, -1.0, 0.5); + elm_check_label_set(ck, "Icon sized to check"); + elm_check_icon_set(ck, ic); + elm_check_state_set(ck, 1); + elm_box_pack_end(bx, ck); + evas_object_show(ck); evas_object_show(ic); ic = elm_icon_add(win); snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR); elm_icon_file_set(ic, buf, NULL); elm_icon_scale_set(ic, 0, 0); - tg = elm_check_add(win); - elm_check_label_set(tg, "Icon no scale"); - elm_check_icon_set(tg, ic); - elm_box_pack_end(bx, tg); - evas_object_show(tg); + ck = elm_check_add(win); + elm_check_label_set(ck, "Icon no scale"); + elm_check_icon_set(ck, ic); + elm_box_pack_end(bx, ck); + evas_object_show(ck); evas_object_show(ic); - tg = elm_check_add(win); - elm_check_label_set(tg, "Label Only"); - elm_box_pack_end(bx, tg); - evas_object_show(tg); + ck = elm_check_add(win); + elm_check_label_set(ck, "Label Only"); + elm_box_pack_end(bx, ck); + evas_object_show(ck); ic = elm_icon_add(win); snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR); elm_icon_file_set(ic, buf, NULL); elm_icon_scale_set(ic, 0, 0); - tg = elm_check_add(win); - elm_check_icon_set(tg, ic); - elm_box_pack_end(bx, tg); - evas_object_show(tg); + ck = elm_check_add(win); + elm_check_icon_set(ck, ic); + elm_box_pack_end(bx, ck); + evas_object_show(ck); evas_object_show(ic); evas_object_show(win); } +static void +my_bt_33(void *data, Evas_Object *obj, void *event_info) +{ + Evas_Object *win, *bg, *bx, *ic, *rd, *rdg; + char buf[PATH_MAX]; + + win = elm_win_add(NULL, "radio", ELM_WIN_BASIC); + elm_win_title_set(win, "Radios"); + elm_win_autodel_set(win, 1); + + bg = elm_bg_add(win); + elm_win_resize_object_add(win, bg); + evas_object_size_hint_weight_set(bg, 1.0, 1.0); + evas_object_show(bg); + + bx = elm_box_add(win); + evas_object_size_hint_weight_set(bx, 1.0, 1.0); + elm_win_resize_object_add(win, bx); + evas_object_show(bx); + + ic = elm_icon_add(win); + snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR); + elm_icon_file_set(ic, buf, NULL); + evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + rd = elm_radio_add(win); + elm_radio_state_value_set(rd, 0); + evas_object_size_hint_weight_set(rd, 1.0, 1.0); + evas_object_size_hint_align_set(rd, -1.0, 0.5); + elm_radio_label_set(rd, "Icon sized to radio"); + elm_radio_icon_set(rd, ic); + elm_box_pack_end(bx, rd); + evas_object_show(rd); + evas_object_show(ic); + rdg = rd; + + ic = elm_icon_add(win); + snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR); + elm_icon_file_set(ic, buf, NULL); + elm_icon_scale_set(ic, 0, 0); + rd = elm_radio_add(win); + elm_radio_state_value_set(rd, 1); + elm_radio_group_add(rd, rdg); + elm_radio_label_set(rd, "Icon no scale"); + elm_radio_icon_set(rd, ic); + elm_box_pack_end(bx, rd); + evas_object_show(rd); + evas_object_show(ic); + + rd = elm_radio_add(win); + elm_radio_state_value_set(rd, 2); + elm_radio_group_add(rd, rdg); + elm_radio_label_set(rd, "Label Only"); + elm_box_pack_end(bx, rd); + evas_object_show(rd); + + ic = elm_icon_add(win); + snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR); + elm_icon_file_set(ic, buf, NULL); + elm_icon_scale_set(ic, 0, 0); + rd = elm_radio_add(win); + elm_radio_state_value_set(rd, 3); + elm_radio_group_add(rd, rdg); + elm_radio_icon_set(rd, ic); + elm_box_pack_end(bx, rd); + evas_object_show(rd); + evas_object_show(ic); + + elm_radio_value_set(rdg, 2); + + evas_object_show(win); +} + static void my_win_main(void) { @@ -2627,6 +2699,7 @@ my_win_main(void) elm_list_item_append(li, "Genlist 2", NULL, NULL, my_bt_30, NULL); elm_list_item_append(li, "Genlist 3", NULL, NULL, my_bt_31, NULL); elm_list_item_append(li, "Checks", NULL, NULL, my_bt_32, NULL); + elm_list_item_append(li, "Radios", NULL, NULL, my_bt_33, NULL); elm_list_go(li); diff --git a/legacy/elementary/src/lib/Elementary.h.in b/legacy/elementary/src/lib/Elementary.h.in index 65ae7e7113..2b6003743c 100644 --- a/legacy/elementary/src/lib/Elementary.h.in +++ b/legacy/elementary/src/lib/Elementary.h.in @@ -556,6 +556,18 @@ extern "C" { * "changed" - the user toggled the state */ + EAPI Evas_Object *elm_radio_add(Evas_Object *parent); + EAPI void elm_radio_label_set(Evas_Object *obj, const char *label); + EAPI void elm_radio_icon_set(Evas_Object *obj, Evas_Object *icon); + EAPI void elm_radio_group_add(Evas_Object *obj, Evas_Object *group); + EAPI void elm_radio_state_value_set(Evas_Object *obj, int value); + EAPI void elm_radio_value_set(Evas_Object *obj, int value); + EAPI int elm_radio_value_get(Evas_Object *obj); + EAPI void elm_radio_value_pointer_set(Evas_Object *obj, int *valuep); + /* smart callbacks called: + * "changed" - the user toggled the state + */ + #ifdef __cplusplus } #endif @@ -581,8 +593,6 @@ extern "C" { // //// (more widgets/features - medium priority) // * tree feature for genlist widget (like biglist - but items can expand to sub-items) -// * radio + group handling -// * checkbox (like toggle) // * pager (for pushing/popping pages and going back and forward and flipping) // * // * diff --git a/legacy/elementary/src/lib/Makefile.am b/legacy/elementary/src/lib/Makefile.am index 611e50c06e..14cbe7d6ba 100644 --- a/legacy/elementary/src/lib/Makefile.am +++ b/legacy/elementary/src/lib/Makefile.am @@ -50,6 +50,7 @@ elm_carousel.c \ elm_slider.c \ elm_genlist.c \ elm_check.c \ +elm_radio.c \ \ elc_notepad.c \ elc_anchorview.c \ diff --git a/legacy/elementary/src/lib/elm_check.c b/legacy/elementary/src/lib/elm_check.c index d1eddbb8e7..b747c6e92f 100644 --- a/legacy/elementary/src/lib/elm_check.c +++ b/legacy/elementary/src/lib/elm_check.c @@ -19,6 +19,7 @@ static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *eve static void _sub_del(void *data, Evas_Object *obj, void *event_info); static void _signal_check_off(void *data, Evas_Object *obj, const char *emission, const char *source); static void _signal_check_on(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _signal_check_toggle(void *data, Evas_Object *obj, const char *emission, const char *source); static void _del_hook(Evas_Object *obj) @@ -230,4 +231,8 @@ elm_check_state_pointer_set(Evas_Object *obj, Evas_Bool *statep) edje_object_signal_emit(wd->chk, "elm,state,check,off", "elm"); } } + else + { + wd->statep = NULL; + } } diff --git a/legacy/elementary/src/lib/elm_radio.c b/legacy/elementary/src/lib/elm_radio.c new file mode 100644 index 0000000000..3cdc51f2fa --- /dev/null +++ b/legacy/elementary/src/lib/elm_radio.c @@ -0,0 +1,280 @@ +#include +#include "elm_priv.h" + +typedef struct _Widget_Data Widget_Data; +typedef struct _Group Group; + +struct _Group +{ + int value; + int *valuep; + Eina_List *radios; +}; + +struct _Widget_Data +{ + Evas_Object *chk; + Evas_Object *icon; + int value; + const char *label; + Evas_Bool state; + Group *group; +}; + +static void _del_hook(Evas_Object *obj); +static void _theme_hook(Evas_Object *obj); +static void _sizing_eval(Evas_Object *obj); +static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _sub_del(void *data, Evas_Object *obj, void *event_info); +static void _signal_radio_on(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _signal_radio_toggle(void *data, Evas_Object *obj, const char *emission, const char *source); + +static void +_del_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (wd->label) eina_stringshare_del(wd->label); + wd->group->radios = eina_list_remove(wd->group->radios, obj); + if (!wd->group->radios) free(wd->group); + wd->group = NULL; + free(wd); +} + +static void +_theme_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + _elm_theme_set(wd->chk, "radio", "base", "default"); + if (wd->icon) + edje_object_signal_emit(wd->chk, "elm,state,icon,visible", "elm"); + else + edje_object_signal_emit(wd->chk, "elm,state,icon,hidden", "elm"); + if (wd->state) + edje_object_signal_emit(wd->chk, "elm,state,radio,on", "elm"); + else + edje_object_signal_emit(wd->chk, "elm,state,radio,off", "elm"); + if (wd->label) + edje_object_signal_emit(wd->chk, "elm,state,text,visible", "elm"); + else + edje_object_signal_emit(wd->chk, "elm,state,text,hidden", "elm"); + edje_object_part_text_set(wd->chk, "elm.text", wd->label); + edje_object_message_signal_process(wd->chk); + edje_object_scale_set(wd->chk, elm_widget_scale_get(obj) * _elm_config->scale); + _sizing_eval(obj); +} + +static void +_sizing_eval(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1; + + elm_coords_finger_size_adjust(1, &minw, 1, &minh); + edje_object_size_min_restricted_calc(wd->chk, &minw, &minh, minw, minh); + elm_coords_finger_size_adjust(1, &minw, 1, &minh); + evas_object_size_hint_min_set(obj, minw, minh); + evas_object_size_hint_max_set(obj, maxw, maxh); +} + +static void +_changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Widget_Data *wd = elm_widget_data_get(data); + if (obj != wd->icon) return; + edje_object_part_swallow(wd->chk, "elm.swallow.content", obj); + Evas_Coord mw, mh; + evas_object_size_hint_min_get(obj, &mw, &mh); + _sizing_eval(data); +} + +static void +_sub_del(void *data, Evas_Object *obj, void *event_info) +{ + Widget_Data *wd = elm_widget_data_get(obj); + Evas_Object *sub = event_info; + if (sub == wd->icon) + { + edje_object_signal_emit(wd->chk, "elm,state,icon,hidden", "elm"); + evas_object_event_callback_del + (sub, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints); + wd->icon = NULL; + _sizing_eval(obj); + } +} + +static void +_state_set(Evas_Object *obj, Evas_Bool state) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (state != wd->state) + { + wd->state = state; + if (wd->state) + edje_object_signal_emit(wd->chk, "elm,state,radio,on", "elm"); + else + edje_object_signal_emit(wd->chk, "elm,state,radio,off", "elm"); + } +} + +static void +_signal_radio_on(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + Widget_Data *wd = elm_widget_data_get(data); + Eina_List *l; + if (wd->group->value == wd->value) return; + wd->group->value = wd->value; + if (wd->group->valuep) *(wd->group->valuep) = wd->group->value; + for (l = wd->group->radios; l; l = l->next) + { + Widget_Data *wd2 = elm_widget_data_get(l->data); + if (wd2->value == wd->group->value) _state_set(l->data, 1); + else _state_set(l->data, 0); + } + evas_object_smart_callback_call(data, "changed", NULL); +} + +EAPI Evas_Object * +elm_radio_add(Evas_Object *parent) +{ + Evas_Object *obj; + Evas *e; + Widget_Data *wd; + + wd = ELM_NEW(Widget_Data); + e = evas_object_evas_get(parent); + obj = elm_widget_add(e); + elm_widget_data_set(obj, wd); + elm_widget_del_hook_set(obj, _del_hook); + elm_widget_theme_hook_set(obj, _theme_hook); + + wd->chk = edje_object_add(e); + _elm_theme_set(wd->chk, "radio", "base", "default"); + edje_object_signal_callback_add(wd->chk, "elm,action,radio,on", "", _signal_radio_on, obj); + edje_object_signal_callback_add(wd->chk, "elm,action,radio,toggle", "", _signal_radio_on, obj); + elm_widget_resize_object_set(obj, wd->chk); + + evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj); + + wd->group = calloc(1, sizeof(Group)); + wd->group->radios = eina_list_append(wd->group->radios, obj); + wd->state = 0; + + _sizing_eval(obj); + return obj; +} + +EAPI void +elm_radio_label_set(Evas_Object *obj, const char *label) +{ + Widget_Data *wd = elm_widget_data_get(obj); + Evas_Coord mw, mh; + + if (wd->label) eina_stringshare_del(wd->label); + if (label) + { + wd->label = eina_stringshare_add(label); + edje_object_signal_emit(wd->chk, "elm,state,text,visible", "elm"); + edje_object_message_signal_process(wd->chk); + } + else + { + wd->label = NULL; + edje_object_signal_emit(wd->chk, "elm,state,text,hidden", "elm"); + edje_object_message_signal_process(wd->chk); + } + edje_object_part_text_set(wd->chk, "elm.text", label); + _sizing_eval(obj); +} + +EAPI void +elm_radio_icon_set(Evas_Object *obj, Evas_Object *icon) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if ((wd->icon != icon) && (wd->icon)) + elm_widget_sub_object_del(obj, wd->icon); + wd->icon = icon; + if (icon) + { + elm_widget_sub_object_add(obj, icon); + edje_object_part_swallow(wd->chk, "elm.swallow.content", icon); + edje_object_signal_emit(wd->chk, "elm,state,icon,visible", "elm"); + evas_object_event_callback_add(icon, EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _changed_size_hints, obj); + _sizing_eval(obj); + } +} + +EAPI void +elm_radio_group_add(Evas_Object *obj, Evas_Object *group) +{ + Widget_Data *wd = elm_widget_data_get(obj); + Widget_Data *wd2 = elm_widget_data_get(group); + Evas_Bool state = 0; + if (wd->group == wd2->group) return; + wd->group->radios = eina_list_remove(wd->group->radios, obj); + if (!wd->group->radios) free(wd->group); + wd->group = wd2->group; + wd->group->radios = eina_list_append(wd->group->radios, obj); + if (wd->value == wd->group->value) _state_set(obj, 1); + else _state_set(obj, 0); +} + +EAPI void +elm_radio_state_value_set(Evas_Object *obj, int value) +{ + Widget_Data *wd = elm_widget_data_get(obj); +// if (wd->value == value) return; + wd->value = value; + if (wd->value == wd->group->value) _state_set(obj, 1); + else _state_set(obj, 0); +} + +EAPI void +elm_radio_value_set(Evas_Object *obj, int value) +{ + Widget_Data *wd = elm_widget_data_get(obj); + Eina_List *l; + if (value == wd->group->value) return; + wd->group->value = value; + if (wd->group->valuep) *(wd->group->valuep) = wd->group->value; + for (l = wd->group->radios; l; l = l->next) + { + Widget_Data *wd2 = elm_widget_data_get(l->data); + if (wd2->value == wd->group->value) _state_set(l->data, 1); + else _state_set(l->data, 0); + } +} + +EAPI int +elm_radio_value_get(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + return wd->group->value; +} + +EAPI void +elm_radio_value_pointer_set(Evas_Object *obj, int *valuep) +{ + Widget_Data *wd = elm_widget_data_get(obj); + + if (valuep) + { + wd->group->valuep = valuep; + if (*(wd->group->valuep) != wd->group->value) + { + Eina_List *l; + + wd->group->value = *(wd->group->valuep); + for (l = wd->group->radios; l; l = l->next) + { + Widget_Data *wd2 = elm_widget_data_get(l->data); + if (wd2->value == wd->group->value) _state_set(l->data, 1); + else _state_set(l->data, 0); + } + } + } + else + { + wd->group->valuep = NULL; + } +} diff --git a/legacy/elementary/src/lib/elm_toggle.c b/legacy/elementary/src/lib/elm_toggle.c index 49e6522fe4..7e3a1fb617 100644 --- a/legacy/elementary/src/lib/elm_toggle.c +++ b/legacy/elementary/src/lib/elm_toggle.c @@ -238,4 +238,8 @@ elm_toggle_state_pointer_set(Evas_Object *obj, Evas_Bool *statep) edje_object_signal_emit(wd->tgl, "elm,state,toggle,off", "elm"); } } + else + { + wd->statep = NULL; + } }