📄 stpmain.c
字号:
#ifdef HILI_USE_OSD
BYTE i;
#endif
if (_bOsdState == STPSTT_DIALOG)
{
vSetItemPos(_bEntry, prMenu->bTotalEntry);
if ((_bEntry == prMenu->bTotalEntry) && (prMenu->prEntry[_bEntry-1]->wType == ENTRY_TYPE_RETURN))
{
vSetBtnCol(WB_SETUP_ITEM, ENTRY_COL_DARKGRAY, ENTRY_COL_YELLOW, ENTRY_COL_BLACK, ENTRY_COL_WHITE);
vSetMsgCol4(WB_SETUP_ITEM, ENTRY_COL_DARKGRAY, ENTRY_COL_DARKGRAY, ENTRY_COL_DARKGRAY, ENTRY_COL_YELLOW);
vSelButton(WB_SETUP_ITEM, 100);
return;
}
else
{
vSetMsgCol4(WB_SETUP_ITEM, ENTRY_COL_DARKGRAY, ENTRY_COL_DARKGRAY, ENTRY_COL_DARKGRAY, ENTRY_COL_YELLOW);
vSetBtnCol(WB_SETUP_ITEM, ENTRY_COL_YELLOW, ENTRY_COL_DARKGRAY, ENTRY_COL_BLACK, ENTRY_COL_WHITE);
vUnselButton(WB_SETUP_ITEM, 100);
if(prMenu->prEntry[_bEntry-1]->wType == ENTRY_TYPE_V_SLIDER_SIGNED)
{
#ifdef HILI_USE_OSD
// Clean HILI OSD
for(i=1;i<=6;i++)
{
if ( i != _bEntry)
{
vCalSliderPos(i);
vChgColRep(WB_SETUP_ITEM, 3, 4);
}
}
#else
vCalSliderPos(_bEntry);
vShowWbHiliXY(WB_SETUP_ITEM, HL_2,_wStartX,_wStartY,_wEndX,_wEndY);
vSetHLRng(HL_2, WB_SETUP_ITEM);
vShowHL(HL_2);
#endif
}
}
}
else
{
vSetItemPos(_bEntry, _bMinShowData);
}
_wStartX -= 4; //[runma] add line
vChgColRep(WB_SETUP_ITEM, 0, ENTRY_COL_10); //[runma] add line
}
// return true : need redraw
static BOOL fgEntryPrev(sMenu *prMenu) large
{
BYTE bPrevItem;
if(prMenu->bTotalEntry == 1)
return(FALSE);
#ifndef SETUP_CIRCULAR_ITEM
if(_bEntry == 1)
{
return(FALSE);
}
#else
if ((prMenu->bType != PAGE_TYPE_H_DIALOG) && (prMenu->bType != PAGE_TYPE_V_DIALOG))
_bDataPrev = INVALID_DATA;
if (_bEntry == 1)
{
bPrevItem = 1;
// _bPrevItem = 1;
_bEntry = prMenu->bTotalEntry;
/*
if (prMenu->bTotalEntry > _rMenuRoot.bEntryNo)
{
_bPrevMenu = INVALID_MENU;
}
*/
}
else
#endif
{
bPrevItem = _bEntry;
// _bPrevItem = _bEntry;
_bEntry--;
}
#if 0
while ((_bEntry != 1) &&
((prMenu->prEntry[_bEntry-1]->wType == ENTRY_TYPE_EDITBOX_ORDERED) ||
(prMenu->prEntry[_bEntry-1]->wType == ENTRY_TYPE_NULL)) )
{
_bEntry--;
}
#endif
while (!(_wInvalid & (0x01<<_bEntry-1)) ||
(prMenu->prEntry[_bEntry-1]->wType == ENTRY_TYPE_NULL))
{
//[runma] modify the block.
#ifdef SETUP_CIRCULAR_ITEM
if(_bEntry == bPrevItem) //[runma] 0 -> bPrevItem
{
break;
}
else if (_bEntry==1)
{
_bEntry=prMenu->bTotalEntry;
}
#else
if(_bEntry==1)
{
_bEntry=bPrevItem; //not circular item and not found a suitable item.
break;
}
#endif
else
{
_bEntry --;
}
//[runma] end of block.
}
#if 0 //[runma] add line
if (_bEntry == 0)
{
if (bPrevItem == _rMenuRoot.prMenu[_bMenu]->bTotalEntry)
{
_bEntry = prMenu->bTotalEntry;
}
else
{
while (!(_wInvalid & (0x01<<_bEntry-1)) || (prMenu->prEntry[_bEntry-1]->wType == ENTRY_TYPE_NULL))
{
_bEntry ++;
}
}
}
#endif //[runma] add line
#ifdef HILI_USE_OSD
if(_rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wType == ENTRY_TYPE_V_SLIDER_SIGNED)
_bDataCur = _bDataSel = bGetOptFromEeprom(prMenu->prEntry[_bEntry-1]);
#endif
if (fgCalEntryShowRange(prMenu->bTotalEntry, _rMenuRoot.bEntryNo))
{
vShowMenu(_rMenuRoot.prMenu[_bMenu]);
}
// [runma] add block
vSetItemPos(bPrevItem, _bMinShowData);
_wStartX -=4; //[runma] add line
vChgColRep(WB_SETUP_ITEM,ENTRY_COL_10,0);
// [runma] end of block
vEntryAct();
if (_bOsdState == STPSTT_DIALOG)
{
#ifdef HILI_USE_OSD
if(_rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wType == ENTRY_TYPE_V_SLIDER_SIGNED)
{
vCtrlDraw(prMenu->prEntry[_bEntry-1]->wType, _bEntry);
}
else
#endif
{
_bDataCur = 0;
}
#ifdef IR_SUPPORT_SHIFT_KEY
if ((prMenu->prEntry[_bEntry-1]->wType == ENTRY_TYPE_EDITBOX) ||
(prMenu->prEntry[_bEntry-1]->wType == ENTRY_TYPE_EDITBOX_ORDERED))
{
vSetShiftKeyMode(FALSE);
}
#endif
}
else
{
vCtrlClear(prMenu->prEntry[bPrevItem-1]->wType, bPrevItem);
#if (SETUP_MENU_DATA_STYLE == STP_STICK_DATA)
if(prMenu->prEntry[_bEntry-1]->wEEPos)
{
//_bDataSel = bGetOptFromEeprom(prMenu->prEntry[_bEntry-1]);
_bDataSel = bGetOptFromEeprom(prMenu->prEntry[_bEntry-1]);
}
else
{
_bDataSel = 0;
}
_bDataCur = _bDataSel;
#if(defined(DOWNMIX_SHOW_UI)||defined(SETUP_INVALID_ITEM)||defined(SETUP_CHECK_INVALID_HDCD))
_bInvalidItem = 0xff;
vChkItemValid(_bMenu,_bEntry);
#endif
vCtrlDraw(prMenu->prEntry[_bEntry-1]->wType, _bEntry);
//vShowMark();
#endif
}
return (TRUE);
}
BOOL fgEntryNext(sMenu *prMenu) large
{
BYTE bPrevItem;
if(prMenu->bTotalEntry==1)
return(FALSE);
if ((prMenu->bType != PAGE_TYPE_H_DIALOG) && (prMenu->bType != PAGE_TYPE_V_DIALOG))
_bDataPrev = INVALID_DATA;
_bPrevItem = _bEntry;
bPrevItem = _bEntry;
_bEntry++;
if (_bEntry > prMenu->bTotalEntry)
{
#ifdef SETUP_CIRCULAR_ITEM
_bEntry = 1;
/*
if (prMenu->bTotalEntry > _rMenuRoot.bEntryNo)
{
_bPrevMenu = INVALID_MENU;
}
*/
#else
_bEntry -= 1;
return (FALSE);
#endif
}
#if 0
while ((_bEntry != 1) && (prMenu->prEntry[_bEntry-1]->wType == ENTRY_TYPE_EDITBOX_ORDERED) && (_bEntry - 1 < prMenu->bTotalEntry))
{
_bEntry++;
}
#endif
while (!(_wInvalid & (0x01<<_bEntry-1)) || (prMenu->prEntry[_bEntry-1]->wType == ENTRY_TYPE_NULL))
{
_bEntry ++;
if (_bEntry > prMenu->bTotalEntry) //[runma] add line
_bEntry = 1; //[runma] add line
}
/*
if (_bEntry > _bMaxShowData)
{
_bPrevMenu = INVALID_MENU;
}
*/
_bDataCur = _bDataSel = bGetOptFromEeprom(prMenu->prEntry[_bEntry-1]);
if (fgCalEntryShowRange(prMenu->bTotalEntry, _rMenuRoot.bEntryNo))
{
vShowMenu(prMenu);
}
//vGrpButtonActivate(WB_SETUP_ITEM, _bEntry - 1, BTN_STYLE_HILIGHT);
#if 0
switch(prMenu->bType)
{
case PAGE_TYPE_H_DIALOG:
//vDialogNext();
vSetItemPos(_bEntry, prMenu->bTotalEntry);
/*
_wStartX = DIALOG_X + DIALOG_START_X;
_wEndX = DIALOG_X + DIALOG_W - DIALOG_START_X;
_wStartY = (SETUP_ITEM_H - (prMenu->bTotalEntry + 2) * DIALOG_LINE_H) / 2 + (_bEntry * DIALOG_LINE_H);
_wEndY = _wStartY + DIALOG_LINE_H;
*/
vShowHL(HL_1);
vSetHLCol(HL_1, HL1_NORMAL_COL);
vShowWbHili(WB_SETUP_ITEM, HL_1);
vSetHLRng(HL_1, WB_SETUP_ITEM);
break;
default:
#endif
// [runma] add block
vSetItemPos(bPrevItem, _bMinShowData);
_wStartX -=4; //[runma] add line
vChgColRep(WB_SETUP_ITEM,ENTRY_COL_10,0);
// [runma] end of block
vEntryAct();
/*
Modify it by Bright_liu 2005/10/24, for CQ(PL00205048)
*/
if (_bOsdState == STPSTT_DIALOG)
{
// _bDataCur = 0;
#ifdef IR_SUPPORT_SHIFT_KEY
if ((prMenu->prEntry[_bEntry-1]->wType == ENTRY_TYPE_EDITBOX) ||
(prMenu->prEntry[_bEntry-1]->wType == ENTRY_TYPE_EDITBOX_ORDERED))
{
vSetShiftKeyMode(FALSE);
}
#endif
}
else
{
vCtrlClear(prMenu->prEntry[bPrevItem-1]->wType, bPrevItem);
#if(defined(DOWNMIX_SHOW_UI)||defined(SETUP_INVALID_ITEM)||defined(SETUP_CHECK_INVALID_HDCD))
_bInvalidItem = 0xff;
vChkItemValid(_bMenu,_bEntry);
#endif
#if (SETUP_MENU_DATA_STYLE == STP_STICK_DATA)
vCtrlDraw(prMenu->prEntry[_bEntry-1]->wType, _bEntry);
//vShowMark();
#endif
#if 0
break;
}
#endif
}
return TRUE;
}
static void vCtrlClear(BYTE bCtrlType, BYTE bIndex) large
{
WORD wH;
switch(bCtrlType)
{
case TYPE_USER_1:
vDelButton(WB_SETUP_ITEM, DATA_BTN_BASE);
vDelButton(WB_SETUP_ITEM, DATA_BTN_BASE+1);
//#ifdef popup option automatically.
vChgColRep(WB_SETUP_ITEM,0,ENTRY_COL_RED); //[runma] add line.
//#endif
break;
case ENTRY_TYPE_GROUPBUTTON:
// clean Data Area except up down mark.
_wStartX = STP_ENTRY_START_X + STP_DATA_START_X;
_wEndX = _wStartX + DATA_LEN; //32 for Up Down Mark.
_wStartY = STP_MENU_START_Y;
_wEndY = _wStartY + 32 * _rMenuRoot.bEntryNo + 15;
vRectangle(WB_SETUP_ITEM,0,0, TRUE, ENTRY_COL_BG);
break;
case ENTRY_TYPE_V_SLIDER:
case ENTRY_TYPE_V_SLIDER_SIGNED:
vCalSliderPos(bIndex);
_wStartY -= 10;
_wEndY += 10;
vRectangle(WB_SETUP_ITEM, 0, 0, 1, ENTRY_COL_BG);
break;
case ENTRY_TYPE_EDITBOX:
case ENTRY_TYPE_EDITBOX_ORDERED:
if ((_bEntry > bIndex) || !(_wInvalid << (_bEntry - 1)) )
vSelButton(WB_SETUP_ITEM, DATA_BTN_BASE+bIndex);
break;
case TYPE_SPK_CONFIG:
_wStartX = STP_ENTRY_START_X + STP_DATA_START_X;
_wStartY = 50;
_wEndX = _wStartX + 220;
_wEndY = _wStartY + 230;
vRectangle(WB_SETUP_ITEM,0,0, TRUE, ENTRY_COL_BG);
break;
}
}
#ifndef PLAYER_BASIC
void vPasteSpkBmp(BYTE bIndex, BOOL fgIfOn) large
{
vSetSpkConfigPos(bIndex);
switch(bIndex) {
case 0:
// case 1:
case 2:
if(fgIfOn)
vPasteBmp(WB_SETUP_ITEM, BMP_SPK_UP_ON);
else
vPasteBmp(WB_SETUP_ITEM, BMP_SPK_UP);
break;
case 1:
if(fgIfOn)
vPasteBmp(WB_SETUP_ITEM, BMP_SPK_CNT_ON);
else
vPasteBmp(WB_SETUP_ITEM, BMP_SPK_CNT);
break;
case 3:
if(fgIfOn)
vPasteBmp(WB_SETUP_ITEM, BMP_SPK_SUBWO_ON);
else
vPasteBmp(WB_SETUP_ITEM, BMP_SPK_SUBWO);
break;
case 4:
case 5:
if(fgIfOn)
vPasteBmp(WB_SETUP_ITEM, BMP_SPK_LOW_ON);
else
vPasteBmp(WB_SETUP_ITEM, BMP_SPK_LOW);
break;
}
}
#else
void vPasteSpkBmp(BYTE bIndex, BOOL fgIfOn) large
{
return;
}
#endif /* PLAYER_BASIC */
// 6 ~ 11 --> arrow 0 ~ 5 --> spk
// w=200 h=32*5
void vSetSpkConfigPos(BYTE bIndex) large
{
WORD wW;
code BYTE pbShiftX[6] = { 0, 1, 2, 0 , 0, 2 };
code BYTE pbShiftY[6] = { 0, 0, 0, 1 , 2, 2 };
wW = (200 - 32 * 3) / 4;
if(bIndex==12) //item value.
{
_wStartX = STP_ENTRY_START_X + STP_DATA_START_X + wW + (wW + 32) * 1;
_wStartY = 50 + 32 + (32 + 32) * 1;
_wEndX = _wStartX + 100;
_wEndY = _wStartY + 30;
return;
}
_wStartX = STP_ENTRY_START_X + STP_DATA_START_X + wW + (wW + 32) * pbShiftX[bIndex % 6];
_wStartY = 50 + 32 + (32 + 32) * pbShiftY[bIndex % 6];
if (bIndex > 5)
{
_wStartY += 32;
}
// _wEndX = _wStartX + 32;
// _wEndY = _wStartY + 32;
//[runma] add for calibration position for variable size speakers.
switch(bIndex)
{
case 0:
case 2:
_wStartX +=8;
break;
case 1:
_wStartX -=14;
break;
}
_wEndX = _wStartX + 32 +32;
_wEndY = _wStartY + 32 +32;
}
static void vCtrlMove(BYTE bCtrlType, BYTE bIndex) large
{
BYTE bOptNum; //[runma] add line.
BYTE bOffset;
BYTE bPrevMinShowOpt;
sEntry *prEntry = _rMenuRoot.prMenu[_bMenu]->prEntry[bIndex-1]; //[runma] add line
// BOOL fgRedraw = FALSE;
switch (bCtrlType)
{
case TYPE_USER_1:
if (_bDataCur /*bEepromReadByte(DRNG_POS)*/ < 9) //[runma]
{
vShowDynBtn();
vShowDynMsg();
}
break;
case ENTRY_TYPE_GROUPBUTTON:
//[runma] add block
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -