efl
436 строк · 14.4 Кб
1#ifdef HAVE_CONFIG_H2# include "elementary_config.h"3#endif4#include <Elementary.h>5
6#define BUTTON_TEXT_SET(BT, TEXT) \7elm_object_text_set((BT), (TEXT)); \8elm_object_tooltip_text_set((BT), (TEXT)); \9elm_object_tooltip_window_mode_set((BT), EINA_TRUE)10
11static char img1[PATH_MAX];12static char img2[PATH_MAX];13static char img3[PATH_MAX];14static char img4[PATH_MAX];15static char img5[PATH_MAX];16static char img6[PATH_MAX];17static char img7[PATH_MAX];18
19Evas_Object *20_content_new(Evas_Object *parent, const char *img)21{
22Evas_Object *photo = elm_photo_add(parent);23elm_photo_file_set(photo, img);24elm_photo_fill_inside_set(photo, EINA_TRUE);25elm_object_style_set(photo, "shadow");26return photo;27}
28
29void
30_navi_pop(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)31{
32elm_naviframe_item_pop(data);33}
34
35void
36_navi_it_del(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)37{
38elm_object_item_del(data);39}
40
41void
42_title_clicked(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)43{
44printf("Title Clicked!\n");45}
46
47void
48_item_activated(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)49{
50Elm_Object_Item *it = event_info;51printf("Item(%p) is activated! The Title is \"%s\"\n", it, elm_object_item_text_get(it));52}
53
54void
55_title_visible(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)56{
57elm_naviframe_item_title_enabled_set(data,58!elm_naviframe_item_title_enabled_get(data),59EINA_TRUE);60}
61
62void
63_promote(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)64{
65elm_naviframe_item_promote(data);66}
67
68Eina_Bool
69_pop_cb(void *data EINA_UNUSED, Elm_Object_Item *it)70{
71elm_object_item_del(it);72
73/* If EINA_TRUE is returned, pop transition effect happens and then the item74* is automatically deleted.
75* If EINA_FALSE is returned, pop transition effect does not happen and the
76* item is not automatically deleted.
77*/
78return EINA_FALSE;79}
80
81void
82_page9(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)83{
84Evas_Object *bt, *bt2, *nf = data;85Elm_Object_Item *it;86
87bt = elm_button_add(nf);88evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);89BUTTON_TEXT_SET(bt, "Page 8");90
91bt2 = elm_button_add(nf);92evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);93BUTTON_TEXT_SET(bt2, "Page 1");94evas_object_smart_callback_add(bt2, "clicked", _promote,95evas_object_data_get(nf, "page1"));96
97it = elm_naviframe_item_push(nf, "Page 9", bt, bt2, NULL, NULL);98elm_object_item_part_text_set(it, "subtitle", "Callback for naviframe item pop is set");99
100elm_naviframe_item_pop_cb_set(it, _pop_cb, NULL);101
102evas_object_smart_callback_add(bt, "clicked", _navi_pop, nf);103}
104
105void
106_page8(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)107{
108Evas_Object *bt, *bt2, *content, *nf = data;109Elm_Object_Item *it;110
111snprintf(img6, sizeof(img6), "%s/images/sky_02.jpg", elm_app_data_dir_get());112bt = elm_button_add(nf);113evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);114BUTTON_TEXT_SET(bt, "Page 7");115
116bt2 = elm_button_add(nf);117evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);118BUTTON_TEXT_SET(bt2, "Page 9");119evas_object_smart_callback_add(bt2, "clicked", _page9, nf);120
121content = _content_new(nf, img6);122it = elm_naviframe_item_push(nf, "Page 8", bt, bt2, content, NULL);123elm_object_item_part_text_set(it, "subtitle", "Overlap style!");124
125evas_object_smart_callback_add(bt, "clicked", _navi_pop, nf);126}
127
128static void129_page7_btn_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj,130void *event_info EINA_UNUSED)131{
132evas_object_color_set(obj, 100, 0, 0, 100);133_page8(data, NULL, NULL);134}
135
136static void137_page7_btn_up_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj,138void *event_info EINA_UNUSED)139{
140evas_object_color_set(obj, 255, 255, 255, 255);141printf("Page7 Button Mouse Up!\n");142}
143
144Evas_Object *145_page7_content_new(Evas_Object *nf)146{
147Evas_Object *bt;148
149bt = elm_button_add(nf);150elm_object_text_set(bt, "Page 8");151evas_object_event_callback_add(bt, EVAS_CALLBACK_MOUSE_DOWN,152_page7_btn_down_cb, nf);153evas_object_event_callback_add(bt, EVAS_CALLBACK_MOUSE_UP,154_page7_btn_up_cb, NULL);155
156return bt;157}
158
159void
160_page7(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)161{
162Evas_Object *bt, *bt2, *content, *nf = data;163Elm_Object_Item *it;164
165bt = elm_button_add(nf);166evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);167BUTTON_TEXT_SET(bt, "Page 6");168
169bt2 = elm_button_add(nf);170evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);171BUTTON_TEXT_SET(bt2, "Page 8");172evas_object_smart_callback_add(bt2, "clicked", _page8, nf);173content = _page7_content_new(nf);174it = elm_naviframe_item_push(nf, "Page 7", bt, bt2, content, "overlap");175elm_object_item_part_text_set(it, "subtitle", "Overlap style!");176
177evas_object_smart_callback_add(bt, "clicked", _navi_pop, nf);178}
179
180void
181_page6(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)182{
183Evas_Object *bt, *bt2, *content, *nf = data;184Elm_Object_Item *it;185
186snprintf(img7, sizeof(img7), "%s/images/sky_03.jpg", elm_app_data_dir_get());187bt = elm_button_add(nf);188evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);189BUTTON_TEXT_SET(bt, "Page 5");190
191bt2 = elm_button_add(nf);192evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);193BUTTON_TEXT_SET(bt2, "Page 7");194evas_object_smart_callback_add(bt2, "clicked", _page7, nf);195
196content = _content_new(nf, img7);197it = elm_naviframe_item_push(nf, "Page 6", bt, bt2, content, "overlap");198elm_object_item_part_text_set(it, "subtitle", "Overlap style!");199
200evas_object_smart_callback_add(bt, "clicked", _navi_pop, nf);201}
202
203void
204_page5(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)205{
206Evas_Object *bt, *bt2, *content, *nf = data;207Elm_Object_Item *it;208
209snprintf(img5, sizeof(img5), "%s/images/sky_01.jpg", elm_app_data_dir_get());210bt = elm_button_add(nf);211evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);212BUTTON_TEXT_SET(bt, "Page 4");213
214bt2 = elm_button_add(nf);215evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);216BUTTON_TEXT_SET(bt2, "Page 6");217evas_object_smart_callback_add(bt2, "clicked", _page6, nf);218
219content = _content_new(nf, img5);220it = elm_naviframe_item_insert_after(nf,221elm_naviframe_top_item_get(nf),222"Page 5",223bt,224bt2,225content,226NULL);227elm_object_item_part_text_set(it, "subtitle", "This page is inserted after top item without transition");228evas_object_smart_callback_add(bt, "clicked", _navi_it_del, it);229}
230
231void
232_page4(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)233{
234Evas_Object *bt, *ic, *content, *nf = data;235char buf[PATH_MAX];236Elm_Object_Item *it;237
238snprintf(img4, sizeof(img4), "%s/images/rock_02.jpg", elm_app_data_dir_get());239ic = elm_icon_add(nf);240elm_icon_standard_set(ic, "go-right");241
242bt = elm_button_add(nf);243evas_object_smart_callback_add(bt, "clicked", _page5, nf);244evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);245elm_layout_content_set(bt, "icon", ic);246
247content = _content_new(nf, img4);248
249it = elm_naviframe_item_push(nf,250"Page 4",251NULL,252bt,253content,254NULL);255elm_object_item_part_text_set(it, "subtitle", "Title area visibility test");256
257ic = elm_icon_add(nf);258snprintf(buf, sizeof(buf), "%s/images/logo_small.png",259elm_app_data_dir_get());260elm_image_file_set(ic, buf, NULL);261evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);262elm_object_item_part_content_set(it, "icon", ic);263elm_naviframe_item_title_enabled_set(it, EINA_FALSE, EINA_FALSE);264evas_object_smart_callback_add(content, "clicked", _title_visible, it);265}
266
267void
268_page3(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)269{
270Evas_Object *bt2, *content, *nf = data;271
272snprintf(img3, sizeof(img3), "%s/images/rock_01.jpg", elm_app_data_dir_get());273bt2 = elm_button_add(nf);274evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);275BUTTON_TEXT_SET(bt2, "Next");276evas_object_smart_callback_add(bt2, "clicked", _page4, nf);277
278content = _content_new(nf, img3);279
280elm_naviframe_item_push(nf,281"Page 3",282NULL,283bt2,284content,285NULL);286}
287
288void
289_page2(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)290{
291Evas_Object *bt, *content, *ic, *nf = data;292Elm_Object_Item *it;293
294snprintf(img2, sizeof(img2), "%s/images/plant_01.jpg", elm_app_data_dir_get());295bt = elm_button_add(nf);296evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);297evas_object_smart_callback_add(bt, "clicked", _page3, nf);298
299ic = elm_icon_add(nf);300elm_icon_standard_set(ic, "arrow_right");301evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);302elm_layout_content_set(bt, "icon", ic);303
304content = _content_new(nf, img2);305
306it = elm_naviframe_item_push(nf, "Page 2 - Long Title Here",307NULL, bt, content, NULL);308elm_object_item_part_text_set(it, "subtitle", "Here is sub-title part!");309}
310
311void
312test_naviframe(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)313{
314Evas_Object *win, *nf, *btn, *content;315Elm_Object_Item *it;316
317snprintf(img1, sizeof(img1), "%s/images/logo.png", elm_app_data_dir_get());318win = elm_win_util_standard_add("naviframe", "Naviframe");319elm_win_focus_highlight_enabled_set(win, EINA_TRUE);320elm_win_autodel_set(win, EINA_TRUE);321
322nf = elm_naviframe_add(win);323evas_object_size_hint_weight_set(nf, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);324elm_win_resize_object_add(win, nf);325evas_object_show(nf);326evas_object_smart_callback_add(nf, "title,clicked", _title_clicked, 0);327evas_object_smart_callback_add(nf, "item,activated", _item_activated, NULL);328
329btn = elm_button_add(nf);330evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);331evas_object_smart_callback_add(btn, "clicked", _page2, nf);332BUTTON_TEXT_SET(btn, "Next");333evas_object_show(btn);334
335content = _content_new(nf, img1);336it = elm_naviframe_item_push(nf, "Page 1", NULL, btn, content, NULL);337evas_object_data_set(nf, "page1", it);338
339evas_object_resize(win, 400 * elm_config_scale_get(),340400 * elm_config_scale_get());341evas_object_show(win);342}
343
344void
345test_naviframe2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)346{
347Evas_Object *win, *nf, *sc, *btn, *ico, *content;348Elm_Object_Item *it;349
350snprintf(img1, sizeof(img1), "%s/images/logo.png", elm_app_data_dir_get());351win = elm_win_util_standard_add("naviframe", "Naviframe");352elm_win_focus_highlight_enabled_set(win, EINA_TRUE);353elm_win_autodel_set(win, EINA_TRUE);354
355nf = elm_naviframe_add(win);356evas_object_size_hint_weight_set(nf, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);357elm_win_resize_object_add(win, nf);358evas_object_show(nf);359
360sc = elm_segment_control_add(nf);361elm_segment_control_item_add(sc, NULL, "Show All");362elm_segment_control_item_add(sc, NULL, "Just Filtered");363
364btn = elm_button_add(nf);365ico = elm_icon_add(btn);366elm_icon_standard_set(ico, "refresh");367elm_layout_content_set(btn, "icon", ico);368
369content = _content_new(nf, img1);370it = elm_naviframe_item_push(nf, NULL, NULL, btn, content, NULL);371evas_object_data_set(nf, "page1", it);372
373elm_object_item_part_content_set(it, "icon", sc);374
375evas_object_resize(win, 400 * elm_config_scale_get(),376400 * elm_config_scale_get());377evas_object_show(win);378}
379
380static void381_bt_pop_all(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)382{
383Elm_Object_Item *it = evas_object_data_get(obj, "root");384
385while (elm_naviframe_top_item_get(data) != it)386elm_naviframe_item_pop(data);387}
388
389void
390test_naviframe3(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)391{
392Evas_Object *win, *tb, *bxh, *nf, *btn, *content;393Elm_Object_Item *it;394
395snprintf(img1, sizeof(img1), "%s/images/logo.png", elm_app_data_dir_get());396win = elm_win_util_standard_add("naviframe", "Naviframe");397elm_win_focus_highlight_enabled_set(win, EINA_TRUE);398elm_win_autodel_set(win, EINA_TRUE);399
400bxh = elm_box_add(win);401evas_object_size_hint_weight_set(bxh, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);402elm_box_horizontal_set(bxh, EINA_TRUE);403elm_win_resize_object_add(win, bxh);404evas_object_show(bxh);405
406tb = elm_toolbar_add(win);407evas_object_size_hint_weight_set(tb, 0.0, EVAS_HINT_EXPAND);408evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);409elm_toolbar_horizontal_set(tb, EINA_FALSE);410elm_toolbar_select_mode_set(tb, ELM_OBJECT_SELECT_MODE_ALWAYS);411elm_box_pack_end(bxh, tb);412evas_object_show(tb);413
414nf = elm_naviframe_add(win);415evas_object_size_hint_weight_set(nf, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);416evas_object_size_hint_align_set(nf, EVAS_HINT_FILL, EVAS_HINT_FILL);417elm_box_pack_end(bxh, nf);418evas_object_show(nf);419
420btn = elm_button_add(nf);421evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);422evas_object_smart_callback_add(btn, "clicked", _page2, nf);423BUTTON_TEXT_SET(btn, "Next");424evas_object_show(btn);425
426content = _content_new(nf, img1);427it = elm_naviframe_item_push(nf, "Page 1", NULL, btn, content, NULL);428evas_object_data_set(nf, "page1", it);429
430evas_object_data_set(tb, "root", it);431elm_toolbar_item_append(tb, NULL, "Pop all", _bt_pop_all, nf);432
433evas_object_resize(win, 400 * elm_config_scale_get(),434400 * elm_config_scale_get());435evas_object_show(win);436}
437