1 #ifdef HAVE_CONFIG_H
2 # include "elementary_config.h"
3 #endif
4 #include <Elementary.h>
5 
6 static void
_rd_changed_cb(void * data EINA_UNUSED,Evas_Object * obj,void * event_info EINA_UNUSED)7 _rd_changed_cb(void *data EINA_UNUSED, Evas_Object *obj,
8                void *event_info EINA_UNUSED)
9 {
10    printf("radio(%p) value : %d\n", obj, elm_radio_value_get(obj));
11 }
12 
13 static void
_rdg_changed_cb(void * data EINA_UNUSED,Evas_Object * obj,void * event_info EINA_UNUSED)14 _rdg_changed_cb(void *data EINA_UNUSED, Evas_Object *obj,
15                 void *event_info EINA_UNUSED)
16 {
17    printf("radio(%p) group value : %d\n", obj, elm_radio_value_get(obj));
18 }
19 
20 static void
_group_1_create(Evas_Object * bx,const char * style)21 _group_1_create(Evas_Object *bx, const char *style)
22 {
23    Evas_Object *bx2, *fr, *ic, *rd, *rdg;
24    char buf[PATH_MAX];
25 
26    fr = elm_frame_add(bx);
27    elm_object_text_set(fr, "Radio Group 1");
28    evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
29    evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
30    elm_box_pack_end(bx, fr);
31    evas_object_show(fr);
32 
33    bx2 = elm_box_add(fr);
34    elm_object_content_set(fr, bx2);
35    evas_object_show(bx2);
36 
37    // radio 1
38    ic = elm_icon_add(bx2);
39    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
40    elm_image_file_set(ic, buf, NULL);
41    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
42 
43    rd = elm_radio_add(bx2);
44    elm_object_style_set(rd, style);
45    elm_radio_state_value_set(rd, 0);
46    evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
47    evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, 0.5);
48    elm_object_text_set(rd, "Icon sized to radio");
49    elm_object_part_content_set(rd, "icon", ic);
50    elm_box_pack_end(bx2, rd);
51    evas_object_show(rd);
52    evas_object_smart_callback_add(rd, "changed", _rd_changed_cb, NULL);
53 
54    // rdg radio group
55    rdg = rd;
56    evas_object_smart_callback_add(rdg, "changed", _rdg_changed_cb, NULL);
57 
58    ic = elm_icon_add(bx2);
59    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
60    elm_image_file_set(ic, buf, NULL);
61    elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
62 
63    rd = elm_radio_add(bx2);
64    elm_object_style_set(rd, style);
65    elm_radio_state_value_set(rd, 1);
66    elm_radio_group_add(rd, rdg);
67    elm_object_text_set(rd, "Icon no scale");
68    elm_object_part_content_set(rd, "icon", ic);
69    elm_box_pack_end(bx2, rd);
70    evas_object_show(rd);
71    evas_object_smart_callback_add(rd, "changed", _rd_changed_cb, NULL);
72 
73    rd = elm_radio_add(bx2);
74    elm_object_style_set(rd, style);
75    elm_radio_state_value_set(rd, 2);
76    elm_radio_group_add(rd, rdg); // add a radio button rd to a radio group rdg.
77    elm_object_text_set(rd, "Label Only");
78    elm_box_pack_end(bx2, rd);
79    evas_object_show(rd);
80    evas_object_smart_callback_add(rd, "changed", _rd_changed_cb, NULL);
81 
82    rd = elm_radio_add(bx2);
83    elm_object_style_set(rd, style);
84    elm_radio_state_value_set(rd, 3);
85    elm_radio_group_add(rd, rdg); // add a radio button rd to a radio group rdg.
86    elm_object_text_set(rd, "Disabled");
87    elm_object_disabled_set(rd, EINA_TRUE);
88    elm_box_pack_end(bx2, rd);
89    evas_object_show(rd);
90    evas_object_smart_callback_add(rd, "changed", _rd_changed_cb, NULL);
91 
92    ic = elm_icon_add(bx2);
93    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
94    elm_image_file_set(ic, buf, NULL);
95    elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
96 
97    rd = elm_radio_add(bx2);
98    elm_object_style_set(rd, style);
99    elm_radio_state_value_set(rd, 4);
100    elm_radio_group_add(rd, rdg); // add a radio button rd to a radio group rdg.
101    elm_object_part_content_set(rd, "icon", ic);
102    elm_box_pack_end(bx2, rd);
103    evas_object_show(rd);
104    evas_object_smart_callback_add(rd, "changed", _rd_changed_cb, NULL);
105 
106    ic = elm_icon_add(bx2);
107    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
108    elm_image_file_set(ic, buf, NULL);
109    elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
110 
111    rd = elm_radio_add(bx2);
112    elm_object_style_set(rd, style);
113    elm_radio_state_value_set(rd, 5);
114    elm_radio_group_add(rd, rdg); // add a radio button rd to a radio group rdg.
115    elm_object_part_content_set(rd, "icon", ic);
116    elm_object_disabled_set(rd, EINA_TRUE);
117    elm_box_pack_end(bx2, rd);
118    evas_object_show(rd);
119    evas_object_smart_callback_add(rd, "changed", _rd_changed_cb, NULL);
120 
121    elm_radio_value_set(rdg, 2);
122 }
123 
124 static void
_group_2_create(Evas_Object * bx,const char * style)125 _group_2_create(Evas_Object *bx, const char *style)
126 {
127    Evas_Object *bx2, *fr, *rd, *rdg;
128 
129    fr = elm_frame_add(bx);
130    elm_object_text_set(fr, "Radio Group 2");
131    evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
132    evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
133    elm_box_pack_end(bx, fr);
134    evas_object_show(fr);
135 
136    bx2 = elm_box_add(fr);
137    elm_object_content_set(fr, bx2);
138    elm_box_align_set(bx2, 0.0, 0.0);
139    evas_object_show(bx2);
140 
141    // radio 1
142    rd = elm_radio_add(bx2);
143    elm_object_style_set(rd, style);
144    elm_radio_state_value_set(rd, 1);
145    evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
146    evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, 0.5);
147    elm_object_text_set(rd, "Radio Group Test #1");
148    elm_box_pack_end(bx2, rd);
149    evas_object_show(rd);
150 
151    // rdg radio group
152    rdg = rd;
153    // this works only for the first radio object
154    evas_object_smart_callback_add(rdg, "changed", _rdg_changed_cb, NULL);
155 
156    // radio 2
157    rd = elm_radio_add(bx2);
158    elm_object_style_set(rd, style);
159    elm_radio_state_value_set(rd, 2);
160    evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
161    evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, 0.5);
162    elm_object_text_set(rd, "Radio Group Test #2");
163    elm_radio_group_add(rd, rdg);
164    elm_box_pack_end(bx2, rd);
165    evas_object_show(rd);
166 
167    // radio 2
168    rd = elm_radio_add(bx2);
169    elm_object_style_set(rd, style);
170    elm_radio_state_value_set(rd, 3);
171    evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, 0.0);
172    evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, 0.5);
173    elm_object_text_set(rd, "Radio Group Test #3");
174    elm_radio_group_add(rd, rdg);
175    elm_box_pack_end(bx2, rd);
176    evas_object_show(rd);
177 }
178 
179 void
test_radio(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)180 test_radio(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
181            void *event_info EINA_UNUSED)
182 {
183    Evas_Object *win, *bx, *bx0;
184 
185    win = elm_win_util_standard_add("radios", "Radios");
186    elm_win_autodel_set(win, EINA_TRUE);
187 
188    bx0 = elm_box_add(win);
189    elm_box_horizontal_set(bx0, EINA_TRUE);
190    elm_win_resize_object_add(win, bx0);
191    evas_object_show(bx0);
192 
193    bx = elm_box_add(win);
194    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
195    elm_box_horizontal_set(bx, EINA_TRUE);
196    elm_box_pack_end(bx0, bx);
197    evas_object_show(bx);
198 
199    _group_1_create(bx, "default");
200    _group_2_create(bx, "default");
201 
202    bx = elm_box_add(win);
203    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
204    elm_box_horizontal_set(bx, EINA_TRUE);
205    elm_box_pack_end(bx0, bx);
206    evas_object_show(bx);
207 
208    _group_1_create(bx, "plain");
209    _group_2_create(bx, "plain");
210 
211    bx = elm_box_add(win);
212    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
213    elm_box_horizontal_set(bx, EINA_TRUE);
214    elm_box_pack_end(bx0, bx);
215    evas_object_show(bx);
216 
217    _group_1_create(bx, "icon");
218    _group_2_create(bx, "icon");
219 
220    evas_object_show(win);
221 }
222