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

📄 calenui.c

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

    _wCALENDARUpdateTimePosX = wYearX+GDI_GetStringWidth(&__wOSDUTLStringBuf[0]);
    _wCALENDARUpdateTimePosY = wYearY;
}

void calendar_draw_item_HighLight(BYTE bDate, BYTE bFocus)
{
    WORD wContentX, wContentY, wContentW, wContentH;
    BYTE bIdx;
    BYTE bHighLightColor;
    
    _bCalX = Calendar_SolarCalendar(_wCurrentYear,_bCurrentMonth,bDate);
    for(bIdx=1;bIdx<8;bIdx++)//check the 1st satday
    {
        if(Calendar_SolarCalendar(_wCurrentYear,_bCurrentMonth,bIdx)==6)
            break;
    }
    
    //DVB_Msg(MSG_4_AP, "The first satday is %d\n",(int)idx, __FFLL__);
    if(bDate<=bIdx)
        _bCalY=0;
    else
    {
        if((bDate-bIdx)%7==0)
            _bCalY=(bDate-bIdx)/7;
        else
            _bCalY=(bDate-bIdx)/7+1;
    }
    
    wContentX = _wStartX + CALENDER_ITEM_X_OFFSET + _bCalX*CALENDER_ITEM_WIDTH;
    wContentY = _wStartY + CALENDER_HEAD_HEIGHT + CALENDER_ITEM_BORDER + _bCalY*CALENDER_ITEM_HEIGHT;
    wContentW = CALENDER_ITEM_WIDTH;
    wContentH = CALENDER_ITEM_HEIGHT;
    
    if(bFocus)
        bHighLightColor = CALENDAR_MENU_ENTRY_TITLE_BODY_HIGHLIGHT_COLOR;
    else
        bHighLightColor = _bBodyBackColor;
    {
        Calendar_DrawRect( wContentX, wContentY, wContentW, 2, 
            bHighLightColor);
        Calendar_DrawRect( wContentX, wContentY, 2, wContentH, 
            bHighLightColor);
        Calendar_DrawRect( wContentX + wContentW-2, wContentY, 2, wContentH, 
            bHighLightColor);
        Calendar_DrawRect( wContentX, wContentY + wContentH-2, wContentW, 2, 
            bHighLightColor);
    }
}


void calendar_draw_item(BYTE bDate, BYTE bFocus)
{
    WORD wContentX, wContentY, wContentW, wContentH;
    WORD wNumberX, wNumberY;
    BYTE bIdx;
    PARM_DRAW_STRING strItem;
    
    _bCalX = Calendar_SolarCalendar(_wCurrentYear,_bCurrentMonth,bDate);
    for(bIdx=1;bIdx<8;bIdx++)//check the 1st satday
    {
        if(Calendar_SolarCalendar(_wCurrentYear,_bCurrentMonth,bIdx)==6)
            break;
    }
    
    if(bDate<=bIdx)
        _bCalY=0;
    else
    {
        if((bDate-bIdx)%7==0)
            _bCalY=(bDate-bIdx)/7;
        else
            _bCalY=(bDate-bIdx)/7+1;
    }
    
    wContentX = _wStartX + CALENDER_ITEM_X_OFFSET + _bCalX*CALENDER_ITEM_WIDTH;
    wContentY = _wStartY + CALENDER_HEAD_HEIGHT + CALENDER_ITEM_BORDER + _bCalY*CALENDER_ITEM_HEIGHT;
    wContentW = CALENDER_ITEM_WIDTH;
    wContentH = CALENDER_ITEM_HEIGHT;
    
    if(bFocus)
    {
        Calendar_DrawRect( wContentX, wContentY, wContentW, 2, 
            CALENDAR_MENU_ENTRY_TITLE_BODY_HIGHLIGHT_COLOR);
        Calendar_DrawRect( wContentX, wContentY, 2, wContentH, 
            CALENDAR_MENU_ENTRY_TITLE_BODY_HIGHLIGHT_COLOR);
        Calendar_DrawRect( wContentX + wContentW-2, wContentY, 2, wContentH, 
            CALENDAR_MENU_ENTRY_TITLE_BODY_HIGHLIGHT_COLOR);
        Calendar_DrawRect( wContentX, wContentY + wContentH-2, wContentW, 2, 
            CALENDAR_MENU_ENTRY_TITLE_BODY_HIGHLIGHT_COLOR);
    }
    strItem.bBackground = _bBodyBackColor;
    strItem.bColorKey = 0;
    strItem.bTextColor = _bBodyFront1Color;
    strItem.bShadow1 = PAL_ENTRY_COLOR_TRANSPARENT;
    strItem.bShadow2 = PAL_ENTRY_COLOR_TRANSPARENT;    
    
    if(_bCalX==0)
    {
        //strItem.bTextColor = CALENDAR_MENU_ENTRY_COLOR_HIGHLIGHT;
        strItem.bTextColor = CALENDAR_MENU_ENTRY_SUNDAY_COLOR;
    }
    else if (_bCalX == 6)
    {
        strItem.bTextColor = CALENDAR_MENU_ENTRY_SATURDAY_COLOR;
    }
    else
    {
        strItem.bTextColor = _bBodyFront1Color; //mon ~ Fri normal
    }   
    
    if(bDate<10)
        wNumberX = wContentX + (wContentW-/*AP_OSDGetNumberFontWidth()*/8)/2;
    else
        wNumberX = wContentX + (wContentW-2*8)/2;
    wNumberY = wContentY + 6;
    Calendar_OutputNumber(wNumberX, wNumberY, (WORD) bDate,&strItem);    
}

