efl

Форк
0
/
test_ui_stack.c 
166 строк · 4.3 Кб
1
#ifdef HAVE_CONFIG_H
2
# include "elementary_config.h"
3
#endif
4

5
#include <Efl_Ui.h>
6
#include <Elementary.h>
7

8
static void _third_layout_push(void *data, const Efl_Event *ev EINA_UNUSED);
9

10
static void
11
_stack_remove(void *data, const Efl_Event *ev EINA_UNUSED)
12
{
13
   Eo *stack = data;
14
   Eo *top_layout = efl_pack_content_get(stack, 0);
15
   efl_del(top_layout);
16
}
17

18
static void
19
_stack_pop(void *data, const Efl_Event *ev EINA_UNUSED)
20
{
21
   Eo *stack = data;
22
   efl_ui_spotlight_pop(stack, EINA_TRUE);
23
}
24

25
static void
26
_stack_double_push(void *data, const Efl_Event *ev EINA_UNUSED)
27
{
28
   Eo *stack = data;
29
   _third_layout_push(stack, NULL);
30
}
31

32
static void
33
_stack_del(void *data, const Efl_Event *ev EINA_UNUSED)
34
{
35
   Eo *stack = data;
36
   Eo *top_layout = efl_pack_content_get(stack, 0);
37
   efl_del(top_layout);
38
}
39

40
static void
41
_win_del(void *data, const Efl_Event *ev EINA_UNUSED)
42
{
43
   Eo *win = data;
44
   efl_del(win);
45
}
46

47
static Eo *
48
_navigation_layout_create(Eo *stack, const char *text, Eo *content)
49
{
50
   Eo *nl = efl_add(EFL_UI_NAVIGATION_LAYOUT_CLASS, stack);
51

52
   Eo *bn = efl_add(EFL_UI_NAVIGATION_BAR_CLASS, nl);
53
   efl_text_set(bn, text);
54
   efl_gfx_entity_visible_set(efl_part(bn, "back_button"), EINA_TRUE);
55
   efl_ui_navigation_layout_bar_set(nl, bn);
56

57
   efl_content_set(nl, content);
58

59
   printf("Create content(%p).\n\n", nl);
60

61
   return nl;
62
}
63

64
static void
65
_bar_left_btn_set(Eo *navigation_layout, Efl_Event_Cb clicked_cb, void *data)
66
{
67
   Eo *bn = efl_ui_navigation_layout_bar_get(navigation_layout);
68

69
   Eo *left_btn = efl_add(EFL_UI_BUTTON_CLASS, bn);
70
   efl_text_set(left_btn, "Prev");
71
   efl_content_set(efl_part(bn, "left_content"), left_btn);
72

73
   efl_event_callback_add(left_btn, EFL_INPUT_EVENT_CLICKED, clicked_cb, data);
74

75
   //Positions of "left_content" and "back_button" are the same.
76
   efl_gfx_entity_visible_set(efl_part(bn, "back_button"), EINA_FALSE);
77
}
78

79
static void
80
_bar_right_btn_set(Eo *navigation_layout, Efl_Event_Cb clicked_cb, void *data)
81
{
82
   Eo *bn = efl_ui_navigation_layout_bar_get(navigation_layout);
83

84
   Eo *right_btn = efl_add(EFL_UI_BUTTON_CLASS, bn);
85
   efl_text_set(right_btn, "Next");
86
   efl_content_set(efl_part(bn, "right_content"), right_btn);
87

88
   efl_event_callback_add(right_btn, EFL_INPUT_EVENT_CLICKED, clicked_cb, data);
89
}
90

91
static void
92
_fifth_layout_insert(void *data, const Efl_Event *ev EINA_UNUSED)
93
{
94
   Eo *stack = data;
95

96
   Eo *btn = efl_add(EFL_UI_BUTTON_CLASS, stack);
97
   efl_text_set(btn, "Press to remove top layout");
98
   efl_event_callback_add(btn, EFL_INPUT_EVENT_CLICKED, _stack_remove, stack);
99

100
   Eo *nl = _navigation_layout_create(stack, "5th layout", btn);
101

102
   efl_ui_spotlight_push(stack, nl);
103
}
104

105
static void
106
_third_layout_push(void *data, const Efl_Event *ev EINA_UNUSED)
107
{
108
   Eo *stack = data;
109

110
   Eo *btn = efl_add(EFL_UI_BUTTON_CLASS, stack);
111
   efl_text_set(btn, "Press to pop");
112
   efl_event_callback_add(btn, EFL_INPUT_EVENT_CLICKED, _stack_pop, stack);
113

114
   Eo *nl = _navigation_layout_create(stack, "3rd layout", btn);
115

116
   _bar_right_btn_set(nl, _fifth_layout_insert, stack);
117

118
   efl_ui_spotlight_push(stack, nl);
119
}
120

121
static void
122
_second_layout_push(void *data, const Efl_Event *ev EINA_UNUSED)
123
{
124
   Eo *stack = data;
125

126
   Eo *btn = efl_add(EFL_UI_BUTTON_CLASS, stack);
127
   efl_text_set(btn, "Press to double push");
128
   efl_event_callback_add(btn, EFL_INPUT_EVENT_CLICKED, _stack_double_push, stack);
129

130
   Eo *nl = _navigation_layout_create(stack, "2nd layout", btn);
131

132
   _bar_right_btn_set(nl, _third_layout_push, stack);
133

134
   efl_ui_spotlight_push(stack, nl);
135
}
136

137
static void
138
_first_layout_push(Eo *win, Eo *stack)
139
{
140
   Eo *btn = efl_add(EFL_UI_BUTTON_CLASS, stack);
141
   efl_text_set(btn, "Press to delete stack");
142
   efl_event_callback_add(btn, EFL_INPUT_EVENT_CLICKED, _stack_del, stack);
143

144
   Eo *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

149
   efl_ui_spotlight_push(stack, nl);
150
}
151

152
void
153
test_ui_stack(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
154
{
155
   Eo *win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
156
                     efl_text_set(efl_added, "Efl.Ui.Stack"),
157
                     efl_ui_win_autodel_set(efl_added, EINA_TRUE));
158

159
   efl_gfx_entity_size_set(win, EINA_SIZE2D(500, 500));
160

161
   Eo *stack = efl_ui_spotlight_util_stack_gen(win);
162

163
   efl_content_set(win, stack);
164

165
   _first_layout_push(win, stack);
166
}
167

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.