Files
player/Project/Src/MyWinApp/mywin_user_backlightset.c

223 lines
7.7 KiB
C
Raw Normal View History

2025-06-27 00:32:57 +08:00
#include "mywin_user_backlightset.h"
#include "date.h"
#include "mywin_inc.h"
2025-06-27 00:32:57 +08:00
#define WIN_BACKLIGHTSETBOX_TYPE "WIN_BackLightSetboxStruct"
WIN_BackLightSetboxStruct *WIN_CreatBackLightSetbox(
WIN_WindowStruct *base,
void (*msgLoop)(struct _WIN_WindowStruct *win, WIN_MsgStruct *msg), int x,
int y, int x_size, int y_size) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣѭ<CFA2><D1AD>
if (msgLoop == 0) {
msgLoop = (void (*)(struct _WIN_WindowStruct *win,
WIN_MsgStruct *msg))BACKLIGHTSETBOX_defaultMsgLoop;
}
WIN_BackLightSetboxStruct *ret = mymalloc(sizeof(WIN_BackLightSetboxStruct));
// <20><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><ECBAAF>
if (ret) {
mymemset(ret, 0, sizeof(WIN_BackLightSetboxStruct));
if (0 == WIN_CreatWindowExt((WIN_WindowStruct *)ret, base, msgLoop, x, y,
x_size, y_size)) {
// <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
myfree(ret);
ret = 0;
} else {
((WIN_WindowStruct *)ret)->winType = WIN_BACKLIGHTSETBOX_TYPE;
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
ret->title = "<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
ret->light = ui_getScreenBrightness();
ret->autoLight = ui_getScreenAutoLight();
ret->offTime = ui_getScreenOffTime();
ret->lightSave = ret->light;
}
}
return ret;
2025-06-27 00:32:57 +08:00
}
void BACKLIGHTSETBOX_Add(WIN_BackLightSetboxStruct *backlightsetbox) {
if (backlightsetbox->index == 0) {
if (backlightsetbox->offTime < 30 * 60)
backlightsetbox->offTime += 30;
} else if (backlightsetbox->index == 1) {
if (backlightsetbox->light < 100)
backlightsetbox->light += 10;
if (backlightsetbox->light > 100)
backlightsetbox->light = 100;
ui_setScreenBrightness(backlightsetbox->light);
} else if (backlightsetbox->index == 2) {
backlightsetbox->autoLight = !backlightsetbox->autoLight;
}
2025-06-27 00:32:57 +08:00
}
void BACKLIGHTSETBOX_Sub(WIN_BackLightSetboxStruct *backlightsetbox) {
if (backlightsetbox->index == 0) {
if (backlightsetbox->offTime > 0)
backlightsetbox->offTime -= 30;
if (backlightsetbox->offTime < 0)
backlightsetbox->offTime = 0;
} else if (backlightsetbox->index == 1) {
if (backlightsetbox->light > 1)
backlightsetbox->light -= 10;
if (backlightsetbox->light < 1)
backlightsetbox->light = 1;
ui_setScreenBrightness(backlightsetbox->light);
} else if (backlightsetbox->index == 2) {
backlightsetbox->autoLight = !backlightsetbox->autoLight;
}
2025-06-27 00:32:57 +08:00
}
// <20><>Ϣ<EFBFBD><CFA2><EFBFBD>Ļ<EFBFBD><C4BB>ƺ<EFBFBD><C6BA><EFBFBD>
void BACKLIGHTSETBOX_DefaultPaint(WIN_BackLightSetboxStruct *backlightsetbox) {
int x = 0;
int y = 0;
int x_size = ((WIN_WindowStruct *)backlightsetbox)->x_size;
int y_size = ((WIN_WindowStruct *)backlightsetbox)->y_size;
char txt_buff[20] = {0};
WIN_PaintBackGround((WIN_WindowStruct *)backlightsetbox);
// <20><><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD>
WIN_SetFontMode(WIN_DRAWMODE_ALONE);
WIN_SetLcdColor(((WIN_WindowStruct *)backlightsetbox)->color);
WIN_DrawTxtHCenterAt(backlightsetbox->title, x_size / 2, y);
y += WIN_GetFontHight();
// <20><><EFBFBD><EFBFBD>ѡ<EFBFBD>п<EFBFBD>
int rect_y_step = (y_size - WIN_GetFontHight()) / 3;
int rect_x = x;
int rect_y = y;
int rect_xsize = x_size;
int rect_ysize = rect_y_step;
WIN_SetLcdColor(0x00ff0080);
if (backlightsetbox->index < 3) {
rect_y += rect_ysize * backlightsetbox->index;
WIN_FillRectByColor(rect_x, rect_y, rect_xsize, rect_ysize);
}
// <20><>ʾ<EFBFBD>ı<EFBFBD>
WIN_SetLcdColor(((WIN_WindowStruct *)backlightsetbox)->color);
sprintf(txt_buff, "%d <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>", backlightsetbox->offTime);
WIN_DrawTxtHCenterAt(txt_buff, x_size / 2,
y + rect_y_step / 2 - WIN_GetFontHight() / 2);
sprintf(txt_buff, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> %d", backlightsetbox->light);
WIN_DrawTxtHCenterAt(txt_buff, x_size / 2,
y + rect_y_step / 2 - WIN_GetFontHight() / 2 +
rect_y_step);
if (backlightsetbox->autoLight)
WIN_DrawTxtHCenterAt("<EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>", x_size / 2,
y + rect_y_step / 2 - WIN_GetFontHight() / 2 +
rect_y_step * 2);
else
WIN_DrawTxtHCenterAt("<EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>", x_size / 2,
y + rect_y_step / 2 - WIN_GetFontHight() / 2 +
rect_y_step * 2);
2025-06-27 00:32:57 +08:00
}
// <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void BACKLIGHTSETBOX_defaultMsgLoop(WIN_BackLightSetboxStruct *backlightsetbox,
WIN_MsgStruct *msg) {
WIN_MoveStruct *m = 0;
WIN_KeyStruct *k = 0;
switch (msg->msg) {
case WIN_MSG_PAINT:
BACKLIGHTSETBOX_DefaultPaint(backlightsetbox);
break;
case WIN_MSG_INIT:
break;
case WIN_MSG_KEY:
k = msg->data.p;
// <20>յ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>򷵻ؼ<F2B7B5BB>
if (k->shortPress & KEY_VALUE_UP) {
BACKLIGHTSETBOX_Add(backlightsetbox);
} else if (k->shortPress & KEY_VALUE_DOWN) {
BACKLIGHTSETBOX_Sub(backlightsetbox);
} else if (k->shortPress & KEY_VALUE_ENTER) {
if (backlightsetbox->index < 2)
backlightsetbox->index++;
else
backlightsetbox->index = 0;
}
if (k->shortPress) {
WIN_SetInvalidRect((WIN_WindowStruct *)backlightsetbox, 0, 16,
((WIN_WindowStruct *)backlightsetbox)->x_size,
((WIN_WindowStruct *)backlightsetbox)->y_size - 16);
}
if (k->shortPress & KEY_VALUE_HOME) {
ui_setScreenBrightness(backlightsetbox->lightSave);
MSGBOX_TipsTime((WIN_WindowStruct *)backlightsetbox, "<EFBFBD><EFBFBD>ʾ",
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>б<EFBFBD><EFBFBD><EFBFBD>", "ȷ<EFBFBD><EFBFBD>", 5000);
((WIN_WindowStruct *)backlightsetbox)
->deleteWindow((WIN_WindowStruct *)backlightsetbox);
} else if (k->longPress & KEY_VALUE_ENTER) {
ui_setScreenAutoLight(backlightsetbox->autoLight);
ui_setScreenOffTime(backlightsetbox->offTime);
ui_setScreenBrightness(backlightsetbox->light);
MSGBOX_TipsTime((WIN_WindowStruct *)backlightsetbox, "<EFBFBD><EFBFBD>ʾ", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD><EFBFBD><EFBFBD>",
"ȷ<EFBFBD><EFBFBD>", 5000);
((WIN_WindowStruct *)backlightsetbox)
->deleteWindow((WIN_WindowStruct *)backlightsetbox);
}
break; // case WIN_MSG_KEY:
case WIN_MSG_TOUCH:
break;
case WIN_MSG_CHID:
break;
case WIN_MSG_DELETE:
break;
case WIN_MSG_TIMER:
// <20><>ʱ<EFBFBD><CAB1>ʱ<EFBFBD>
((WIN_WindowStruct *)backlightsetbox)
->deleteWindow((WIN_WindowStruct *)backlightsetbox);
break;
case WIN_MSG_MOVE:
m = msg->data.p;
switch (m->moveType) {
case MOVE_DATA_MOVEIN:
break;
case MOVE_DATA_MOVED:
break;
case MOVE_DATA_LONG:
break;
case MOVE_DATA_MOVEOUT:
case MOVE_DATA_OUTSIDE:
backlightsetbox->press = 0;
WIN_SetInvalidRect((WIN_WindowStruct *)backlightsetbox, 0,
((WIN_WindowStruct *)backlightsetbox)->y_size - 16,
((WIN_WindowStruct *)backlightsetbox)->x_size, 16);
break;
case MOVE_DATA_TOUCHOUT:
if (backlightsetbox->press)
((WIN_WindowStruct *)backlightsetbox)
->deleteWindow((WIN_WindowStruct *)backlightsetbox);
break;
case MOVE_DATA_TOUCHIN:
backlightsetbox->press = 1;
// WIN_SetInvalid ((WIN_WindowStruct *)msgbox);
WIN_SetInvalidRect((WIN_WindowStruct *)backlightsetbox, 0,
((WIN_WindowStruct *)backlightsetbox)->y_size - 16,
((WIN_WindowStruct *)backlightsetbox)->x_size, 16);
break;
default:
WIN_DefaultMsgLoop((WIN_WindowStruct *)backlightsetbox, msg);
break;
}
break;
default:
WIN_DefaultMsgLoop((WIN_WindowStruct *)backlightsetbox, msg);
break;
}
2025-06-27 00:32:57 +08:00
}
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
int BACKLIGHTSETBOX_BackLightSet(void) {
WIN_BackLightSetboxStruct *backlightsetbox = WIN_CreatBackLightSetbox(
0, 0, WIN_GetBaseWindow()->x_size / 4, WIN_GetBaseWindow()->y_size / 4,
WIN_GetBaseWindow()->x_size / 2, WIN_GetBaseWindow()->y_size / 2);
WIN_ShowWindow((WIN_WindowStruct *)backlightsetbox);
return WIN_RunBlock((WIN_WindowStruct *)backlightsetbox);
2025-06-27 00:32:57 +08:00
}