Kestrel Interface
Loading...
Searching...
No Matches
kest_button.h
Go to the documentation of this file.
1#ifndef KEST_INT_M_BUTTON_H_
2#define KEST_INT_M_BUTTON_H_
3
5
6#define STANDARD_DEL_BTN_REMAIN_MS 1000
7
8#define STANDARD_BUTTON_HEIGHT ((int)(0.07 * DISPLAY_VRES))
9#define STANDARD_BUTTON_SHORT_HEIGHT ((int)(0.06 * DISPLAY_VRES))
10
11#define KEST_BUTTON_HEIGHT STANDARD_BUTTON_HEIGHT
12#define KEST_BUTTON_WIDTH (STANDARD_CONTAINER_WIDTH - (3 * GLOBAL_PAD_WIDTH))
13
14#define KEST_BUTTON_SCALE_EXPAND 1
15#define KEST_BUTTON_SCALE_CONTRACT 0
16
17#define KEST_BUTTON_LP_SCALE 1.05
18#define KEST_BUTTON_SCALE_ANIM_MS 75
19#define KEST_BUTTON_GLIDE_ANIM_MS 150
20
21#define KEST_BUTTON_DEL_BTN_FADE_IN_MS 75
22#define KEST_BUTTON_DEL_BTN_FADE_OUT_MS 300
23#define KEST_BUTTON_DEL_BTN_REMAIN_MS STANDARD_DEL_BTN_REMAIN_MS
24
25#define KEST_BUTTON_DEL_ANIM_MS 100
26
27#define KEST_BUTTON_ARRAY_BASE_Y ((int)(0.021f * DISPLAY_VRES))
28
29#define KEST_BUTTON_V_PAD ((int)(0.028f * DISPLAY_VRES))
30#define KEST_BUTTON_DISTANCE (KEST_BUTTON_HEIGHT + KEST_BUTTON_V_PAD)
31
32
33#define KEST_BUTTON_MAX_SUB_BUTTONS 2
34
35#define KEST_BUTTON_DISABLED_OPACITY 128
36
37#define KEST_BUTTON_FLAG_HIDDEN 0b0001
38#define KEST_BUTTON_FLAG_DISABLED 0b0010
39#define KEST_BUTTON_FLAG_UNCLICKABLE 0b0100
40#define KEST_BUTTON_FLAG_NO_ALIGN 0b1000
41
42struct kest_ui_page;
43
44typedef struct kest_button
45{
46 int flags;
47
48 lv_obj_t *obj;
49 lv_obj_t *label;
51
52 lv_event_cb_t clicked_cb;
54
55 lv_event_cb_t pressing_cb;
57
58 lv_event_cb_t long_pressed_cb;
60
61 lv_event_cb_t released_cb;
63
66
67 int *hider;
68
71
72 int width;
73 int height;
74
76
77 lv_align_t alignment;
80
84
85int init_button(kest_button *button);
86kest_button *new_button(const char *label);
87
89int create_button_ui(kest_button *button, lv_obj_t *parent);
90
91int button_set_clicked_cb (kest_button *button, lv_event_cb_t cb, void *cb_arg);
92int button_set_pressing_cb (kest_button *button, lv_event_cb_t cb, void *cb_arg);
93int button_set_long_pressed_cb(kest_button *button, lv_event_cb_t cb, void *cb_arg);
94int button_set_released_cb (kest_button *button, lv_event_cb_t cb, void *cb_arg);
95
96int kest_button_set_label(kest_button *button, const char *label);
98int kest_button_set_alignment(kest_button *button, lv_align_t align, int offs_x, int offs_y);
99int kest_button_set_size(kest_button *button, int width, int height);
100
101int kest_button_add_sub_button(kest_button *button, kest_button *sub_button);
102
103int kest_button_hide(kest_button *button);
107
109
112
114
115#define DANGER_BUTTON_CONFIRM_TEXT "Yes"
116#define DANGER_BUTTON_CANCEL_TEXT "Cancel"
117
118#define DANGER_BUTTON_POPUP_HEIGHT ((int)(0.25 * DISPLAY_VRES))
119#define DANGER_BUTTON_POPUP_WIDTH ((int)(0.6 * DISPLAY_HRES))
120
121#define DANGER_BUTTON_POPUP_BUTTON_HEIGHT ((int)(0.045 * DISPLAY_VRES))
122#define DANGER_BUTTON_POPUP_BUTTON_WIDTH ((int)(0.2 * DISPLAY_HRES))
123
124typedef struct
125{
128 lv_obj_t *popup;
129 void (*action_cb)(void *data);
130 void *cb_arg;
132
133int init_danger_button(kest_danger_button *button, void (*action_cb)(void *data), void *cb_arg, struct kest_ui_page *parent);
135void kest_danger_button_activate_popup_cb(lv_event_t *e);
136void kest_danger_button_value_changed_cb(lv_event_t *e);
137
139
172
174
179
181
183
185
187 void *representer, void *representee, void (*update)(void*, void*));
188
189#define KEST_ACTIVE_BUTTON_ARRAY_FLAG_DELETEABLE 0b0001
190#define KEST_ACTIVE_BUTTON_ARRAY_FLAG_MOVEABLE 0b0010
191
193{
194 int flags;
195
198
201
203
204 lv_obj_t *container;
207
209
210 void *data;
211
212 int (*delete_cb)(struct kest_active_button *button);
213 int (*del_button_cb)(struct kest_active_button *button);
214 int (*clicked_cb)(struct kest_active_button *button);
215 int (*moved_cb)(struct kest_active_button *button);
217
219
221
225
228
230
231#endif
int init_button(kest_button *button)
Definition kest_button.c:11
int kest_active_button_add_del_button(kest_active_button *button)
int kest_button_disable(kest_button *button)
int kest_button_hide(kest_button *button)
int kest_button_set_opacity(kest_button *button, int opacity)
int create_button_ui(kest_button *button, lv_obj_t *parent)
Definition kest_button.c:68
int kest_button_create_label_ui(kest_button *button)
int kest_active_button_array_append(kest_active_button *button, kest_active_button_array *array)
int kest_button_delete_ui(kest_button *button)
int kest_active_button_array_set_dimensions(kest_active_button_array *array, int w, int h)
int kest_active_button_set_dimensions(kest_active_button *button, int w, int h)
int kest_active_button_create_ui(kest_active_button *button, lv_obj_t *parent)
int init_danger_button(kest_danger_button *button, void(*action_cb)(void *data), void *cb_arg, struct kest_ui_page *parent)
kest_active_button * kest_active_button_array_append_new(kest_active_button_array *array, void *data, char *label)
int button_set_long_pressed_cb(kest_button *button, lv_event_cb_t cb, void *cb_arg)
int button_set_released_cb(kest_button *button, lv_event_cb_t cb, void *cb_arg)
int kest_button_set_clickable(kest_button *button)
int kest_active_button_array_create_ui(kest_active_button_array *array, lv_obj_t *parent)
int kest_button_enable(kest_button *button)
int kest_button_set_alignment(kest_button *button, lv_align_t align, int offs_x, int offs_y)
int kest_active_button_array_set_length(kest_active_button_array *array, int n)
int kest_active_button_change_label(kest_active_button *button, char *text)
void kest_active_button_set_representation(kest_active_button *button, void *representer, void *representee, void(*update)(void *, void *))
int button_set_clicked_cb(kest_button *button, lv_event_cb_t cb, void *cb_arg)
kest_active_button_array * kest_active_button_array_new()
int kest_button_disable_alignment(kest_button *button)
int kest_active_button_reset_del_button(kest_active_button *button)
int kest_active_button_swap_del_button_for_persistent_unclickable(kest_active_button *button, const char *label)
int kest_active_button_array_index_y_position(kest_active_button_array *array, int index)
void kest_danger_button_value_changed_cb(lv_event_t *e)
int kest_button_add_sub_button(kest_button *button, kest_button *sub_button)
int kest_button_set_label(kest_button *button, const char *label)
void kest_danger_button_activate_popup_cb(lv_event_t *e)
int kest_button_set_size(kest_button *button, int width, int height)
void kest_active_button_free(kest_active_button *button)
#define KEST_BUTTON_MAX_SUB_BUTTONS
Definition kest_button.h:33
int kest_button_set_unclickable(kest_button *button)
int kest_button_unhide(kest_button *button)
int kest_danger_button_create_ui(kest_danger_button *button, lv_obj_t *parent)
int button_set_pressing_cb(kest_button *button, lv_event_cb_t cb, void *cb_arg)
kest_button * new_button(const char *label)
Definition kest_button.c:54
int kest_active_button_array_remove(kest_active_button_array *array, int index)
#define DECLARE_LINKED_PTR_LIST(X)
int(* moved_cb)(struct kest_active_button *button)
int(* delete_cb)(struct kest_active_button *button)
struct kest_ui_page * parent
int(* clicked_cb)(struct kest_active_button *button)
kest_active_button ** buttons
int(* del_button_cb)(struct kest_active_button *button)
kest_button * del_button
lv_timer_t * del_button_remain_timer
kest_representation rep
lv_anim_t delete_anim
kest_button button
struct kest_active_button_array * array
lv_anim_t del_button_fade
lv_align_t alignment
Definition kest_button.h:77
void * pressing_cb_arg
Definition kest_button.h:56
lv_event_cb_t pressing_cb
Definition kest_button.h:55
char * label_text
Definition kest_button.h:50
void * released_cb_arg
Definition kest_button.h:62
lv_obj_t * obj
Definition kest_button.h:48
lv_event_cb_t long_pressed_cb
Definition kest_button.h:58
void * clicked_cb_arg
Definition kest_button.h:53
lv_event_cb_t released_cb
Definition kest_button.h:61
int n_sub_buttons
Definition kest_button.h:81
struct kest_button * sub_buttons[KEST_BUTTON_MAX_SUB_BUTTONS]
Definition kest_button.h:82
lv_event_cb_t clicked_cb
Definition kest_button.h:52
lv_obj_t * label
Definition kest_button.h:49
void * long_pressed_cb_arg
Definition kest_button.h:59
kest_button button
struct kest_ui_page * parent
void(* action_cb)(void *data)
struct kest_ui_page * parent
Definition kest_ui.h:109