1 #ifdef HAVE_CONFIG_H
2 # include "elementary_config.h"
3 #endif
4 #include <Elementary.h>
5 
6 static Eina_Bool eb;
7 
8 static void
changed_cb(void * data,Evas_Object * obj,void * event_info EINA_UNUSED)9 changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
10 {
11    Evas_Object *ck2 = data;
12    printf("ck %p to %i\n", obj, elm_check_state_get(obj));
13    elm_check_state_set(ck2, elm_check_state_get(obj));
14    printf("ck2 %p is now %i\n", ck2, elm_check_state_get(ck2));
15 }
16 
17 static void
state_changed_cb(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)18 state_changed_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
19 {
20    printf("State Pointer Value: %d\n", eb);
21 }
22 
23 static void
state_changed_cb2(void * data EINA_UNUSED,Evas_Object * obj,void * event_info EINA_UNUSED)24 state_changed_cb2(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
25 {
26    if (elm_check_state_get(obj) == EINA_FALSE)
27       elm_object_text_set(obj, NULL);
28    else
29       elm_object_text_set(obj, "text is visible when check state is true.");
30 }
31 
32 static void
check_style(Evas_Object * win,Evas_Object * bx,const char * style)33 check_style(Evas_Object *win, Evas_Object *bx, const char *style)
34 {
35    Evas_Object *ic, *ck, *ck0;
36    char buf[PATH_MAX];
37 
38    ic = elm_icon_add(win);
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    ck = elm_check_add(win);
43    elm_object_style_set(ck, style);
44    elm_object_text_set(ck, "Icon sized to check");
45    elm_object_part_content_set(ck, "icon", ic);
46    elm_check_state_set(ck, EINA_TRUE);
47    elm_box_pack_end(bx, ck);
48    evas_object_show(ck);
49    evas_object_show(ic);
50 
51    ck0 = ck;
52 
53    ic = elm_icon_add(win);
54    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
55    elm_image_file_set(ic, buf, NULL);
56    elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
57    ck = elm_check_add(win);
58    elm_object_style_set(ck, style);
59    elm_object_text_set(ck, "Icon not resizable");
60    elm_object_part_content_set(ck, "icon", ic);
61    elm_box_pack_end(bx, ck);
62    evas_object_show(ck);
63    evas_object_show(ic);
64 
65    evas_object_smart_callback_add(ck, "changed", changed_cb, ck0);
66 
67    ck = elm_check_add(win);
68    elm_object_style_set(ck, style);
69    elm_object_text_set(ck, "Label Only");
70    elm_box_pack_end(bx, ck);
71    evas_object_show(ck);
72 
73    ck = elm_check_add(win);
74    elm_object_style_set(ck, style);
75    elm_object_text_set(ck, "Use State Pointer");
76    elm_check_state_pointer_set(ck, &eb);
77    elm_box_pack_end(bx, ck);
78    evas_object_show(ck);
79 
80    ck = elm_check_add(win);
81    elm_object_style_set(ck, style);
82    elm_object_text_set(ck, "Print State Pointer Value");
83    elm_box_pack_end(bx, ck);
84    evas_object_show(ck);
85    evas_object_smart_callback_add(ck, "changed", state_changed_cb, NULL);
86 
87    ic = elm_icon_add(win);
88    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
89    elm_image_file_set(ic, buf, NULL);
90    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
91    ck = elm_check_add(win);
92    elm_object_style_set(ck, style);
93    elm_object_text_set(ck, "Disabled check");
94    elm_object_part_content_set(ck, "icon", ic);
95    elm_check_state_set(ck, EINA_TRUE);
96    elm_box_pack_end(bx, ck);
97    elm_object_disabled_set(ck, EINA_TRUE);
98    evas_object_show(ck);
99    evas_object_show(ic);
100 
101    ck = elm_check_add(win);
102    elm_object_style_set(ck, style);
103    elm_box_pack_end(bx, ck);
104    elm_object_disabled_set(ck, EINA_TRUE);
105    evas_object_show(ck);
106 
107    ic = elm_icon_add(win);
108    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
109    elm_image_file_set(ic, buf, NULL);
110    elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
111    ck = elm_check_add(win);
112    elm_object_style_set(ck, style);
113    elm_object_part_content_set(ck, "icon", ic);
114    elm_box_pack_end(bx, ck);
115    evas_object_show(ck);
116    evas_object_show(ic);
117 
118    ck = elm_check_add(win);
119    elm_object_style_set(ck, style);
120    elm_box_pack_end(bx, ck);
121    evas_object_show(ck);
122 
123    ck = elm_check_add(win);
124    elm_object_style_set(ck, style);
125    elm_box_pack_end(bx, ck);
126    elm_object_text_set(ck, "text is visible when check state is true.");
127    elm_check_state_set(ck, EINA_TRUE);
128    evas_object_show(ck);
129    evas_object_smart_callback_add(ck, "changed", state_changed_cb2, NULL);
130 }
131 
132 void
test_check(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)133 test_check(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
134 {
135    Evas_Object *win, *bx, *bx0;
136 
137    win = elm_win_util_standard_add("check", "Check");
138    elm_win_autodel_set(win, EINA_TRUE);
139 
140    bx0 = elm_box_add(win);
141    evas_object_size_hint_weight_set(bx0, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
142    elm_box_horizontal_set(bx0, EINA_TRUE);
143    elm_win_resize_object_add(win, bx0);
144    evas_object_show(bx0);
145 
146    bx = elm_box_add(win);
147    elm_box_horizontal_set(bx, EINA_FALSE);
148    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
149    elm_box_pack_end(bx0, bx);
150    evas_object_show(bx);
151 
152    check_style(win, bx, "default");
153 
154    bx = elm_box_add(win);
155    elm_box_horizontal_set(bx, EINA_FALSE);
156    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
157    elm_box_pack_end(bx0, bx);
158    evas_object_show(bx);
159 
160    check_style(win, bx, "plain");
161 
162    bx = elm_box_add(win);
163    elm_box_horizontal_set(bx, EINA_FALSE);
164    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
165    elm_box_pack_end(bx0, bx);
166    evas_object_show(bx);
167 
168    check_style(win, bx, "icon");
169 
170    evas_object_show(win);
171 }
172 
173 void
test_check_toggle(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)174 test_check_toggle(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
175 {
176    Evas_Object *win, *bx, *ic, *tg;
177    char buf[PATH_MAX];
178 
179    win = elm_win_util_standard_add("check-toggle", "Check Toggle");
180    elm_win_autodel_set(win, EINA_TRUE);
181 
182    bx = elm_box_add(win);
183    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
184    elm_win_resize_object_add(win, bx);
185    evas_object_show(bx);
186 
187    ic = elm_icon_add(win);
188    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
189    elm_image_file_set(ic, buf, NULL);
190    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
191 
192    tg = elm_check_add(win);
193    elm_object_style_set(tg, "toggle");
194    elm_object_text_set(tg, "Icon sized to toggle");
195    elm_object_part_content_set(tg, "icon", ic);
196    elm_check_state_set(tg, EINA_TRUE);
197    elm_object_part_text_set(tg, "on", "Yes");
198    elm_object_part_text_set(tg, "off", "No");
199    elm_box_pack_end(bx, tg);
200    evas_object_show(tg);
201    evas_object_show(ic);
202 
203    ic = elm_icon_add(win);
204    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
205    elm_image_file_set(ic, buf, NULL);
206    elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
207 
208    tg = elm_check_add(win);
209    elm_object_style_set(tg, "toggle");
210    elm_object_text_set(tg, "Icon no scale");
211    elm_object_part_content_set(tg, "icon", ic);
212    elm_box_pack_end(bx, tg);
213    evas_object_show(tg);
214    evas_object_show(ic);
215 
216    ic = elm_icon_add(win);
217    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
218    elm_image_file_set(ic, buf, NULL);
219    elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
220 
221    tg = elm_check_add(win);
222    elm_object_style_set(tg, "toggle");
223    elm_object_text_set(tg, "Disabled toggle");
224    elm_object_part_content_set(tg, "icon", ic);
225    elm_object_disabled_set(tg, EINA_TRUE);
226    elm_box_pack_end(bx, tg);
227    evas_object_show(tg);
228    evas_object_show(ic);
229 
230    tg = elm_check_add(win);
231    elm_object_style_set(tg, "toggle");
232    elm_object_text_set(tg, "Label Only");
233    elm_object_part_text_set(tg, "on", "Big long fun times label");
234    elm_object_part_text_set(tg, "off", "Small long happy fun label");
235    elm_box_pack_end(bx, tg);
236    evas_object_show(tg);
237 
238    ic = elm_icon_add(win);
239    snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
240    elm_image_file_set(ic, buf, NULL);
241    elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
242 
243    tg = elm_check_add(win);
244    elm_object_style_set(tg, "toggle");
245    elm_object_part_content_set(tg, "icon", ic);
246    elm_box_pack_end(bx, tg);
247    evas_object_show(tg);
248    evas_object_show(ic);
249 
250    evas_object_show(win);
251 }
252