#include "includes.h" extern const Touch_AreaTypeDef *pCurrentTouch_Area; const Touch_AreaTypeDef Touch_SystemSetting_Areas[] = { /* 返回 */ { 0, 44, 0, 40, 0, 0, GUI_CANCEL, NULL }, /* USB模式 左右半行 */ { UI0902_SET_ROW_X, (uint16_t)(UI0902_SET_ROW_X + UI0902_SET_ROW_W / 2 - 1), (uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH), (uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH + UI0902_SET_ROW_H - 1), -1, 0, GUI_USB_MODE, NULL }, { (uint16_t)(UI0902_SET_ROW_X + UI0902_SET_ROW_W / 2), (uint16_t)(UI0902_SET_ROW_X + UI0902_SET_ROW_W - 1), (uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH), (uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH + UI0902_SET_ROW_H - 1), 1, 0, GUI_USB_MODE, NULL }, /* 自动关机 */ { UI0902_SET_ROW_X, (uint16_t)(UI0902_SET_ROW_X + UI0902_SET_ROW_W / 2 - 1), (uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH * 2), (uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH * 2 + UI0902_SET_ROW_H - 1), -1, 0, GUI_AUTOCLOSE, NULL }, { (uint16_t)(UI0902_SET_ROW_X + UI0902_SET_ROW_W / 2), (uint16_t)(UI0902_SET_ROW_X + UI0902_SET_ROW_W - 1), (uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH * 2), (uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH * 2 + UI0902_SET_ROW_H - 1), 1, 0, GUI_AUTOCLOSE, NULL }, /* 恢复出厂 */ { UI0902_SET_ROW_X, (uint16_t)(UI0902_SET_ROW_X + UI0902_SET_ROW_W - 1), (uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH * 3), (uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH * 3 + UI0902_SET_ROW_H - 1), 0, 0, GUI_RESTORE, NULL }, }; #define TOUCH_AREA_SYSTEMSETTING_NUM (sizeof(Touch_SystemSetting_Areas)/sizeof(Touch_AreaTypeDef)) GUI_SWITCH mGuiData_SystemSETTING[] = { { 0, 0, 2, GUI_VERSION}, { 0, 0, 1, GUI_USB_MODE}, /* 0=USB MIDI 1=USB更新;开机由 NVM UsbMode 覆盖 */ { 0, 0, 4, GUI_AUTOCLOSE}, { 0, 0, 1, GUI_RESTORE}, }; LEBEL_UI SystemSetting[] = { {UI0902_SET_ROW_X, UI0902_SET_ROW_W, UI0902_SET_ROW_Y0, UI0902_SET_ROW_H, (const uint8_t*)"\xB9\xCC\xBC\xFE\xB0\xE6\xB1\xBE", LCD_ALIGN_LEFT, WHITE, BLACK, UI0902_SET_ROW_FONT, LCD_ALIGN_CENTER, WHITE, BLACK, UI0902_FONT_LABEL, GUI_VERSION}, {UI0902_SET_ROW_X, UI0902_SET_ROW_W, (uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH), UI0902_SET_ROW_H, (const uint8_t*)"USB\xC4\xA3\xCA\xBD", LCD_ALIGN_LEFT, WHITE, BLACK, UI0902_SET_ROW_FONT, LCD_ALIGN_CENTER, WHITE, BLACK, UI0902_FONT_LABEL, GUI_USB_MODE}, {UI0902_SET_ROW_X, UI0902_SET_ROW_W, (uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH * 2), UI0902_SET_ROW_H, (const uint8_t*)"\xD7\xD4\xB6\xAF\xB9\xD8\xBB\xFA", LCD_ALIGN_LEFT, WHITE, BLACK, UI0902_SET_ROW_FONT, LCD_ALIGN_CENTER, WHITE, BLACK, UI0902_FONT_LABEL, GUI_AUTOCLOSE}, {UI0902_SET_ROW_X, UI0902_SET_ROW_W, (uint16_t)(UI0902_SET_ROW_Y0 + UI0902_SET_ROW_PITCH * 3), UI0902_SET_ROW_H, (const uint8_t*)"\xBB\xD6\xB8\xB4\xB3\xF6\xB3\xA7\xC9\xE8\xD6\xC3", LCD_ALIGN_LEFT, WHITE, BLACK, UI0902_SET_ROW_FONT, LCD_ALIGN_CENTER, WHITE, BLACK, UI0902_FONT_LABEL, GUI_RESTORE}, }; void DrawSystemSetting(void) { Draw_System_Item_List(&SystemSetting[GUI_VERSION], &mGuiData_SystemSETTING[GUI_VERSION]); Draw_System_Item_List(&SystemSetting[GUI_USB_MODE], &mGuiData_SystemSETTING[GUI_USB_MODE]); Draw_System_Item_List(&SystemSetting[GUI_AUTOCLOSE], &mGuiData_SystemSETTING[GUI_AUTOCLOSE]); Draw_System_Item_List(&SystemSetting[GUI_RESTORE], &mGuiData_SystemSETTING[GUI_RESTORE]); } void Touch_SystemSettingAction(int8_t FLAG, uint8_t ID, uint8_t areaIndex, uint8_t value) { uint16_t last_value; NvmParam_Type *nvm; (void)areaIndex; (void)value; if (ID == GUI_CANCEL) { MenuPage_SystemSetting_Proc(); return; } last_value = mGuiData_SystemSETTING[ID].Current; switch (ID) { case GUI_USB_MODE: GUI_Item_AjustLoopValue(&mGuiData_SystemSETTING[ID], FLAG >= 0 ? 1 : -1); if (mGuiData_SystemSETTING[ID].Current == NVM_USB_UPDATE) { MenuPage_UsbConfirm_Proc(); return; } nvm = drv_nvm_param_ptr(); nvm->param.UsbMode = NVM_USB_MIDI; drv_nvm_save_to_flash(); if (!UI_SetFocus(ID)) RefreshSystemSetting(last_value, &SystemSetting[ID], &mGuiData_SystemSETTING[ID]); break; case GUI_AUTOCLOSE: GUI_Item_AjustLoopValue(&mGuiData_SystemSETTING[ID], FLAG >= 0 ? 1 : -1); if (!UI_SetFocus(ID)) RefreshSystemSetting(last_value, &SystemSetting[ID], &mGuiData_SystemSETTING[ID]); break; case GUI_RESTORE: MenuPage_Restore_Proc(); break; default: break; } } void UI_Setting_Init(void) { UI_ClearFocus(); LCD_FillByColor(0, 0, 240, 320, UI0902_BG_COLOR); UI_DrawSubPageHeader((const uint8_t *)"\xCF\xB5\xCD\xB3\xC9\xE8\xD6\xC3"); DrawSystemSetting(); pCurrentTouch_Area = Touch_SystemSetting_Areas; } void UI_Setting_Process(DisplayTaskMessage_Type msg) { uint8_t k; switch (msg.MessageType) { case MSG_ID_TOUCH: for (k = 0; k < TOUCH_AREA_SYSTEMSETTING_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) { Touch_SystemSettingAction(pCurrentTouch_Area[k].Flag, pCurrentTouch_Area[k].ID, k, pCurrentTouch_Area[k].Value); ResetAutoPowerCount(); break; } } break; default: break; } }