121 lines
2.7 KiB
C
121 lines
2.7 KiB
C
|
/**
|
||
|
* @file lv_list.c
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/*********************
|
||
|
* INCLUDES
|
||
|
*********************/
|
||
|
#include "lv_list.h"
|
||
|
#include "../../../core/lv_disp.h"
|
||
|
#include "../../../widgets/lv_label.h"
|
||
|
#include "../../../widgets/lv_img.h"
|
||
|
#include "../../../widgets/lv_btn.h"
|
||
|
|
||
|
#if LV_USE_LIST
|
||
|
|
||
|
/*********************
|
||
|
* DEFINES
|
||
|
*********************/
|
||
|
#define MV_CLASS &lv_list
|
||
|
|
||
|
/**********************
|
||
|
* TYPEDEFS
|
||
|
**********************/
|
||
|
|
||
|
/**********************
|
||
|
* STATIC PROTOTYPES
|
||
|
**********************/
|
||
|
|
||
|
const lv_obj_class_t lv_list_class = {
|
||
|
.base_class = &lv_obj_class,
|
||
|
.width_def = (LV_DPI_DEF * 3) / 2,
|
||
|
.height_def = LV_DPI_DEF * 2
|
||
|
};
|
||
|
|
||
|
const lv_obj_class_t lv_list_btn_class = {
|
||
|
.base_class = &lv_btn_class,
|
||
|
};
|
||
|
|
||
|
const lv_obj_class_t lv_list_text_class = {
|
||
|
.base_class = &lv_label_class,
|
||
|
};
|
||
|
|
||
|
/**********************
|
||
|
* STATIC VARIABLES
|
||
|
**********************/
|
||
|
|
||
|
/**********************
|
||
|
* MACROS
|
||
|
**********************/
|
||
|
|
||
|
/**********************
|
||
|
* GLOBAL FUNCTIONS
|
||
|
**********************/
|
||
|
|
||
|
lv_obj_t * lv_list_create(lv_obj_t * parent)
|
||
|
{
|
||
|
LV_LOG_INFO("begin");
|
||
|
lv_obj_t * obj = lv_obj_class_create_obj(&lv_list_class, parent);
|
||
|
lv_obj_class_init_obj(obj);
|
||
|
lv_obj_set_flex_flow(obj, LV_FLEX_FLOW_COLUMN);
|
||
|
return obj;
|
||
|
}
|
||
|
|
||
|
lv_obj_t * lv_list_add_text(lv_obj_t * list, const char * txt)
|
||
|
{
|
||
|
LV_LOG_INFO("begin");
|
||
|
lv_obj_t * obj = lv_obj_class_create_obj(&lv_list_text_class, list);
|
||
|
lv_obj_class_init_obj(obj);
|
||
|
lv_label_set_text(obj, txt);
|
||
|
lv_label_set_long_mode(obj, LV_LABEL_LONG_SCROLL_CIRCULAR);
|
||
|
lv_obj_set_width(obj, LV_PCT(100));
|
||
|
return obj;
|
||
|
}
|
||
|
|
||
|
lv_obj_t * lv_list_add_btn(lv_obj_t * list, const char * icon, const char * txt)
|
||
|
{
|
||
|
LV_LOG_INFO("begin");
|
||
|
lv_obj_t * obj = lv_obj_class_create_obj(&lv_list_btn_class, list);
|
||
|
lv_obj_class_init_obj(obj);
|
||
|
lv_obj_set_size(obj, LV_PCT(100), LV_SIZE_CONTENT);
|
||
|
lv_obj_set_flex_flow(obj, LV_FLEX_FLOW_ROW);
|
||
|
|
||
|
#if LV_USE_IMG == 1
|
||
|
if(icon) {
|
||
|
lv_obj_t * img = lv_img_create(obj);
|
||
|
lv_img_set_src(img, icon);
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
if(txt) {
|
||
|
lv_obj_t * label = lv_label_create(obj);
|
||
|
lv_label_set_text(label, txt);
|
||
|
lv_label_set_long_mode(label, LV_LABEL_LONG_SCROLL_CIRCULAR);
|
||
|
lv_obj_set_flex_grow(label, 1);
|
||
|
}
|
||
|
|
||
|
return obj;
|
||
|
}
|
||
|
|
||
|
const char * lv_list_get_btn_text(lv_obj_t * list, lv_obj_t * btn)
|
||
|
{
|
||
|
LV_UNUSED(list);
|
||
|
uint32_t i;
|
||
|
for(i = 0; i < lv_obj_get_child_cnt(btn); i++) {
|
||
|
lv_obj_t * child = lv_obj_get_child(btn, i);
|
||
|
if(lv_obj_check_type(child, &lv_label_class)) {
|
||
|
return lv_label_get_text(child);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
return "";
|
||
|
}
|
||
|
|
||
|
/**********************
|
||
|
* STATIC FUNCTIONS
|
||
|
**********************/
|
||
|
|
||
|
#endif /*LV_USE_LIST*/
|