K1Guitar/UI/UI_Setting.c

152 lines
5.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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_DrawSystemSetHeader();
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;
}
}