void calendar_draw_background(void)
{
    BYTE bIdx;
    WORD wWeeklyX, wWeeklyY;
    PARM_DRAW_STRING strText;    
    
    Calendar_ShowBoxWithArc( _wStartX-CALENDER_BACKGROUND_BORDER, _wStartY, _wTotalW+2*CALENDER_BACKGROUND_BORDER,
        _wTotalH+CALENDER_BACKGROUND_BORDER, _bHeadBackColor);
    
    Calendar_DrawRect( _wStartX, _wStartY + CALENDER_HEAD_HEIGHT_OF_YEAR, _wTotalW, CALENDER_HEAD_HEIGHT_OF_WEEKLY, 
        _bHeadBorderColor);
    
    
    for(bIdx=0; bIdx<7; bIdx++)
    {
        //avoid message length larger than CALENDER_ITEM_WIDTH
        wWeeklyX = GDI_GetStringWidth(aWeeklyDay[bIdx]);
        if(CALENDER_ITEM_WIDTH >= wWeeklyX)
            wWeeklyX = _wStartX + CALENDER_ITEM_X_OFFSET + (WORD)(bIdx)*CALENDER_ITEM_WIDTH + (CALENDER_ITEM_WIDTH-wWeeklyX)/2;
        else
            wWeeklyX = _wStartX + CALENDER_ITEM_X_OFFSET + (WORD)(bIdx)*CALENDER_ITEM_WIDTH;
        
        wWeeklyY = _wStartY + CALENDER_HEAD_HEIGHT - GDI_GetStringHeight(aWeeklyDay[bIdx]) - 2;
        
        strText.bBackground = _bHeadBorderColor;
        strText.bColorKey = 0;
        if (bIdx == 0)
        {
            strText.bTextColor = CALENDAR_MENU_ENTRY_SUNDAY_COLOR;
        }
        else if (bIdx == 6)
        {
            strText.bTextColor = CALENDAR_MENU_ENTRY_SATURDAY_COLOR;
        }
        else
        {
            strText.bTextColor = _bHeadFront1Color;
        }
        strText.bShadow1 = PAL_ENTRY_COLOR_TRANSPARENT;
        strText.bShadow2 = PAL_ENTRY_COLOR_TRANSPARENT;
        Calendar_DrawString(&strText,wWeeklyX, wWeeklyY,aWeeklyDay[bIdx]);
    }
    
}


