1 /* Test for Focus Chain Linear*/
2 #include <Elementary.h>
4 # include "elementary_config.h"
6 #ifndef ELM_LIB_QUICKLAUNCH
8 static Evas_Object *foc = NULL;
11 _foc(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
14 printf("foc -> %p\n", foc);
18 _unfoc(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
21 printf("foc -> %p\n", foc);
25 _add(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
27 Evas_Object *bx = data, *en;
29 en = elm_entry_add(elm_object_top_widget_get(bx));
30 elm_entry_scrollable_set(en, EINA_TRUE);
31 elm_object_text_set(en, "An entry");
32 evas_object_smart_callback_add(en, "focused", _foc, NULL);
33 evas_object_smart_callback_add(en, "unfocused", _unfoc, NULL);
34 evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
35 evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
37 elm_entry_single_line_set(en, 1);
39 elm_entry_single_line_set(en, EINA_TRUE);
40 >>>>>>> remotes/origin/upstream
41 elm_box_pack_start(bx, en);
46 _del(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
48 if (foc) evas_object_del(foc);
52 _hide(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
54 if (foc) evas_object_hide(foc);
58 test_focus3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
60 Evas_Object *win, *bg, *bx, *bt, *en;
62 win = elm_win_add(NULL, "focus3", ELM_WIN_BASIC);
63 elm_win_title_set(win, "Focus 3");
64 elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
65 evas_object_resize(win, 320, 480);
66 elm_win_autodel_set(win, EINA_TRUE);
69 elm_win_resize_object_add(win, bg);
70 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
73 bx = elm_box_add(win);
74 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
75 elm_win_resize_object_add(win, bx);
78 en = elm_entry_add(win);
79 elm_entry_scrollable_set(en, EINA_TRUE);
80 elm_object_text_set(en, "An entry");
81 evas_object_smart_callback_add(en, "focused", _foc, NULL);
82 evas_object_smart_callback_add(en, "unfocused", _unfoc, NULL);
83 evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
84 evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
86 elm_entry_single_line_set(en, 1);
88 elm_entry_single_line_set(en, EINA_TRUE);
89 >>>>>>> remotes/origin/upstream
90 elm_box_pack_end(bx, en);
93 bt = elm_button_add(win);
94 elm_object_focus_allow_set(bt, 0);
95 elm_object_text_set(bt, "Add");
96 evas_object_smart_callback_add(bt, "clicked", _add, bx);
97 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
98 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);
99 elm_box_pack_end(bx, bt);
100 evas_object_show(bt);
102 bt = elm_button_add(win);
103 elm_object_focus_allow_set(bt, 0);
104 elm_object_text_set(bt, "Del");
105 evas_object_smart_callback_add(bt, "clicked", _del, NULL);
106 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
107 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);
108 elm_box_pack_end(bx, bt);
109 evas_object_show(bt);
111 bt = elm_button_add(win);
112 elm_object_focus_allow_set(bt, 0);
113 elm_object_text_set(bt, "Hide");
114 evas_object_smart_callback_add(bt, "clicked", _hide, NULL);
115 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
116 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);
117 elm_box_pack_end(bx, bt);
118 evas_object_show(bt);
120 evas_object_show(win);
126 highlight_enabled_cb(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
128 elm_config_focus_highlight_enabled_set(elm_check_state_get(obj));
132 highlight_animate_cb(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
134 elm_config_focus_highlight_animate_set(elm_check_state_get(obj));
138 custom_chain_unset_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
140 Evas_Object *c, *child = NULL;
141 Evas_Object *bx = (Evas_Object *)data;
142 Eina_List *l, *children = NULL, *custom_chain = NULL;
145 if (elm_check_state_get(obj))
147 children = elm_box_children_get(bx);
148 EINA_LIST_FOREACH(children, l, c)
153 custom_chain = eina_list_append(custom_chain, c);
154 elm_object_focus_custom_chain_set(bx, custom_chain);
156 else if (i == 1) elm_object_focus_custom_chain_prepend(bx, c, child);
159 elm_object_focus_custom_chain_append(bx, c, child);
162 else if (i == 3) elm_object_focus_custom_chain_prepend(bx, c, child);
168 if (!elm_object_focus_custom_chain_get(bx)) return;
169 elm_object_focus_custom_chain_unset(bx);
174 create_win_bt_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
176 Evas_Object *win, *gd, *bt;
178 win = elm_win_util_standard_add("test focus", "Test Focus");
179 elm_win_autodel_set(win, EINA_TRUE);
181 gd = elm_grid_add(win);
182 elm_grid_size_set(gd, 100, 100);
183 evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
184 elm_win_resize_object_add(win, gd);
185 evas_object_show(gd);
187 bt = elm_button_add(win);
188 elm_object_text_set(bt, "Button 1");
189 elm_grid_pack(gd, bt, 10, 10, 80, 20);
190 evas_object_show(bt);
192 bt = elm_button_add(win);
193 elm_object_text_set(bt, "Button 2");
194 elm_grid_pack(gd, bt, 10, 30, 80, 20);
195 evas_object_show(bt);
197 bt = elm_button_add(win);
198 elm_object_text_set(bt, "Button 3");
199 elm_grid_pack(gd, bt, 10, 50, 80, 20);
200 evas_object_show(bt);
202 bt = elm_button_add(win);
203 elm_object_text_set(bt, "Button 4");
204 elm_grid_pack(gd, bt, 10, 70, 80, 20);
205 evas_object_show(bt);
207 evas_object_resize(win, 160, 160);
208 evas_object_show(win);
212 test_focus4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
214 Evas_Object *win, *gd, *tg, *bt;
215 Evas_Object *lb, *bt1, *bt2, *bt3, *bt4, *bx;
216 Eina_List *custom_chain = NULL;
218 win = elm_win_util_standard_add("focus4", "Focus 4");
219 elm_win_autodel_set(win, EINA_TRUE);
220 elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
221 elm_config_focus_highlight_enabled_set(EINA_TRUE);
222 elm_config_focus_highlight_animate_set(EINA_TRUE);
224 /* First Example - Using Focus Highlight */
225 gd = elm_grid_add(win);
226 elm_grid_size_set(gd, 100, 100);
227 evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
228 elm_win_resize_object_add(win, gd);
229 evas_object_show(gd);
231 tg = elm_check_add(win);
232 evas_object_size_hint_weight_set(tg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
233 evas_object_size_hint_align_set(tg, EVAS_HINT_FILL, EVAS_HINT_FILL);
234 elm_object_text_set(tg, "Focus Highlight Enabled");
235 elm_check_state_set(tg, EINA_TRUE);
236 evas_object_smart_callback_add(tg, "changed", highlight_enabled_cb, NULL);
237 elm_grid_pack(gd, tg, 10, 10, 50, 10);
238 evas_object_show(tg);
240 tg = elm_check_add(win);
241 evas_object_size_hint_weight_set(tg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
242 evas_object_size_hint_align_set(tg, EVAS_HINT_FILL, EVAS_HINT_FILL);
243 elm_object_text_set(tg, "Focus Highlight Animate");
244 elm_check_state_set(tg, EINA_TRUE);
245 evas_object_smart_callback_add(tg, "changed", highlight_animate_cb, NULL);
246 elm_grid_pack(gd, tg, 10, 20, 50, 10);
247 evas_object_show(tg);
249 bt = elm_button_add(win);
250 elm_object_text_set(bt, "Create Window");
251 elm_grid_pack(gd, bt, 10, 30, 80, 10);
252 evas_object_smart_callback_add(bt, "clicked", create_win_bt_clicked, NULL);
253 evas_object_show(bt);
255 /* Second Example - Using Custom Chain */
256 lb = elm_label_add(win);
257 elm_object_text_set(lb, "Custom Chain: Please use tab key to check");
258 evas_object_size_hint_weight_set(lb, 0.0, 0.0);
259 evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
260 elm_grid_pack(gd, lb, 10, 45, 80, 5);
261 evas_object_show(lb);
263 bx = elm_box_add(win);
264 elm_box_horizontal_set(bx, EINA_TRUE);
265 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
266 evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
268 bt1 = elm_button_add(win);
269 elm_object_text_set(bt1, "Button 1");
270 evas_object_size_hint_weight_set(bt1, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
271 evas_object_size_hint_align_set(bt1, EVAS_HINT_FILL, EVAS_HINT_FILL);
272 elm_box_pack_end(bx, bt1);
273 evas_object_show(bt1);
275 bt2 = elm_button_add(win);
276 elm_object_text_set(bt2, "Button 2");
277 evas_object_size_hint_weight_set(bt2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
278 evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);
279 elm_box_pack_end(bx, bt2);
280 evas_object_show(bt2);
282 bt3 = elm_button_add(win);
283 elm_object_text_set(bt3, "Button 3");
284 evas_object_size_hint_weight_set(bt3, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
285 evas_object_size_hint_align_set(bt3, EVAS_HINT_FILL, EVAS_HINT_FILL);
286 elm_box_pack_end(bx, bt3);
287 evas_object_show(bt3);
289 bt4 = elm_button_add(win);
290 elm_object_text_set(bt4, "Button 4");
291 evas_object_size_hint_weight_set(bt4, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
292 evas_object_size_hint_align_set(bt4, EVAS_HINT_FILL, EVAS_HINT_FILL);
293 elm_box_pack_end(bx, bt4);
294 evas_object_show(bt4);
296 custom_chain = eina_list_append(custom_chain, bt2);
297 custom_chain = eina_list_append(custom_chain, bt1);
298 custom_chain = eina_list_append(custom_chain, bt4);
299 custom_chain = eina_list_append(custom_chain, bt3);
300 elm_object_focus_custom_chain_set(bx, custom_chain);
302 elm_grid_pack(gd, bx, 10, 50, 80, 30);
303 evas_object_show(bx);
305 tg = elm_check_add(win);
306 elm_object_text_set(tg, "Custom Chain");
307 elm_check_state_set(tg, EINA_TRUE);
308 evas_object_smart_callback_add(tg, "changed", custom_chain_unset_cb, bx);
309 elm_grid_pack(gd, tg, 10, 80, 40, 10);
310 evas_object_show(tg);
312 evas_object_resize(win, 320, 320);
313 evas_object_show(win);
315 >>>>>>> remotes/origin/upstream