92 lines
2.3 KiB
C
92 lines
2.3 KiB
C
#include "mywin_user_light.h"
|
|
#include "mywin_inc.h"
|
|
#include "mywin_user_menu.h"
|
|
|
|
#include "date.h"
|
|
#include "system_file.h"
|
|
|
|
const static MENU_ItemStruct ptr[] = {
|
|
{0, "5 秒"}, {0, "15 秒"}, {0, "30 秒"}, {0, "90 秒"}, {0, "常亮"},
|
|
|
|
};
|
|
|
|
const static uint8_t g_time[5] = {5, 15, 30, 90, 0};
|
|
|
|
// 进入
|
|
WIN_MenuStruct *MENU_LightSet(WIN_WindowStruct *base) {
|
|
WIN_MenuStruct *menu = WIN_CreatMenu(
|
|
base, (void (*)(WIN_WindowStruct *, WIN_MsgStruct *))MENU_LightSetMsgLoop,
|
|
0, 0, base->x_size, base->y_size);
|
|
((WIN_WindowStruct *)menu)->intercept = 1; // 不发送按键消息到父窗口
|
|
|
|
WIN_SetBackPicPath((WIN_WindowStruct *)menu, base->pic_path);
|
|
MENU_SetTitle(menu, 0, "背光设置");
|
|
|
|
MENU_SetMaxItem(menu, 5);
|
|
for (int i = 0; i < 5; i++) {
|
|
MENU_AddItem(menu, ptr[i].img, (char *)ptr[i].txt);
|
|
}
|
|
|
|
WIN_ShowWindow((WIN_WindowStruct *)menu);
|
|
return menu;
|
|
}
|
|
|
|
static void MENU_Enter(WIN_MenuStruct *menu) {
|
|
|
|
SysFile_GetSysFile()->screenOffTime = g_time[MENU_GetIndex(menu)];
|
|
char txt[20] = {0};
|
|
sprintf(txt, "将在 %d 秒后熄屏", g_time[MENU_GetIndex(menu)]);
|
|
MSGBOX_TipsTime((WIN_WindowStruct *)menu, "提示", txt, "确定", 5000);
|
|
}
|
|
|
|
// 消息处理函数
|
|
void MENU_LightSetMsgLoop(WIN_MenuStruct *menu, WIN_MsgStruct *msg) {
|
|
WIN_MoveStruct *m = 0;
|
|
WIN_TouchStruct *t = 0;
|
|
WIN_KeyStruct *k = 0;
|
|
switch (msg->msg) {
|
|
case WIN_MSG_KEY:
|
|
k = msg->data.p;
|
|
if (k->shortPress & KEY_VALUE_ENTER) {
|
|
MENU_Enter(menu);
|
|
} else {
|
|
MENU_DefaultMsgLoop(menu, msg);
|
|
}
|
|
break; // case WIN_MSG_KEY:
|
|
case WIN_MSG_MOVE:
|
|
m = msg->data.p;
|
|
switch (m->moveType) {
|
|
case MOVE_DATA_SHORT:
|
|
if (m->y_move > ((WIN_WindowStruct *)menu)->y_size / 2 - 20 &&
|
|
m->y_move < ((WIN_WindowStruct *)menu)->y_size / 2 + 20) {
|
|
MENU_Enter(menu);
|
|
}
|
|
break;
|
|
default:
|
|
MENU_DefaultMsgLoop(menu, msg);
|
|
break;
|
|
}
|
|
break;
|
|
case WIN_MSG_CHID:
|
|
switch (msg->data.v) {
|
|
case CHID_DELETE:
|
|
break;
|
|
case CHID_USER: {
|
|
if (msg->srcWin == menu->bar) {
|
|
if (msg->data2.v == SCROLLBAR_PRESSED) {
|
|
MENU_Enter(menu);
|
|
}
|
|
} else {
|
|
MENU_DefaultMsgLoop(menu, msg);
|
|
}
|
|
} break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
MENU_DefaultMsgLoop(menu, msg);
|
|
break;
|
|
}
|
|
}
|