elm: change elm_object_content_part_set/get/unset to elm_object_part_content_set...
[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 and Shift+Tab</b>"
95                                 );
96              evas_object_size_hint_weight_set(lb, 0.0, 0.0);
97              evas_object_size_hint_align_set(lb, EVAS_HINT_FILL,
98                                              EVAS_HINT_FILL);
99              elm_box_pack_end(bx, lb);
100              my_show(lb);
101           }
102
103           {
104              Evas_Object *tg = elm_check_add(win);
105              elm_object_style_set(tg, "toggle");
106              elm_object_part_text_set(tg, "on", "Yes");
107              elm_object_part_text_set(tg, "off", "No");
108              elm_box_pack_end(bx, tg);
109              my_show(tg);
110           }
111
112           {
113              Evas_Object *en = elm_entry_add(win);
114              elm_entry_scrollable_set(en, EINA_TRUE);
115              evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
116              evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
117              elm_entry_entry_set(en, "This is a single line");
118              elm_entry_single_line_set(en, 1);
119              elm_box_pack_end(bx, en);
120              my_show(en);
121           }
122
123           {
124              Evas_Object *bx2 = elm_box_add(win);
125              elm_box_horizontal_set(bx2, EINA_TRUE);
126              evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL,
127                                              EVAS_HINT_FILL);
128              evas_object_size_hint_weight_set(bx2, 0.0, 0.0);
129              elm_box_pack_end(bx, bx2);
130
131              for (i = 2; i; i--)
132                {
133                   Evas_Object *bt;
134                   bt = elm_button_add(win);
135                   elm_object_text_set(bt, "Box");
136                   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
137                                                   EVAS_HINT_FILL);
138                   evas_object_size_hint_weight_set(bt, 0.0, 0.0);
139                   if (i%2)
140                     elm_object_disabled_set(bt, EINA_TRUE);
141                   elm_box_pack_end(bx2, bt);
142                   my_show(bt);
143                }
144
145                {
146                   Evas_Object *sc = elm_scroller_add(win);
147                   evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND,
148                                                    EVAS_HINT_EXPAND);
149                   evas_object_size_hint_align_set(sc, EVAS_HINT_FILL,
150                                                   EVAS_HINT_FILL);
151                   elm_scroller_bounce_set(sc, 1, 1);
152                   elm_scroller_content_min_limit(sc, 1, 1);
153                   elm_box_pack_end(bx2, sc);
154                   my_show(sc);
155
156                     {
157                        Evas_Object *bt;
158                        bt = elm_button_add(win);
159                        elm_object_text_set(bt, "Scroller");
160                        evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
161                                                        EVAS_HINT_FILL);
162                        evas_object_size_hint_weight_set(bt, 0.0, 0.0);
163                        elm_object_event_callback_add(bt, _event, NULL);
164                        elm_object_content_set(sc, bt);
165                        my_show(bt);
166                        elm_object_event_callback_del(bt, _event, NULL);
167                     }
168                }
169
170              my_show(bx2);
171           }
172
173           {
174              Evas_Object *bt;
175              bt = elm_button_add(win);
176              elm_object_text_set(bt, "Box");
177              evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
178                                              EVAS_HINT_FILL);
179              evas_object_size_hint_weight_set(bt, 0.0, 0.0);
180              elm_box_pack_end(bx, bt);
181              my_show(bt);
182           }
183
184           {
185              Evas_Object *bx2 = elm_box_add(win);
186              elm_box_horizontal_set(bx2, EINA_TRUE);
187              evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL,
188                                              EVAS_HINT_FILL);
189              evas_object_size_hint_weight_set(bx2, 0.0, 0.0);
190              elm_box_pack_end(bx, bx2);
191              my_show(bx2);
192
193              for (i = 2; i; i--)
194                {
195                   Evas_Object *bx3 = elm_box_add(win);
196                   evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL,
197                                                   EVAS_HINT_FILL);
198                   evas_object_size_hint_weight_set(bx3, 0.0, 0.0);
199                   elm_box_pack_end(bx2, bx3);
200                   my_show(bx3);
201
202                   for (j = 3; j; j--)
203                     {
204                        Evas_Object *bt;
205                        bt = elm_button_add(win);
206                        elm_object_text_set(bt, "Box");
207                        evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
208                                                        EVAS_HINT_FILL);
209                        evas_object_size_hint_weight_set(bt, 0.0, 0.0);
210                        elm_box_pack_end(bx3, bt);
211                        my_show(bt);
212                     }
213                }
214
215                {
216                   Evas_Object *sc = elm_scroller_add(win);
217                   evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND,
218                                                    EVAS_HINT_EXPAND);
219                   evas_object_size_hint_align_set(sc, EVAS_HINT_FILL,
220                                                   EVAS_HINT_FILL);
221                   elm_scroller_bounce_set(sc, 0, 1);
222                   elm_scroller_content_min_limit(sc, 1, 0);
223                   elm_box_pack_end(bx2, sc);
224                   my_show(sc);
225
226                   Evas_Object *bx3 = elm_box_add(win);
227                   evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL,
228                                                   EVAS_HINT_FILL);
229                   evas_object_size_hint_weight_set(bx3, 0.0, 0.0);
230                   elm_object_content_set(sc, bx3);
231                   my_show(bx3);
232
233                   for (i = 5; i; i--)
234                     {
235                        Evas_Object *bt;
236                        bt = elm_button_add(win);
237                        elm_object_text_set(bt, "BX Scroller");
238                        evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
239                                                        EVAS_HINT_FILL);
240                        evas_object_size_hint_weight_set(bt, 0.0, 0.0);
241                        elm_box_pack_end(bx3, bt);
242                        my_show(bt);
243                     }
244                }
245           }
246      }
247
248      {//Second Col
249         char buf[PATH_MAX];
250         Evas_Object *ly = elm_layout_add(win);
251         snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
252         elm_layout_file_set(ly, buf, "twolines");
253         evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND,
254                                          EVAS_HINT_EXPAND);
255         elm_box_pack_end(mainbx, ly);
256         my_show(ly);
257
258           {
259              Evas_Object *bx2 = elm_box_add(win);
260              elm_box_horizontal_set(bx2, EINA_TRUE);
261              evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL,
262                                              EVAS_HINT_FILL);
263              evas_object_size_hint_weight_set(bx2, 0.0, 0.0);
264              elm_object_part_content_set(ly, "element1", bx2);
265              my_show(bx2);
266
267              for (i = 3; i; i--)
268                {
269                   Evas_Object *bt;
270                   bt = elm_button_add(win);
271                   elm_object_text_set(bt, "Layout");
272                   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
273                                                   EVAS_HINT_FILL);
274                   evas_object_size_hint_weight_set(bt, 0.0, 0.0);
275                   elm_box_pack_end(bx2, bt);
276                   my_show(bt);
277                   elm_object_focus_custom_chain_prepend(bx2, bt, NULL);
278                }
279           }
280
281           {
282              Evas_Object *bx2 = elm_box_add(win);
283              evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL,
284                                              EVAS_HINT_FILL);
285              evas_object_size_hint_weight_set(bx2, 0.0, 0.0);
286              elm_object_part_content_set(ly, "element2", bx2);
287              my_show(bx2);
288
289                {
290                   Evas_Object *bt;
291                   bt = elm_button_add(win);
292                   elm_object_text_set(bt, "Disable");
293                   evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
294                                                   EVAS_HINT_FILL);
295                   evas_object_size_hint_weight_set(bt, 0.0, 0.0);
296                   elm_box_pack_end(bx2, bt);
297                   evas_object_smart_callback_add(bt, "clicked", _disable, bt);
298                   my_show(bt);
299                   elm_object_focus_custom_chain_prepend(bx2, bt, NULL);
300
301                   Evas_Object *bt2;
302                   bt2 = elm_button_add(win);
303                   elm_object_text_set(bt2, "Enable");
304                   evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL,
305                                                   EVAS_HINT_FILL);
306                   evas_object_size_hint_weight_set(bt2, 0.0, 0.0);
307                   elm_box_pack_end(bx2, bt2);
308                   evas_object_smart_callback_add(bt2, "clicked", _enable, bt);
309                   my_show(bt2);
310                   elm_object_focus_custom_chain_append(bx2, bt2, NULL);
311                }
312
313           }
314      }
315
316      {//Third Col
317         Evas_Object *bx = elm_box_add(win);
318         evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND,
319                                          EVAS_HINT_EXPAND);
320         elm_box_pack_end(mainbx, bx);
321         my_show(bx);
322
323           {
324              Evas_Object *fr = elm_frame_add(win);
325              elm_object_text_set(fr, "Frame");
326              elm_box_pack_end(bx, fr);
327              evas_object_show(fr);
328
329                {
330                   Evas_Object *tb = elm_table_add(win);
331                   evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
332                   elm_object_content_set(fr, tb);
333                   my_show(tb);
334                   for (j = 0; j < 1; j++)
335                     for (i = 0; i < 2; i++)
336                       {
337                          Evas_Object *bt;
338                          bt = elm_button_add(win);
339                          elm_object_text_set(bt, "Table");
340                          evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
341                                                          EVAS_HINT_FILL);
342                          evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
343                          elm_table_pack(tb, bt, i, j, 1, 1);
344                          my_show(bt);
345                       }
346                }
347           }
348
349           {
350              Evas_Object *fr = elm_bubble_add(win);
351              elm_object_text_set(fr, "Bubble");
352              evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
353              evas_object_size_hint_align_set(fr, EVAS_HINT_FILL,
354                                              EVAS_HINT_FILL);
355              elm_box_pack_end(bx, fr);
356              evas_object_show(fr);
357
358                {
359                   Evas_Object *tb = elm_table_add(win);
360                   evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
361                   elm_object_content_set(fr, tb);
362                   my_show(tb);
363                   for (j = 0; j < 2; j++)
364                     for (i = 0; i < 1; i++)
365                       {
366                          Evas_Object *bt;
367                          bt = elm_button_add(win);
368                          elm_object_text_set(bt, "Table");
369                          evas_object_size_hint_align_set(bt, EVAS_HINT_FILL,
370                                                          EVAS_HINT_FILL);
371                          evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
372                          elm_table_pack(tb, bt, i, j, 1, 1);
373                          my_show(bt);
374                       }
375                }
376           }
377      }
378 }
379 #endif