Kestrel Interface
Loading...
Searching...
No Matches
kest_effect_select.c
Go to the documentation of this file.
1#include "kest_int.h"
2
3#ifndef PRINTLINES_ALLOWED
4#define PRINTLINES_ALLOWED 0
5#endif
6
7static const char *FNAME = "kest_effect_select.c";
8
10
11void enter_effect_selector_cb(lv_event_t *e)
12{
13 enter_ui_page_forwards(&global_cxt.pages.effect_selector);
14}
15
17{
18 KEST_PRINTF("init_effect_selector_eff\n");
19 if (!page)
20 return ERR_NULL_PTR;
21
22 init_ui_page(page);
23
26
28
29 page->data_struct = str;
30
31 if (!str) return ERR_ALLOC_FAIL;
32
33 str->buttons = NULL;
34 str->button_list = NULL;
35 str->page_offset = 0;
36
37 kest_effect_desc_pll *current = global_cxt.effects;
38
39 int i = 0;
41 while (current)
42 {
44
45 if (!button)
46 return ERR_ALLOC_FAIL;
47
48 init_effect_selector_button_from_effect(button, current->data);
49 str->buttons = kest_effect_selector_button_pll_append(str->buttons, button);
50
51 current = current->next;
52 i++;
53 }
54
55 KEST_PRINTF("Created %d buttons\n", i);
56
57 page->configured = 1;
58
59 return NO_ERROR;
60}
61
63{
64 //kest_printf("configure_effect_selector...\n");
65 if (!page || !data)
66 return ERR_NULL_PTR;
67
68 if (page->configured)
69 return NO_ERROR;
70
72
73 if (!ts)
74 return ERR_BAD_ARGS;
75
76 KEST_PRINTF("success\n");
77 return NO_ERROR;
78}
79
84
85void add_effect_from_menu_eff(lv_event_t *e)
86{
87 kest_effect_selector_button *button = lv_event_get_user_data(e);
88
89 // Should never happen
90 if (!button)
91 {
92 KEST_PRINTF("User tried to add effect from menu, but the pointer to the page struct is NULL!\n");
93 return;
94 }
95
96 kest_ui_page *pv = NULL;
97 kest_effect *effect = NULL;
98
99 kest_profile *profile = global_cxt.working_profile;
100
101 kest_effect_desc *eff = button->eff;
102
103 KEST_PRINTF("User wishes to add a \"%s\"\n", button->name);
104
105 if (!profile->view_page)
106 {
107 KEST_PRINTF("Profile does not have a view page!\n");
108 }
109 else
110 {
111 enter_ui_page_backwards(profile->view_page);
112 pv = profile->view_page;
113 }
114
115 effect = kest_profile_append_effect_eff(profile, eff);
116
117 if (pv) profile_view_append_effect(pv, effect);
118
119 profile->unsaved_changes = 1;
120
122
123 #ifdef USE_FPGA
125 #endif
126
127 kest_effect_init_view_page(effect, profile->view_page);
128 create_effect_view_ui(effect->view_page);
129}
130
132{
133 //kest_printf("Init effect selector button. Button = %p, index = %d, profile = %p\n", button, index, profile);
134 if (!button || !eff)
135 return ERR_NULL_PTR;
136
137 button->type = 0;
138 button->name = eff->name;
139
140 button->button = NULL;
141 button->label = NULL;
142
143 button->eff = eff;
144
145 return NO_ERROR;
146}
147
149{
150 if (!button)
151 return ERR_NULL_PTR;
152
153 create_standard_button_click_short(&button->button, &button->label, parent, button->name, add_effect_from_menu_eff, button);
154
155 return NO_ERROR;
156}
157
159{
160 if (!page)
161 return ERR_NULL_PTR;
162
163 if (page->ui_created)
164 return NO_ERROR;
165
167
168 if (!ts)
169 return ERR_BAD_ARGS;
170
171 page->screen = lv_obj_create(NULL);
172
174 set_panel_text(page, "Add Effect");
176
177 kest_effect_selector_button_pll *current = ts->buttons;
178
179 while (current)
180 {
182 current = current->next;
183 }
184
185 page->ui_created = 1;
186
187 return NO_ERROR;
188}
189
191{
192 if (!page)
193 return ERR_NULL_PTR;
194
195 return NO_ERROR;
196}
void * kest_alloc(size_t size)
Definition kest_alloc.c:11
int kest_effect_init_view_page(kest_effect *effect, struct kest_ui_page *parent)
void add_effect_from_menu_eff(lv_event_t *e)
int create_effect_selector_button_ui_eff(kest_effect_selector_button *button, lv_obj_t *parent)
int init_effect_selector_eff(kest_ui_page *page)
int enter_effect_selector(kest_ui_page *page)
int configure_effect_selector(kest_ui_page *page, void *data)
int init_effect_selector_button_from_effect(kest_effect_selector_button *button, kest_effect_desc *eff)
void enter_effect_selector_cb(lv_event_t *e)
int refresh_effect_selector(kest_ui_page *page)
int create_effect_selector_ui_eff(kest_ui_page *page)
int create_effect_view_ui(kest_ui_page *page)
#define ERR_ALLOC_FAIL
#define ERR_BAD_ARGS
#define NO_ERROR
#define ERR_UNIMPLEMENTED
#define ERR_NULL_PTR
kest_context global_cxt
Definition kest_int.c:12
#define IMPLEMENT_LINKED_PTR_LIST(X)
#define KEST_PRINTF(...)
Definition kest_printf.h:10
int kest_profile_if_active_update_fpga(kest_profile *profile)
int kest_profile_update_representations(kest_profile *profile)
kest_effect * kest_profile_append_effect_eff(kest_profile *profile, kest_effect_desc *eff)
int profile_view_append_effect(kest_ui_page *page, kest_effect *effect)
int enter_ui_page_forwards(kest_ui_page *page)
Definition kest_ui.c:299
int create_standard_button_click_short(lv_obj_t **obj, lv_obj_t **label, lv_obj_t *parent, char *text, lv_event_cb_t click_cb, void *click_cb_arg)
Definition kest_ui.c:928
int create_standard_button_list_tall(lv_obj_t **cont, lv_obj_t *parent)
Definition kest_ui.c:886
int create_panel_with_back_button(kest_ui_page *page)
Definition kest_ui.c:670
int set_panel_text(kest_ui_page *page, const char *text)
Definition kest_ui.c:541
int enter_ui_page_backwards(kest_ui_page *page)
Definition kest_ui.c:354
int init_ui_page(kest_ui_page *page)
Definition kest_ui.c:152
const char * name
kest_effect_selector_button_pll * buttons
int ui_created
Definition kest_ui.h:107
lv_obj_t * screen
Definition kest_ui.h:89
int(* create_ui)(struct kest_ui_page *page)
Definition kest_ui.h:97
void * data_struct
Definition kest_ui.h:104
int configured
Definition kest_ui.h:106
int(* enter_page)(struct kest_ui_page *page)
Definition kest_ui.h:100