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

📄 settime.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 2 页
字号:
#define SET_TIME_MAIN_FILE

#include "winav.h"
#include "gdi.h"
#include "cc.h"
#include "osd.h"
#include "oswrap.h"
#include "input.h"
#include "setup.h"
#include "mainmenu.h"
#include "settime.h"
#include "fontindex.h"
#include "osdnd.h"

WORD aSETTIMEColon[] = {1, CHAR_COLON};

SETTIME _SETTIMESetTime[MAX_SUPPORT_SETTIME_HANDLE_NUM];
HSETTIME _hSETTIMESetTimeStack[MAX_SUPPORT_SETTIME_HANDLE_NUM] = {SETTIME_HANDLE_FREE, SETTIME_HANDLE_FREE, SETTIME_HANDLE_FREE};
BYTE _bSETTIMEBackgroundColor[MAX_SUPPORT_MENU_HANDLE_NUM];
BYTE _bSETTIMEDUIStyle[MAX_SUPPORT_MENU_HANDLE_NUM];
BYTE _bSETTIMEDialogCursorPos[MAX_SUPPORT_MENU_HANDLE_NUM];
HDIALOG _hSETTIMEDlg[MAX_SUPPORT_MENU_HANDLE_NUM] = {DIALOG_HANDLE_INVALID, DIALOG_HANDLE_INVALID, DIALOG_HANDLE_INVALID};

//***************************************************************************
//  Function    :   SETTIME_Initial
//  Abstract    :   When the menu is pop-up at 1st time, this initial function will be called. 
//                  Each UI can do its control initialization and draw the UI here.
//  Arguments   :   none.
//  Return      :   nonw.
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
HSETTIME SETTIME_Create(PSETTIME_TIME pDisplayTime, PSETTIME_DLG_ACTION pSetTimeAction)
{
    HSETTIME hSetTime;

    hSetTime = _SETTIME_GetSetTimeHandle();

    if (hSetTime != SETTIME_HANDLE_INVALID)
    {
        _SETTIMESetTime[hSetTime].DisplayTime.bDisplayType = pDisplayTime->bDisplayType;
        _SETTIMESetTime[hSetTime].DisplayTime.bHour = pDisplayTime->bHour;
        _SETTIMESetTime[hSetTime].DisplayTime.bMinute = pDisplayTime->bMinute;
        _SETTIMESetTime[hSetTime].DisplayTime.bSecond = pDisplayTime->bSecond;
        _SETTIMESetTime[hSetTime].DisplayTime.wStartX = pDisplayTime->wStartX;
        _SETTIMESetTime[hSetTime].DisplayTime.wStartY = pDisplayTime->wStartY;

        _SETTIMESetTime[hSetTime].pSetTimeDlgAction = pSetTimeAction;
    }

    return hSetTime;
}

HSETTIME _SETTIME_GetSetTimeHandle(void)
{
    BYTE i;
    for (i = 0; i < MAX_SUPPORT_SETTIME_HANDLE_NUM; i++)
    {
        if (_hSETTIMESetTimeStack[i] == SETTIME_HANDLE_FREE)
        {
            _hSETTIMESetTimeStack[i] = i;
            return _hSETTIMESetTimeStack[i];
        }
    }

    return SETTIME_HANDLE_INVALID;
}

void SETTIME_Show(HSETTIME hSetTime, BYTE bBackgroundColor, BYTE bUIStyle)
{
    _bSETTIMEDialogCursorPos[hSetTime] = SET_TIME_DIALOG_CURSOR_POS_HOUR;

    _bSETTIMEBackgroundColor[hSetTime] = bBackgroundColor;
    _bSETTIMEDUIStyle[hSetTime] = bUIStyle;

    _SETTIMESetTime[hSetTime].DisplayTime.wStartX += _SETTIMEDlg.wStartX;
    _SETTIMESetTime[hSetTime].DisplayTime.wStartY += _SETTIMEDlg.wStartY+DIALOG_TITLE_HEIGHT;

    _SETTIME_DrawAllUI(hSetTime);
}

