📄 calenui.c
字号:
_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 + -