#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; } }