void _SETTIME_DrawAllUI(HSETTIME hSetTime)
{
    if (_hSETTIMEDlg[hSetTime] == DIALOG_HANDLE_INVALID)
    {
        _hSETTIMEDlg[hSetTime] = DIALOG_CreateDialog(&_SETTIMEDlg, _bSETTIMEDUIStyle[hSetTime]);
    }

    if (_hSETTIMEDlg[hSetTime] != DIALOG_HANDLE_INVALID)
    {
        _SETTIME_InitializeGDI(_bSETTIMEDUIStyle[hSetTime]);

        DIALOG_ShowDialog(_hSETTIMEDlg[hSetTime], _bSETTIMEBackgroundColor[hSetTime], FALSE);    
                
        //Show time
        _SETTIME_ShowTime(hSetTime);
        
        //Show the cursor
        _SETTIME_UpdateCursor(hSetTime, FALSE);
    }
}

void _SETTIME_InitializeGDI(BYTE bUIStyle)
{
    switch (bUIStyle)
	{
    case 1:
        GDI_ChangePALEntry(SET_TIME_DIALOG_PALETTE_ENTRY_EDIT_TEXT, SET_TIME_DIALOG_PALETTE_COLOR_EDIT_TEXT_2, FALSE);
        GDI_ChangePALEntry(SET_TIME_DIALOG_PALETTE_ENTRY_EDIT_HIGHLIGHT, SET_TIME_DIALOG_PALETTE_COLOR_EDIT_HIGHLIGHT_2, FALSE);
        break;
    case 2:
        GDI_ChangePALEntry(SET_TIME_DIALOG_PALETTE_ENTRY_EDIT_TEXT, SET_TIME_DIALOG_PALETTE_COLOR_EDIT_TEXT_3, FALSE);
        GDI_ChangePALEntry(SET_TIME_DIALOG_PALETTE_ENTRY_EDIT_HIGHLIGHT, SET_TIME_DIALOG_PALETTE_COLOR_EDIT_HIGHLIGHT_3, FALSE);
        break;
    case 3:
        GDI_ChangePALEntry(SET_TIME_DIALOG_PALETTE_ENTRY_EDIT_TEXT, SET_TIME_DIALOG_PALETTE_COLOR_EDIT_TEXT_4, FALSE);
        GDI_ChangePALEntry(SET_TIME_DIALOG_PALETTE_ENTRY_EDIT_HIGHLIGHT, SET_TIME_DIALOG_PALETTE_COLOR_EDIT_HIGHLIGHT_4, FALSE);
        break;
	case 0:
    default:               
        GDI_ChangePALEntry(SET_TIME_DIALOG_PALETTE_ENTRY_EDIT_TEXT, SET_TIME_DIALOG_PALETTE_COLOR_EDIT_TEXT_1, FALSE);
        GDI_ChangePALEntry(SET_TIME_DIALOG_PALETTE_ENTRY_EDIT_HIGHLIGHT, SET_TIME_DIALOG_PALETTE_COLOR_EDIT_HIGHLIGHT_1, FALSE);
        break;
    }

    GDI_ChangePALEntry(SET_TIME_DIALOG_PALETTE_ENTRY_EDIT_INFO, SET_TIME_DIALOG_PALETTE_COLOR_EDIT_INFO, FALSE);

    GDI_WaitPaletteComplete();
}

//***************************************************************************
//  Function    :   SETTIME_ProcessKey
//  Abstract    :   
//  Arguments   :   none.
//  Return      :   
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
void SETTIME_ProcessKey(HSETTIME hSetTime, BYTE bKey)
{
    WORD wReturn;

    if (_bSETTIMEDialogCursorPos[hSetTime] == SET_TIME_DIALOG_CURSOR_POS_BUTTON)
    {
        wReturn = DIALOG_Processkey(_hSETTIMEDlg[hSetTime], bKey);        
        if (wReturn == DIALOG_ACTION_NONE)
        {
            if ((bKey == KEY_UP) || (bKey == KEY_LEFT) || (bKey == KEY_RIGHT))
            {
                DIALOG_ClearCursor(_hSETTIMEDlg[hSetTime]);          
                _bSETTIMEDialogCursorPos[hSetTime] = SET_TIME_DIALOG_CURSOR_POS_HOUR;
                _SETTIME_UpdateCursor(hSetTime, FALSE);
            }
        }
        else if (wReturn & DIALOG_ACTION_BUTTON_PRESSED)
        {
            if (LOBYTE(wReturn) == SET_TIME_DIALOG_BUTTON_ID_OK)
            {            
                _SETTIMESetTime[hSetTime].pSetTimeDlgAction->SETTIME_OK_Func_Ptr(_SETTIMESetTime[hSetTime].DisplayTime.bHour, _SETTIMESetTime[hSetTime].DisplayTime.bMinute, _SETTIMESetTime[hSetTime].DisplayTime.bSecond);
            }
            else //Cancel
            {
                _SETTIMESetTime[hSetTime].pSetTimeDlgAction->SETTIME_CANCEL_Func_Ptr();
            }
        }        
    }
    else
    {
        wReturn = _SETTIME_EDIT_ProcessKey(hSetTime, bKey);

#ifdef NL_SOLUTION
        if (wReturn == SETTIME_EDIT_ACTION_EXCEED_ENTER)
        {
            _SETTIMESetTime[hSetTime].pSetTimeDlgAction->SETTIME_OK_Func_Ptr(_SETTIMESetTime[hSetTime].DisplayTime.bHour, _SETTIMESetTime[hSetTime].DisplayTime.bMinute, _SETTIMESetTime[hSetTime].DisplayTime.bSecond);
        }
#else
        if ((wReturn == SETTIME_EDIT_ACTION_EXCEED_LEFT) || (wReturn == SETTIME_EDIT_ACTION_EXCEED_RIGHT))
        {
            _bSETTIMEDialogCursorPos[hSetTime] = SET_TIME_DIALOG_CURSOR_POS_BUTTON;
            if (wReturn == SETTIME_EDIT_ACTION_EXCEED_LEFT)
            {
                DIALOG_SetCursor(_hSETTIMEDlg[hSetTime], SET_TIME_DIALOG_BUTTON_ID_OK);
            }
            else
            {
                DIALOG_SetCursor(_hSETTIMEDlg[hSetTime], SET_TIME_DIALOG_BUTTON_ID_CANCEL);
            }
        }
#endif //NL_SOLUTION
    }
}

BYTE _SETTIME_EDIT_ProcessKey(HSETTIME hSetTime, BYTE bKey)
{
    switch (bKey)
    {
    case KEY_UP:
        {
            //updaet the time
            switch (_bSETTIMEDialogCursorPos[hSetTime])
            {
            case SET_TIME_DIALOG_CURSOR_POS_HOUR:
                _SETTIMESetTime[hSetTime].DisplayTime.bHour++;
                if (_SETTIMESetTime[hSetTime].DisplayTime.bHour > 23)
                {
                    _SETTIMESetTime[hSetTime].DisplayTime.bHour = 0;
                }
                break;
            case SET_TIME_DIALOG_CURSOR_POS_MINUTE:
                _SETTIMESetTime[hSetTime].DisplayTime.bMinute++;
                if (_SETTIMESetTime[hSetTime].DisplayTime.bMinute > 59)
                {
                    _SETTIMESetTime[hSetTime].DisplayTime.bMinute = 0;
                }
                break;
            case SET_TIME_DIALOG_CURSOR_POS_SECOND:
                _SETTIMESetTime[hSetTime].DisplayTime.bSecond++;
                if (_SETTIMESetTime[hSetTime].DisplayTime.bSecond > 59)
                {
                    _SETTIMESetTime[hSetTime].DisplayTime.bSecond = 0;
                }

⌨️ 快捷键说明

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