⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setdate.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 2 页
字号:
                _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 + -