[genlist, gen, gen_common] merge upstream except for elm_genlist.c
[framework/uifw/elementary.git] / src / bin / test_focus.c
1 /* Test for Focus Chain Linear*/
2 #include <Elementary.h>
3 #ifdef HAVE_CONFIG_H
4 # include "elementary_config.h"
5 #endif
6 #ifndef ELM_LIB_QUICKLAUNCH
7
8 static Eina_Bool
9 _event(void *data __UNUSED__, Evas_Object *obj __UNUSED__, Evas_Object *src __UNUSED__, Evas_Callback_Type type, void *event_info)
10 {
11    if (type == EVAS_CALLBACK_KEY_DOWN)
12      printf ("Key Down:");
13    else if (type == EVAS_CALLBACK_KEY_UP)
14      printf ("Key Up:");
15    else
16      return EINA_FALSE;
17    Evas_Event_Key_Down *ev = event_info;
18    printf("%s\n", ev->key);
19
20    ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
21    return EINA_TRUE;
22 }
23
24 static void
25 _on_key_down(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *einfo __UNUSED__)
26 {
27    //Evas_Event_Key_Down *event = einfo;
28    //printf("%s %p Key %s Parent %p\n", evas_object_type_get(obj),
29    //       obj, event->keyname, evas_object_smart_parent_get(obj));
30 }
31
32 static void
33 _disable(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
34 {
35    Evas_Object *bt = data;
36    elm_object_disabled_set(bt, EINA_TRUE);
37 }
38
39 static void
40 _enable(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
41 {
42    Evas_Object *bt = data;
43    elm_object_disabled_set(bt, EINA_FALSE);
44 }
45
46 static inline void
47 my_show(Evas_Object *obj)
48 {
49    evas_object_event_callback_add(obj, EVAS_CALLBACK_KEY_DOWN,
50                                   _on_key_down, NULL);
51    evas_object_show(obj);
52 }
53
54 void
55 test_focus(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
56 {
57    Evas_Object *win;
58    unsigned int i, j;
59
60    win = elm_win_add(NULL, "focus", ELM_WIN_BASIC);
61    elm_win_title_set(win, "Focus");
62    elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
63    evas_object_resize(win, 800, 600);
64    elm_object_event_callback_add(win, _event, NULL);
65    elm_win_autodel_set(win, EINA_TRUE);
66    my_show(win);
67
68      {
69         Evas_Object *bg;
70         bg = elm_bg_add(win);
71         evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
72                                          EVAS_HINT_EXPAND);
73         elm_win_resize_object_add(win, bg);
74         my_show(bg);
75      }
76
77    Evas_Object *mainbx = elm_box_add(win);
78    elm_box_horizontal_set(mainbx, EINA_TRUE);
79    elm_win_resize_object_add(win, mainbx);
80    evas_object_size_hint_weight_set(mainbx, EVAS_HINT_EXPAND,
81                                     EVAS_HINT_EXPAND);
82    my_show(mainbx);
83
84      { //First Col
85         Evas_Object *bx = elm_box_add(win);
86         evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND,
87                                          EVAS_HINT_EXPAND);
88         elm_box_pack_end(mainbx, bx);
89         my_show(bx);
90
91           {
92              Evas_Object *lb = elm_label_add(win);
93              elm_object_text_set(lb,
94                                  "<b>Use Tab, Shift+Tab, and<br/>"
95                                                                  "Arrow Keys</b>"
96                                 );
97              evas_object_size_hint_weight_set(lb, 0.0, 0.0);
98              evas_object_size_hint_align_set(lb, EVAS_HINT_FILL,
99                                              EVAS_HINT_FILL);
100              elm_box_pack_end(bx, lb);
101              my_show(lb);
102           }
103
104           {
105              Evas_Object *tg = elm_check_add(win);
106              elm_object_style_set(tg, "toggle");
107              elm_object_part_text_set(tg, "on", "Yes");
108              elm_object_part_text_set(tg, "off", "No");
109              elm_box_pack_end(bx, tg);
110              my_show(tg);
111           }
112
113           {
114              Evas_Object *en = elm_entry_add(win);
115              elm_entry_scrollable_set(en, EINA_TRUE);
116              evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
117              evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
118              elm_object_text_set(en, "This is a single line");
119 <<<<<<< HEAD
120              elm_entry_single_line_set(en, 1);
121 =======
122              elm_entry_single_line_set(en, EINA_TRUE);
123 >>>>>>> remotes/origin/upstream
124              elm_box_pack_end(bx, en);
125              my_show(en);
126           }
127
128           {
129              Evas_Object *bx2 = elm_box_add(win);
130              elm_box_horizontal_set(bx2, EINA_TRUE);
131              evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL,
132                                              EVAS_HINT_FILL);
133              evas_object_size_hint_weight_set(bx2, 0.0, 0.0);
134              elm_box_pack_end(bx, bx2);
135
136              for (i = 2; i; i--)
137                {
138                   Evas_Object *bt;
139                   bt = elm_button_add(win);
140                   elm_object_text_set(bt, "Box");
141                   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
142                                                   EVAS_HINT_FILL);
143                   evas_object_size_hint_weight_set(bt, 0.0, 0.0);
144                   if (i%2)
145                     elm_object_disabled_set(bt, EINA_TRUE);
146                   elm_box_pack_end(bx2, bt);
147                   my_show(bt);
148                }
149
150                {
151                   Evas_Object *sc = elm_scroller_add(win);
152                   evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND,
153                                                    EVAS_HINT_EXPAND);
154                   evas_object_size_hint_align_set(sc, EVAS_HINT_FILL,
155                                                   EVAS_HINT_FILL);
156 <<<<<<< HEAD
157                   elm_scroller_bounce_set(sc, 1, 1);
158 =======
159                   elm_scroller_bounce_set(sc, EINA_TRUE, EINA_TRUE);
160 >>>>>>> remotes/origin/upstream
161                   elm_scroller_content_min_limit(sc, 1, 1);
162                   elm_box_pack_end(bx2, sc);
163                   my_show(sc);
164
165                     {
166                        Evas_Object *bt;
167                        bt = elm_button_add(win);
168                        elm_object_text_set(bt, "Scroller");
169                        evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
170                                                        EVAS_HINT_FILL);
171                        evas_object_size_hint_weight_set(bt, 0.0, 0.0);
172                        elm_object_event_callback_add(bt, _event, NULL);
173                        elm_object_content_set(sc, bt);
174                        my_show(bt);
175                        elm_object_event_callback_del(bt, _event, NULL);
176                     }
177                }
178
179              my_show(bx2);
180           }
181
182           {
183              Evas_Object *bt;
184              bt = elm_button_add(win);
185              elm_object_text_set(bt, "Box");
186              evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
187                                              EVAS_HINT_FILL);
188              evas_object_size_hint_weight_set(bt, 0.0, 0.0);
189              elm_box_pack_end(bx, bt);
190              my_show(bt);
191           }
192
193           {
194              Evas_Object *bx2 = elm_box_add(win);
195              elm_box_horizontal_set(bx2, EINA_TRUE);
196              evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL,
197                                              EVAS_HINT_FILL);
198              evas_object_size_hint_weight_set(bx2, 0.0, 0.0);
199              elm_box_pack_end(bx, bx2);
200              my_show(bx2);
201
202              for (i = 2; i; i--)
203                {
204                   Evas_Object *bx3 = elm_box_add(win);
205                   evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL,
206                                                   EVAS_HINT_FILL);
207                   evas_object_size_hint_weight_set(bx3, 0.0, 0.0);
208                   elm_box_pack_end(bx2, bx3);
209                   my_show(bx3);
210
211                   for (j = 3; j; j--)
212                     {
213                        Evas_Object *bt;
214                        bt = elm_button_add(win);
215                        elm_object_text_set(bt, "Box");
216                        evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
217                                                        EVAS_HINT_FILL);
218                        evas_object_size_hint_weight_set(bt, 0.0, 0.0);
219                        elm_box_pack_end(bx3, bt);
220                        my_show(bt);
221                     }
222                }
223
224                {
225                   Evas_Object *sc = elm_scroller_add(win);
226                   evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND,
227                                                    EVAS_HINT_EXPAND);
228                   evas_object_size_hint_align_set(sc, EVAS_HINT_FILL,
229                                                   EVAS_HINT_FILL);
230 <<<<<<< HEAD
231                   elm_scroller_bounce_set(sc, 0, 1);
232 =======
233                   elm_scroller_bounce_set(sc, EINA_FALSE, EINA_TRUE);
234 >>>>>>> remotes/origin/upstream
235                   elm_scroller_content_min_limit(sc, 1, 0);
236                   elm_box_pack_end(bx2, sc);
237                   my_show(sc);
238
239                   Evas_Object *bx3 = elm_box_add(win);
240                   evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL,
241                                                   EVAS_HINT_FILL);
242                   evas_object_size_hint_weight_set(bx3, 0.0, 0.0);
243                   elm_object_content_set(sc, bx3);
244                   my_show(bx3);
245
246                   for (i = 5; i; i--)
247                     {
248                        Evas_Object *bt;
249                        bt = elm_button_add(win);
250                        elm_object_text_set(bt, "BX Scroller");
251                        evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
252                                                        EVAS_HINT_FILL);
253                        evas_object_size_hint_weight_set(bt, 0.0, 0.0);
254                        elm_box_pack_end(bx3, bt);
255                        my_show(bt);
256                     }
257                }
258           }
259      }
260
261      {//Second Col
262         char buf[PATH_MAX];
263         Evas_Object *ly = elm_layout_add(win);
264         snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
265         elm_layout_file_set(ly, buf, "twolines");
266         evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND,
267                                          EVAS_HINT_EXPAND);
268         elm_box_pack_end(mainbx, ly);
269         my_show(ly);
270
271           {
272              Evas_Object *bx2 = elm_box_add(win);
273              elm_box_horizontal_set(bx2, EINA_TRUE);
274              evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL,
275                                              EVAS_HINT_FILL);
276              evas_object_size_hint_weight_set(bx2, 0.0, 0.0);
277              elm_object_part_content_set(ly, "element1", bx2);
278              my_show(bx2);
279
280              for (i = 3; i; i--)
281                {
282                   Evas_Object *bt;
283                   bt = elm_button_add(win);
284                   elm_object_text_set(bt, "Layout");
285                   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
286                                                   EVAS_HINT_FILL);
287                   evas_object_size_hint_weight_set(bt, 0.0, 0.0);
288                   elm_box_pack_end(bx2, bt);
289                   my_show(bt);
290                   elm_object_focus_custom_chain_prepend(bx2, bt, NULL);
291                }
292           }
293
294           {
295              Evas_Object *bx2 = elm_box_add(win);
296              evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL,
297                                              EVAS_HINT_FILL);
298              evas_object_size_hint_weight_set(bx2, 0.0, 0.0);
299              elm_object_part_content_set(ly, "element2", bx2);
300              my_show(bx2);
301
302                {
303                   Evas_Object *bt;
304                   bt = elm_button_add(win);
305                   elm_object_text_set(bt, "Disable");
306                   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
307                                                   EVAS_HINT_FILL);
308                   evas_object_size_hint_weight_set(bt, 0.0, 0.0);
309                   elm_box_pack_end(bx2, bt);
310                   evas_object_smart_callback_add(bt, "clicked", _disable, bt);
311                   my_show(bt);
312                   elm_object_focus_custom_chain_prepend(bx2, bt, NULL);
313
314                   Evas_Object *bt2;
315                   bt2 = elm_button_add(win);
316                   elm_object_text_set(bt2, "Enable");
317                   evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL,
318                                                   EVAS_HINT_FILL);
319                   evas_object_size_hint_weight_set(bt2, 0.0, 0.0);
320                   elm_box_pack_end(bx2, bt2);
321                   evas_object_smart_callback_add(bt2, "clicked", _enable, bt);
322                   my_show(bt2);
323                   elm_object_focus_custom_chain_append(bx2, bt2, NULL);
324                }
325
326           }
327      }
328
329      {//Third Col
330         Evas_Object *bx = elm_box_add(win);
331         evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND,
332                                          EVAS_HINT_EXPAND);
333         elm_box_pack_end(mainbx, bx);
334         my_show(bx);
335
336           {
337              Evas_Object *fr = elm_frame_add(win);
338              elm_object_text_set(fr, "Frame");
339              elm_box_pack_end(bx, fr);
340              evas_object_show(fr);
341
342                {
343                   Evas_Object *tb = elm_table_add(win);
344                   evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
345                   elm_object_content_set(fr, tb);
346                   my_show(tb);
347                   for (j = 0; j < 1; j++)
348                     for (i = 0; i < 2; i++)
349                       {
350                          Evas_Object *bt;
351                          bt = elm_button_add(win);
352                          elm_object_text_set(bt, "Table");
353                          evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
354                                                          EVAS_HINT_FILL);
355                          evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
356                          elm_table_pack(tb, bt, i, j, 1, 1);
357                          my_show(bt);
358                       }
359                }
360           }
361
362           {
363              Evas_Object *fr = elm_bubble_add(win);
364              elm_object_text_set(fr, "Bubble");
365              evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
366              evas_object_size_hint_align_set(fr, EVAS_HINT_FILL,
367                                              EVAS_HINT_FILL);
368              elm_box_pack_end(bx, fr);
369              evas_object_show(fr);
370
371                {
372                   Evas_Object *tb = elm_table_add(win);
373                   evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
374                   elm_object_content_set(fr, tb);
375                   my_show(tb);
376                   for (j = 0; j < 2; j++)
377                     for (i = 0; i < 1; i++)
378                       {
379                          Evas_Object *bt;
380                          bt = elm_button_add(win);
381                          elm_object_text_set(bt, "Table");
382                          evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
383                                                          EVAS_HINT_FILL);
384                          evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
385                          elm_table_pack(tb, bt, i, j, 1, 1);
386                          my_show(bt);
387                       }
388                }
389           }
390      }
391 }
392 #endif