Initialize Tizen 2.3
[framework/uifw/elementary.git] / mobile / src / bin / test_menu.c
1 #ifdef HAVE_CONFIG_H
2 # include "elementary_config.h"
3 #endif
4 #include <Elementary.h>
5 #ifndef ELM_LIB_QUICKLAUNCH
6
7 static Evas_Object *menu;
8
9 static void 
10 _resize(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event __UNUSED__)
11 {
12    Evas_Coord w, h;
13    Evas_Object *rect = data;
14
15    evas_object_geometry_get(obj, NULL, NULL, &w, &h);
16    evas_object_resize(rect, w, h);
17 }
18
19 static void
20 _show(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
21 {
22    Evas_Event_Mouse_Down *ev = event_info;
23    elm_menu_move(data, ev->canvas.x, ev->canvas.y);
24    evas_object_show(data);
25 }
26
27 static void
28 _populate_4(Elm_Object_Item *menu_it)
29 {
30    Elm_Object_Item *menu_it2;
31
32    elm_menu_item_add(menu, menu_it, "go-bottom", "menu 2", NULL, NULL);
33    elm_menu_item_add(menu, menu_it, "go-first", "menu 3", NULL, NULL);
34    elm_menu_item_separator_add(menu, menu_it);
35    menu_it2 = elm_menu_item_add(menu, menu_it, "go-last", "Disabled item", NULL,
36                                 NULL);
37    elm_object_item_disabled_set(menu_it2, EINA_TRUE);
38    menu_it2 = elm_menu_item_add(menu, menu_it, "go-next", "Disabled item", NULL,
39                                 NULL);
40    elm_object_item_disabled_set(menu_it2, EINA_TRUE);
41    menu_it2 = elm_menu_item_add(menu, menu_it, "go-up", "Disabled item", NULL,
42                                 NULL);
43    elm_object_item_disabled_set(menu_it2, EINA_TRUE);
44 }
45
46 static void
47 _populate_3(Elm_Object_Item *menu_it)
48 {
49    Elm_Object_Item *menu_it2;
50
51    elm_menu_item_add(menu, menu_it, "media-eject", "menu 2", NULL, NULL);
52    elm_menu_item_add(menu, menu_it, "media-playback-start", "menu 3", NULL,
53                      NULL);
54    elm_menu_item_separator_add(menu, menu_it);
55    menu_it2 = elm_menu_item_add(menu, menu_it, "media-playback-stop",
56                                 "Disabled item", NULL, NULL);
57    elm_object_item_disabled_set(menu_it2, EINA_TRUE);
58 }
59
60 static void
61 _populate_2(Elm_Object_Item *menu_it)
62 {
63    Elm_Object_Item *menu_it2, *menu_it3;
64
65    elm_menu_item_add(menu, menu_it, "system-reboot", "menu 2", NULL, NULL);
66    menu_it2 = elm_menu_item_add(menu, menu_it, "system-shutdown", "menu 3",
67                                 NULL, NULL);
68    _populate_3(menu_it2);
69
70    elm_menu_item_separator_add(menu, menu_it);
71    elm_menu_item_separator_add(menu, menu_it);
72    elm_menu_item_separator_add(menu, menu_it);
73    elm_menu_item_separator_add(menu, menu_it);
74    elm_menu_item_separator_add(menu, menu_it);
75    elm_menu_item_separator_add(menu, menu_it);
76    elm_menu_item_separator_add(menu, menu_it);
77
78    menu_it2 = elm_menu_item_add(menu, menu_it, "system-lock-screen", "menu 2",
79                                 NULL, NULL);
80    elm_menu_item_separator_add(menu, menu_it);
81
82    menu_it3 = elm_menu_item_add(menu, menu_it, "system-run", "Disabled item",
83                                 NULL, NULL);
84    elm_object_item_disabled_set(menu_it3, EINA_TRUE);
85
86    _populate_4(menu_it2);
87 }
88
89 static void
90 _populate_1(Evas_Object *obj, Elm_Object_Item *menu_it)
91 {
92    Elm_Object_Item *menu_it2, *menu_it3;
93    Evas_Object *radio;
94
95    radio = elm_radio_add(obj);
96    elm_radio_state_value_set(radio, 0);
97    elm_radio_value_set(radio, 0);
98    elm_object_text_set(radio, "radio in menu");
99    menu_it2 = elm_menu_item_add(menu, menu_it, "object-rotate-left", "menu 1",
100                                 NULL, NULL);
101    menu_it3 = elm_menu_item_add(menu, menu_it, NULL, NULL, NULL, NULL);
102    elm_object_item_content_set(menu_it3, radio);
103
104    _populate_2(menu_it2);
105 }
106
107 void
108 test_menu(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
109 {
110    Evas_Object *win, *rect;
111    Elm_Object_Item *menu_it;
112
113    win = elm_win_util_standard_add("menu", "Menu");
114    elm_win_autodel_set(win, EINA_TRUE);
115
116    rect = evas_object_rectangle_add(evas_object_evas_get(win));
117    evas_object_move(rect, 0, 0);
118    evas_object_resize(rect, 350, 200);
119    evas_object_size_hint_weight_set(rect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
120    evas_object_color_set(rect, 0, 0, 0, 0);
121    evas_object_show(rect);
122
123    menu = elm_menu_add(win);
124    elm_menu_item_add(menu, NULL, NULL, "first item", NULL, NULL);
125
126    menu_it = elm_menu_item_add(menu, NULL, "mail-reply-all", "second item",
127                                NULL, NULL);
128    _populate_1(win, menu_it);
129
130    elm_menu_item_add(menu, menu_it, "window-new", "sub menu", NULL, NULL);
131
132    evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _resize, rect);
133    evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _show, menu);
134
135    evas_object_resize(win, 350, 200);
136    evas_object_show(win);
137 }
138
139 static void
140 _parent_set_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
141 {
142    Evas_Object *mn = data;
143    if (!mn) return;
144
145    Evas_Object *parent = evas_object_data_get(mn, "parent_1");
146    if (elm_menu_parent_get(mn) == parent)
147      {
148         parent = evas_object_data_get(mn, "parent_2");
149      }
150
151    elm_menu_parent_set(mn, parent);
152 }
153
154 static void
155 _icon_set_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
156 {
157    Elm_Object_Item *menu_it = data;
158    const char *icon_name = NULL;
159    if (!menu_it) return;
160
161    icon_name = elm_menu_item_icon_name_get(menu_it);
162    if ((icon_name) && !strcmp(icon_name, "home"))
163      {
164         elm_menu_item_icon_name_set(menu_it, "file");
165         return;
166      }
167    elm_menu_item_icon_name_set(menu_it, "home");
168 }
169
170 static void
171 _item_select_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
172 {
173    Elm_Object_Item *menu_it = data;
174    if (!menu_it) return;
175
176    elm_menu_item_selected_set(menu_it, !elm_menu_item_selected_get(menu_it));
177 }
178
179 static void
180 _separators_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
181 {
182    const Eina_List *sis = NULL;
183    const Eina_List *l = NULL;
184    Elm_Object_Item *si;
185    int separators = 0;
186
187    Elm_Object_Item *menu_it = data;
188    if (!menu_it) return;
189
190    sis = elm_menu_item_subitems_get(menu_it);
191
192    EINA_LIST_FOREACH(sis, l, si)
193      if (elm_menu_item_is_separator(si)) separators++;
194
195    printf("The number of separators: %d\n", separators);
196 }
197
198 static void
199 _open_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
200 {
201    Evas_Object *mn = data;
202    if (!mn) return;
203
204    evas_object_show(mn);
205 }
206
207 static void
208 _close_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
209 {
210    Evas_Object *mn = data;
211    if (!mn) return;
212
213    elm_menu_close(mn);
214 }
215
216 void
217 test_menu2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
218 {
219    Evas_Object *win, *bx, *o_bg, *rect, *rect2, *mn, *bt, *vbx;
220    Elm_Object_Item *menu_it, *menu_it2;
221    char buf[PATH_MAX];
222
223    win = elm_win_util_standard_add("menu2", "Menu 2");
224    elm_win_autodel_set(win, EINA_TRUE);
225
226    bx = elm_box_add(win);
227    elm_box_horizontal_set(bx, EINA_TRUE);
228    evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
229    elm_win_resize_object_add(win, bx);
230    evas_object_show(bx);
231
232    o_bg = elm_bg_add(win);
233    snprintf(buf, sizeof(buf), "%s/images/twofish.jpg", elm_app_data_dir_get());
234    elm_bg_file_set(o_bg, buf, NULL);
235    evas_object_size_hint_weight_set(o_bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
236    evas_object_size_hint_align_set(o_bg, EVAS_HINT_FILL, EVAS_HINT_FILL);
237    elm_box_pack_end(bx, o_bg);
238    evas_object_show(o_bg);
239
240    rect = evas_object_rectangle_add(evas_object_evas_get(win));
241    evas_object_move(rect, 0, 0);
242    evas_object_resize(rect, 124, 320);
243    evas_object_color_set(rect, 0, 0, 0, 0);
244    evas_object_show(rect);
245
246    rect2 = evas_object_rectangle_add(evas_object_evas_get(win));
247    evas_object_move(rect2, 124, 0);
248    evas_object_resize(rect2, 124, 320);
249    evas_object_color_set(rect2, 0, 0, 0, 0);
250    evas_object_show(rect2);
251
252    mn = elm_menu_add(rect);
253    elm_menu_item_add(mn, NULL, NULL, "first item", NULL, NULL);
254    menu_it = elm_menu_item_add(mn, NULL, NULL, "second item", NULL, NULL);
255    elm_menu_item_add(mn, menu_it, NULL, "item 1", NULL, NULL);
256    elm_menu_item_separator_add(mn, menu_it);
257    elm_menu_item_add(mn, menu_it, NULL, "item 2", NULL, NULL);
258    menu_it2 = elm_menu_item_add(mn, NULL, NULL, "third item", NULL, NULL);
259    evas_object_data_set(mn, "parent_1", rect);
260    evas_object_data_set(mn, "parent_2", rect2);
261
262    vbx = elm_box_add(win);
263    evas_object_show(vbx);
264    elm_box_pack_end(bx, vbx);
265
266    bt = elm_button_add(win);
267    elm_object_text_set(bt, "Menu Open");
268    elm_box_pack_end(vbx, bt);
269    evas_object_smart_callback_add(bt, "clicked", _open_bt_clicked, mn);
270    evas_object_show(bt);
271
272    bt = elm_button_add(win);
273    elm_object_text_set(bt, "Icon Set");
274    elm_box_pack_end(vbx, bt);
275    evas_object_smart_callback_add(bt, "clicked", _icon_set_bt_clicked, menu_it);
276    evas_object_show(bt);
277
278    bt = elm_button_add(win);
279    elm_object_text_set(bt, "Parent Set");
280    elm_box_pack_end(vbx, bt);
281    evas_object_smart_callback_add(bt, "clicked", _parent_set_bt_clicked, mn);
282    evas_object_show(bt);
283
284    bt = elm_button_add(win);
285    elm_object_text_set(bt, "Item Select");
286    elm_box_pack_end(vbx, bt);
287    evas_object_smart_callback_add(bt, "clicked", _item_select_bt_clicked, menu_it2);
288    evas_object_show(bt);
289
290    bt = elm_button_add(win);
291    elm_object_text_set(bt, "Separators");
292    elm_box_pack_end(vbx, bt);
293    evas_object_smart_callback_add(bt, "clicked", _separators_bt_clicked, menu_it);
294    evas_object_show(bt);
295
296    bt = elm_button_add(win);
297    elm_object_text_set(bt, "Menu Close");
298    elm_box_pack_end(vbx, bt);
299    evas_object_smart_callback_add(bt, "clicked", _close_bt_clicked, mn);
300    evas_object_show(bt);
301
302    evas_object_resize(win, 320, 320);
303    evas_object_show(win);
304 }
305
306 #endif