778 lines
18 KiB
C
778 lines
18 KiB
C
#include "ui/ui.h"
|
||
#include "app_config.h"
|
||
#include "ui/ui_style.h"
|
||
#include "ui/ui_api.h"
|
||
#include "app_task.h"
|
||
#include "system/timer.h"
|
||
#include "font/language_list.h"
|
||
#include "res/resfile.h"
|
||
#include "app_power_manage.h"
|
||
#include "asm/charge.h"
|
||
#include "../ui_sys_param_api.h"
|
||
#include "update/update.h"
|
||
#include "dev_manager/dev_manager.h"
|
||
|
||
|
||
#if (TCFG_UI_ENABLE&&(CONFIG_UI_STYLE == STYLE_JL_SOUNDBOX))
|
||
|
||
#define STYLE_NAME JL
|
||
REGISTER_UI_STYLE(STYLE_NAME)
|
||
|
||
extern int ui_hide_main(int id);
|
||
extern int ui_show_main(int id);
|
||
extern void key_ui_takeover(u8 on);
|
||
extern u16 dev_update_check(char *logo);
|
||
/************************************************************
|
||
电池控件事件
|
||
************************************************************/
|
||
|
||
static void battery_timer(void *priv)
|
||
{
|
||
int incharge = 0;//充电标志
|
||
int id = (int)(priv);
|
||
static u8 percent = 0;
|
||
static u8 percent_last = 0;
|
||
if (get_charge_online_flag()) { //充电时候图标动态效果
|
||
if (percent > get_vbat_percent()) {
|
||
percent = 0;
|
||
}
|
||
ui_battery_set_level_by_id(id, percent, incharge); //充电标志,ui可以显示不一样的图标
|
||
percent += 20;
|
||
} else {
|
||
|
||
percent = get_vbat_percent();
|
||
if (percent != percent_last) {
|
||
ui_battery_set_level_by_id(id, percent, incharge); //充电标志,ui可以显示不一样的图标,需要工具设置
|
||
percent_last = percent;
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
static int battery_onchange(void *ctr, enum element_change_event e, void *arg)
|
||
{
|
||
struct ui_battery *battery = (struct ui_battery *)ctr;
|
||
static u32 timer = 0;
|
||
int incharge = 0;//充电标志
|
||
|
||
switch (e) {
|
||
case ON_CHANGE_INIT:
|
||
ui_battery_set_level(battery, get_vbat_percent(), incharge);
|
||
if (!timer) {
|
||
timer = sys_timer_add((void *)battery->elm.id, battery_timer, 1 * 1000); //传入的id就是BT_BAT
|
||
}
|
||
break;
|
||
case ON_CHANGE_FIRST_SHOW:
|
||
break;
|
||
case ON_CHANGE_RELEASE:
|
||
if (timer) {
|
||
sys_timer_del(timer);
|
||
timer = 0;
|
||
}
|
||
break;
|
||
default:
|
||
return false;
|
||
}
|
||
return false;
|
||
}
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_BAT)
|
||
.onchange = battery_onchange,
|
||
.ontouch = NULL,
|
||
};
|
||
|
||
|
||
|
||
|
||
|
||
/************************************************************
|
||
系统设置
|
||
************************************************************/
|
||
|
||
|
||
static int sys_mode_onchange(void *ctr, enum element_change_event e, void *arg)
|
||
{
|
||
struct window *window = (struct window *)ctr;
|
||
static int bt_status_timer = 0;
|
||
switch (e) {
|
||
case ON_CHANGE_INIT:
|
||
puts("\n***sys_mode_onchange***\n");
|
||
/* key_ui_takeover(1); */
|
||
/* ui_register_msg_handler(ID_WINDOW_BT, ui_msg_handler); */
|
||
/*
|
||
* 注册APP消息响应
|
||
*/
|
||
break;
|
||
case ON_CHANGE_RELEASE:
|
||
|
||
break;
|
||
default:
|
||
return false;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
|
||
REGISTER_UI_EVENT_HANDLER(ID_WINDOW_SYS)
|
||
.onchange = sys_mode_onchange,
|
||
.onkey = NULL,
|
||
.ontouch = NULL,
|
||
};
|
||
|
||
static int common_layout_onchange(void *ctr, enum element_change_event e, void *arg)
|
||
{
|
||
struct layout *layout = (struct layout *)ctr;
|
||
switch (e) {
|
||
case ON_CHANGE_INIT:
|
||
layout_on_focus(layout);
|
||
break;
|
||
case ON_CHANGE_RELEASE:
|
||
layout_lose_focus(layout);
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
return FALSE;
|
||
}
|
||
|
||
|
||
/************************************************************
|
||
系统设置入口
|
||
************************************************************/
|
||
static int system_enter_callback(void *ctr, struct element_key_event *e)
|
||
{
|
||
struct ui_grid *grid = (struct ui_grid *)ctr;
|
||
printf("ui key %s %d\n", __FUNCTION__, e->value);
|
||
int sel_item;
|
||
switch (e->value) {
|
||
case KEY_OK:
|
||
sel_item = ui_grid_cur_item(grid);
|
||
switch (sel_item) {
|
||
case 0:
|
||
ui_show(SYSTEM_M_LAYOUT);
|
||
break;
|
||
case 1:
|
||
ui_show(SYS_LANGUAGE);
|
||
break;
|
||
case 2:
|
||
r_printf("UI sys_enter_soft_poweroff\n");
|
||
ui_show(SYS_POWEROFF);
|
||
break;
|
||
case 3:
|
||
ui_show(SYS_BACKLIGHT);
|
||
break;
|
||
case 4:
|
||
UI_HIDE_CURR_WINDOW();
|
||
ui_show_main(-1);//显示上一个页面
|
||
break;
|
||
}
|
||
break;
|
||
default:
|
||
return false;
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_SET_LIST)
|
||
.onchange = NULL,
|
||
.onkey = system_enter_callback,
|
||
.ontouch = NULL,
|
||
};
|
||
|
||
|
||
/************************************************************
|
||
系统菜单
|
||
************************************************************/
|
||
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_M_LAYOUT)
|
||
.onchange = common_layout_onchange,
|
||
.onkey = NULL,
|
||
.ontouch = NULL,
|
||
};
|
||
static void system_update_timeout()
|
||
{
|
||
ui_hide(SYSTEM_UPDATE);
|
||
}
|
||
|
||
static int system_menu_callback(void *ctr, struct element_key_event *e)
|
||
{
|
||
struct ui_grid *grid = (struct ui_grid *)ctr;
|
||
printf("ui key %s %d\n", __FUNCTION__, e->value);
|
||
int sel_item;
|
||
u16 update_status = 0;
|
||
switch (e->value) {
|
||
case KEY_OK:
|
||
sel_item = ui_grid_cur_item(grid);
|
||
|
||
switch (sel_item) {
|
||
case 0:
|
||
ui_show(SYS_MSG_LAYOUT);
|
||
return TRUE;
|
||
break;
|
||
case 1:
|
||
set_sys_info_reset();//只重置了背光时间,背光亮度,以及自动关机时间
|
||
set_backlight_time(0);//重置之后需要再设置背光时间为0,避免按按键后在app_key_event中响应背光时间为0事件导致立即关背光
|
||
set_backlight_brightness(0);
|
||
ui_hide(SYSTEM_M_LAYOUT);
|
||
break;
|
||
case 2://分别去查找SD卡,U盘中是否有升级文件
|
||
if (dev_manager_online_check_by_logo("sd0", 0) && update_status != UPDATA_READY) {
|
||
update_status = dev_update_check("sd0");
|
||
}
|
||
if (dev_manager_online_check_by_logo("sd1", 0) && update_status != UPDATA_READY) {
|
||
update_status = dev_update_check("sd1");
|
||
}
|
||
if (dev_manager_online_check_by_logo("udisk0", 0) && update_status != UPDATA_READY) {
|
||
update_status = dev_update_check("udisk0");
|
||
}
|
||
if (update_status != UPDATA_READY) {
|
||
ui_show(SYSTEM_UPDATE);
|
||
sys_timeout_add(NULL, system_update_timeout, 2000);
|
||
}
|
||
break;
|
||
default:
|
||
ui_hide(SYSTEM_M_LAYOUT);
|
||
break;
|
||
}
|
||
|
||
break;
|
||
default:
|
||
return false;
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_M_LIST)
|
||
.onchange = NULL,
|
||
.onkey = system_menu_callback,
|
||
.ontouch = NULL,
|
||
};
|
||
|
||
|
||
|
||
/************************************************************
|
||
系统信息
|
||
************************************************************/
|
||
/*
|
||
* 版本号
|
||
*/
|
||
#define VERSION_LOG "20200522"
|
||
#define SPACE_LOG "1024 MB"
|
||
|
||
static int version_ascii_onchange(void *ctr, enum element_change_event e, void *arg)
|
||
{
|
||
int index;
|
||
struct ui_text *text = (struct ui_text *)ctr;
|
||
struct ui_text_attrs *text_attrs = &(text->attrs);
|
||
u8 vol;
|
||
switch (e) {
|
||
case ON_CHANGE_INIT:
|
||
text_attrs->str = VERSION_LOG;
|
||
break;
|
||
case ON_CHANGE_RELEASE:
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_31)
|
||
.onchange = version_ascii_onchange,
|
||
.onkey = NULL,
|
||
.ontouch = NULL,
|
||
};
|
||
|
||
static int space_ascii_onchange(void *ctr, enum element_change_event e, void *arg)
|
||
{
|
||
int index;
|
||
struct ui_text *text = (struct ui_text *)ctr;
|
||
struct ui_text_attrs *text_attrs = &(text->attrs);
|
||
u8 vol;
|
||
switch (e) {
|
||
case ON_CHANGE_INIT:
|
||
text_attrs->str = SPACE_LOG;
|
||
break;
|
||
case ON_CHANGE_RELEASE:
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_35)
|
||
.onchange = space_ascii_onchange,
|
||
.onkey = NULL,
|
||
.ontouch = NULL,
|
||
};
|
||
|
||
|
||
static int system_info_menu_enter_callback(void *ctr, struct element_key_event *e)
|
||
{
|
||
struct ui_grid *grid = (struct ui_grid *)ctr;
|
||
printf("ui key %s %d\n", __FUNCTION__, e->value);
|
||
int sel_item;
|
||
switch (e->value) {
|
||
case KEY_OK:
|
||
ui_hide(SYS_MSG_LAYOUT);
|
||
return false;
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYS_MSG_INFO_LIST)
|
||
.onchange = NULL,
|
||
.onkey = system_info_menu_enter_callback,
|
||
.ontouch = NULL,
|
||
};
|
||
|
||
|
||
|
||
/************************************************************
|
||
语言设置
|
||
************************************************************/
|
||
|
||
/*
|
||
* system语言设置
|
||
*/
|
||
static const u8 table_system_language[] = {
|
||
Chinese_Simplified, /* 简体中文 */
|
||
Chinese_Traditional, /* 繁体中文 */
|
||
English, /* 英文 */
|
||
};
|
||
|
||
|
||
static const int language_pic[] = {
|
||
SYSTEM_47,
|
||
SYSTEM_49,
|
||
SYSTEM_51,
|
||
};
|
||
|
||
|
||
|
||
|
||
static int language_pic_common_onchange(void *_ctrl, enum element_change_event event, void *arg)
|
||
{
|
||
struct ui_pic *pic = (struct ui_pic *)_ctrl;
|
||
int i = 0;
|
||
switch (event) {
|
||
case ON_CHANGE_INIT:
|
||
for (i = 0; i < sizeof(language_pic) / sizeof(language_pic[0]); i++) {
|
||
if (ui_language_get() == table_system_language[i]) {
|
||
if (pic->elm.id == language_pic[i]) {
|
||
ui_pic_set_image_index(pic, 1);
|
||
break;
|
||
}
|
||
|
||
}
|
||
}
|
||
break;
|
||
case ON_CHANGE_SHOW_POST:
|
||
break;
|
||
default:
|
||
return FALSE;
|
||
}
|
||
return FALSE;
|
||
}
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_47)
|
||
.onchange = language_pic_common_onchange,
|
||
};
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_49)
|
||
.onchange = language_pic_common_onchange,
|
||
};
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_51)
|
||
.onchange = language_pic_common_onchange,
|
||
};
|
||
|
||
|
||
static int language_enter_callback(void *ctr, struct element_key_event *e)
|
||
{
|
||
struct ui_grid *grid = (struct ui_grid *)ctr;
|
||
printf("ui key %s %d\n", __FUNCTION__, e->value);
|
||
int sel_item;
|
||
switch (e->value) {
|
||
case KEY_OK:
|
||
sel_item = ui_grid_cur_item(grid);
|
||
if (sel_item >= 0 && sel_item < sizeof(table_system_language) / sizeof(table_system_language[0])) {
|
||
ui_language_set(table_system_language[sel_item]);
|
||
ui_hide(SYS_LANGUAGE);
|
||
} else {
|
||
ui_hide(SYS_LANGUAGE);
|
||
}
|
||
|
||
return false;
|
||
default:
|
||
return false;
|
||
}
|
||
return TRUE;
|
||
}
|
||
REGISTER_UI_EVENT_HANDLER(SYS_LANGUAGE_LIST)
|
||
.onchange = NULL,
|
||
.onkey = language_enter_callback,
|
||
.ontouch = NULL,
|
||
};
|
||
|
||
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYS_LANGUAGE)
|
||
.onchange = common_layout_onchange,
|
||
.onkey = NULL,
|
||
.ontouch = NULL,
|
||
};
|
||
|
||
|
||
|
||
|
||
/************************************************************
|
||
背光设置
|
||
************************************************************/
|
||
|
||
static int backlight_menu_enter_callback(void *ctr, struct element_key_event *e)
|
||
{
|
||
struct ui_grid *grid = (struct ui_grid *)ctr;
|
||
printf("ui key %s %d\n", __FUNCTION__, e->value);
|
||
int sel_item;
|
||
switch (e->value) {
|
||
case KEY_OK:
|
||
sel_item = ui_grid_cur_item(grid);
|
||
switch (sel_item) {
|
||
case 0:
|
||
ui_show(SYS_BACKLIGHT_TIME);
|
||
break;
|
||
case 1:
|
||
ui_show(SYS_BACKLIGHT_VALUE);
|
||
break;
|
||
case 2:
|
||
ui_hide(SYS_BACKLIGHT);
|
||
break;
|
||
|
||
}
|
||
return false;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYS_BACKLIGHT_LIST)
|
||
.onchange = NULL,
|
||
.onkey = backlight_menu_enter_callback,
|
||
.ontouch = NULL,
|
||
};
|
||
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYS_BACKLIGHT)
|
||
.onchange = common_layout_onchange,
|
||
.onkey = NULL,
|
||
.ontouch = NULL,
|
||
};
|
||
|
||
|
||
/*
|
||
* system屏幕保护设置
|
||
*/
|
||
|
||
|
||
static const int backlight_time_pic[] = {
|
||
SYSTEM_7,
|
||
SYSTEM_11,
|
||
SYSTEM_16,
|
||
SYSTEM_18,
|
||
SYSTEM_20,
|
||
};
|
||
|
||
|
||
static int backlight_time_pic_common_onchange(void *_ctrl, enum element_change_event event, void *arg)
|
||
{
|
||
struct ui_pic *pic = (struct ui_pic *)_ctrl;
|
||
switch (event) {
|
||
case ON_CHANGE_INIT:
|
||
if (pic->elm.id == backlight_time_pic[get_backlight_time_item() % 5]) {
|
||
ui_pic_set_image_index(pic, 1);
|
||
}
|
||
break;
|
||
case ON_CHANGE_SHOW_POST:
|
||
break;
|
||
default:
|
||
return FALSE;
|
||
}
|
||
return FALSE;
|
||
}
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_7)
|
||
.onchange = backlight_time_pic_common_onchange,
|
||
};
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_11)
|
||
.onchange = backlight_time_pic_common_onchange,
|
||
};
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_16)
|
||
.onchange = backlight_time_pic_common_onchange,
|
||
};
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_18)
|
||
.onchange = backlight_time_pic_common_onchange,
|
||
};
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_20)
|
||
.onchange = backlight_time_pic_common_onchange,
|
||
};
|
||
|
||
|
||
|
||
static int backlight_menu_time_callback(void *ctr, struct element_key_event *e)
|
||
{
|
||
struct ui_grid *grid = (struct ui_grid *)ctr;
|
||
printf("ui key %s %d\n", __FUNCTION__, e->value);
|
||
int sel_item;
|
||
switch (e->value) {
|
||
case KEY_OK:
|
||
sel_item = ui_grid_cur_item(grid);
|
||
set_backlight_time(sel_item);
|
||
ui_hide(SYS_BACKLIGHT_TIME);
|
||
return false;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYS_BACKLIGHT_TIME_LIST)
|
||
.onchange = NULL,
|
||
.onkey = backlight_menu_time_callback,
|
||
.ontouch = NULL,
|
||
};
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYS_BACKLIGHT_TIME)
|
||
.onchange = common_layout_onchange,
|
||
.onkey = NULL,
|
||
.ontouch = NULL,
|
||
};
|
||
|
||
|
||
|
||
|
||
/*
|
||
* system屏幕亮度设置
|
||
*/
|
||
|
||
|
||
static const int backlight_value_pic[] = {
|
||
SYSTEM_13,
|
||
SYSTEM_25,
|
||
SYSTEM_27,
|
||
};
|
||
|
||
|
||
static int backlight_value_pic_common_onchange(void *_ctrl, enum element_change_event event, void *arg)
|
||
{
|
||
struct ui_pic *pic = (struct ui_pic *)_ctrl;
|
||
switch (event) {
|
||
case ON_CHANGE_INIT:
|
||
if (pic->elm.id == backlight_value_pic[get_backlight_brightness_item() % 3]) {
|
||
ui_pic_set_image_index(pic, 1);
|
||
}
|
||
break;
|
||
case ON_CHANGE_SHOW_POST:
|
||
break;
|
||
default:
|
||
return FALSE;
|
||
}
|
||
return FALSE;
|
||
}
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_13)
|
||
.onchange = backlight_value_pic_common_onchange,
|
||
};
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_25)
|
||
.onchange = backlight_value_pic_common_onchange,
|
||
};
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_27)
|
||
.onchange = backlight_value_pic_common_onchange,
|
||
};
|
||
|
||
|
||
static int backlight_menu_value_callback(void *ctr, struct element_key_event *e)
|
||
{
|
||
struct ui_grid *grid = (struct ui_grid *)ctr;
|
||
printf("ui key %s %d\n", __FUNCTION__, e->value);
|
||
int sel_item;
|
||
switch (e->value) {
|
||
case KEY_OK:
|
||
sel_item = ui_grid_cur_item(grid);
|
||
set_backlight_brightness(sel_item);
|
||
ui_hide(SYS_BACKLIGHT_VALUE);
|
||
return false;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYS_BACKLIGHT_VALUE_LIST)
|
||
.onchange = NULL,
|
||
.onkey = backlight_menu_value_callback,
|
||
.ontouch = NULL,
|
||
};
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYS_BACKLIGHT_VALUE)
|
||
.onchange = common_layout_onchange,
|
||
.onkey = NULL,
|
||
.ontouch = NULL,
|
||
};
|
||
|
||
|
||
|
||
|
||
/************************************************************
|
||
系统关机设置
|
||
************************************************************/
|
||
|
||
|
||
static const int power_off_pic[] = {
|
||
SYSTEM_29,
|
||
SYSTEM_37,
|
||
SYSTEM_39,
|
||
SYSTEM_41,
|
||
SYSTEM_43,
|
||
};
|
||
|
||
|
||
static int poweroff_pic_common_onchange(void *_ctrl, enum element_change_event event, void *arg)
|
||
{
|
||
struct ui_pic *pic = (struct ui_pic *)_ctrl;
|
||
switch (event) {
|
||
case ON_CHANGE_INIT:
|
||
if (pic->elm.id == power_off_pic[get_cur_auto_power_time() % 5]) {
|
||
ui_pic_set_image_index(pic, 1);
|
||
}
|
||
break;
|
||
case ON_CHANGE_SHOW_POST:
|
||
break;
|
||
default:
|
||
return FALSE;
|
||
}
|
||
return FALSE;
|
||
}
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_29)
|
||
.onchange = poweroff_pic_common_onchange,
|
||
};
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_37)
|
||
.onchange = poweroff_pic_common_onchange,
|
||
};
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_39)
|
||
.onchange = poweroff_pic_common_onchange,
|
||
};
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_41)
|
||
.onchange = poweroff_pic_common_onchange,
|
||
};
|
||
REGISTER_UI_EVENT_HANDLER(SYSTEM_43)
|
||
.onchange = poweroff_pic_common_onchange,
|
||
};
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*
|
||
* system自动关机设置
|
||
*/
|
||
static int power_menu_enter_callback(void *ctr, struct element_key_event *e)
|
||
{
|
||
struct ui_grid *grid = (struct ui_grid *)ctr;
|
||
printf("ui key %s %d\n", __FUNCTION__, e->value);
|
||
int sel_item;
|
||
switch (e->value) {
|
||
case KEY_OK:
|
||
sel_item = ui_grid_cur_item(grid);
|
||
switch (sel_item) {
|
||
case 0:
|
||
case 1:
|
||
case 2:
|
||
case 3:
|
||
case 4:
|
||
set_auto_poweroff_timer(sel_item);
|
||
case 5:
|
||
ui_hide(SYS_POWEROFF);
|
||
break;
|
||
|
||
}
|
||
return false;
|
||
default:
|
||
return false;
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYS_POWEROFF_LIST)
|
||
.onchange = NULL,
|
||
.onkey = power_menu_enter_callback,
|
||
.ontouch = NULL,
|
||
};
|
||
|
||
REGISTER_UI_EVENT_HANDLER(SYS_POWEROFF)
|
||
.onchange = common_layout_onchange,
|
||
.onkey = NULL,
|
||
.ontouch = NULL,
|
||
};
|
||
|
||
|
||
#if 0
|
||
struct grid_setting {
|
||
int id;
|
||
int parent_id;
|
||
void (*handler)(void *hd, int args, int index);
|
||
};
|
||
|
||
|
||
static const struct grid_setting grid_function_table[] = {
|
||
{ SYSTEM_MENU_LIST, 0, system_enter_callback},
|
||
{ LANGUAGE_MENU_LIST, 0, language_enter_callback},
|
||
{ POWER_MENU_LIST, 0, power_menu_enter_callback},
|
||
{ BACK_MENU_LIST, NULL},
|
||
{ 0, NULL}, //必须要要0结束
|
||
};
|
||
|
||
static const struct grid_setting grid_function_table_1[] = {
|
||
{ SYS_BACKLIGHT_0, SYS_BACKLIGHT, backlight_menu_enter_callback},
|
||
{ SYS_BACKLIGHT_1, SYS_BACKLIGHT, backlight_menu_enter_callback},
|
||
{ SYS_BACKLIGHT_2, SYS_BACKLIGHT, backlight_menu_enter_callback},
|
||
{ 0, NULL}, //必须要要0结束
|
||
};
|
||
|
||
|
||
|
||
static void ui_list_callback_common(const struct grid_setting *table, int id, int key, int index)
|
||
{
|
||
if (!table) {
|
||
return;
|
||
}
|
||
for (; table->id; table++) {
|
||
if (table->id == id) {
|
||
if (table->handler) {
|
||
table->handler(table, key, index);
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
static int ui_list_onkey_common(void *ctr, struct element_key_event *e)
|
||
{
|
||
struct ui_grid *grid = (struct ui_grid *)ctr;
|
||
printf("ui key %s %d\n", __FUNCTION__, e->value);
|
||
int sel_item;
|
||
switch (e->value) {
|
||
case KEY_OK:
|
||
sel_item = ui_grid_cur_item(grid);
|
||
if (sel_item >= 0) {
|
||
ui_list_callback_common(grid_function_table, grid->item[sel_item].elm.id, e->value, sel_item);
|
||
}
|
||
break;
|
||
default:
|
||
return false;
|
||
}
|
||
return TRUE;
|
||
}
|
||
|
||
#endif
|
||
#endif //TCFG_SPI_LCD_ENABLE
|
||
|