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

📄 settime.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 2 页
字号:
                break;
            default:
                break;
            }
        }
        _SETTIME_UpdateCursor(hSetTime, FALSE);
        break;
    case KEY_DOWN:
        //updaet the time
        {
            switch (_bSETTIMEDialogCursorPos[hSetTime])
            {
            case SET_TIME_DIALOG_CURSOR_POS_HOUR:
                if (_SETTIMESetTime[hSetTime].DisplayTime.bHour > 0)
                {
                    _SETTIMESetTime[hSetTime].DisplayTime.bHour--;
                }
                else
                {
                    _SETTIMESetTime[hSetTime].DisplayTime.bHour = 23;
                }
                break;
            case SET_TIME_DIALOG_CURSOR_POS_MINUTE:
                if (_SETTIMESetTime[hSetTime].DisplayTime.bMinute > 0)
                {
                    _SETTIMESetTime[hSetTime].DisplayTime.bMinute--;
                }
                else
                {
                    _SETTIMESetTime[hSetTime].DisplayTime.bMinute = 59;
                }
                break;
            case SET_TIME_DIALOG_CURSOR_POS_SECOND:
                if (_SETTIMESetTime[hSetTime].DisplayTime.bSecond > 0)
                {
                    _SETTIMESetTime[hSetTime].DisplayTime.bSecond--;
                }
                else
                {
                    _SETTIMESetTime[hSetTime].DisplayTime.bSecond = 59;
                }
                break;
            default:
                break;
            }
        }
        _SETTIME_UpdateCursor(hSetTime, FALSE);
        break;
    case KEY_LEFT:
        if (_bSETTIMEDialogCursorPos[hSetTime] == SET_TIME_DIALOG_CURSOR_POS_HOUR)
        {
#ifndef NL_SOLUTION
            //Clear the cursor
            _SETTIME_UpdateCursor(hSetTime, TRUE);
            return SETTIME_EDIT_ACTION_EXCEED_LEFT;
#endif //NL_SOLUTION
        }
        else
        {
            _SETTIME_UpdateCursor(hSetTime, TRUE);
            _bSETTIMEDialogCursorPos[hSetTime]--;
            _SETTIME_UpdateCursor(hSetTime, FALSE);
        }
        break;
    case KEY_RIGHT:
        if (_SETTIMESetTime[hSetTime].DisplayTime.bDisplayType == SETTIME_DISPLAY_MODE_HOUR_MINUTE)
        {
            if (_bSETTIMEDialogCursorPos[hSetTime] == SET_TIME_DIALOG_CURSOR_POS_MINUTE)
            {
#ifdef NL_SOLUTION
                return SETTIME_EDIT_ACTION_DONE;
#else
                //Clear the cursor
                _SETTIME_UpdateCursor(hSetTime, TRUE);
                return SETTIME_EDIT_ACTION_EXCEED_RIGHT;
#endif //NL_SOLUTION
            }
        }
        else if (_SETTIMESetTime[hSetTime].DisplayTime.bDisplayType == SETTIME_DISPLAY_MODE_HOUR_MINUTE_SEC)
        {
            if (_bSETTIMEDialogCursorPos[hSetTime] == SET_TIME_DIALOG_CURSOR_POS_SECOND)
            {
#ifdef NL_SOLUTION
                return SETTIME_EDIT_ACTION_DONE;
#else
                //Clear the cursor
                _SETTIME_UpdateCursor(hSetTime, TRUE);
                return SETTIME_EDIT_ACTION_EXCEED_RIGHT;
#endif //#ifndef NL_SOLUTION
            }
        }
        
        _SETTIME_UpdateCursor(hSetTime, TRUE);
        _bSETTIMEDialogCursorPos[hSetTime]++;
        _SETTIME_UpdateCursor(hSetTime, FALSE);        
        break;
    case KEY_PLAY:
    case KEY_ENTER:
        return SETTIME_EDIT_ACTION_EXCEED_ENTER;
    default:
        break;
    }

    return SETTIME_EDIT_ACTION_DONE;
}

void SETTIME_Recover(HSETTIME hSetTime)
{
    _SETTIME_DrawAllUI(hSetTime);
}

void SETTIME_Exit(HSETTIME hSetTime, BYTE bClearBackground)
{
    BYTE i;

    if (_hSETTIMEDlg[hSetTime] != DIALOG_HANDLE_INVALID)
    {
        DIALOG_DeleteDialog(_hSETTIMEDlg[hSetTime], bClearBackground);
        _hSETTIMEDlg[hSetTime] = DIALOG_HANDLE_INVALID;
    }

    for (i = 0; i < MAX_SUPPORT_SETTIME_HANDLE_NUM; i++)
    {
        if (_hSETTIMESetTimeStack[i] == hSetTime)
        {
            _hSETTIMESetTimeStack[i] = SETTIME_HANDLE_FREE;
            return;
        }
    }
}