void calendar_draw_all(void)
{
    BYTE bIdx;
    
    // clean working area
    Calendar_DrawRect(_wStartX, _wStartY+CALENDER_HEAD_HEIGHT, _wTotalW, CALENDER_BODY_HEIGHT, _bBodyBackColor);
    if(__bCalSelectMenuID==YEAR_MONTH_CHANGE)
	{
        calendar_draw_title(TRUE);
    }
    else
	{
        calendar_draw_title(FALSE);
    }
    
    for(bIdx=1; bIdx<=_bLastDay; bIdx++)
    {
        if ((bIdx==__bCalselectdata) && ( __bCalSelectMenuID==DATA_CHANGE))
        {
            calendar_draw_item(bIdx, TRUE);
        }
        else
        {
            calendar_draw_item(bIdx, FALSE);
        }
    }
}
//get data from clock,now use constant
BYTE  CALENDA_Get_YYMMDD(void)
{
    RTC_TM _Calendar;

    RTC_GetTime(&_Calendar);

#ifndef CT950_STYLE
    Calenda_Info.u16CalenderYear  = 2007;
    Calenda_Info.u8CalenderMonth = 1;
    Calenda_Info.u8CalenderDate = 1;
#else
    if ((_Calendar.bMon > 12) || (_Calendar.bMon < 1))
    {
        Calenda_Info.u16CalenderYear  = 2007;
        Calenda_Info.u8CalenderMonth = 1;
        Calenda_Info.u8CalenderDate = 1;
    }
    else
    {
        Calenda_Info.u16CalenderYear  = _Calendar.bYear+2000;
        Calenda_Info.u8CalenderMonth = _Calendar.bMon;
        Calenda_Info.u8CalenderDate = _Calendar.bDate;
    }
#endif //CT950_STYLE

   return TRUE;
}
//save current year/month/data to EEprom
void  CALENDA_Save_YYMMDD(void)
{

       
}

void CALENDAR_Entry(BYTE bMode)
{
    _bCALENDARMode = bMode;

    if(CALENDA_Get_YYMMDD()==FALSE)
    {	
        //set default value
        _wCurrentYear = CAL_DEFAULT_YEAR;
        _bCurrentMonth =CAL_DEFAULT_MONTH;
        _bCurrentDate = CAL_DEFAULT_DATA;
        
    }
    else
    {	       //set get data from clock
        _wCurrentYear = Calenda_Info.u16CalenderYear;
        _bCurrentMonth =Calenda_Info.u8CalenderMonth;
        _bCurrentDate = Calenda_Info.u8CalenderDate;
    }

    _wFocusYear = _wCurrentYear;
    _bFocusMonth = _bCurrentMonth;
    
    _bLastDay = Calendar_GetDaysofMonth(_wCurrentYear, _bCurrentMonth);

    //Config the OSD to 8 bit mode.
    _Calendar_ConfigOSDRegion();

    switch (bMode)
    {
    case CALENDAR_MODE_SETTING:
        _CALENDAR_ShowCalendar(FALSE);
        break;
    case CALENDAR_MODE_DISPLAY_CLOCK_AND_TIME:
        _CALENDAR_ShowCalendar(TRUE);
        break;
    case CALENDAR_MODE_MENU:
#ifdef SUPPORT_SET_DATE_BY_MENU
        _hCALENDARDateMenu = MENU_HANDLE_INVALID;
        _CALENDAR_ShowMenu();
#endif //SUPPORT_SET_DATE_BY_MENU
        break;
    case CALENDAR_MODE_DISPLAY_PERPETUAL_CALENDAR:
        _CALENDAR_ShowCalendar(FALSE);
        break;
    case CALENDAR_MODE_SET_DATE:
        break;
    default:
        break;
    }           
}

