LittlevGL  3.20.00.19
lv_group.h
Go to the documentation of this file.
1 
6 #ifndef LV_GROUP_H
7 #define LV_GROUP_H
8 
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13 /*********************
14  * INCLUDES
15  *********************/
16 #ifdef LV_CONF_INCLUDE_SIMPLE
17 #include "lv_conf.h"
18 #else
19 #include "../../../lv_conf.h"
20 #endif
21 
22 #include "lv_obj.h"
23 
24 /*********************
25  * DEFINES
26  *********************/
27 /*Predefined keys to control the focused object via lv_group_send(group, c)*/
28 /*For compatibility in signal function define the keys regardless to `LV_USE_GROUP`*/
29 
30 enum {
31  LV_KEY_UP = 17, /*0x11*/
32  LV_KEY_DOWN = 18, /*0x12*/
33  LV_KEY_RIGHT = 19, /*0x13*/
34  LV_KEY_LEFT = 20, /*0x14*/
35  LV_KEY_ESC = 27, /*0x1B*/
36  LV_KEY_DEL = 127, /*0x7F*/
37  LV_KEY_BACKSPACE = 8, /*0x08*/
38  LV_KEY_ENTER = 10, /*0x0A, '\n'*/
39  LV_KEY_NEXT = 9, /*0x09, '\t'*/
40  LV_KEY_PREV = 11, /*0x0B, '*/
41  LV_KEY_HOME = 2, /*0x02, STX*/
42  LV_KEY_END = 3, /*0x03, ETX*/
43 };
44 typedef uint8_t lv_key_t;
45 
46 #if LV_USE_GROUP != 0
47 /**********************
48  * TYPEDEFS
49  **********************/
50 struct _lv_group_t;
51 
52 typedef void (*lv_group_style_mod_cb_t)(struct _lv_group_t *, lv_style_t *);
53 typedef void (*lv_group_focus_cb_t)(struct _lv_group_t *);
54 
59 typedef struct _lv_group_t
60 {
61  lv_ll_t obj_ll;
62  lv_obj_t ** obj_focus;
64  lv_group_style_mod_cb_t style_mod_cb;
65  lv_group_style_mod_cb_t style_mod_edit_cb;
66  lv_group_focus_cb_t focus_cb;
67  lv_style_t style_tmp;
68 #if LV_USE_USER_DATA
69  lv_group_user_data_t user_data;
70 #endif
71 
72  uint8_t frozen : 1;
73  uint8_t editing : 1;
74  uint8_t click_focus : 1;
76  uint8_t refocus_policy : 1;
78  uint8_t wrap : 1;
80 } lv_group_t;
81 
82 enum { LV_GROUP_REFOCUS_POLICY_NEXT = 0, LV_GROUP_REFOCUS_POLICY_PREV = 1 };
83 typedef uint8_t lv_group_refocus_policy_t;
84 
85 /**********************
86  * GLOBAL PROTOTYPES
87  **********************/
88 
93 void lv_group_init(void);
94 
99 lv_group_t * lv_group_create(void);
100 
105 void lv_group_del(lv_group_t * group);
106 
112 void lv_group_add_obj(lv_group_t * group, lv_obj_t * obj);
113 
118 void lv_group_remove_obj(lv_obj_t * obj);
119 
124 void lv_group_remove_all_objs(lv_group_t * group);
125 
130 void lv_group_focus_obj(lv_obj_t * obj);
131 
136 void lv_group_focus_next(lv_group_t * group);
137 
142 void lv_group_focus_prev(lv_group_t * group);
143 
149 void lv_group_focus_freeze(lv_group_t * group, bool en);
150 
157 lv_res_t lv_group_send_data(lv_group_t * group, uint32_t c);
158 
164 void lv_group_set_style_mod_cb(lv_group_t * group, lv_group_style_mod_cb_t style_mod_cb);
165 
171 void lv_group_set_style_mod_edit_cb(lv_group_t * group, lv_group_style_mod_cb_t style_mod_edit_cb);
172 
178 void lv_group_set_focus_cb(lv_group_t * group, lv_group_focus_cb_t focus_cb);
179 
186 void lv_group_set_refocus_policy(lv_group_t * group, lv_group_refocus_policy_t policy);
187 
193 void lv_group_set_editing(lv_group_t * group, bool edit);
194 
200 void lv_group_set_click_focus(lv_group_t * group, bool en);
201 
207 void lv_group_set_wrap(lv_group_t * group, bool en);
208 
215 lv_style_t * lv_group_mod_style(lv_group_t * group, const lv_style_t * style);
216 
222 lv_obj_t * lv_group_get_focused(const lv_group_t * group);
223 
224 #if LV_USE_USER_DATA
225 
230 lv_group_user_data_t * lv_group_get_user_data(lv_group_t * group);
231 
232 #endif
233 
239 lv_group_style_mod_cb_t lv_group_get_style_mod_cb(const lv_group_t * group);
240 
246 lv_group_style_mod_cb_t lv_group_get_style_mod_edit_cb(const lv_group_t * group);
247 
253 lv_group_focus_cb_t lv_group_get_focus_cb(const lv_group_t * group);
254 
260 bool lv_group_get_editing(const lv_group_t * group);
261 
267 bool lv_group_get_click_focus(const lv_group_t * group);
268 
274 bool lv_group_get_wrap(lv_group_t * group);
275 
281 void lv_group_report_style_mod(lv_group_t * group);
282 
283 /**********************
284  * MACROS
285  **********************/
286 
287 #endif /*LV_USE_GROUP != 0*/
288 
289 #ifdef __cplusplus
290 } /* extern "C" */
291 #endif
292 
293 #endif /*LV_GROUP_H*/
Definition: lv_group.h:31
Definition: lv_group.h:40
Definition: lv_group.h:34
Definition: lv_group.h:33
Definition: lv_group.h:37
Definition: lv_obj.h:184
Definition: lv_group.h:36
Definition: lv_group.h:32
Definition: lv_group.h:38
Definition: lv_group.h:39
Definition: lv_group.h:42
uint8_t lv_res_t
Definition: lv_types.h:33
Definition: lv_group.h:35
uint8_t lv_key_t
Definition: lv_group.h:44
Definition: lv_style.h:57
Definition: lv_ll.h:33
Definition: lv_group.h:41
© Copyright 1995-2019, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale