#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; } }