1 #ifdef HAVE_CONFIG_H
2 # include "elementary_config.h"
3 #endif
4 #include <Elementary.h>
5 
6 typedef struct _Testitem
7 {
8    Elm_Object_Item *item;
9    int mode, onoff;
10 } Testitem;
11 
12 static int rotate_with_resize = 0;
13 static Eina_Bool fullscreen = EINA_FALSE;
14 static Eina_Bool floating = EINA_FALSE;
15 
16 static void
my_bt_38_alpha_on(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)17 my_bt_38_alpha_on(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
18 {
19    Evas_Object *win = data;
20    Evas_Object *bg = evas_object_data_get(win, "bg");
21    evas_object_hide(bg);
22    elm_win_alpha_set(win, EINA_TRUE);
23 }
24 
25 static void
my_bt_38_alpha_off(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)26 my_bt_38_alpha_off(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
27 {
28    Evas_Object *win = data;
29    Evas_Object *bg = evas_object_data_get(win, "bg");
30    evas_object_show(bg);
31    elm_win_alpha_set(win, EINA_FALSE);
32 }
33 
34 static Eina_Bool
_activate_timer_cb(void * data)35 _activate_timer_cb(void *data)
36 {
37    printf("Activate window\n");
38    elm_win_activate(data);
39    return ECORE_CALLBACK_CANCEL;
40 }
41 
42 static Eina_Bool
_deiconify_timer_cb(void * data)43 _deiconify_timer_cb(void *data)
44 {
45    printf("Deiconify window\n");
46    elm_win_iconified_set(data, EINA_FALSE);
47    return ECORE_CALLBACK_CANCEL;
48 }
49 
50 static Eina_Bool
_unwith(void * data)51 _unwith(void *data)
52 {
53    printf("show\n");
54    evas_object_show(data);
55    elm_win_activate(data);
56    return EINA_FALSE;
57 }
58 
59 static void
my_bt_38_withdraw(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)60 my_bt_38_withdraw(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
61 {
62    Evas_Object *win = data;
63    printf("withdraw, current %i\n", elm_win_withdrawn_get(win));
64    elm_win_withdrawn_set(win, EINA_TRUE);
65    ecore_timer_add(10.0, _unwith, win);
66 }
67 
68 static void
my_bt_38_massive(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)69 my_bt_38_massive(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
70 {
71    Evas_Object *win = data;
72    evas_object_resize(win, 4000, 2400);
73 }
74 
75 static void
my_ck_38_resize(void * data EINA_UNUSED,Evas_Object * obj,void * event_info EINA_UNUSED)76 my_ck_38_resize(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
77 {
78    rotate_with_resize = elm_check_state_get(obj);
79 }
80 
81 static void
my_bt_38_rot_0(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)82 my_bt_38_rot_0(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
83 {
84    Evas_Object *win = data;
85    if (rotate_with_resize)
86      elm_win_rotation_with_resize_set(win, 0);
87    else
88      elm_win_rotation_set(win, 0);
89 }
90 
91 static void
my_bt_38_rot_90(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)92 my_bt_38_rot_90(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
93 {
94    Evas_Object *win = data;
95    if (rotate_with_resize)
96      elm_win_rotation_with_resize_set(win, 90);
97    else
98      elm_win_rotation_set(win, 90);
99 }
100 
101 static void
my_bt_38_rot_180(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)102 my_bt_38_rot_180(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
103 {
104    Evas_Object *win = data;
105    if (rotate_with_resize)
106      elm_win_rotation_with_resize_set(win, 180);
107    else
108      elm_win_rotation_set(win, 180);
109 }
110 
111 static void
my_bt_38_rot_270(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)112 my_bt_38_rot_270(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
113 {
114    Evas_Object *win = data;
115    if (rotate_with_resize)
116      elm_win_rotation_with_resize_set(win, 270);
117    else
118      elm_win_rotation_set(win, 270);
119 }
120 
121 static void
my_ck_38_fullscreen(void * data,Evas_Object * obj,void * event_info EINA_UNUSED)122 my_ck_38_fullscreen(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
123 {
124    Evas_Object *win = data;
125    fullscreen = elm_check_state_get(obj);
126    elm_win_fullscreen_set(win, fullscreen);
127 }
128 
129 static void
my_ck_38_borderless(void * data,Evas_Object * obj,void * event_info EINA_UNUSED)130 my_ck_38_borderless(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
131 {
132    Evas_Object *win = data;
133    Eina_Bool borderless = elm_check_state_get(obj);
134    elm_win_borderless_set(win, borderless);
135 }
136 
137 static void
my_ck_38_floating(void * data,Evas_Object * obj,void * event_info EINA_UNUSED)138 my_ck_38_floating(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
139 {
140    Evas_Object *win = data;
141    floating = elm_check_state_get(obj);
142    elm_win_floating_mode_set(win, floating);
143 }
144 
145 static void
my_win_move(void * data EINA_UNUSED,Evas_Object * obj,void * event_info EINA_UNUSED)146 my_win_move(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
147 {
148    Evas_Coord x, y;
149    elm_win_screen_position_get(obj, &x, &y);
150    printf("MOVE - win geom: %4i %4i\n", x, y);
151 }
152 
153 static void
_win_resize(void * data EINA_UNUSED,Evas * e EINA_UNUSED,Evas_Object * obj,void * event_info EINA_UNUSED)154 _win_resize(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
155 {
156    Evas_Coord w, h;
157    evas_object_geometry_get(obj, NULL, NULL, &w, &h);
158    printf("RESIZE - win geom: %4ix%4i\n", w, h);
159 }
160 
161 static void
_win_foc_in(void * data EINA_UNUSED,Evas * e EINA_UNUSED,void * event_info EINA_UNUSED)162 _win_foc_in(void *data EINA_UNUSED, Evas *e EINA_UNUSED, void *event_info EINA_UNUSED)
163 {
164    printf("FOC IN\n");
165 }
166 
167 static void
_win_foc_out(void * data EINA_UNUSED,Evas * e EINA_UNUSED,void * event_info EINA_UNUSED)168 _win_foc_out(void *data EINA_UNUSED, Evas *e EINA_UNUSED, void *event_info EINA_UNUSED)
169 {
170    printf("FOC OUT\n");
171 }
172 
173 static void
_close_win(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)174 _close_win(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
175 {
176    evas_object_del(data);
177 }
178 
179 static void
_move_20_20(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)180 _move_20_20(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
181 {
182    evas_object_move(data, 20, 20);
183 }
184 
185 static void
_move_0_0(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)186 _move_0_0(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
187 {
188    evas_object_move(data, 0, 0);
189 }
190 
191 static void
_bt_win_lower(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)192 _bt_win_lower(void *data, Evas_Object *obj EINA_UNUSED,
193               void *event_info EINA_UNUSED)
194 {
195    printf("Lower window\n");
196    elm_win_lower(data);
197 }
198 
199 static void
_bt_win_iconify_and_activate(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)200 _bt_win_iconify_and_activate(void *data, Evas_Object *obj EINA_UNUSED,
201                              void *event_info EINA_UNUSED)
202 {
203    printf("Iconify window. (current status: %i)\n", elm_win_iconified_get(data));
204    elm_win_iconified_set(data, EINA_TRUE);
205 
206    printf("This window will be activated in 5 seconds.\n");
207    ecore_timer_add(5.0, _activate_timer_cb, data);
208 }
209 
210 static void
_bt_win_iconify_and_deiconify(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)211 _bt_win_iconify_and_deiconify(void *data, Evas_Object *obj EINA_UNUSED,
212                               void *event_info EINA_UNUSED)
213 {
214    printf("Iconify window. (current status: %i)\n", elm_win_iconified_get(data));
215    elm_win_iconified_set(data, EINA_TRUE);
216 
217    printf("This window will be deiconified in 5 seconds.\n");
218    ecore_timer_add(5.0, _deiconify_timer_cb, data);
219 }
220 
221 static void
_bt_win_center_cb(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)222 _bt_win_center_cb(void *data, Evas_Object *obj EINA_UNUSED,
223                   void *event_info EINA_UNUSED)
224 {
225    printf("Center window.\n");
226    elm_win_center(data, EINA_TRUE, EINA_TRUE);
227 }
228 
229 static void
_bt_win_maximize(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)230 _bt_win_maximize(void *data, Evas_Object *obj EINA_UNUSED,
231                  void *event_info EINA_UNUSED)
232 {
233    printf("Maximize\n");
234    elm_win_maximized_set(data, EINA_TRUE);
235 }
236 
237 static void
_bt_win_unmaximize(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)238 _bt_win_unmaximize(void *data, Evas_Object *obj EINA_UNUSED,
239                  void *event_info EINA_UNUSED)
240 {
241    printf("Unmaximize\n");
242    elm_win_maximized_set(data, EINA_FALSE);
243 }
244 
245 static void
_win_state_print_cb(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)246 _win_state_print_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
247 {
248    printf("WIN: %s\n", (char *)data);
249 }
250 
251 static void
_win_state_focus_cb(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)252 _win_state_focus_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
253 {
254    printf("WIN FOCUS: %s\n", (char *)data);
255 }
256 
257 static void
_win_show(void * data EINA_UNUSED,Evas * e EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)258 _win_show(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
259 {
260    printf("win: show\n");
261 }
262 
263 static void
_win_hide(void * data EINA_UNUSED,Evas * e EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)264 _win_hide(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
265 {
266    printf("win: hide\n");
267 }
268 
269 static void
_bt_pressed(void * data,Evas_Object * obj,void * event_info EINA_UNUSED)270 _bt_pressed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
271 {
272    int param = (int)(uintptr_t)(data);
273    Eina_Bool res = EINA_FALSE;
274    Evas_Object *win = efl_key_wref_get(obj, "win");
275 
276    printf("pressed event on Button:%d\n", param);
277 
278    switch (param)
279      {
280       case 1:
281         printf("Top Left\n");
282         res = elm_win_move_resize_start(win, ELM_WIN_MOVE_RESIZE_TOP | ELM_WIN_MOVE_RESIZE_LEFT);
283         break;
284       case 2:
285         printf("Top\n");
286         res = elm_win_move_resize_start(win, ELM_WIN_MOVE_RESIZE_TOP);
287         break;
288       case 3:
289         printf("Top Right\n");
290         res = elm_win_move_resize_start(win, ELM_WIN_MOVE_RESIZE_TOP | ELM_WIN_MOVE_RESIZE_RIGHT);
291         break;
292       case 4:
293         printf("Left\n");
294         res = elm_win_move_resize_start(win, ELM_WIN_MOVE_RESIZE_LEFT);
295         break;
296       case 5:
297         printf("Move win\n");
298         res = elm_win_move_resize_start(win, ELM_WIN_MOVE_RESIZE_MOVE);
299         break;
300       case 6:
301         printf("Right\n");
302         res = elm_win_move_resize_start(win, ELM_WIN_MOVE_RESIZE_RIGHT);
303         break;
304       case 7:
305         printf("Bottom Left\n");
306         res = elm_win_move_resize_start(win, ELM_WIN_MOVE_RESIZE_BOTTOM | ELM_WIN_MOVE_RESIZE_LEFT);
307         break;
308       case 8:
309         printf("Bottom\n");
310         res = elm_win_move_resize_start(win, ELM_WIN_MOVE_RESIZE_BOTTOM);
311         break;
312       case 9:
313         printf("Bottom Right\n");
314         res = elm_win_move_resize_start(win, ELM_WIN_MOVE_RESIZE_BOTTOM | ELM_WIN_MOVE_RESIZE_RIGHT);
315         break;
316       default:
317         printf("No action\n");
318         break;
319      }
320    printf("result = %d\n", res);
321    fflush(stdout);
322 }
323 
324 void
test_win_state(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)325 test_win_state(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
326 {
327    Evas_Object *bg, *sl, *bx, *bx2, *bt, *ck, *tb, *win;
328 
329    win = elm_win_add(NULL, "window-states", ELM_WIN_BASIC);
330    elm_win_title_set(win, "Window States");
331    evas_object_smart_callback_add(win, "moved", my_win_move, NULL);
332    evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _win_resize, NULL);
333    evas_event_callback_add(evas_object_evas_get(win), EVAS_CALLBACK_CANVAS_FOCUS_IN, _win_foc_in, NULL);
334    evas_event_callback_add(evas_object_evas_get(win), EVAS_CALLBACK_CANVAS_FOCUS_OUT, _win_foc_out, NULL);
335    evas_object_event_callback_add(win, EVAS_CALLBACK_SHOW, _win_show, NULL);
336    evas_object_event_callback_add(win, EVAS_CALLBACK_HIDE, _win_hide, NULL);
337    evas_object_smart_callback_add(win, "withdrawn", _win_state_print_cb, "withdrawn");
338    evas_object_smart_callback_add(win, "iconified", _win_state_print_cb, "iconified");
339    evas_object_smart_callback_add(win, "normal", _win_state_print_cb, "normal");
340    evas_object_smart_callback_add(win, "stick", _win_state_print_cb, "stick");
341    evas_object_smart_callback_add(win, "unstick", _win_state_print_cb, "unstick");
342    evas_object_smart_callback_add(win, "fullscreen", _win_state_print_cb, "fullscreen");
343    evas_object_smart_callback_add(win, "unfullscreen", _win_state_print_cb, "unfullscreen");
344    evas_object_smart_callback_add(win, "maximized", _win_state_print_cb, "maximized");
345    evas_object_smart_callback_add(win, "unmaximized", _win_state_print_cb, "unmaximized");
346    evas_object_smart_callback_add(win, "ioerr", _win_state_print_cb, "ioerr");
347    evas_object_smart_callback_add(win, "indicator,prop,changed", _win_state_print_cb, "indicator,prop,changed");
348    evas_object_smart_callback_add(win, "rotation,changed", _win_state_print_cb, "rotation,changed");
349    evas_object_smart_callback_add(win, "profile,changed", _win_state_print_cb, "profile,changed");
350    evas_object_smart_callback_add(win, "focused", _win_state_focus_cb, "focused");
351    evas_object_smart_callback_add(win, "unfocused", _win_state_focus_cb, "unfocused");
352    evas_object_smart_callback_add(win, "focus,out", _win_state_focus_cb, "focus,out");
353    evas_object_smart_callback_add(win, "focus,in", _win_state_focus_cb, "focus,in");
354    evas_object_smart_callback_add(win, "delete,request", _win_state_print_cb, "delete,request");
355    evas_object_smart_callback_add(win, "wm,rotation,changed", _win_state_print_cb, "wm,rotation,changed");
356    elm_win_autodel_set(win, EINA_TRUE);
357 
358    bg = elm_bg_add(win);
359    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
360    elm_win_resize_object_add(win, bg);
361    evas_object_show(bg);
362    evas_object_data_set(win, "bg", bg);
363 
364    bx = elm_box_add(win);
365    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
366    elm_win_resize_object_add(win, bx);
367    evas_object_show(bx);
368 
369    bx2 = elm_box_add(win);
370    elm_box_horizontal_set(bx2, EINA_TRUE);
371    elm_box_homogeneous_set(bx2, EINA_TRUE);
372    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
373    evas_object_size_hint_fill_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
374 
375    bt = elm_button_add(win);
376    elm_object_text_set(bt, "Alpha On");
377    evas_object_smart_callback_add(bt, "clicked", my_bt_38_alpha_on, win);
378    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
379    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
380    elm_box_pack_end(bx2, bt);
381    evas_object_show(bt);
382 
383    bt = elm_button_add(win);
384    elm_object_text_set(bt, "Alpha Off");
385    evas_object_smart_callback_add(bt, "clicked", my_bt_38_alpha_off, win);
386    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
387    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
388    elm_box_pack_end(bx2, bt);
389    evas_object_show(bt);
390 
391    bt = elm_button_add(win);
392    elm_object_text_set(bt, "Withdraw");
393    evas_object_smart_callback_add(bt, "clicked", my_bt_38_withdraw, win);
394    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
395    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
396    elm_box_pack_end(bx2, bt);
397    evas_object_show(bt);
398 
399    bt = elm_button_add(win);
400    elm_object_text_set(bt, "Massive");
401    evas_object_smart_callback_add(bt, "clicked", my_bt_38_massive, win);
402    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
403    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
404    elm_box_pack_end(bx2, bt);
405    evas_object_show(bt);
406 
407    bt = elm_button_add(win);
408    elm_object_text_set(bt, "Move 20 20");
409    evas_object_smart_callback_add(bt, "clicked", _move_20_20, win);
410    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
411    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
412    elm_box_pack_end(bx2, bt);
413    evas_object_show(bt);
414 
415    elm_box_pack_end(bx, bx2);
416    evas_object_show(bx2);
417 
418    bx2 = elm_box_add(win);
419    elm_box_horizontal_set(bx2, EINA_TRUE);
420    elm_box_homogeneous_set(bx2, EINA_TRUE);
421    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
422    evas_object_size_hint_fill_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
423 
424    bt = elm_button_add(win);
425    elm_object_text_set(bt, "Lower");
426    evas_object_smart_callback_add(bt, "clicked", _bt_win_lower, win);
427    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
428    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
429    elm_box_pack_end(bx2, bt);
430    evas_object_show(bt);
431 
432    bt = elm_button_add(win);
433    elm_object_text_set(bt, "Iconify + Act");
434    evas_object_smart_callback_add(bt, "clicked",
435                                   _bt_win_iconify_and_activate, win);
436    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
437    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
438    elm_box_pack_end(bx2, bt);
439    evas_object_show(bt);
440 
441    bt = elm_button_add(bx2);
442    elm_object_text_set(bt, "Iconify + De");
443    evas_object_smart_callback_add(bt, "clicked",
444                                   _bt_win_iconify_and_deiconify, win);
445    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
446    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
447    elm_box_pack_end(bx2, bt);
448    evas_object_show(bt);
449 
450    bt = elm_button_add(bx2);
451    elm_object_text_set(bt, "Maximize");
452    evas_object_smart_callback_add(bt, "clicked",
453                                   _bt_win_maximize, win);
454    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
455    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
456    elm_box_pack_end(bx2, bt);
457    evas_object_show(bt);
458 
459    bt = elm_button_add(bx2);
460    elm_object_text_set(bt, "Unmaximize");
461    evas_object_smart_callback_add(bt, "clicked",
462                                   _bt_win_unmaximize, win);
463    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
464    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
465    elm_box_pack_end(bx2, bt);
466    evas_object_show(bt);
467 
468    bt = elm_button_add(win);
469    elm_object_text_set(bt, "Center");
470    evas_object_smart_callback_add(bt, "clicked",
471                                   _bt_win_center_cb, win);
472    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
473    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
474    elm_box_pack_end(bx2, bt);
475    evas_object_show(bt);
476 
477    elm_box_pack_end(bx, bx2);
478    evas_object_show(bx2);
479 
480    bx2 = elm_box_add(win);
481    elm_box_horizontal_set(bx2, EINA_TRUE);
482    elm_box_homogeneous_set(bx2, EINA_TRUE);
483    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
484    evas_object_size_hint_fill_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
485 
486    sl = elm_slider_add(win);
487    elm_object_text_set(sl, "Test");
488    elm_slider_span_size_set(sl, 100);
489    evas_object_size_hint_align_set(sl, 0.5, 0.5);
490    evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
491    elm_slider_indicator_format_set(sl, "%3.0f");
492    elm_slider_min_max_set(sl, 50, 150);
493    elm_slider_value_set(sl, 50);
494    elm_slider_inverted_set(sl, EINA_TRUE);
495    elm_box_pack_end(bx2, sl);
496    evas_object_show(sl);
497 
498    elm_box_pack_end(bx, bx2);
499    evas_object_show(bx2);
500 
501    ck = elm_check_add(win);
502    elm_object_text_set(ck, "resize");
503    elm_check_state_set(ck, rotate_with_resize);
504    evas_object_smart_callback_add(ck, "changed", my_ck_38_resize, win);
505    evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
506    evas_object_size_hint_align_set(ck, 0.02, 0.99);
507    evas_object_show(ck);
508    elm_box_pack_end(bx, ck);
509 
510    ck = elm_check_add(win);
511    elm_object_text_set(ck, "fullscreen");
512    elm_check_state_set(ck, fullscreen);
513    evas_object_smart_callback_add(ck, "changed", my_ck_38_fullscreen, win);
514    evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
515    evas_object_size_hint_align_set(ck, 0.02, 0.99);
516    evas_object_show(ck);
517    elm_box_pack_end(bx, ck);
518 
519    ck = elm_check_add(win);
520    elm_object_text_set(ck, "borderless");
521    elm_check_state_set(ck, fullscreen);
522    evas_object_smart_callback_add(ck, "changed", my_ck_38_borderless, win);
523    evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
524    evas_object_size_hint_align_set(ck, 0.02, 0.99);
525    evas_object_show(ck);
526    elm_box_pack_end(bx, ck);
527 
528    ck = elm_check_add(win);
529    elm_object_text_set(ck, "floating");
530    elm_check_state_set(ck, floating);
531    evas_object_smart_callback_add(ck, "changed", my_ck_38_floating, win);
532    evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
533    evas_object_size_hint_align_set(ck, 0.02, 0.99);
534    evas_object_show(ck);
535    elm_box_pack_end(bx, ck);
536 
537    bx2 = elm_box_add(win);
538    elm_box_horizontal_set(bx2, EINA_TRUE);
539    elm_box_homogeneous_set(bx2, EINA_TRUE);
540    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
541    evas_object_size_hint_fill_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
542 
543    bt = elm_button_add(win);
544    elm_object_text_set(bt, "Rot 0");
545    evas_object_smart_callback_add(bt, "clicked", my_bt_38_rot_0, win);
546    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
547    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
548    elm_box_pack_end(bx2, bt);
549    evas_object_show(bt);
550 
551    bt = elm_button_add(win);
552    elm_object_text_set(bt, "Rot 90");
553    evas_object_smart_callback_add(bt, "clicked", my_bt_38_rot_90, win);
554    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
555    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
556    elm_box_pack_end(bx2, bt);
557    evas_object_show(bt);
558 
559    bt = elm_button_add(win);
560    elm_object_text_set(bt, "Rot 180");
561    evas_object_smart_callback_add(bt, "clicked", my_bt_38_rot_180, win);
562    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
563    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
564    elm_box_pack_end(bx2, bt);
565    evas_object_show(bt);
566 
567    bt = elm_button_add(win);
568    elm_object_text_set(bt, "Rot 270");
569    evas_object_smart_callback_add(bt, "clicked", my_bt_38_rot_270, win);
570    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
571    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
572    elm_box_pack_end(bx2, bt);
573    evas_object_show(bt);
574 
575    bt = elm_button_add(win);
576    elm_object_text_set(bt, "Move 0 0");
577    evas_object_smart_callback_add(bt, "clicked", _move_0_0, win);
578    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
579    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
580    elm_box_pack_end(bx2, bt);
581    evas_object_show(bt);
582 
583    elm_box_pack_end(bx, bx2);
584    evas_object_show(bx2);
585 
586    tb = elm_table_add(win);
587    evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
588    evas_object_size_hint_fill_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
589 
590    evas_object_show(tb);
591 
592 #define INTPTR(i) (void *)(intptr_t)(i)
593 
594    bt = elm_button_add(win);
595    elm_object_text_set(bt, "Top Left");
596    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
597    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
598    efl_key_wref_set(bt, "win", win);
599    evas_object_smart_callback_add(bt, "pressed", _bt_pressed, INTPTR(1));
600    elm_table_pack(tb, bt, 0, 0, 1, 1);
601    efl_key_wref_set(bt, "win", win);
602    evas_object_show(bt);
603 
604    bt = elm_button_add(win);
605    elm_object_text_set(bt, "Top");
606    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
607    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
608    evas_object_smart_callback_add(bt, "pressed", _bt_pressed, INTPTR(2));
609    elm_table_pack(tb, bt, 1, 0, 1, 1);
610    efl_key_wref_set(bt, "win", win);
611    evas_object_show(bt);
612 
613    bt = elm_button_add(win);
614    elm_object_text_set(bt, "Top Right");
615    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
616    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
617    evas_object_smart_callback_add(bt, "pressed", _bt_pressed, INTPTR(3));
618    elm_table_pack(tb, bt, 2, 0, 1, 1);
619    efl_key_wref_set(bt, "win", win);
620    evas_object_show(bt);
621 
622    bt = elm_button_add(win);
623    elm_object_text_set(bt, "Left");
624    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
625    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
626    evas_object_smart_callback_add(bt, "pressed", _bt_pressed, INTPTR(4));
627    elm_table_pack(tb, bt, 0, 1, 1, 1);
628    efl_key_wref_set(bt, "win", win);
629    evas_object_show(bt);
630 
631    bt = elm_button_add(win);
632    elm_object_text_set(bt, "Move");
633    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
634    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
635    evas_object_smart_callback_add(bt, "pressed", _bt_pressed, INTPTR(5));
636    elm_table_pack(tb, bt, 1, 1, 1, 1);
637    efl_key_wref_set(bt, "win", win);
638    evas_object_show(bt);
639 
640    bt = elm_button_add(win);
641    elm_object_text_set(bt, "Right");
642    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
643    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
644    evas_object_smart_callback_add(bt, "pressed", _bt_pressed, INTPTR(6));
645    elm_table_pack(tb, bt, 2, 1, 1, 1);
646    efl_key_wref_set(bt, "win", win);
647    evas_object_show(bt);
648 
649    bt = elm_button_add(win);
650    elm_object_text_set(bt, "Bot Left");
651    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
652    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
653    evas_object_smart_callback_add(bt, "pressed", _bt_pressed, INTPTR(7));
654    elm_table_pack(tb, bt, 0, 2, 1, 1);
655    efl_key_wref_set(bt, "win", win);
656    evas_object_show(bt);
657 
658    bt = elm_button_add(win);
659    elm_object_text_set(bt, "Bottom");
660    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
661    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
662    evas_object_smart_callback_add(bt, "pressed", _bt_pressed, INTPTR(8));
663    elm_table_pack(tb, bt, 1, 2, 1, 1);
664    efl_key_wref_set(bt, "win", win);
665    evas_object_show(bt);
666 
667    bt = elm_button_add(win);
668    elm_object_text_set(bt, "Bot Right");
669    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
670    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
671    evas_object_smart_callback_add(bt, "pressed", _bt_pressed, INTPTR(9));
672    elm_table_pack(tb, bt, 2, 2, 1, 1);
673    efl_key_wref_set(bt, "win", win);
674    evas_object_show(bt);
675 
676 #undef I
677 
678    elm_box_pack_end(bx, tb);
679 
680    evas_object_resize(win, 280, 400);
681    evas_object_show(win);
682 }
683 
684 void
test_win_state2(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)685 test_win_state2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
686 {
687    Evas_Object *win, *bg, *sl, *bx, *bx2, *bt, *ck;
688    char buf[PATH_MAX];
689 
690    win = elm_win_add(NULL, "window-states2", ELM_WIN_BASIC);
691    elm_win_override_set(win, EINA_TRUE);
692    evas_object_smart_callback_add(win, "moved", my_win_move, NULL);
693    evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _win_resize, NULL);
694    elm_win_title_set(win, "Window States 2");
695    elm_win_autodel_set(win, EINA_TRUE);
696 
697    bg = elm_bg_add(win);
698    snprintf(buf, sizeof(buf), "%s/images/sky_02.jpg", elm_app_data_dir_get());
699    elm_bg_file_set(bg, buf, NULL);
700    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
701    elm_win_resize_object_add(win, bg);
702    evas_object_show(bg);
703    evas_object_data_set(win, "bg", bg);
704 
705    bx = elm_box_add(win);
706    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
707    elm_win_resize_object_add(win, bx);
708    evas_object_show(bx);
709 
710    bx2 = elm_box_add(win);
711    elm_box_horizontal_set(bx2, EINA_TRUE);
712    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
713    evas_object_size_hint_fill_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
714 
715    bt = elm_button_add(win);
716    elm_object_text_set(bt, "Alpha On");
717    evas_object_smart_callback_add(bt, "clicked", my_bt_38_alpha_on, win);
718    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
719    evas_object_size_hint_weight_set(bt, 0.0, 0.0);
720    elm_box_pack_end(bx2, bt);
721    evas_object_show(bt);
722 
723    bt = elm_button_add(win);
724    elm_object_text_set(bt, "Alpha Off");
725    evas_object_smart_callback_add(bt, "clicked", my_bt_38_alpha_off, win);
726    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
727    evas_object_size_hint_weight_set(bt, 0.0, 0.0);
728    elm_box_pack_end(bx2, bt);
729    evas_object_show(bt);
730 
731    bt = elm_button_add(win);
732    elm_object_text_set(bt, "Close");
733    evas_object_smart_callback_add(bt, "clicked", _close_win, win);
734    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
735    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
736    elm_box_pack_end(bx2, bt);
737    evas_object_show(bt);
738 
739    bt = elm_button_add(win);
740    elm_object_text_set(bt, "Move 20 20");
741    evas_object_smart_callback_add(bt, "clicked", _move_20_20, win);
742    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
743    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
744    elm_box_pack_end(bx2, bt);
745    evas_object_show(bt);
746 
747    elm_box_pack_end(bx, bx2);
748    evas_object_show(bx2);
749 
750    bx2 = elm_box_add(win);
751    elm_box_horizontal_set(bx2, EINA_TRUE);
752    elm_box_homogeneous_set(bx2, EINA_TRUE);
753    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
754    evas_object_size_hint_fill_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
755 
756    sl = elm_slider_add(win);
757    elm_object_text_set(sl, "Override Redirect");
758    elm_slider_span_size_set(sl, 100);
759    evas_object_size_hint_align_set(sl, 0.5, 0.5);
760    evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
761    elm_slider_indicator_format_set(sl, "%3.0f");
762    elm_slider_min_max_set(sl, 50, 150);
763    elm_slider_value_set(sl, 50);
764    elm_slider_inverted_set(sl, EINA_TRUE);
765    elm_box_pack_end(bx2, sl);
766    evas_object_show(sl);
767 
768    elm_box_pack_end(bx, bx2);
769    evas_object_show(bx2);
770 
771    ck = elm_check_add(win);
772    elm_object_text_set(ck, "resize");
773    elm_check_state_set(ck, rotate_with_resize);
774    evas_object_smart_callback_add(ck, "changed", my_ck_38_resize, win);
775    evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
776    evas_object_size_hint_align_set(ck, 0.02, 0.99);
777    evas_object_show(ck);
778    elm_box_pack_end(bx, ck);
779 
780    bx2 = elm_box_add(win);
781    elm_box_horizontal_set(bx2, EINA_TRUE);
782    elm_box_homogeneous_set(bx2, EINA_TRUE);
783    evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
784    evas_object_size_hint_fill_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
785 
786    bt = elm_button_add(win);
787    elm_object_text_set(bt, "Rot 0");
788    evas_object_smart_callback_add(bt, "clicked", my_bt_38_rot_0, win);
789    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
790    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
791    elm_box_pack_end(bx2, bt);
792    evas_object_show(bt);
793 
794    bt = elm_button_add(win);
795    elm_object_text_set(bt, "Rot 90");
796    evas_object_smart_callback_add(bt, "clicked", my_bt_38_rot_90, win);
797    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
798    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
799    elm_box_pack_end(bx2, bt);
800    evas_object_show(bt);
801 
802    bt = elm_button_add(win);
803    elm_object_text_set(bt, "Rot 180");
804    evas_object_smart_callback_add(bt, "clicked", my_bt_38_rot_180, win);
805    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
806    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
807    elm_box_pack_end(bx2, bt);
808    evas_object_show(bt);
809 
810    bt = elm_button_add(win);
811    elm_object_text_set(bt, "Rot 270");
812    evas_object_smart_callback_add(bt, "clicked", my_bt_38_rot_270, win);
813    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
814    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
815    elm_box_pack_end(bx2, bt);
816    evas_object_show(bt);
817 
818    bt = elm_button_add(win);
819    elm_object_text_set(bt, "Move 0 0");
820    evas_object_smart_callback_add(bt, "clicked", _move_0_0, win);
821    evas_object_size_hint_fill_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
822    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
823    elm_box_pack_end(bx2, bt);
824    evas_object_show(bt);
825 
826    elm_box_pack_end(bx, bx2);
827    evas_object_show(bx2);
828 
829    evas_object_resize(win, 320, 480);
830    evas_object_show(win);
831 }
832