1 /**
2 * @file lv_demo_flex_layout_view_child_node.c
3 *
4 */
5
6 /*********************
7 * INCLUDES
8 *********************/
9
10 #include "lv_demo_flex_layout_main.h"
11
12 #if LV_USE_DEMO_FLEX_LAYOUT
13
14 /*********************
15 * DEFINES
16 *********************/
17
18 /**********************
19 * TYPEDEFS
20 **********************/
21
22 /**********************
23 * STATIC PROTOTYPES
24 **********************/
25
26 static void obj_child_node_event_handler(lv_event_t * e);
27
28 /**********************
29 * STATIC VARIABLES
30 **********************/
31
32 /**********************
33 * MACROS
34 **********************/
35
36 /**********************
37 * GLOBAL FUNCTIONS
38 **********************/
39
obj_child_node_create(lv_obj_t * par,view_t * ui)40 lv_obj_t * obj_child_node_create(lv_obj_t * par, view_t * ui)
41 {
42 if(par == NULL) {
43 return NULL;
44 }
45
46 uint32_t cnt = lv_obj_get_child_count(par);
47
48 lv_obj_t * obj = lv_obj_create(par);
49 lv_obj_add_style(obj, &ui->obj_def_style, 0);
50 lv_obj_add_style(obj, &ui->obj_checked_style, LV_STATE_CHECKED);
51
52 lv_obj_t * label = lv_label_create(obj);
53 lv_label_set_text_fmt(label, "%" LV_PRIu32, cnt);
54 lv_obj_add_flag(label, LV_OBJ_FLAG_IGNORE_LAYOUT | LV_OBJ_FLAG_FLOATING);
55 lv_obj_center(label);
56
57 lv_obj_add_event_cb(obj, obj_child_node_event_handler, LV_EVENT_CLICKED, ui);
58
59 return obj;
60 }
61
62 /**********************
63 * STATIC FUNCTIONS
64 **********************/
65
obj_child_node_event_handler(lv_event_t * e)66 static void obj_child_node_event_handler(lv_event_t * e)
67 {
68 view_t * ui = (view_t *)lv_event_get_user_data(e);
69 lv_obj_t * obj = lv_event_get_target(e);
70
71 if(ui->obj_cur) {
72 lv_obj_remove_state(ui->obj_cur, LV_STATE_CHECKED);
73 }
74
75 lv_obj_add_state(obj, LV_STATE_CHECKED);
76
77 ui->obj_cur = obj;
78 flex_loader_obj_update(obj, ui);
79 ctrl_pad_obj_update(obj, ui);
80 }
81
82 #endif
83