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