📄 setdate.c
字号:
_SETDATESetDate[hSetDate].DisplayDate.bDate++;
if (_SETDATESetDate[hSetDate].DisplayDate.bDate > Calendar_GetDaysofMonth(_SETDATESetDate[hSetDate].DisplayDate.wYear, _SETDATESetDate[hSetDate].DisplayDate.bMonth))
{
_SETDATESetDate[hSetDate].DisplayDate.bDate = 1;
}
break;
default:
break;
}
}
_SETDATE_UpdateCursor(hSetDate, FALSE);
break;
case KEY_DOWN:
//updaet the time
{
switch (_bSETDATEDialogCursorPos[hSetDate])
{
case SET_DATE_DIALOG_CURSOR_POS_YEAR:
if (_SETDATESetDate[hSetDate].DisplayDate.wYear > SETDATE_MIN_YEAR)
{
_SETDATESetDate[hSetDate].DisplayDate.wYear--;
}
else
{
_SETDATESetDate[hSetDate].DisplayDate.wYear = SETDATE_MIN_YEAR;
}
break;
case SET_DATE_DIALOG_CURSOR_POS_MONTH:
if (_SETDATESetDate[hSetDate].DisplayDate.bMonth > 1)
{
_SETDATESetDate[hSetDate].DisplayDate.bMonth--;
}
else
{
_SETDATESetDate[hSetDate].DisplayDate.bMonth = 12;
}
break;
case SET_DATE_DIALOG_CURSOR_POS_DATE:
if (_SETDATESetDate[hSetDate].DisplayDate.bDate > 1)
{
_SETDATESetDate[hSetDate].DisplayDate.bDate--;
}
else
{
_SETDATESetDate[hSetDate].DisplayDate.bDate = Calendar_GetDaysofMonth(_SETDATESetDate[hSetDate].DisplayDate.wYear, _SETDATESetDate[hSetDate].DisplayDate.bMonth);
}
break;
default:
break;
}
}
_SETDATE_UpdateCursor(hSetDate, FALSE);
break;
case KEY_LEFT:
if (_bSETDATEDialogCursorPos[hSetDate] == SET_DATE_DIALOG_CURSOR_POS_YEAR)
{
#ifndef NL_SOLUTION
//Clear the cursor
_SETDATE_UpdateCursor(hSetDate, TRUE);
return SETDATE_EDIT_ACTION_EXCEED_LEFT;
#endif //NL_SOLUTION
}
else
{
_SETDATE_UpdateCursor(hSetDate, TRUE);
_bSETDATEDialogCursorPos[hSetDate]--;
_SETDATE_UpdateCursor(hSetDate, FALSE);
}
break;
case KEY_RIGHT:
if (_bSETDATEDialogCursorPos[hSetDate] == SET_DATE_DIALOG_CURSOR_POS_DATE)
{
#ifdef NL_SOLUTION
return SETDATE_EDIT_ACTION_DONE;
#else
//Clear the cursor
_SETDATE_UpdateCursor(hSetDate, TRUE);
return SETDATE_EDIT_ACTION_EXCEED_RIGHT;
#endif //#ifndef NL_SOLUTION
}
_SETDATE_UpdateCursor(hSetDate, TRUE);
_bSETDATEDialogCursorPos[hSetDate]++;
_SETDATE_UpdateCursor(hSetDate, FALSE);
break;
case KEY_PLAY:
case KEY_ENTER:
return SETDATE_EDIT_ACTION_EXCEED_ENTER;
default:
break;
}
return SETDATE_EDIT_ACTION_DONE;
}
void SETDATE_Recover(HSETDATE hSetDate)
{
_SETDATE_DrawAllUI(hSetDate);
}
void SETDATE_Exit(HSETDATE hSetDate, BYTE bClearBackground)
{
BYTE i;
if (_hSETDATEDlg[hSetDate] != DIALOG_HANDLE_INVALID)
{
DIALOG_DeleteDialog(_hSETDATEDlg[hSetDate], bClearBackground);
_hSETDATEDlg[hSetDate] = DIALOG_HANDLE_INVALID;
}
for (i = 0; i < MAX_SUPPORT_SETDATE_HANDLE_NUM; i++)
{
if (_hSETDATESetDateStack[i] == hSetDate)
{
_hSETDATESetDateStack[i] = SETDATE_HANDLE_FREE;
return;
}
}
}
void _SETDATE_UpdateCursor(HSETDATE hSetDate, BYTE bClear)
{
switch (_bSETDATEDialogCursorPos[hSetDate])
{
case SET_DATE_DIALOG_CURSOR_POS_YEAR:
_SETDATE_ShowNum(hSetDate, _SETDATESetDate[hSetDate].DisplayDate.wYear, _SETDATESetDate[hSetDate].DisplayDate.wStartX, !bClear);
break;
case SET_DATE_DIALOG_CURSOR_POS_MONTH:
_SETDATE_ShowNum(hSetDate, _SETDATESetDate[hSetDate].DisplayDate.bMonth, _SETDATESetDate[hSetDate].DisplayDate.wStartX+SETDATE_NUM_WIDTH*4+SETDATE_NUM_SEPARATE_WIDTH, !bClear);
break;
case SET_DATE_DIALOG_CURSOR_POS_DATE:
_SETDATE_ShowNum(hSetDate, _SETDATESetDate[hSetDate].DisplayDate.bDate, _SETDATESetDate[hSetDate].DisplayDate.wStartX+SETDATE_NUM_WIDTH*6+SETDATE_NUM_SEPARATE_WIDTH*2, !bClear);
break;
default:
break;
}
}
void _SETDATE_ShowDate(HSETDATE hSetDate)
{
//Show Year
_SETDATE_ShowNum(hSetDate, _SETDATESetDate[hSetDate].DisplayDate.wYear, _SETDATESetDate[hSetDate].DisplayDate.wStartX, FALSE);
//Show separate
_SETDATE_ShowSeparate(hSetDate, 0);
//Show month
_SETDATE_ShowNum(hSetDate, _SETDATESetDate[hSetDate].DisplayDate.bMonth, _SETDATESetDate[hSetDate].DisplayDate.wStartX+SETDATE_NUM_WIDTH*4+SETDATE_NUM_SEPARATE_WIDTH, FALSE);
//Show separate
_SETDATE_ShowSeparate(hSetDate, 1);
//Show second
_SETDATE_ShowNum(hSetDate, _SETDATESetDate[hSetDate].DisplayDate.bDate, _SETDATESetDate[hSetDate].DisplayDate.wStartX+SETDATE_NUM_WIDTH*6+SETDATE_NUM_SEPARATE_WIDTH*2, FALSE);
}
void _SETDATE_ShowSeparate(HSETDATE hSetDate, BYTE bPos)
{
PARM_DRAW_STRING SETDATEStringAttr;
SETDATEStringAttr.bBackground = DIALOG_PALETTE_ENTRY_CONTENT_BACKGROUND;
SETDATEStringAttr.bColorKey = 0;
SETDATEStringAttr.bShadow1 = DIALOG_PALETTE_ENTRY_CONTENT_BACKGROUND;
SETDATEStringAttr.bShadow2 = DIALOG_PALETTE_ENTRY_CONTENT_BACKGROUND;
SETDATEStringAttr.bTextColor = SET_TIME_DIALOG_PALETTE_ENTRY_EDIT_INFO;
SETDATEStringAttr.wX = _SETDATESetDate[hSetDate].DisplayDate.wStartX+(SETDATE_NUM_WIDTH*2)*(bPos+1)+SETDATE_NUM_SEPARATE_WIDTH*bPos+SETDATE_NUM_WIDTH*2;
SETDATEStringAttr.wY = _SETDATESetDate[hSetDate].DisplayDate.wStartY;
GDI_DrawString(0, &SETDATEStringAttr, aSETDATESeparate);
}
//***************************************************************************
// Function : _SETDATE_ShowNum
// Abstract :
// Arguments : wNum: The number you want to output.
// Return : none.
// Side Effect : none.
// Notes :
//***************************************************************************
void _SETDATE_ShowNum(HSETDATE hSetDate, WORD wNum, WORD wStartX, BYTE bCursor)
{
PARM_DRAW_STRING SETDATEStringAttr;
OSDUTL_PrepareOutputString();
if (wNum < 10)
{
OSDUTL_OutputNumFromIndex((WORD)(wNum/10));
OSDUTL_OutputNumFromIndex((WORD)(wNum%10));
}
else
{
OSDUTL_OutputNumFromIndex(wNum);
}
if (bCursor)
{
SETDATEStringAttr.bBackground = SET_TIME_DIALOG_PALETTE_ENTRY_EDIT_HIGHLIGHT;
}
else
{
SETDATEStringAttr.bBackground = DIALOG_PALETTE_ENTRY_CONTENT_BACKGROUND;
}
SETDATEStringAttr.bColorKey = 0;
SETDATEStringAttr.bShadow1 = DIALOG_PALETTE_ENTRY_CONTENT_BACKGROUND;
SETDATEStringAttr.bShadow2 = DIALOG_PALETTE_ENTRY_CONTENT_BACKGROUND;
SETDATEStringAttr.bTextColor = SET_TIME_DIALOG_PALETTE_ENTRY_EDIT_INFO;
SETDATEStringAttr.wX = wStartX;
SETDATEStringAttr.wY = _SETDATESetDate[hSetDate].DisplayDate.wStartY;
GDI_DrawString(0, &SETDATEStringAttr, __pOSDUTLOutputString);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -