Files
FireAlarmCtrlCn/MyCode/Gui/LanguageCfg.cpp
2026-04-06 19:02:09 +08:00

329 lines
7.5 KiB
C++

#include "RuntimeData.h"
#include "LanguageCfg.h"
#include "DevMask.h"
#define dInteval 88
#define dWdClr clSkyBlue
#define dWdDisabelClr clNearWhite
#define dWWidth 24
#define dWHeigh 24
#define dRoundR 7
static constexpr short svGridX[10] = {
6,
6 + (dInteval * 1) ,
6 + (dInteval * 2) ,
6 + (dInteval * 3) ,
6 + (dInteval * 4) ,
6 + (dInteval * 5) ,
6 + (dInteval * 6) ,
6 + (dInteval * 7) ,
6 + (dInteval * 8) ,
6 + (dInteval * 9)
};
void TLanguageCfg::DrawFixText()
{
if(LanguageEnCn==0){
TextRender_string24(Lv.Caption.Left + 10, Lv.Caption.Top +4, clNearWhite, "本机->语言/Language");
TextRender_string24(svGridX[0], Lv.Grid.Top[0] +10, clNearWhite, "语言/Language");
TextRender_string24(svGridX[0] +30, Lv.Grid.Top[0] +46, clNearWhite, "中文");
TextRender_string24(svGridX[1] +30, Lv.Grid.Top[0] +46, clNearWhite, "英文/Language");
TRoundRect::sDrawBySize(svGridX[0] +6, Lv.Grid.Top[1] + 14, 76, 36, 7, clNearWhite, "保存", 14, clNearBlack);
}else{
TextRender_string24(Lv.Caption.Left + 10, Lv.Caption.Top +4, clNearWhite, "Local->Language/语言");
TextRender_string24(svGridX[0], Lv.Grid.Top[0] +10, clNearWhite, "Language/语言");
TextRender_string24(svGridX[0] +30, Lv.Grid.Top[0] +46, clNearWhite, "CN");
TextRender_string24(svGridX[1] +30, Lv.Grid.Top[0] +46, clNearWhite, "English/英文");
TRoundRect::sDrawBySize(svGridX[0] +6, Lv.Grid.Top[1] + 14, 76, 36, 7, clNearWhite, "Save", 14, clNearBlack);
}
}
void TLanguageCfg::Init()
{
Tag.Group = 0;
Tag.Inx0 = 0;
Tag.Inx1 = 0;
IsPermission =0;
SettingEnCn = 0;
SaveResult = 0;
}
void TLanguageCfg::RenderBackGround(void)
{
RectFillRender(ContentGeometry.Left, ContentGeometry.Top, ContentGeometry.Right, ContentGeometry.Bottom, ContentColor);
}
void TLanguageCfg::RenderBackGround(unsigned int aClr)
{
RectFillRender(ContentGeometry.Left, ContentGeometry.Top, ContentGeometry.Right, ContentGeometry.Bottom, aClr);
}
void TLanguageCfg::RenderContent(void)
{
#define FixColColor clMedGray
#define OddColor clNearMoneyGreen
unsigned int x,y, y2, clr;
RectFillRender(ContentGeometry.Left, ContentGeometry.Top, ContentGeometry.Right, ContentGeometry.Bottom, ContentColor);
}
void TLanguageCfg::DrawEnCn()
{
if(SettingEnCn == 0){
TRoundSquare::sDrawBySize(svGridX[0] +2, Lv.Grid.Top[0] + 46, dWWidth, dWHeigh, dRoundR, dWdClr, 1);
TRoundSquare::sDrawBySize(svGridX[1] +2, Lv.Grid.Top[0] + 46, dWWidth, dWHeigh, dRoundR, dWdDisabelClr, 0);
}else{
TRoundSquare::sDrawBySize(svGridX[0] +2, Lv.Grid.Top[0] + 46, dWWidth, dWHeigh, dRoundR, dWdDisabelClr, 0);
TRoundSquare::sDrawBySize(svGridX[1] +2, Lv.Grid.Top[0] + 46, dWWidth, dWHeigh, dRoundR, dWdClr, 1);
}
}
void TLanguageCfg::DrawSelf(void)
{
RectFillRender(Lv.Caption.Left, Lv.Caption.Top, Lv.Caption.Right, Lv.Caption.Bottom, CaptionColor);
for(int i=0; i<Lv.Grid.UsingCount; i++)RectFillRender(Lv.Grid.Left[i], Lv.Grid.Top[i], Lv.Grid.Right[i], Lv.Grid.Bottom[i], ItemColor);
DrawFixText();
LoadSysCfg();
DrawEnCn();
}
void TLanguageCfg::Show()
{
RenderBackGround();
DrawSelf();
DrawSelected(1);
}
void TLanguageCfg::DrawTip()
{
}
void TLanguageCfg::FullRedraw(int Prm)
{
if(Prm == 0){
Show();
}else
if(Prm == 1){
RectFillRender(GuiRedrawDataList[1][0], GuiRedrawDataList[1][1], GuiRedrawDataList[1][2], GuiRedrawDataList[1][3], ContentColor);
DrawSelf();
DrawSelected(1);
if(IsPermission){
PmsIntervene4Gui.ReDraw4GuiRecall();
}else{
RectFillRender(Lv.Grid.Left[2] + 180, Lv.Grid.Top[2] + 20, 440, 160, ContentColor);
}
}
}
void TLanguageCfg::PermissionCmdReturnDraw()
{
for(int i=0; i<Lv.Grid.UsingCount; i++)RectFillRender(Lv.Grid.Left[i], Lv.Grid.Top[i], Lv.Grid.Right[i], Lv.Grid.Bottom[i], ItemColor);
RectFillRender(Lv.Grid.Left[2] + 180, Lv.Grid.Top[2] + 20, Lv.Grid.Left[2] + 180 + 440, Lv.Grid.Top[2] + 20 + 180, ContentColor);
DrawFixText();
DrawEnCn();
}
void TLanguageCfg::PermissionCmdGO()
{
//Save Data Here
GoResult();
}
void TLanguageCfg::ShowSaveResult()
{
char *tText;
if(SaveResult == 0){
TextRender_string24(ResultTipPoint.x, ResultTipPoint.y, clNearWhite, ContentColor, " ");
}else
if(SaveResult < 0){
if(LanguageEnCn==0)tText=" 保存失败 "; else tText="Failed To Save";
TextRender_string24(ResultTipPoint.x, ResultTipPoint.y, clNearWhite, ContentColor, tText);
}else{
if(LanguageEnCn==0)tText=" 保存成功 "; else tText="Saved OK";
TextRender_string24(ResultTipPoint.x, ResultTipPoint.y, clNearWhite, ContentColor, tText);
}
}
void TLanguageCfg::ShowSaveResult(int aNewResult)
{
SaveResult = aNewResult;
ShowSaveResult();
}
void TLanguageCfg::LoadSysCfg()
{
SettingEnCn = LanguageEnCn;
}
int TLanguageCfg::GoResult()
{
Record.WriteLanguage(SettingEnCn);
Record.ReadLanguage();
if(SettingEnCn == LanguageEnCn ){
ShowSaveResult(1);
}else{
ShowSaveResult(-1);
}
return 0;
}
void TLanguageCfg::sRecoverSetDefault()
{
Record.WriteLanguage(0);
Record.ReadLanguage();
}
void TLanguageCfg::DrawSelected(int IsSelected)
{
unsigned int tClr;
char *tText;
if(Tag.Group == 0){
tClr = IsSelected ? clNearWhite : ItemColor;
if(Tag.Inx0 == 0)
TRoundSquare::sSelected(svGridX[0] +2, Lv.Grid.Top[0] + 46, dWWidth, dWHeigh, 4, tClr);
else if(Tag.Inx0 == 1)
TRoundSquare::sSelected(svGridX[1] +2, Lv.Grid.Top[0] + 46, dWWidth, dWHeigh, 4, tClr);
}else
if(Tag.Group == 1){
if(Tag.Inx1 == 0){
if(LanguageEnCn==0) tText="保存"; else tText="Save";
IsSelected ?
TRoundRect::sDrawBySize(svGridX[0] +6 , Lv.Grid.Top[1] + 14, 76, 36, 7, clDeepBlue, tText, 14, clNearWhite):
TRoundRect::sDrawBySize(svGridX[0] +6, Lv.Grid.Top[1] + 14, 76, 36, 7, clNearWhite, tText, 14, clNearBlack);
}
}
}
void TLanguageCfg::ChangeValue()
{
if(Tag.Group == 0){
if(Tag.Inx0 == 0)
SettingEnCn = SettingEnCn ? 0 : 1;
else if(Tag.Inx0 == 1)
SettingEnCn = SettingEnCn ? 0 : 1;
}
}
TGuiMsgReturn TLanguageCfg::KeyIn(unsigned char aKey)
{
TGuiMsgReturn aMsg = guiMsgNone;
TGuiMsgReturn PmsRtnMsg;
if(IsPermission){
PmsRtnMsg = PmsIntervene4Gui.KeyIn(aKey);
if(PmsRtnMsg == guiMsgOkAndReturn){
//Enter And Run Go
IsPermission = 0;
PermissionCmdReturnDraw();
PermissionCmdGO();
}else
if(PmsRtnMsg == guiMsgReturn){
//Not Enter Redraw
IsPermission = 0;
PermissionCmdReturnDraw();
}
return aMsg;
}else{
if(aKey == VK_LEFT){
if(Tag.Group == 0){
if(Tag.Inx0 >0){
DrawSelected(0);
Tag.Inx0 --;
DrawSelected(1);
}
}else
if(Tag.Group == 1){
if(Tag.Inx1 >0){
DrawSelected(0);
Tag.Inx1 --;
DrawSelected(1);
}
}
}else
if(aKey == VK_RIGHT){
if(Tag.Group == 0){
if(Tag.Inx0 <1){
DrawSelected(0);
Tag.Inx0 ++;
DrawSelected(1);
}
}else
if(Tag.Group == 1){
if(Tag.Inx1 <7){
DrawSelected(0);
Tag.Inx1 ++;
DrawSelected(1);
}
}
}else
if(aKey == VK_UP){
if(Tag.Group == 0){
}else
if(Tag.Group == 1){
DrawSelected(0);
Tag.Group = 0;
if(Tag.Inx0 >1)Tag.Inx0 = 1;
DrawSelected(1);
}
}else
if(aKey == VK_DOWN){
if(Tag.Group == 0){
DrawSelected(0);
Tag.Group = 1;
if(Tag.Inx1 >7)Tag.Inx1 =7;
DrawSelected(1);
}else
if(Tag.Group == 1){
}
}else
if(aKey == VK_F1){
ChangeValue();
DrawEnCn();
}else
if(aKey == VK_EXECUTE){
if(SystemPermission > 1){
PermissionCmdGO();
}else{
IsPermission = 1;
PmsIntervene4Gui.Show4Gui(Lv.Grid.Left[2] + 200, Lv.Grid.Top[2] + 40, 400, 140, 2);
}
}else
if(aKey == VK_RETURN){
aMsg = guiMsgReturn;
}
if( (aKey != VK_EXECUTE) && (aKey != VK_RETURN) ){
if(SaveResult != 0)ShowSaveResult(0);
}
}
return aMsg;
}