📄 menu_new_ntsc.c
字号:
DrawOsdItemSelect(&CURRENT_MENU, g_ucMenuItemIndex);
}
}
msOsdShow();
}
msWriteByte( BK0_00, ucBank );
}
///////////////////////////////////////////////////////////////////////////////
void SetOsdMainMenuSpace(void)
{
WORD wXs, wYs;
BYTE ucWidth, ucHeight;
ucWidth = ((FONT_SIZE&0xF0)>>4)+12;
ucHeight = ((FONT_SIZE&0x0F)+9)*2;
// X position
wXs = (WORD)g_ucOsdWindowWidth * OSD_DOUBLE_SIZE * ucWidth;
if (PANEL_WIDTH > wXs) // check OSD width
wXs = (PANEL_WIDTH - wXs) / 8;
else
wXs = 0;
// Y position
wYs = (WORD)g_ucOsdWindowHeight * OSD_DOUBLE_SIZE * ucHeight;
if (PANEL_HEIGHT > wYs) // check OSD height
wYs = (PANEL_HEIGHT - wYs) / 8;
else
wYs = 0;
msOsdSetWindowSpace(g_ucOsdWindowWidth/2,g_ucOsdWindowHeight/2,wXs,wYs);
}
//============================================================================
BYTE CurrentMenuGetPrevItem()
{
signed char sc;
if(g_ucMenuItemIndex)
{
for(sc=g_ucMenuItemIndex-1; sc>=0; sc--)
if( IsItemSelectable(CURRENT_MENU_ITEMS[sc].Flags) )
return sc;
}
for(sc=CURRENT_MENU_ITEM_COUNT-1; sc>=0; sc--)
if( IsItemSelectable(CURRENT_MENU_ITEMS[sc].Flags) )
return sc;
return g_ucMenuItemIndex;
}
BYTE CurrentMenuGetNextItem()
{
BYTE uc;
if(g_ucMenuItemIndex < CURRENT_MENU_ITEM_COUNT - 1) // current item is not last item.
{
for(uc=g_ucMenuItemIndex+1; uc<CURRENT_MENU_ITEM_COUNT; uc++)
if( IsItemSelectable(CURRENT_MENU_ITEMS[uc].Flags) )
return uc;
}
for(uc=0; uc<g_ucMenuItemIndex; uc++)
if( IsItemSelectable(CURRENT_MENU_ITEMS[uc].Flags) )
return uc;
return g_ucMenuItemIndex;
}
//============================================================================
BYTE GetMenuItemIndex( BYTE ucTargetParentMenuIdx, BYTE ucSonMenuIdx )
{
BYTE ucFatherMenuIdx;
do
{
ucFatherMenuIdx = tblMenus[ucSonMenuIdx].PrevMenuPage;
if( ucTargetParentMenuIdx != ucFatherMenuIdx )
{
ucSonMenuIdx = ucFatherMenuIdx;
}
else
{
MenuItemType* pMenuItem;
BYTE ucMenuItemNum, ucItemIdx;
pMenuItem = tblMenus[ucTargetParentMenuIdx].MenuItems; // intialize menu pointer
ucMenuItemNum = tblMenus[ucTargetParentMenuIdx].MenuItemCount; // intialize menu items number
for( ucItemIdx = 0; ucItemIdx < ucMenuItemNum; ++ ucItemIdx )
{
if( pMenuItem->NextMenuPage == ucSonMenuIdx )
{
return ucItemIdx;
}
++ pMenuItem;
}
return 0;
}
} while( MENU_ROOT != ucFatherMenuIdx );
return 0;
}
//============================================================================
// <Function> ConvertInputSourceIndexToMenuItemIndex
//
// <Description> convert Input source Enum to proper Menu item index
//============================================================================
BYTE ConvertInputSourceIndexToMenuItemIndex(void)
{
return GetInputSrcType();
}
//============================================================================
// <Function> ConvertMenuItemIndexToInputSouceIndex
//
// <Description> convert source menu selected item index to input source enum
//============================================================================
BYTE ConvertMenuItemIndexToInputSouceIndex(BYTE ucItemIndex)
{
return ucItemIndex;
}
//============================================================================
BOOL ExecuteKeyEvent(MenuItemActionType menuAction)
{
BOOL bProcessEvent = TRUE;
g_ucMenuAction = menuAction;
if((g_ucFactoryFlag&0x80))
{
g_ucOsdTimeCounter=0;
}
else
{
g_ucOsdTimeCounter = g_SysSetting.OSDTime; // Reset OSD timeout timer.
}
if (menuAction < MIA_KEY0 || menuAction > MIA_KEY100)
{
g_ucInputNum = 0;
g_ucInputNumCounter = 0;
g_bInputNumType = 0;
}
if (menuAction < MIA_FAC0 || menuAction > MIA_FAC9)
{
g_uwFacPassWord = 0;
}
#if AUTO_SLEEP
if (g_ucAutoSleepCounter != 0)
{
g_ucAutoSleepCounter = AUTO_TURN_OFF_COUNTER;
}
#endif
#if ENABLE_POWER_SAVING
if (g_ucPowerDownCounter != 0)
{
g_ucPowerDownCounter = POWER_SAVING_COUNTER;
}
#endif
while(bProcessEvent)
{
bProcessEvent = FALSE;
//printf("\r\nPageT=%x",g_ucMenuPageIndex);
//printf("\r\nItemT=%x",g_ucMenuItemIndex);
//printf("\r\nAction=%x", menuAction);
switch(menuAction)
{
case MIA_KEY0:
case MIA_KEY1:
case MIA_KEY2:
case MIA_KEY3:
case MIA_KEY4:
case MIA_KEY5:
case MIA_KEY6:
case MIA_KEY7:
case MIA_KEY8:
case MIA_KEY9:
if( !IsTVInUse() )
{
break;
}
if (g_ucMenuPageIndex != MENU_INPUT_MESSAGE)
{
g_ucInputNum = 0;
g_bInputNumType = 0;
g_ucInputNumCounter = 0;
}
if (!g_bInputNumType)
{
g_ucInputNum += (menuAction - MIA_KEY0);
g_bInputNumType = 1;
g_ucInputNumCounter = 3;
g_ucMenuPageIndex = MENU_INPUT_MESSAGE;
g_ucMenuItemIndex = 0;
menuAction=MIA_REDRAWMENU;
bProcessEvent=TRUE;
}
else
{
BYTE temp;
temp = g_ucInputNum - g_ucInputNum%100;
g_ucInputNum %= 100;
g_ucInputNum = (temp+g_ucInputNum*10+(menuAction-MIA_KEY0));
g_bInputNumType = 0;
g_ucInputNumCounter = 0;
g_ucInputNum %= 200;
TV_SelectChannel(g_ucInputNum);
g_ucInputNum = 0;
}
break;
case MIA_KEY100:
if( !IsTVInUse() )
{
break;
}
g_ucInputNum = 100;
g_bInputNumType = 0;
g_ucInputNumCounter = 3;
g_ucMenuPageIndex = MENU_INPUT_MESSAGE;
g_ucMenuItemIndex = 0;
menuAction=MIA_REDRAWMENU;
bProcessEvent=TRUE;
break;
case MIA_FAC0:
case MIA_FAC1:
case MIA_FAC2:
case MIA_FAC3:
case MIA_FAC4:
case MIA_FAC5:
case MIA_FAC6:
case MIA_FAC7:
case MIA_FAC8:
case MIA_FAC9:
if( g_ucVChipPWStatus & VCHIP_PASSWORD_FORCE ) // When input password menu
{
if (irCalPassword(menuAction - MIA_FAC0))
{
menuAction=MIA_REDRAWMENU;
bProcessEvent=TRUE;
}
}
else
{
if ((menuAction - MIA_FAC0) != (g_uwFacPassWord&0x0f))
{
g_uwFacPassWord = ((g_uwFacPassWord << 4) +(menuAction - MIA_FAC0));
}
if (g_uwFacPassWord == 0x9527)
{
menuAction=MIA_ENTERFACTORY;
bProcessEvent=TRUE;
}
}
break;
case MIA_INCVALUE:
case MIA_DECVALUE:
if(CURRENT_MENU_ITEM_FUNC.AdjustFunction)
{
if(CURRENT_MENU_ITEM_FUNC.AdjustFunction(menuAction))
{
DrawOsdSubMenuGroup(g_ucMenuPageIndex, g_ucMenuItemIndex);
}
}
if ((g_ucMenuPageIndex == MENU_OSD) && (g_ucMenuItemIndex == 1))
{
msOsdHide();
msClearFbBlock(FONT_ASCII_SPACE, WRITECODEBASE+MAIN_MENU_H_SIZE*SUB_TITLE_Y+SUB_TITLE_TX, 20, 2); // Clear code
msClearFbBlock(CT_SUB_MENU_TITLE_TXT, WRITEATTRBASE+MAIN_MENU_H_SIZE*SUB_TITLE_Y+SUB_TITLE_TX, 20, 2); // Clear attribute
msClearFbBlock(CP_BLACKCOLOR, WRITECODEBASE+MAIN_MENU_H_SIZE*SUB_AREA_Y+SUB_AREA_X, SUB_AREA_WIDTH, SUB_AREA_HEIGHT); // Clear code
msClearFbBlock(CP_BLEND, WRITEATTRBASE+MAIN_MENU_H_SIZE*SUB_AREA_Y+SUB_AREA_X, SUB_AREA_WIDTH, SUB_AREA_HEIGHT); // Clear attribute
msDynamicLoadLanguage();
g_ucMenuPageIndex = MENU_MAIN;
g_ucMenuItemIndex = 5;
DrawOsdMenuItem(g_ucMenuPageIndex, g_ucMenuItemIndex);
g_ucMenuPageIndex = MENU_OSD;
g_ucMenuItemIndex = 1;
DrawOsdMenuPage(g_ucMenuPageIndex);
msOsdShow();
}
if (
(g_ucMenuPageIndex == MENU_PICTURE && g_ucMenuItemIndex == 7)
|| (g_ucMenuPageIndex == MENU_SOUND && g_ucMenuItemIndex == 4)
|| (g_ucMenuPageIndex == MENU_PC_COLORMODE && g_ucMenuItemIndex == 0)
)
{
DrawOsdMenuPage(g_ucMenuPageIndex);
}
break;
case MIA_NEXTITEM:
case MIA_PREVITEM:
g_ucPrevMenuItemIndex = g_ucMenuItemIndex;
if(menuAction == MIA_NEXTITEM)
{
g_ucMenuItemIndex = CurrentMenuGetNextItem();
}
else
{
g_ucMenuItemIndex = CurrentMenuGetPrevItem();
}
if(g_ucMenuPageIndex == MENU_MAIN)
{
msOsdDisableSubWinAll();
msClearFbBlock(CP_BLACKCOLOR, WRITECODEBASE+MAIN_MENU_H_SIZE*SUB_AREA_Y+SUB_AREA_X, SUB_AREA_WIDTH, SUB_AREA_HEIGHT); // Clear code
msClearFbBlock(CP_BLEND, WRITEATTRBASE+MAIN_MENU_H_SIZE*SUB_AREA_Y+SUB_AREA_X, SUB_AREA_WIDTH, SUB_AREA_HEIGHT); // Clear attribute
msDynamicLoadLanguage();
DrawOsdMenuItemText(g_ucMenuPageIndex, g_ucPrevMenuItemIndex);
DrawOsdMenuItem(g_ucMenuPageIndex, g_ucMenuItemIndex);
DrawOsdMenuPage(MENU_MAIN + g_ucMenuItemIndex+1);
}
else
{
DrawOsdItemSelect(&CURRENT_MENU, g_ucMenuItemIndex);
}
break;
case MIA_GOTONEXT:
case MIA_GOTOPREV:
if( MIA_GOTONEXT == menuAction )
{
// Before change menu, execute function
if( CURRENT_MENU_ITEM_FUNC.ExecFunction )
{
if( FALSE == CURRENT_MENU_ITEM_FUNC.ExecFunction() )
{
break;
}
}
msOsdDisableSubWinAll();
g_ucPrevMenuPageIndex = g_ucMenuPageIndex;
g_ucMenuPageIndex = CURRENT_MENU_ITEM.NextMenuPage;
g_ucMenuItemIndex = 0;
{ // Find the first selectable item:
BYTE i;
for( i = 0; i < CURRENT_MENU_ITEM_COUNT; ++ i )
{
if( IsItemSelectable( CURRENT_MENU_ITEMS[i].Flags ) )
{
g_ucMenuItemIndex = i;
break;
}
}
}
}
else // MIA_GOTOPREV
{
usrSaveMenu(USER_SAVE_OSD_CURRENT);
msOsdDisableSubWinAll();
g_ucPrevMenuPageIndex = g_ucMenuPageIndex;
g_ucMenuPageIndex = CURRENT_MENU.PrevMenuPage;
#if( ENABLE_CC_VCHIP )
if (g_ucPrevMenuPageIndex == MENU_PARENT_CTL)
{
g_ucPrevMenuPageIndex = MENU_PARENTCTLPASSWORD;
g_ucOsdWindowWidth = 0; //Redraw menupage
g_ucOsdWindowHeight = 0;
}
#endif
g_ucMenuItemIndex = GetMenuItemIndex( g_ucMenuPageIndex, g_ucPrevMenuPageIndex );
}
case MIA_REDRAWMENU:
DrawOsdMenu();
if(CURRENT_MENU.ExecFunction)
{
CURRENT_MENU.ExecFunction();
}
if(!(CURRENT_MENU.Flags & MP_STAY))
{
bProcessEvent = TRUE;
menuAction = MIA_GOTOPREV;
}
break;
case MIA_EXECUTE:
if(CURRENT_MENU_ITEM_FUNC.ExecFunction)
{
CURRENT_MENU_ITEM_FUNC.ExecFunction();
DrawOsdSubMenuGroup(g_ucMenuPageIndex, g_ucMenuItemIndex);
}
break;
case MIA_ENTERFACTORY:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -