应用设置项以及注册
应用设置项介绍
此设置项为application相应设置项,当该应用存在时,注册设置项,在设置菜单列表显示
注册一个设置项
1.注册一个应用的设置项
SETTING_REGISTER(id, priority, name, thumb_img, callback)
id : 设置菜单id名称
priority : 设置菜单优先级,值越小,优先级越高,显示更靠前
name : 设置项名字,字符串,框架调度该设置项时使用,需要保证唯一性
thumb_img : 设置菜单图片
callback : 回调函数,点击菜单后页面跳转逻辑处理回调
结构体说明
typedef struct
{
char id[MAX_SETTING_NAME_LEN]; /**< 设置菜单id名称 */
char *title; /**< 设置项名字,字符串,框架调度该设置项时使用 */
uint32_t prio; /**< 设置菜单优先级,值越小,优先级越高 */
const void *thumbnail; /**< 设置菜单缩略图 */
setting_cb_t cb; /**< 回调函数,点击菜单后页面跳转逻辑处理回调 */
void *mod; /**< 动态模块指针 */
void *mem_ptr; /**< setting菜单全局指针 */
void *user_data; /**< setting菜单user data */
rt_list_t list; /**< 链表 */
setting_built_type_t built_type; /**< 设置菜单类型, 动态菜单还是内置菜单 */
} setting_node_t;
typedef struct
{
const char *id_str; /**< 设置菜单id名称 */
const uint32_t prio; /**< 设置菜单优先级,值越小,优先级越高 */
setting_cb_t cb; /**< 回调函数,点击菜单后页面跳转逻辑处理回调 */
const void *thumbnail; /**< 设置菜单缩略图 */
uint32_t title; /**< 设置项名字,字符串,框架调度该设置项时使用 */
} setting_desc_t;
注册流程说明
1.设置菜单项注册接口
2.示例,注册一个aod 设置项项
static void on_start(void)
{
/* 获取框架申请的内存,全局指针所对应的结构体大小一定要和申请的大小一致 */
p_aod_setting = (aod_setting_t *)APP_GET_PAGE_MEM_PTR;
RT_ASSERT(p_aod_setting);
/* 在当前screen上面建立背景页面 */
lv_obj_t *bg_parent = lv_obj_create(lv_scr_act());
lv_obj_set_size(bg_parent, LV_HOR_RES_MAX, LV_VER_RES_MAX);
lv_obj_set_style_bg_color(bg_parent, LV_COLOR_BLACK, LV_PART_MAIN);
lv_obj_clear_flag(bg_parent, LV_OBJ_FLAG_SCROLLABLE);
lv_obj_center(bg_parent);
lv_obj_update_layout(bg_parent);
p_aod_setting->bg_parent = bg_parent;
}
static void on_resume(void)
{
/* 获取p_aod指针,app_aod_t * */
p_aod = aod_info_get();
/* 收到resume消息后,将该页面的所有内容创建完成 */
aod_setting_create_onoff_page(p_aod_setting->bg_parent);
}
static void on_pause(void)
{
if (p_aod_setting->slide_page)
lv_multlist_on_pause(p_aod_setting->slide_page);
}
static void on_stop(void)
{
p_aod_setting = NULL;
}
/* 在setting应用注册一个aod page */
APP_PAGE_REGISTER("setting", "aod", sizeof(aod_setting_t));
/* 回调函数,点击菜单后页面跳转逻辑处理回调 */
static int aod_setting_cb(void *param)
{
gui_app_run_subpage("setting", "aod", NULL);
return 0;
}
/* 注册aod setting设置菜单项 */
SETTING_REGISTER(aod_setting, 1, app_get_strid(key_aod_setting, "Aod setting"),
APP_GET_IMG_FROM_APP(setting, img_screen_always_on), aod_setting_cb);