void _CALENDAR_ShowCalendar(BYTE bShowTime)
{
    Calendar_InitialPalEntry();   
    
    Calendar_GetVisibleScreen(&stFullScreen);
    _wTotalH = 6*CALENDER_ITEM_HEIGHT+CALENDER_HEAD_HEIGHT_OF_YEAR+CALENDER_HEAD_HEIGHT_OF_WEEKLY;//stStPos->u16Height;
    _wTotalW =2*CALENDER_X_OFFSET+7*CALENDER_ITEM_WIDTH;// stStPos->u16Width-2*CALENDER_X_OFFSET;
    _wStartX = stFullScreen.sHStart + (stFullScreen.wHWidth-_wTotalW)/2;
    _wStartY = stFullScreen.sVStart+50; //+ (stFullScreen.wVWidth-_wTotalH)/2;
    
    _bBodyBackColor = CALENDAR_MENU_ENTRY_TETRIS_BODY_COLOR;
    _bBodyFront1Color = CALENDAR_MENU_ENTRY_COLOR_DARK;
    _bBodyBorderColor = CALENDAR_MENU_ENTRY_TITLE_BODY_HIGHLIGHT_COLOR;
    _bHeadBackColor = CALENDAR_MENU_ENTRY_LARGEFORM_BG_COLOR;
    _bHeadFront1Color = CALENDAR_MENU_ENTRY_COLOR_HIGHLIGHT;
    _bHeadFront2Color = CALENDAR_MENU_ENTRY_COLOR_DARK;
    _bHeadBorderColor = CALENDAR_MENU_ENTRY_TITLE_BG_COLOR;
    _bTailBackColor = CALENDAR_MENU_ENTRY_TITLE_BG_COLOR;
    _bTailFront1Color = CALENDAR_MENU_ENTRY_COLOR_HIGHLIGHT;        
        
    calendar_draw_background();

    //fhfeng 1012
    __bCalSelectMenuID=DATA_CHANGE;
    __bCalselectdata=_bCurrentDate; 
    calendar_draw_all();

    if (bShowTime)
    {
        _dwCALENDARTriggerTime = OS_GetSysTimer();
        RTC_GetTime(&_CALENDARCurrnetRTCTime);

        _CALENDAR_ShowTime(TRUE);
    }
}

void CALENDAR_Recover(void)
{
    //Config the OSD to 8 bit mode.
    _Calendar_ConfigOSDRegion();

    switch (_bCALENDARMode)
    {
    case CALENDAR_MODE_SETTING:
        _CALENDAR_ShowCalendar(FALSE);
        break;
    case CALENDAR_MODE_DISPLAY_CLOCK_AND_TIME:
        _CALENDAR_ShowCalendar(TRUE);
        break;
    case CALENDAR_MODE_MENU:
#ifdef SUPPORT_SET_DATE_BY_MENU
        _CALENDAR_ShowMenu();
#endif //SUPPORT_SET_DATE_BY_MENU
        break;
    case CALENDAR_MODE_DISPLAY_PERPETUAL_CALENDAR:
        _CALENDAR_ShowCalendar(FALSE);
        break;
    case CALENDAR_MODE_SET_DATE:
#ifdef SUPPORT_SET_DATE_BY_MENU
        _CALENDAR_ShowMenu();
        SETDATE_Recover(_hCALENDARSetDate);
#endif //SUPPORT_SET_DATE_BY_MENU
        break;
    default:
        break;
    }           
}

BYTE CALENDAR_ProcessKey(void)
{
#ifdef SUPPORT_SET_DATE_BY_MENU
    DWORD dwMenuReturn;
#endif //SUPPORT_SET_DATE_BY_MENU

    if (_bCALENDARMode == CALENDAR_MODE_DISPLAY_CLOCK_AND_TIME)
    {
        if ((__bKey == KEY_FUNCTION) || (__bKey == KEY_EXIT))
        {
            CALENDAR_Exit(TRUE);
            __bCLOCKShowClock = FALSE;
            POWERONMENU_BackToMainMenu();
        }
    }
#ifdef SUPPORT_SET_DATE_BY_MENU
    else if (_bCALENDARMode == CALENDAR_MODE_MENU)
    {
        if ((__bKey == KEY_FUNCTION) || (__bKey == KEY_EXIT))
        {
            CALENDAR_Exit(TRUE);
            POWERONMENU_BackToMainMenu();            
        }

        dwMenuReturn = MENU_ProcessKey(_hCALENDARDateMenu, __bKey);
        
        if (HIWORD(dwMenuReturn) == MENU_ACTION_EXIT)
        {
            CALENDAR_Exit(FALSE);
            POWERONMENU_BackToMainMenu();                        
        }
        else if (HIWORD(dwMenuReturn) == MENU_ACTION_PROCESS_MENU_ITEM)
        {
            switch (LOWORD(dwMenuReturn))
            {
            case CALENDAR_MAIN_DISPLAY:
                CALENDAR_Entry(CALENDAR_MODE_DISPLAY_PERPETUAL_CALENDAR);
                break;
            case CALENDAR_MAIN_SET_DATE:
                _bCALENDARMode = CALENDAR_MODE_SET_DATE;
                _CALENDAR_SET_DATE.wYear = _wCurrentYear;

⌨️ 快捷键说明

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