dc4fd1058c41b605516049aef44d65b8c84e5cf2
[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 static void
8 _ctxpopup_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
9 {
10    printf("ctxpopup item selected: %s\n",
11           elm_ctxpopup_item_label_get(event_info));
12 }
13
14 #define ITEM_NEW(_hov, _label, _icon)                                           \
15    if(_icon)                                                                    \
16      {                                                                          \
17         ic = elm_icon_add(obj);                                                 \
18         elm_icon_standard_set(ic, _icon);                                       \
19         elm_icon_scale_set(ic, EINA_FALSE, EINA_FALSE);                         \
20      }                                                                          \
21    else                                                                         \
22       ic = NULL;                                                                \
23    it = elm_ctxpopup_item_append(_hov, _label, ic, _ctxpopup_item_cb, NULL);    \
24
25 static void
26 _list_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
27 {
28    Evas_Object *ctxpopup, *ic;
29    Elm_Ctxpopup_Item *it;
30    Evas_Coord x,y;
31
32    ctxpopup = elm_ctxpopup_add(obj);
33
34    ITEM_NEW(ctxpopup, "Go to home folder", "home");
35    ITEM_NEW(ctxpopup, "Save file", "file");
36    ITEM_NEW(ctxpopup, "Delete file", "delete");
37    ITEM_NEW(ctxpopup, "Navigate to folder", "folder");
38    elm_object_item_disabled_set(it, EINA_TRUE);
39    ITEM_NEW(ctxpopup, "Edit entry", "edit");
40    ITEM_NEW(ctxpopup, "Set date and time", "clock");
41    elm_object_item_disabled_set(it, EINA_TRUE);
42
43    evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
44    evas_object_size_hint_max_set(ctxpopup, 240, 240);
45    evas_object_move(ctxpopup, x, y);
46    evas_object_show(ctxpopup);
47 }
48
49 static void
50 _list_item_cb2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
51 {
52    Evas_Object *ctxpopup, *ic;
53    Elm_Ctxpopup_Item *it;
54    Evas_Coord x,y;
55
56    ctxpopup = elm_ctxpopup_add(obj);
57
58    ITEM_NEW(ctxpopup, NULL, "home");
59    ITEM_NEW(ctxpopup, NULL, "file");
60    ITEM_NEW(ctxpopup, NULL, "delete");
61    ITEM_NEW(ctxpopup, NULL, "folder");
62    ITEM_NEW(ctxpopup, NULL, "edit");
63    elm_object_item_disabled_set(it, EINA_TRUE);
64    ITEM_NEW(ctxpopup, NULL, "clock");
65
66    evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
67    evas_object_size_hint_max_set(ctxpopup, 240, 240);
68    evas_object_move(ctxpopup, x, y);
69    evas_object_show(ctxpopup);
70 }
71
72 static void
73 _list_item_cb3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
74 {
75    Evas_Object *ctxpopup, *ic;
76    Elm_Ctxpopup_Item *it;
77    Evas_Coord x,y;
78
79    ctxpopup = elm_ctxpopup_add(obj);
80
81    ITEM_NEW(ctxpopup, "Eina", NULL);
82    ITEM_NEW(ctxpopup, "Eet", NULL);
83    ITEM_NEW(ctxpopup, "Evas", NULL);
84    ITEM_NEW(ctxpopup, "Ecore", NULL);
85    elm_object_item_disabled_set(it, EINA_TRUE);
86    ITEM_NEW(ctxpopup, "Embryo", NULL);
87    ITEM_NEW(ctxpopup, "Edje", NULL);
88
89    evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
90    evas_object_move(ctxpopup, x, y);
91    evas_object_show(ctxpopup);
92 }
93
94 static void
95 _list_item_cb4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
96 {
97    Evas_Object *ctxpopup, *ic;
98    Elm_Ctxpopup_Item *it;
99    Evas_Coord x,y;
100
101    ctxpopup = elm_ctxpopup_add(obj);
102    elm_ctxpopup_horizontal_set(ctxpopup, EINA_TRUE);
103
104    ITEM_NEW(ctxpopup, NULL, "home");
105    ITEM_NEW(ctxpopup, NULL, "file");
106    ITEM_NEW(ctxpopup, NULL, "delete");
107    ITEM_NEW(ctxpopup, NULL, "folder");
108    ITEM_NEW(ctxpopup, NULL, "edit");
109    ITEM_NEW(ctxpopup, NULL, "clock");
110
111    evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
112    evas_object_size_hint_max_set(ctxpopup, 240, 240);
113    evas_object_move(ctxpopup, x, y);
114    evas_object_show(ctxpopup);
115 }
116
117
118 static void
119 _list_item_cb5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
120 {
121    Evas_Object *ctxpopup, *btn, *sc, *bx;
122    Evas_Coord x,y;
123
124    bx = elm_box_add(obj);
125    evas_object_size_hint_min_set(bx, 150, 150);
126
127    sc = elm_scroller_add(bx);
128    elm_scroller_bounce_set(sc, EINA_FALSE, EINA_TRUE);
129    evas_object_size_hint_fill_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
130    evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
131    evas_object_show(sc);
132
133    btn = elm_button_add(sc);
134    elm_object_text_set(btn, "Enlightenment");
135    evas_object_size_hint_min_set(btn, 140, 140);
136
137    elm_object_content_set(sc, btn);
138
139    elm_box_pack_end(bx, sc);
140
141    ctxpopup = elm_ctxpopup_add(obj);
142    elm_object_content_set(ctxpopup, bx);
143
144    evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
145    evas_object_move(ctxpopup, x, y);
146    evas_object_show(ctxpopup);
147 }
148
149
150 static void _list_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
151 {
152    elm_list_item_selected_set(event_info, EINA_FALSE);
153 }
154
155 void
156 test_ctxpopup(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
157 {
158    Evas_Object *win, *bg, *list;
159
160    win = elm_win_add(NULL, "Contextual Popup", ELM_WIN_BASIC);
161    elm_win_title_set(win, "Contextual Popup");
162    elm_win_autodel_set(win, EINA_TRUE);
163
164    bg = elm_bg_add(win);
165    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
166    elm_win_resize_object_add(win, bg);
167    evas_object_show(bg);
168
169    list = elm_list_add(win);
170    elm_win_resize_object_add(win, list);
171    elm_list_mode_set(list, ELM_LIST_COMPRESS);
172    evas_object_smart_callback_add(list, "selected", _list_clicked, NULL);
173
174 #undef ITEM_NEW
175    elm_list_item_append(list, "Ctxpopup with icons and labels", NULL, NULL,
176                         _list_item_cb, NULL);
177    elm_list_item_append(list, "Ctxpopup with icons only", NULL, NULL,
178                         _list_item_cb2, NULL);
179    elm_list_item_append(list, "Ctxpopup with labels only", NULL, NULL,
180                         _list_item_cb3, NULL);
181    elm_list_item_append(list, "Ctxpopup at horizontal mode", NULL, NULL,
182                         _list_item_cb4, NULL);
183    elm_list_item_append(list, "Ctxpopup with user content", NULL, NULL,
184                         _list_item_cb5, NULL);
185    evas_object_show(list);
186    elm_list_go(list);
187
188    evas_object_resize(win, 400, 400);
189    evas_object_show(win);
190 }
191 #endif