应用设置项以及注册

应用设置项介绍

此设置项为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);