K1Guitar/UI/UI_Restore.c

83 lines
2.6 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"
/* 0904 / 0902-08返回 + 标题「恢复出厂设置」+ 竖排 确认(灰) / 取消(蓝),无底栏 */
extern const Touch_AreaTypeDef *pCurrentTouch_Area;
const Touch_AreaTypeDef Touch_Restore_Areas[] =
{
{ 0, 44, 0, 40, 0, 0, GUI_CANCEL, NULL },
{ UI0902_RESTORE_BTN_X,
(uint16_t)(UI0902_RESTORE_BTN_X + UI0902_RESTORE_BTN_W - 1),
UI0902_RESTORE_BTN_Y0,
(uint16_t)(UI0902_RESTORE_BTN_Y0 + UI0902_RESTORE_BTN_H - 1),
0, 0, GUI_CONFIRM, NULL },
{ UI0902_RESTORE_BTN_X,
(uint16_t)(UI0902_RESTORE_BTN_X + UI0902_RESTORE_BTN_W - 1),
UI0902_RESTORE_BTN_Y1,
(uint16_t)(UI0902_RESTORE_BTN_Y1 + UI0902_RESTORE_BTN_H - 1),
0, 0, GUI_CANCEL, NULL },
};
#define TOUCH_AREA_RESTORE_NUM (sizeof(Touch_Restore_Areas)/sizeof(Touch_AreaTypeDef))
static void UI_Restore_DrawButton(uint16_t y, uint16_t bg, const uint8_t *text_gbk)
{
uint16_t text_y = y + (UI0902_RESTORE_BTN_H - UI0902_RESTORE_BTN_FONT) / 2;
LCD_FillRoundRect(UI0902_RESTORE_BTN_X, y,
UI0902_RESTORE_BTN_W, UI0902_RESTORE_BTN_H,
UI0902_RADIUS_CARD, bg);
LCD_ShowChinese_AutoAlign(UI0902_RESTORE_BTN_X,
(uint16_t)(UI0902_RESTORE_BTN_X + UI0902_RESTORE_BTN_W),
text_y, text_gbk, LCD_ALIGN_CENTER, WHITE, bg, 0,
UI0902_RESTORE_BTN_FONT);
}
void UI_Restore_Select_Init(void)
{
UI_ClearFocus();
LCD_FillByColor(0, 0, 240, 320, UI0902_BG_COLOR);
UI_DrawSubPageHeader((const uint8_t *)"\xBB\xD6\xB8\xB4\xB3\xF6\xB3\xA7\xC9\xE8\xD6\xC3");
/* 确 认(稿面字间空格) */
UI_Restore_DrawButton(UI0902_RESTORE_BTN_Y0, UI0902_ROW_BG,
(const uint8_t *)"\xC8\xB7\x20\xC8\xCF");
/* 取 消(主色,稿面默认安全项) */
UI_Restore_DrawButton(UI0902_RESTORE_BTN_Y1, COLOR_GRAD_MID,
(const uint8_t *)"\xC8\xA1\x20\xCF\xFB");
pCurrentTouch_Area = Touch_Restore_Areas;
}
void UI_Restore_Select_Process(DisplayTaskMessage_Type msg)
{
switch (msg.MessageType)
{
case MSG_ID_TOUCH:
for (uint8_t k = 0; k < TOUCH_AREA_RESTORE_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_Setting_Proc();
break;
case GUI_CONFIRM:
RestoreSetting();
MenuPage_Setting_Proc();
break;
default:
break;
}
ResetAutoPowerCount();
break;
}
}
break;
default:
break;
}
}