K1Guitar/UI/UI_Language.c

82 lines
2.4 KiB
C
Raw Normal View History

#include "includes.h"
extern const Touch_AreaTypeDef *pCurrentTouch_Area;
const Touch_AreaTypeDef Touch_Language_Areas[] =
{
{ 0, 44, 0, 40, 0, 0, GUI_CANCEL, NULL },
{ UI0902_LANG_BTN_X, (uint16_t)(UI0902_LANG_BTN_X + UI0902_LANG_BTN_W - 1),
UI0902_LANG_BTN_Y0, (uint16_t)(UI0902_LANG_BTN_Y0 + UI0902_LANG_BTN_H - 1),
0, NVM_LANG_CN, GUI_LANGUAGE_PICK, NULL },
{ UI0902_LANG_BTN_X, (uint16_t)(UI0902_LANG_BTN_X + UI0902_LANG_BTN_W - 1),
UI0902_LANG_BTN_Y1, (uint16_t)(UI0902_LANG_BTN_Y1 + UI0902_LANG_BTN_H - 1),
0, NVM_LANG_EN, GUI_LANGUAGE_PICK, NULL },
};
#define TOUCH_AREA_LANGUAGE_NUM (sizeof(Touch_Language_Areas)/sizeof(Touch_AreaTypeDef))
static void UI_Language_DrawButtons(void)
{
NvmParam_Type *nvm = drv_nvm_param_ptr();
uint8_t lang = nvm->param.Language;
uint32_t cn_addr;
uint32_t en_addr;
if (lang > 1)
lang = NVM_LANG_CN;
cn_addr = (lang == NVM_LANG_CN) ? UI0902_BTN_LANG_CN2_ADDR : UI0902_BTN_LANG_CN1_ADDR;
en_addr = (lang == NVM_LANG_EN) ? UI0902_BTN_LANG_EN_ON_ADDR : UI0902_BTN_LANG_EN_ADDR;
LCD_WR_PIC_FROM_FLASH(UI0902_LANG_BTN_X, UI0902_LANG_BTN_Y0,
UI0902_BTN_LANG_CN1_W, UI0902_BTN_LANG_CN1_H, cn_addr);
LCD_WR_PIC_FROM_FLASH(UI0902_LANG_BTN_X, UI0902_LANG_BTN_Y1,
UI0902_BTN_LANG_EN_W, UI0902_BTN_LANG_EN_H, en_addr);
}
void UI_Language_Init(void)
{
UI_ClearFocus();
LCD_FillByColor(0, 0, 240, 320, UI0902_BG_COLOR);
UI_DrawSubPageHeader((const uint8_t *)"\xCF\xB5\xCD\xB3\xD3\xEF\xD1\xD4"); /* 系统语言 */
UI_Language_DrawButtons();
pCurrentTouch_Area = Touch_Language_Areas;
}
void UI_Language_Process(DisplayTaskMessage_Type msg)
{
uint8_t k;
NvmParam_Type *nvm;
switch (msg.MessageType)
{
case MSG_ID_TOUCH:
for (k = 0; k < TOUCH_AREA_LANGUAGE_NUM; k++)
{
if (msg.HiByte >= pCurrentTouch_Area[k].x_min &&
msg.HiByte <= pCurrentTouch_Area[k].x_max &&
msg.LoByte >= pCurrentTouch_Area[k].y_min &&
msg.LoByte <= pCurrentTouch_Area[k].y_max)
{
switch (pCurrentTouch_Area[k].ID)
{
case GUI_CANCEL:
MenuPage_SystemSetting_Proc();
break;
case GUI_LANGUAGE_PICK:
nvm = drv_nvm_param_ptr();
nvm->param.Language = pCurrentTouch_Area[k].Value ? NVM_LANG_EN : NVM_LANG_CN;
drv_nvm_save_to_flash();
UI_Language_DrawButtons();
break;
default:
break;
}
ResetAutoPowerCount();
break;
}
}
break;
default:
break;
}
}