📄 stpmain.c
字号:
{
if (!_fgNotify || _fgReset || (fgIsInSetupMenu() == FALSE))
{
return;
}
if (bType == ENTRY_FUN_OK) // no need redraw page
{
return;
}
#ifdef IR_SUPPORT_SHIFT_KEY
/*
if ((_bOsdState == STPSTT_PASSWORD) ||
(_bOsdState == STPSTT_CON_PSWD) ||
(_bOsdState == STPSTT_CON_PSWD_PWD) || (_bOsdState == STPSTT_CON_PSWD_PRE))
*/
if ((_bOsdState == STPSTT_DIALOG) && DLG_TYPE_DIGIT(_bDlgId))
{
// force use normal key table to input number
vSetShiftKeyMode(FALSE);
}
else
{
// force use shift key table to use arrow key
vSetShiftKeyMode(TRUE);
}
#endif
// set previous menu to invalid, then call show menu to redraw
_bPrevMenu = INVALID_MENU;
vShowMenu(_rMenuRoot.prMenu[_bMenu]);
// hilight item
// vHlItem();
// vSetHLCol(HL_1, HL1_NORMAL_COL);
#if 0 // test
// after menu redraw, do some type dependant item
if (bType == ENTRY_FUN_REDRAW_BORDER)
{
//vDrawSetupBorder(!fgIsOsdType2());
}
else if (bType == ENTRY_FUN_REDRAW_PASS)
{
// #ifndef SIMPLE_MENU
#if 1
if(!fgPassValid())
{
// invalid password, let user input new password
_bEntry = 2;
vSetupEntryShowXY(MSG_X, MSG_Y, OSD_MSG_INPUT_NEW_PASS, WB_SETUP_MSG);
}
else
#endif
{
// valid password, let user input old password
_bEntry = 1;
vSetupEntryShowXY(MSG_X, MSG_Y, OSD_MSG_INPUT_OLD_PASS, WB_SETUP_MSG);
}
}
#endif // test
}
// *********************************************************************
// Function : BYTE bAngleChange(WORD wEEPos, BYTE bValue) large
// Description : Angle mark On/Off change, show or hide angle mark
// Parameter : None
// Return : None
// *********************************************************************
BYTE bAngleChange(WORD wEEPos, BYTE bValue) large
{
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
#ifdef SETUP_NO_AGL_MARK
vSetAngleShow(TRUE); // default is show angle mark
#else
if (bEepromReadByte(ANGLE_MARK_POSITION) == EV_ON)
{
vSetAngleShow(TRUE);
}
else
{
vSetAngleShow(FALSE);
}
#endif
if (!_fgNotify)
{
return (ENTRY_FUN_OK);
}
if ((!fgIsNonPlay()) && fgIsDiscPlay(bPbcState))
{
if (fgIsAngleShow())
{
vOsdShowAngle(OSD_ANGLE_NORMAL, bSharedInfo(SI_AGL_NO), bSharedInfo(SI_AGL_NS));
}
else
{
vOsdShowAngle(OSD_ANGLE_CLEAR, 0, 0);
}
}
return (ENTRY_FUN_OK);
}
static void vSetNewMenu(BYTE bNewMenu) large
{
_bPrevItem = INVALID_ENTRY;
_bMenu = bNewMenu;
_bEntry = 1;
_bOsdState = STPSTT_ENTRY;
}
#if 0
static void vSetDefColor(void) large
{
vWaitBusy();
vBeginWriteSharedGrp(SI_OSD_CMD_PRM_GRP, OSD_CMD_SET_DEF_COLOR);
vWriteNextSharedItem(ENTRY_COL_10); //BG); //btn act
vWriteNextSharedItem(ENTRY_COL_BG); // btn deact
vWriteNextSharedItem(ENTRY_COL_GREEN); // btn hili
vWriteNextSharedItem(ENTRY_COL_BLACK); // border 1
vWriteNextSharedItem(BTN_BORDER_COLOR); // border 2
vWriteNextSharedItem(ENTRY_COL_GREEN); // msg bg act
vWriteNextSharedItem(ENTRY_COL_BG); // msg bg deact
vWriteNextSharedItem(ENTRY_COL_10); //WHITE); // msg act
vWriteNextSharedItem(ENTRY_COL_WHITE); // msg deact
vWriteNextSharedItem(ENTRY_COL_YELLOW); // msg hili
vWriteNextSharedItem(ENTRY_COL_GRAY); // msg invalid
vSendOsdCmd();
/*
vWaitBusy();
vBeginWriteSharedGrp(SI_OSD_CMD_PRM_GRP, OSD_CMD_SET_DEF_COLOR);
vWriteNextSharedItem(ENTRY_COL_BG);
vWriteNextSharedItem(ENTRY_COL_BG);
vWriteNextSharedItem(ENTRY_COL_GREEN);
vWriteNextSharedItem(ENTRY_COL_BLACK);
vWriteNextSharedItem(BTN_BORDER_COLOR);
vWriteNextSharedItem(ENTRY_COL_GREEN);
vWriteNextSharedItem(ENTRY_COL_BG);
vWriteNextSharedItem(ENTRY_COL_WHITE);
vWriteNextSharedItem(ENTRY_COL_WHITE);
vWriteNextSharedItem(ENTRY_COL_YELLOW);
vWriteNextSharedItem(ENTRY_COL_GRAY);
vSendOsdCmd();
*/
}
#endif
static void vSetWbCol(void) large
{
#ifdef SETUP_MENU_TRUECOLOR
#ifdef IC_CHECK_OSD
vSetWBTcColor(WB_SETUP_HEAD);
#else
vSetWBTcColor(WB_SETUP_HEAD);
vSetWBTcColor(WB_SETUP_ITEM);
vSetWBTcColor(WB_SETUP_MSG);
#endif /*IC_CHECK_OSD*/
#else
BYTE bTemp;
for (bTemp=0; bTemp < 16; bTemp++)
{
vSetPal(WB_SETUP_ITEM, bTemp, BLEND_2, _pbType3ItemCol[bTemp]);
vSetPal(WB_SETUP_HEAD, bTemp, BLEND_2, _pbType3HeadCol[bTemp]);
}
for (bTemp=0; bTemp<4; bTemp++)
{
vSetPal(WB_SETUP_MSG, bTemp, BLEND_2, _pbType3MsgCol[bTemp]);
}
vSetPal(WB_SETUP_ITEM, ENTRY_COL_BLACK, BLEND_3, _pbType3ItemCol[ENTRY_COL_BLACK]);
vSetPal(WB_SETUP_ITEM, ENTRY_COL_WHITE, BLEND_3, _pbType3ItemCol[ENTRY_COL_WHITE]);
vSetPal(WB_SETUP_ITEM, ENTRY_COL_BTN_BG, BLEND_3, _pbType3ItemCol[ENTRY_COL_BTN_BG]);
vSetPal(WB_SETUP_ITEM, ENTRY_COL_10, BLEND_3, _pbType3ItemCol[ENTRY_COL_10]);
#endif
}
#ifdef IC_CHECK_OSD
extern WORD xdata _wAStartX;
extern WORD xdata _wAStartY;
//extern WORD xdata _wAEndX;
//extern WORD xdata _wAEndY;
#endif
#ifdef SUPPORT_MODE_SWITCH_MENU //yan 070409
xdata BYTE _bIsSetupMenuShow = FALSE;
#endif
// *********************************************************************
// Function : void vSetupInitState(void) large
// Description : init setup menu,
// 1. disable all previous white boards
// 2. set page relative variable
// 3. create setup menu white boards
// 4. show page
// 5. enable white boards
// Parameter : None
// Return : None
// *********************************************************************
void vSetupInitState(void) large
{
BYTE bTemp;
#ifdef PLAYER_FLMENU
if (fgFlCheckStatus(FL_STATUS_IN_MENU))
{
// tmp
vOsdSetSt(OSD_ST_BURST);
vDisableWB(FSMENU_OSD_WBIDX_BASIC);
vDisableWB(FSMENU_INFO);
vOsdSetSt(OSD_ST_NML);
// wFlMnLeave();
}
#endif
#ifdef SRV_SHOW_ERROR_COUNTER
_bSrvShowErrIdx = 0;
vClearWB(WB_NORMAL_VOL);
#endif
_bRegChgIdx = 0;
_bEnVerIdx = 0;
_bVcdEnIdx = 0;
_bMinShowDat = 0;
_fgReset = FALSE;
_bMinShowData = 1;
_bMaxShowData = _rMenuRoot.bEntryNo;
_bMainMenu = 1;
_fgInSubmenu = FALSE;
_fgInDialog = FALSE;
_bRegChgIdx = 0;
_bIsSetupMenuShow = TRUE;
#ifdef PANEL_FACTORY_SETTING
_bEnPanelFactoryIdx = 0;
_fgVcomUpdate = FALSE;
#endif
// - disable all previous white board
vOsdShowWb(OSD_WB_DISABLE);
// - create setup menu white board and enable them
#ifdef SETUP_MENU_TRUECOLOR
#ifdef IC_CHECK_OSD
_wAStartX = 0;
_wAStartY = 0;
//_wAEndX = 0;
//_wAEndY = 0;
vCreateWB(WB_SETUP_HEAD, TRUE);
#else
vCreateWB(WB_SETUP_ITEM, TRUE);
vCreateWB(WB_SETUP_HEAD, TRUE);
vCreateWB(WB_SETUP_MSG, TRUE);
#endif /*IC_CHECK_OSD*/
#else
vCreateWB(WB_SETUP_ITEM, FALSE);
vCreateWB(WB_SETUP_HEAD, FALSE);
vCreateWB(WB_SETUP_MSG, FALSE);
#endif
vOsdSetSt(OSD_ST_BATCH);
vSetWbCol();
// vClearWB(WB_SETUP_MSG); //[runma] add line.
//1.1 hide HL, disable change color
vSetTransDis(WB_SETUP_ITEM);
// vSetTransDis(WB_SETUP_MSG);
//2. set page relative variable
_bPrevMenu = INVALID_MENU;
//#ifdef MENU_ITEM_IN_SAME_AREA
// vSetNewMenu(MAIN_PAGE);//r
vSetNewMenu(GENERAL_PAGE);//r
_bOsdState = STPSTT_MAINMENU; //r
//#endif
//vSetSetWbCol(EV_TYPE3);// [runma] add line
//vSetDefColor();
_wMenuInvalid = 0xFFFF;
_bMenuCur = 1; //r not used.
vShowMenuRoot(_rMenuRoot.prMenu[MAIN_PAGE]);
vDrawMenuBtn(_rMenuRoot.prMenu[MAIN_PAGE], 1, TRUE);
// 4. show page
#ifdef SETUP_ENABLE_TEST_TONE
_fgTestTone = (bEepromReadByte(TEST_TONE_POSITION)==EV_ON)?TRUE:FALSE;
#endif
vShowMenu(_rMenuRoot.prMenu[_bMenu]); //r
//r vClearMsgRng(); //r
vShowSetupMsg(_rMenuRoot.prMenu[MAIN_PAGE]->prEntry[_bMainMenu-1]->wMsgMsg); //r
// vHlItem();
vOsdSetSt(OSD_ST_NML);
if (fgFlCheckStatus(FL_STATUS_IN_MENU))
{
vPlayerShowLogo(DVD_STOP_LOGO, DVD_LOGO_COLOR);
}
#ifdef IC_CHECK_OSD
vEnableWB(WB_SETUP_HEAD);
#else
vOsdSetSt(OSD_ST_BURST);
vEnableWB(WB_SETUP_MSG);
vEnableWB(WB_SETUP_HEAD);
vEnableWB(WB_SETUP_ITEM);
vOsdSetSt(OSD_ST_NML);
#endif
//dummy call
vSetupDummy();
#if 1 //peter
bTemp = bSharedInfo(SI_LUMINANCE);
if ((bTemp == SV_LUMINANCE_DELAY_0) || (bTemp == SV_LUMINANCE_DELAY_1))
{
if (bEepromReadByte(LUMINANCE_POS) != bTemp)
{
fgEepromWriteByte(LUMINANCE_POS, bTemp);
}
}
else
{
fgEepromWriteByte(LUMINANCE_POS, SV_LUMINANCE_DELAY_1);
}
#endif
// vSetTransEn(WB_SETUP_ITEM, 0);
}
// *********************************************************************
// Function : void vCalMaxMinShow(void) large
// Description : Calculate the min/max item could be show on the white board,
// Draw up/down mark if overall items larger than show
// Parameter : None
// Return : None
// *********************************************************************
BYTE bCalMaxMinShow(BYTE bPageType, BYTE bPageT, BYTE bPageM) large
{
BYTE bStart = 0;
BYTE bTotal;
if (bPageT > bPageM)
{
bTotal = bPageM;
if ((_bPrevItem != 0xFF) && (_bPrevItem > _bEntry))
{
bStart = _bEntry - 1;
}
else if (_bEntry > bTotal)
{
bStart = _bEntry - bTotal ;
}
if ((bStart + bPageM) > bPageT)
{
bStart = bPageT - bPageM ;
}
_bMinShowData = bStart + 1;
_bMaxShowData = bStart + bTotal;
if (_bMaxShowData > bPageT)
{
_bMaxShowData = bPageT;
}
/*
if (_bMinShowData != 1)
{
vSetupEntryShowXY((bPageType == PAGE_TOP) ? MSG_X_IN_CENTER: 160,
4, OSD_MSG_MARK_UP, WB_SETUP_ITEM);
}
if (_bMaxShowData != bPageT)
{
vSetupEntryShowXY((bPageType == PAGE_TOP) ? MSG_X_IN_CENTER: 160,
290, OSD_MSG_MARK_DOWN, WB_SETUP_ITEM);
}
*/
}
else
{
bTotal = bPageT;
_bMinShowData = 1;
_bMaxShowData = bTotal;
}
return (bStart);
}
static BOOL fgCalEntryShowRange(BYTE bTotalEntry, BYTE bTotalLine) large
{
BYTE bStart = 0;
BYTE bTotal;
if ((_bEntry >= _bMinShowData) && (_bEntry <= _bMaxShowData))
{
return FALSE;
}
if (_bEntry < _bMinShowData)
{
_bMinShowData --;
}
else if (_bEntry > _bMaxShowData)
{
_bMinShowData ++;
}
_bMaxShowData = _bMinShowData + bTotalLine;
if (_bMaxShowData > bTotalEntry)
{
_bMaxShowData = bTotalEntry;
_bMinShowData = bTotalEntry - bTotalLine;
}
return TRUE;
}
static void vShowMenuRoot(sMenu *prMenu) large
{
BYTE i;
WORD wGap;
#ifdef MEUN_USE_BITMAP
wGap = (SETUP_HEAD_W - MENU_BMP_W * prMenu->bTotalEntry) / (prMenu->bTotalEntry + 1);
_wStartY = (SETUP_HEAD_H - MENU_BMP_H) / 2;
for (i=1; i<=prMenu->bTotalEntry; i++)
{
if (prMenu->prEntry[i-1]->wType == ENTRY_TYPE_NULL)
{
return;
}
_wStartX = wGap * i + MENU_BMP_W * (i-1);
_wEndX = _wStartX + MENU_BMP_W;
_wEndY = _wStartY + MENU_BMP_H;
if (prMenu->prEntry[i-1]->wBmpIdx != 0xFFFF)
{
#ifndef IC_CHECK_OSD
vPasteBmp(WB_SETUP_HEAD, prMenu->prEntry[i-1]->wBmpIdx);
#endif
//vChgColRep(WB_SETUP_HEAD, 1,0);
#ifdef STPMN_HEAD_GRAY
vChgColRep(WB_SETUP_HEAD, 4,13);
vChgColRep(WB_SETUP_HEAD, 5,11);
vChgColRep(WB_SETUP_HEAD, 6,10);
vChgColRep(WB_SETUP_HEAD, 8,11);
vChgColRep(WB_SETUP_HEAD, 12,13);
vChgColRep(WB_SETUP_HEAD, 15,13);
#else
#if (SETUP_HEAD_BITMAP == BITMAP_JYC2)
vChgColRep(WB_SETUP_HEAD, 1,11);
vChgColRep(WB_SETUP_HEAD, 14,11); //r add line for sinco. Joyce RD1...
#else
#ifndef IC_CHECK_OSD
vChgColRep(WB_SETUP_HEAD, 1,0);
#endif
#endif
#endif
}
}
#else
for (i=1; i<=prMenu->bTotalEntry; i++)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -