mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-28 07:03:00 +08:00
[lv_list] Fix comments and add implementation of list layout
This commit is contained in:
parent
95149e466f
commit
3654253472
@ -366,6 +366,36 @@ void lv_list_set_style(lv_obj_t * list, lv_list_style_t type, const lv_style_t *
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set layout of a list
|
||||||
|
* @param list pointer to a list object
|
||||||
|
* @param layout which layout should be used
|
||||||
|
*/
|
||||||
|
void lv_list_set_layout(lv_obj_t * list, lv_list_layout_t layout)
|
||||||
|
{
|
||||||
|
lv_list_ext_t * ext = lv_obj_get_ext_attr(list);
|
||||||
|
|
||||||
|
/* Update list layout if necessary */
|
||||||
|
if (layout != lv_list_get_layout(list)) {
|
||||||
|
|
||||||
|
/* Get the first button on the list */
|
||||||
|
lv_obj_t * btn = lv_list_get_prev_btn(list, NULL);
|
||||||
|
|
||||||
|
/* Visit all buttons on the list and update their layout */
|
||||||
|
while(btn != NULL) {
|
||||||
|
if (LV_LIST_LAYOUT_HOR == layout) {
|
||||||
|
lv_btn_set_fit2(list, LV_FIT_FLOOD, LV_FIT_TIGHT);
|
||||||
|
} else { /* LV_LIST_LAYOUT_VER */
|
||||||
|
lv_btn_set_fit(list, LV_FIT_TIGHT);
|
||||||
|
}
|
||||||
|
|
||||||
|
btn = lv_list_get_prev_btn(list, btn);
|
||||||
|
}
|
||||||
|
|
||||||
|
ext->layout = layout;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*=====================
|
/*=====================
|
||||||
* Getter functions
|
* Getter functions
|
||||||
*====================*/
|
*====================*/
|
||||||
@ -529,15 +559,25 @@ lv_obj_t * lv_list_get_btn_selected(const lv_obj_t * list)
|
|||||||
lv_list_ext_t * ext = lv_obj_get_ext_attr(list);
|
lv_list_ext_t * ext = lv_obj_get_ext_attr(list);
|
||||||
return ext->selected_btn;
|
return ext->selected_btn;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get layout of a list
|
||||||
|
* @param list pointer to a list object
|
||||||
|
* @return layout of the list object
|
||||||
|
*/
|
||||||
|
lv_list_layout_t lv_list_get_layout(lv_obj_t * list)
|
||||||
|
{
|
||||||
|
lv_list_ext_t * ext = lv_obj_get_ext_attr(list);
|
||||||
|
return ext->layout;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a style of a list
|
* Get a style of a list
|
||||||
* @param list pointer to a list object
|
* @param list pointer to a list object
|
||||||
* @param type which style should be get
|
* @param type which style should be get
|
||||||
* @return style pointer to a style
|
* @return style pointer to a style
|
||||||
* */
|
*/
|
||||||
const lv_style_t * lv_list_get_style(const lv_obj_t * list, lv_list_style_t type)
|
const lv_style_t * lv_list_get_style(const lv_obj_t * list, lv_list_style_t type)
|
||||||
{
|
{
|
||||||
const lv_style_t * style = NULL;
|
const lv_style_t * style = NULL;
|
||||||
@ -558,6 +598,7 @@ const lv_style_t * lv_list_get_style(const lv_obj_t * list, lv_list_style_t type
|
|||||||
|
|
||||||
return style;
|
return style;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*=====================
|
/*=====================
|
||||||
* Other functions
|
* Other functions
|
||||||
*====================*/
|
*====================*/
|
||||||
|
@ -57,6 +57,7 @@ typedef struct
|
|||||||
uint16_t size; /*the number of items(buttons) in the list*/
|
uint16_t size; /*the number of items(buttons) in the list*/
|
||||||
|
|
||||||
uint8_t single_mode : 1; /* whether single selected mode is enabled */
|
uint8_t single_mode : 1; /* whether single selected mode is enabled */
|
||||||
|
uint8_t layout : 1; /* Layout of the list */
|
||||||
|
|
||||||
#if LV_USE_GROUP
|
#if LV_USE_GROUP
|
||||||
lv_obj_t * last_sel; /* The last selected button. It will be reverted when the list is focused again */
|
lv_obj_t * last_sel; /* The last selected button. It will be reverted when the list is focused again */
|
||||||
@ -78,10 +79,10 @@ enum {
|
|||||||
};
|
};
|
||||||
typedef uint8_t lv_list_style_t;
|
typedef uint8_t lv_list_style_t;
|
||||||
|
|
||||||
/** List layouts. **/
|
/** List layouts. */
|
||||||
enum {
|
enum {
|
||||||
LV_LIST_LAYOUT_HOR,
|
LV_LIST_LAYOUT_HOR, /*< List horizontal layout */
|
||||||
LV_LIST_LAYOUT_VER
|
LV_LIST_LAYOUT_VER /*< List vertical layout */
|
||||||
}
|
}
|
||||||
typedef uint8_t lv_list_layout_t;
|
typedef uint8_t lv_list_layout_t;
|
||||||
|
|
||||||
@ -276,7 +277,7 @@ lv_obj_t * lv_list_get_btn_selected(const lv_obj_t * list);
|
|||||||
/**
|
/**
|
||||||
* Get layout of a list
|
* Get layout of a list
|
||||||
* @param list pointer to a list object
|
* @param list pointer to a list object
|
||||||
* @return layout which layout should be used
|
* @return layout of the list object
|
||||||
*/
|
*/
|
||||||
lv_list_layout_t lv_list_get_layout(lv_obj_t * list);
|
lv_list_layout_t lv_list_get_layout(lv_obj_t * list);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user