82 lines
2.4 KiB
C
82 lines
2.4 KiB
C
#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;
|
|
}
|
|
}
|