void _SETTIME_UpdateCursor(HSETTIME hSetTime, BYTE bClear)
{
    switch (_bSETTIMEDialogCursorPos[hSetTime])
    {
    case SET_TIME_DIALOG_CURSOR_POS_HOUR:
        _SETTIME_ShowTimeNum(hSetTime, _SETTIMESetTime[hSetTime].DisplayTime.bHour, _SETTIMESetTime[hSetTime].DisplayTime.wStartX, !bClear);
        break;
    case SET_TIME_DIALOG_CURSOR_POS_MINUTE:
        _SETTIME_ShowTimeNum(hSetTime, _SETTIMESetTime[hSetTime].DisplayTime.bMinute, _SETTIMESetTime[hSetTime].DisplayTime.wStartX+SETTIME_NUM_WIDTH*2+SETTIME_NUM_COLON_WIDTH, !bClear);
        break;
    case SET_TIME_DIALOG_CURSOR_POS_SECOND:
        _SETTIME_ShowTimeNum(hSetTime, _SETTIMESetTime[hSetTime].DisplayTime.bSecond, _SETTIMESetTime[hSetTime].DisplayTime.wStartX+SETTIME_NUM_WIDTH*4+SETTIME_NUM_COLON_WIDTH*2, !bClear);
        break;
    default:
        break;
    }
}


void _SETTIME_ShowTime(HSETTIME hSetTime)
{
    //Show hour
    _SETTIME_ShowTimeNum(hSetTime, _SETTIMESetTime[hSetTime].DisplayTime.bHour, _SETTIMESetTime[hSetTime].DisplayTime.wStartX, FALSE);

    //Show colon
    _SETTIME_ShowColon(hSetTime, 0);

    //Show minute
    _SETTIME_ShowTimeNum(hSetTime, _SETTIMESetTime[hSetTime].DisplayTime.bMinute, _SETTIMESetTime[hSetTime].DisplayTime.wStartX+SETTIME_NUM_WIDTH*2+SETTIME_NUM_COLON_WIDTH, FALSE);

    if (_SETTIMESetTime[hSetTime].DisplayTime.bDisplayType == SETTIME_DISPLAY_MODE_HOUR_MINUTE_SEC)
    {
        //Show colon
        _SETTIME_ShowColon(hSetTime, 1);
        
        //Show second
        _SETTIME_ShowTimeNum(hSetTime, _SETTIMESetTime[hSetTime].DisplayTime.bSecond, _SETTIMESetTime[hSetTime].DisplayTime.wStartX+SETTIME_NUM_WIDTH*4+SETTIME_NUM_COLON_WIDTH*2, FALSE);
    }
}

void _SETTIME_ShowColon(HSETTIME hSetTime, BYTE bPos)
{
    PARM_DRAW_STRING SETTIMEStringAttr;
    
    SETTIMEStringAttr.bBackground = DIALOG_PALETTE_ENTRY_CONTENT_BACKGROUND;    
    SETTIMEStringAttr.bColorKey = 0;
    SETTIMEStringAttr.bShadow1 = DIALOG_PALETTE_ENTRY_CONTENT_BACKGROUND;
    SETTIMEStringAttr.bShadow2 = DIALOG_PALETTE_ENTRY_CONTENT_BACKGROUND;
    SETTIMEStringAttr.bTextColor = SET_TIME_DIALOG_PALETTE_ENTRY_EDIT_INFO;
    SETTIMEStringAttr.wX = _SETTIMESetTime[hSetTime].DisplayTime.wStartX+(SETTIME_NUM_WIDTH*2)*(bPos+1)+SETTIME_NUM_COLON_WIDTH*bPos;
    SETTIMEStringAttr.wY = _SETTIMESetTime[hSetTime].DisplayTime.wStartY;    
    
    GDI_DrawString(0, &SETTIMEStringAttr, aSETTIMEColon);
}

//***************************************************************************
//  Function    :   _SETTIME_ShowTime
//  Abstract    :   
//  Arguments   :   wNum: The number you want to output.
//  Return		:   none.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void _SETTIME_ShowTimeNum(HSETTIME hSetTime, WORD wNum, WORD wStartX, BYTE bCursor)
{    
    PARM_DRAW_STRING SETTIMEStringAttr;

    OSDUTL_PrepareOutputString();
    OSDUTL_OutputNumFromIndex((WORD)(wNum/10));
    OSDUTL_OutputNumFromIndex((WORD)(wNum%10));

    if (bCursor)
    {
        SETTIMEStringAttr.bBackground = SET_TIME_DIALOG_PALETTE_ENTRY_EDIT_HIGHLIGHT;
    }
    else
    {
        SETTIMEStringAttr.bBackground = DIALOG_PALETTE_ENTRY_CONTENT_BACKGROUND;
    }

    SETTIMEStringAttr.bColorKey = 0;
    SETTIMEStringAttr.bShadow1 = DIALOG_PALETTE_ENTRY_CONTENT_BACKGROUND;
    SETTIMEStringAttr.bShadow2 = DIALOG_PALETTE_ENTRY_CONTENT_BACKGROUND;
    SETTIMEStringAttr.bTextColor = SET_TIME_DIALOG_PALETTE_ENTRY_EDIT_INFO;
    SETTIMEStringAttr.wX = wStartX;
    SETTIMEStringAttr.wY = _SETTIMESetTime[hSetTime].DisplayTime.wStartY;    

    GDI_DrawString(0, &SETTIMEStringAttr, __pOSDUTLOutputString);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -