Merge "[edje_externals/elm_datefield.c] Datefield widget external file is updated...
[framework/uifw/elementary.git] / src / bin / test_ctxpopup.c
1 #include <Elementary.h>
2 #ifdef HAVE_CONFIG_H
3 # include "elementary_config.h"
4 #endif
5 #ifndef ELM_LIB_QUICKLAUNCH
6
7
8 static void
9 _dismissed(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
10 {
11    evas_object_del(obj);
12 }
13
14 static void
15 _print_current_dir(Evas_Object *obj)
16 {
17    Elm_Ctxpopup_Direction dir;
18    dir = elm_ctxpopup_direction_get(obj);
19
20    switch(dir)
21      {
22       case ELM_CTXPOPUP_DIRECTION_LEFT:
23          printf("ctxpopup direction: left!\n");
24          break;
25       case ELM_CTXPOPUP_DIRECTION_RIGHT:
26          printf("ctxpopup direction: right!\n");
27          break;
28       case ELM_CTXPOPUP_DIRECTION_UP:
29          printf("ctxpopup direction: up!\n");
30          break;
31       case ELM_CTXPOPUP_DIRECTION_DOWN:
32          printf("ctxpopup direction: down!\n");
33          break;
34       case ELM_CTXPOPUP_DIRECTION_UNKNOWN:
35          printf("ctxpopup direction: unknow!\n");
36          break;
37      }
38 }
39
40 static void
41 _ctxpopup_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
42 {
43    printf("ctxpopup item selected: %s\n",
44    elm_object_item_text_get(event_info));
45 }
46
47 #define ITEM_NEW(_hov, _label, _icon)                                           \
48    if(_icon)                                                                    \
49      {                                                                          \
50         ic = elm_icon_add(obj);                                                 \
51         elm_icon_standard_set(ic, _icon);                                       \
52         elm_icon_scale_set(ic, EINA_FALSE, EINA_FALSE);                         \
53      }                                                                          \
54    else                                                                         \
55       ic = NULL;                                                                \
56    it = elm_ctxpopup_item_append(_hov, _label, ic, _ctxpopup_item_cb, NULL);    \
57
58 static void
59 _list_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
60 {
61    Evas_Object *ctxpopup, *ic;
62    Elm_Object_Item *it;
63    Evas_Coord x,y;
64
65    ctxpopup = elm_ctxpopup_add(obj);
66    evas_object_smart_callback_add(ctxpopup,
67                                   "dismissed",
68                                   _dismissed,
69                                   NULL);
70
71    ITEM_NEW(ctxpopup, "Go to home folder", "home");
72    ITEM_NEW(ctxpopup, "Save file", "file");
73    ITEM_NEW(ctxpopup, "Delete file", "delete");
74    ITEM_NEW(ctxpopup, "Navigate to folder", "folder");
75    elm_object_item_disabled_set(it, EINA_TRUE);
76    ITEM_NEW(ctxpopup, "Edit entry", "edit");
77    ITEM_NEW(ctxpopup, "Set date and time", "clock");
78    elm_object_item_disabled_set(it, EINA_TRUE);
79
80    evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
81    evas_object_size_hint_max_set(ctxpopup, 240, 240);
82    evas_object_move(ctxpopup, x, y);
83    evas_object_show(ctxpopup);
84    _print_current_dir(ctxpopup);
85 }
86
87 static void
88 _list_item_cb2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
89 {
90    Evas_Object *ctxpopup, *ic;
91    Elm_Object_Item *it;
92    Evas_Coord x,y;
93
94    ctxpopup = elm_ctxpopup_add(obj);
95    evas_object_smart_callback_add(ctxpopup,
96                                   "dismissed",
97                                   _dismissed,
98                                   NULL);
99
100    ITEM_NEW(ctxpopup, NULL, "home");
101    ITEM_NEW(ctxpopup, NULL, "file");
102    ITEM_NEW(ctxpopup, NULL, "delete");
103    ITEM_NEW(ctxpopup, NULL, "folder");
104    ITEM_NEW(ctxpopup, NULL, "edit");
105    elm_object_item_disabled_set(it, EINA_TRUE);
106    ITEM_NEW(ctxpopup, NULL, "clock");
107
108    evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
109    evas_object_size_hint_max_set(ctxpopup, 240, 240);
110    evas_object_move(ctxpopup, x, y);
111    evas_object_show(ctxpopup);
112    _print_current_dir(ctxpopup);
113 }
114
115 static void
116 _list_item_cb3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
117 {
118    Evas_Object *ctxpopup, *ic;
119    Elm_Object_Item *it;
120    Evas_Coord x,y;
121
122    ctxpopup = elm_ctxpopup_add(obj);
123    evas_object_smart_callback_add(ctxpopup,
124                                   "dismissed",
125                                   _dismissed,
126                                   NULL);
127
128    ITEM_NEW(ctxpopup, "Eina", NULL);
129    ITEM_NEW(ctxpopup, "Eet", NULL);
130    ITEM_NEW(ctxpopup, "Evas", NULL);
131    ITEM_NEW(ctxpopup, "Ecore", NULL);
132    elm_object_item_disabled_set(it, EINA_TRUE);
133    ITEM_NEW(ctxpopup, "Embryo", NULL);
134    ITEM_NEW(ctxpopup, "Edje", NULL);
135
136    evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
137    evas_object_move(ctxpopup, x, y);
138    evas_object_show(ctxpopup);
139    _print_current_dir(ctxpopup);
140 }
141
142 static void
143 _list_item_cb4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
144 {
145    Evas_Object *ctxpopup, *ic;
146    Elm_Object_Item *it;
147    Evas_Coord x,y;
148
149    ctxpopup = elm_ctxpopup_add(obj);
150    evas_object_smart_callback_add(ctxpopup,
151                                   "dismissed",
152                                   _dismissed,
153                                   NULL);
154
155    elm_ctxpopup_horizontal_set(ctxpopup, EINA_TRUE);
156
157    ITEM_NEW(ctxpopup, NULL, "home");
158    ITEM_NEW(ctxpopup, NULL, "file");
159    ITEM_NEW(ctxpopup, NULL, "delete");
160    ITEM_NEW(ctxpopup, NULL, "folder");
161    ITEM_NEW(ctxpopup, NULL, "edit");
162    ITEM_NEW(ctxpopup, NULL, "clock");
163
164    evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
165    evas_object_size_hint_max_set(ctxpopup, 240, 240);
166    evas_object_move(ctxpopup, x, y);
167    evas_object_show(ctxpopup);
168    _print_current_dir(ctxpopup);
169 }
170
171
172 static void
173 _list_item_cb5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
174 {
175    Evas_Object *ctxpopup, *btn, *sc, *bx;
176    Evas_Coord x,y;
177
178    bx = elm_box_add(obj);
179    evas_object_size_hint_min_set(bx, 150, 150);
180
181    sc = elm_scroller_add(bx);
182    elm_scroller_bounce_set(sc, EINA_FALSE, EINA_TRUE);
183    evas_object_size_hint_fill_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
184    evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
185    evas_object_show(sc);
186
187    btn = elm_button_add(sc);
188    elm_object_text_set(btn, "Enlightenment");
189    evas_object_size_hint_min_set(btn, 140, 140);
190
191    elm_object_content_set(sc, btn);
192
193    elm_box_pack_end(bx, sc);
194
195    ctxpopup = elm_ctxpopup_add(obj);
196    evas_object_smart_callback_add(ctxpopup,
197                                   "dismissed",
198                                   _dismissed,
199                                   NULL);
200
201    elm_object_content_set(ctxpopup, bx);
202
203    evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
204    evas_object_move(ctxpopup, x, y);
205    evas_object_show(ctxpopup);
206    _print_current_dir(ctxpopup);
207 }
208
209
210 static void _list_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
211 {
212    elm_list_item_selected_set(event_info, EINA_FALSE);
213 }
214
215 void
216 test_ctxpopup(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
217 {
218    Evas_Object *win, *bg, *list;
219
220    win = elm_win_add(NULL, "Contextual Popup", ELM_WIN_BASIC);
221    elm_win_title_set(win, "Contextual Popup");
222    elm_win_autodel_set(win, EINA_TRUE);
223
224    bg = elm_bg_add(win);
225    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
226    elm_win_resize_object_add(win, bg);
227    evas_object_show(bg);
228
229    list = elm_list_add(win);
230    elm_win_resize_object_add(win, list);
231    evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
232    elm_list_mode_set(list, ELM_LIST_COMPRESS);
233    evas_object_smart_callback_add(list, "selected", _list_clicked, NULL);
234
235 #undef ITEM_NEW
236    elm_list_item_append(list, "Ctxpopup with icons and labels", NULL, NULL,
237                         _list_item_cb, NULL);
238    elm_list_item_append(list, "Ctxpopup with icons only", NULL, NULL,
239                         _list_item_cb2, NULL);
240    elm_list_item_append(list, "Ctxpopup with labels only", NULL, NULL,
241                         _list_item_cb3, NULL);
242    elm_list_item_append(list, "Ctxpopup at horizontal mode", NULL, NULL,
243                         _list_item_cb4, NULL);
244    elm_list_item_append(list, "Ctxpopup with user content", NULL, NULL,
245                         _list_item_cb5, NULL);
246    evas_object_show(list);
247    elm_list_go(list);
248
249    evas_object_resize(win, 400, 400);
250    evas_object_show(win);
251 }
252 #endif