Merge branch 'upstream'
[framework/uifw/elementary.git] / src / bin / test_focus3.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 Evas_Object *foc = NULL;
9
10 static void
11 _foc(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
12 {
13    foc = obj;
14    printf("foc -> %p\n", foc);
15 }
16
17 static void
18 _unfoc(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
19 {
20    foc = NULL;
21    printf("foc -> %p\n", foc);
22 }
23
24 static void
25 _add(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
26 {
27    Evas_Object *bx = data, *en;
28
29    en = elm_entry_add(elm_object_top_widget_get(bx));
30    elm_entry_scrollable_set(en, EINA_TRUE);
31    elm_entry_entry_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);
36    elm_entry_single_line_set(en, 1);
37    elm_box_pack_start(bx, en);
38    evas_object_show(en);
39 }
40
41 static void
42 _del(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
43 {
44    if (foc) evas_object_del(foc);
45 }
46
47 static void
48 _hide(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
49 {
50    if (foc) evas_object_hide(foc);
51 }
52
53 void
54 test_focus3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
55 {
56    Evas_Object *win, *bg, *bx, *bt, *en;
57
58    win = elm_win_add(NULL, "focus3", ELM_WIN_BASIC);
59    elm_win_title_set(win, "Focus 3");
60    elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
61    evas_object_resize(win, 320, 480);
62    elm_win_autodel_set(win, EINA_TRUE);
63
64    bg = elm_bg_add(win);
65    elm_win_resize_object_add(win, bg);
66    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
67    evas_object_show(bg);
68
69    bx = elm_box_add(win);
70    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
71    elm_win_resize_object_add(win, bx);
72    evas_object_show(bx);
73
74    en = elm_entry_add(win);
75    elm_entry_scrollable_set(en, EINA_TRUE);
76    elm_entry_entry_set(en, "An entry");
77    evas_object_smart_callback_add(en, "focused", _foc, NULL);
78    evas_object_smart_callback_add(en, "unfocused", _unfoc, NULL);
79    evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
80    evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
81    elm_entry_single_line_set(en, 1);
82    elm_box_pack_end(bx, en);
83    evas_object_show(en);
84
85    bt = elm_button_add(win);
86    elm_object_focus_allow_set(bt, 0);
87    elm_object_text_set(bt, "Add");
88    evas_object_smart_callback_add(bt, "clicked", _add, bx);
89    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
90    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);
91    elm_box_pack_end(bx, bt);
92    evas_object_show(bt);
93
94    bt = elm_button_add(win);
95    elm_object_focus_allow_set(bt, 0);
96    elm_object_text_set(bt, "Del");
97    evas_object_smart_callback_add(bt, "clicked", _del, NULL);
98    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
99    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);
100    elm_box_pack_end(bx, bt);
101    evas_object_show(bt);
102
103    bt = elm_button_add(win);
104    elm_object_focus_allow_set(bt, 0);
105    elm_object_text_set(bt, "Hide");
106    evas_object_smart_callback_add(bt, "clicked", _hide, NULL);
107    evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
108    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);
109    elm_box_pack_end(bx, bt);
110    evas_object_show(bt);
111
112    evas_object_show(win);
113 }
114 #endif