efl
166 строк · 4.3 Кб
1#ifdef HAVE_CONFIG_H2# include "elementary_config.h"3#endif4
5#include <Efl_Ui.h>6#include <Elementary.h>7
8static void _third_layout_push(void *data, const Efl_Event *ev EINA_UNUSED);9
10static void11_stack_remove(void *data, const Efl_Event *ev EINA_UNUSED)12{
13Eo *stack = data;14Eo *top_layout = efl_pack_content_get(stack, 0);15efl_del(top_layout);16}
17
18static void19_stack_pop(void *data, const Efl_Event *ev EINA_UNUSED)20{
21Eo *stack = data;22efl_ui_spotlight_pop(stack, EINA_TRUE);23}
24
25static void26_stack_double_push(void *data, const Efl_Event *ev EINA_UNUSED)27{
28Eo *stack = data;29_third_layout_push(stack, NULL);30}
31
32static void33_stack_del(void *data, const Efl_Event *ev EINA_UNUSED)34{
35Eo *stack = data;36Eo *top_layout = efl_pack_content_get(stack, 0);37efl_del(top_layout);38}
39
40static void41_win_del(void *data, const Efl_Event *ev EINA_UNUSED)42{
43Eo *win = data;44efl_del(win);45}
46
47static Eo *48_navigation_layout_create(Eo *stack, const char *text, Eo *content)49{
50Eo *nl = efl_add(EFL_UI_NAVIGATION_LAYOUT_CLASS, stack);51
52Eo *bn = efl_add(EFL_UI_NAVIGATION_BAR_CLASS, nl);53efl_text_set(bn, text);54efl_gfx_entity_visible_set(efl_part(bn, "back_button"), EINA_TRUE);55efl_ui_navigation_layout_bar_set(nl, bn);56
57efl_content_set(nl, content);58
59printf("Create content(%p).\n\n", nl);60
61return nl;62}
63
64static void65_bar_left_btn_set(Eo *navigation_layout, Efl_Event_Cb clicked_cb, void *data)66{
67Eo *bn = efl_ui_navigation_layout_bar_get(navigation_layout);68
69Eo *left_btn = efl_add(EFL_UI_BUTTON_CLASS, bn);70efl_text_set(left_btn, "Prev");71efl_content_set(efl_part(bn, "left_content"), left_btn);72
73efl_event_callback_add(left_btn, EFL_INPUT_EVENT_CLICKED, clicked_cb, data);74
75//Positions of "left_content" and "back_button" are the same.76efl_gfx_entity_visible_set(efl_part(bn, "back_button"), EINA_FALSE);77}
78
79static void80_bar_right_btn_set(Eo *navigation_layout, Efl_Event_Cb clicked_cb, void *data)81{
82Eo *bn = efl_ui_navigation_layout_bar_get(navigation_layout);83
84Eo *right_btn = efl_add(EFL_UI_BUTTON_CLASS, bn);85efl_text_set(right_btn, "Next");86efl_content_set(efl_part(bn, "right_content"), right_btn);87
88efl_event_callback_add(right_btn, EFL_INPUT_EVENT_CLICKED, clicked_cb, data);89}
90
91static void92_fifth_layout_insert(void *data, const Efl_Event *ev EINA_UNUSED)93{
94Eo *stack = data;95
96Eo *btn = efl_add(EFL_UI_BUTTON_CLASS, stack);97efl_text_set(btn, "Press to remove top layout");98efl_event_callback_add(btn, EFL_INPUT_EVENT_CLICKED, _stack_remove, stack);99
100Eo *nl = _navigation_layout_create(stack, "5th layout", btn);101
102efl_ui_spotlight_push(stack, nl);103}
104
105static void106_third_layout_push(void *data, const Efl_Event *ev EINA_UNUSED)107{
108Eo *stack = data;109
110Eo *btn = efl_add(EFL_UI_BUTTON_CLASS, stack);111efl_text_set(btn, "Press to pop");112efl_event_callback_add(btn, EFL_INPUT_EVENT_CLICKED, _stack_pop, stack);113
114Eo *nl = _navigation_layout_create(stack, "3rd layout", btn);115
116_bar_right_btn_set(nl, _fifth_layout_insert, stack);117
118efl_ui_spotlight_push(stack, nl);119}
120
121static void122_second_layout_push(void *data, const Efl_Event *ev EINA_UNUSED)123{
124Eo *stack = data;125
126Eo *btn = efl_add(EFL_UI_BUTTON_CLASS, stack);127efl_text_set(btn, "Press to double push");128efl_event_callback_add(btn, EFL_INPUT_EVENT_CLICKED, _stack_double_push, stack);129
130Eo *nl = _navigation_layout_create(stack, "2nd layout", btn);131
132_bar_right_btn_set(nl, _third_layout_push, stack);133
134efl_ui_spotlight_push(stack, nl);135}
136
137static void138_first_layout_push(Eo *win, Eo *stack)139{
140Eo *btn = efl_add(EFL_UI_BUTTON_CLASS, stack);141efl_text_set(btn, "Press to delete stack");142efl_event_callback_add(btn, EFL_INPUT_EVENT_CLICKED, _stack_del, stack);143
144Eo *nl = _navigation_layout_create(stack, "1st layout", btn);145
146_bar_left_btn_set(nl, _win_del, win);147_bar_right_btn_set(nl, _second_layout_push, stack);148
149efl_ui_spotlight_push(stack, nl);150}
151
152void
153test_ui_stack(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)154{
155Eo *win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),156efl_text_set(efl_added, "Efl.Ui.Stack"),157efl_ui_win_autodel_set(efl_added, EINA_TRUE));158
159efl_gfx_entity_size_set(win, EINA_SIZE2D(500, 500));160
161Eo *stack = efl_ui_spotlight_util_stack_gen(win);162
163efl_content_set(win, stack);164
165_first_layout_push(win, stack);166}
167