📄 stpmain.c
字号:
{
_bDataPrev = _bDataCur;
((char)_bDataCur)--;
fgEepromWriteByte(wEEPos, (char) _bDataCur);
if(wSIPos != NULL_SI)
{
vSetSharedInfo(wSIPos, (char)_bDataCur);
}
}
}
break;
}
vSetADsp(TRUE);
}
//static void vItemValueCtrl(sEntry *prSpkItem, BOOL fgIfInc) large
//{
// BYTE bOpt;
//
//
// bOpt = bGetOptFromEeprom(prSpkItem);
// if(fgIfInc)
// {
// if(bOpt < prSpkItem->wMaxOpt)
// bOpt++;
// }
// else
// {
// if(bOpt > 0)
// bOpt--;
// }
// fgEepromWriteByte(prSpkItem->wEEPos, bOpt);
// if(prSpkItem->wSIPos != NULL_SI)
// {
// vSetSharedInfo(prSpkItem->wSIPos, bOpt);
// }
//
// vSetADsp(TRUE);
//}
static BOOL fgDataPrev(sEntry *prEntry) large
{
WORD wType;
wType = prEntry->wType;
switch(wType)
{
case TYPE_USER_1:
fgProcCtrl(TYPE_USER_1, prEntry, TRUE);
vCtrlMove(TYPE_USER_1, _bEntry);
break;
case ENTRY_TYPE_GROUPBUTTON:
//case TYPE_SPK_CONFIG:
fgProcCtrl(wType, prEntry, FALSE);
vCtrlMove(wType, _bEntry);
break;
//case ENTRY_TYPE_NUM:
//case ENTRY_TYPE_H_SLIDER:
case ENTRY_TYPE_H_SLIDER_SIGNED:
fgProcCtrl(wType, prEntry, FALSE);
vCtrlDraw(wType, _bEntry);
break;
case ENTRY_TYPE_STATIC:
break;
}
return TRUE;
}
static BOOL fgDataNext(sEntry *prEntry) large
{
WORD wType;
wType = prEntry->wType;
switch(wType)
{
case TYPE_USER_1:
fgProcCtrl(TYPE_USER_1, prEntry, FALSE);
vCtrlMove(TYPE_USER_1, _bEntry);
break;
case ENTRY_TYPE_GROUPBUTTON:
//case TYPE_SPK_CONFIG:
fgProcCtrl(wType, prEntry, TRUE);
vCtrlMove(wType, _bEntry);
break;
//case ENTRY_TYPE_H_SLIDER:
case ENTRY_TYPE_H_SLIDER_SIGNED:
fgProcCtrl(wType, prEntry, TRUE);
vCtrlDraw(wType, _bEntry);
break;
//case ENTRY_TYPE_NUM:
// fgProcCtrl(wType, prEntry, FALSE); //[runma] TRUE);->FALSE (dec)
// vCtrlDraw(wType, _bEntry);
// break;
}
return TRUE;
}
void vCtrlAct(void) large
{
BYTE bCtrlType = _rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wType;
WORD wH;
sEntry *prEntry = _rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]; //[runma] add line.
BYTE bOffset, bIndex,bOptNum; //[runma] add line;
bIndex = _bEntry; //[runma] add line.
switch(bCtrlType)
{
//[runma] add block for testing, to change color when item to option, option to item.
//case TYPE_SPK_CONFIG:
// vSetSpkConfigPos(1);
// vChgColRep(WB_SETUP_ITEM, OPT_SEL_CLR, OPT_CURR_CLR);
// vSetSpkConfigPos(_bDataCur);
// break;
//[runma] end of block
case ENTRY_TYPE_GROUPBUTTON:
// case TYPE_GROUPBUTTON:
//[runma] add block which is copied from draw ctrl.
bOptNum = prEntry->wMaxOpt;
if ((bOptNum+1) > _rMenuRoot.bEntryNo) //[runma] add word +1
{
fgCalDataShowRange(prEntry->wMaxOpt+1, _rMenuRoot.bEntryNo); //[runma] add word +1
bOptNum = _rMenuRoot.bEntryNo - 1;
bOffset = bIndex - _bMinShowData;
}
else
{
_bMinShowDat = 0;
bOffset = 0;
if ((bIndex + bOptNum - _bMinShowData) >= _rMenuRoot.bEntryNo)
{
bOffset = bIndex + bOptNum - _bMinShowData - _rMenuRoot.bEntryNo + 1;
}
/* temp solution for item number bigger then _rMenuRoot.bEntryNo */
if (bOptNum == _rMenuRoot.bEntryNo)
{
bOffset = bIndex + bOptNum - _bMinShowData - _rMenuRoot.bEntryNo;
}
}
//[runma] end of copy.
vSetDataPos(_bDataSel-_bMinShowDat, bOffset); //0); [runma] 0->bOffset, add word- _bMinShowDat
vChgColRep(WB_SETUP_ITEM, OPT_NONE_CLR, OPT_CURR_CLR); //[runma] add line
vChgColRep(WB_SETUP_ITEM, OPT_SEL_CLR, OPT_CURR_CLR); //[runma] add line.
// vGrpButtonActivate(WB_SETUP_ITEM, DATA_BTN_BASE + _bDataSel , BTN_STYLE_HILIGHT);
break;
// case TYPE_SCR:
//case ENTRY_TYPE_H_SLIDER:
case ENTRY_TYPE_H_SLIDER_SIGNED:
#if 0
wH = ((WORD)bOptMaxEntryNum(_rMenuRoot, _bMenu, _bEntry)) << 2;
_wStartX = STP_DATA_START_X;
_wEndX = _wStartX + H_SLIDER_WIDTH;
_wStartY = SETUP_ITEM_END_Y - 100 - (wH * 2);
_wEndY = _wStartY + wH * 2;
#endif
vCalSliderPos(_bEntry);
_wStartX += SETUP_ITEM_START_X;
_wStartY += SETUP_ITEM_START_Y;
_wEndX += SETUP_ITEM_START_X;
_wEndY += SETUP_ITEM_START_Y;
vChgColRng(WB_SETUP_ITEM);
vChgColEn();
break;
}
}
#if 0
static void vCtrlDeact(void) large
{
BYTE bCtrlType = _rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wType;
switch(bCtrlType)
{
case ENTRY_TYPE_GROUPBUTTON:
// case TYPE_GROUPBUTTON:
vGrpButtonDeactivate(WB_SETUP_ITEM, DATA_BTN_BASE + _bDataSel , BTN_STYLE_HILIGHT);
if (_bDataCur != _bDataSel)
{
vGrpButtonDeactivate(WB_SETUP_ITEM, DATA_BTN_BASE + _bDataCur , BTN_STYLE_NORMAL);
}
break;
// case TYPE_SCR:
//case ENTRY_TYPE_H_SLIDER:
case ENTRY_TYPE_H_SLIDER_SIGNED:
vChgColDis();
break;
}
}
#endif
BYTE bEntryToOption(sMenu *prMenu) large
{
BYTE bType = prMenu->bType;
// BYTE bEntry = bGetTrueItem(_bEntry);
//if ((bType == PAGE_TYPE_MAINMENU) || (bType == PAGE_TYPE_SUBMENU) || (_bOsdState == STPSTT_OPTION))
//if ((bType == PAGE_TYPE_SUBMENU) || (_bOsdState == STPSTT_OPTION))
if ((_bOsdState == STPSTT_SUBMENU) || (_bOsdState == STPSTT_OPTION))
{
return VK_NONE;
}
/*
if ((bType == PAGE_TYPE_SUBMENU) || (bType == PAGE_NML) || (bType == PAGE_TXT) ||
((bType == PAGE_COM) && (_bEntry < prMenu->bFirst)))
*/
if ( (bType == PAGE_NML))// || (bType == PAGE_TXT))
{
//bType = prMenu->prEntry[_bEntry-1]->wType;
bType = prMenu->prEntry[_bEntry-1]->wType;
if ((bType == ENTRY_TYPE_DIALOG)||(bType == ENTRY_TYPE_SUBMENU)) //r add || ..== entry_..submenu..
{
return VK_CHANGE_PAGE;
}
//else if ((bType != TYPE_PAGE) && (bType != TYPE_CLOSE) && (bType != ENTRY_TYPE_MENU))
else if (bType != TYPE_CLOSE)
{
// set sel color for entry.
//vSetItemPos(_bEntry, _rMenuRoot.prMenu[_bMenu]->bTotalEntry); //r
//vChgColRep(WB_SETUP_ITEM, OPT_CURR_CLR, OPT_SEL_CLR ); //r
// fail.
_bOsdState = STPSTT_OPTION;
if (bType == TYPE_USER_1)
{
vShowDynMsg();
}
//vSetHLCol(HL_1, HL1_SEL_COL);
//vSetHLCol(HL_2, HL1_SEL_COL);
//if(prMenu->prEntry[_bEntry-1]->wEEPos)
if(prMenu->prEntry[_bEntry-1]->wEEPos)
{
//_bDataSel = bGetOptFromEeprom(prMenu->prEntry[_bEntry-1]);
_bDataSel = bGetOptFromEeprom(prMenu->prEntry[_bEntry-1]);
}
else
{
_bDataSel = 0;
}
_bDataCur = _bDataSel;
_bDataPrev = INVALID_DATA;
#if (SETUP_MENU_DATA_STYLE == STP_STICK_DATA)
//vCtrlDraw(prMenu->prEntry[_bEntry-1]->wType, _bEntry);
vCtrlDraw(prMenu->prEntry[_bEntry-1]->wType, _bEntry);
#endif
//[runma] add block to show mark.
if (prMenu->prEntry[_bEntry-1]->wType == ENTRY_TYPE_GROUPBUTTON)
{
_wStartX = SETUP_ITEM_W - 42;
_wEndX = _wStartX+40;
_wStartY = 34; //[runma] 5; -> 34
_wEndY = 66; //[runma] 30; -> 66
vRectangle(WB_SETUP_ITEM, 0, 0, 1, ENTRY_COL_BG);
_wStartY = 266;
_wEndY = 266+32;
vRectangle(WB_SETUP_ITEM, 0, 0, 1, ENTRY_COL_BG);
vSetMsgCol4(WB_SETUP_ITEM, ENTRY_COL_BG, ENTRY_COL_BG, ENTRY_COL_BLACK, ENTRY_COL_WHITE);
if (_bMinShowDat != 0)
{
vSetupEntryShowXY(SETUP_ITEM_W-42/*_wStartX*/, 34 /*4*/, OSD_MSG_MARK_UP, WB_SETUP_ITEM); //[runma] 4 -> 34
}
if (_bMinShowDat + _rMenuRoot.bEntryNo < (prMenu->prEntry[_bEntry-1]->wMaxOpt+1) )
{
vSetupEntryShowXY(SETUP_ITEM_W-42 /*_wStartX*/, 266, OSD_MSG_MARK_DOWN, WB_SETUP_ITEM);
}
}
//[runma] end of block
vCtrlAct();
}
}
return VK_NONE;
}
static BOOL fgOptionToItem(sMenu *prMenu) large
{
BYTE bType = prMenu->bType;
if ((bType == PAGE_TYPE_MAINMENU) /*|| (bType == PAGE_TYPE_SUBMENU)*/ || (_bOsdState == STPSTT_ENTRY))
{
return FALSE;
}
if ((bType == PAGE_NML))
{
if (_fgInSubmenu == TRUE)
_bOsdState = STPSTT_SUBMENU_ITEM;
else
_bOsdState = STPSTT_ENTRY;
//if(prMenu->prEntry[_bEntry-1]->wType != TYPE_SPK_CONFIG)
{
//vSetHLCol(HL_1, HL1_NORMAL_COL);
//vSetHLCol(HL_2, HL1_NORMAL_COL);
vSetItemPos(_bEntry, _bMinShowData);
_wStartX = STP_ENTRY_START_X + STP_VALUE_START_X;
if (_bOsdState == STPSTT_DIALOG)
{
sEntry *prEntry = prMenu->prEntry[prMenu->bTotalEntry-1];
//vSetupEntryShow(wGetItemValue(prEntry->wEEPos, prEntry->wDefault-1), WB_SETUP_ITEM);
}
else
{
vShowEntryValue(prMenu->prEntry[_bEntry-1],TRUE);
vSetItemPos(_bEntry, _bMinShowData); //[runma] add line
_wStartX -=4; //[runma] add line
vChgColRep(WB_SETUP_ITEM,0,ENTRY_COL_GREEN); //[runma] add line
//vSetupEntryShow(wGetItemValue(_bMenu, _bEntry-1), WB_SETUP_ITEM);
}
}
//vCleanMark();
#if (SETUP_MENU_DATA_STYLE == STP_POPUP_DATA)
vCtrlClear(prMenu->prEntry[_bEntry-1]->wType, _bEntry);
#elif (SETUP_MENU_DATA_STYLE == STP_STICK_DATA)
#if 0 //r add
_wStartX = STP_ENTRY_START_X + STP_DATA_START_X;
_wEndX = _wStartX + DATA_LEN;
_wStartY = STP_MENU_START_Y;
_wEndY = _wStartY + 32 * _rMenuRoot.bEntryNo + 15;
vChgColRep(WB_SETUP_ITEM, OPT_SEL_CLR, OPT_NONE_CLR); //[runma] ..delay speaker has been changed from red to gray!! no..it's wrong
vChgColRep(WB_SETUP_ITEM, OPT_CURR_CLR, OPT_NONE_CLR); //r add line clean for ir_left groupbutton
vCtrlAct();
vChgColRep(WB_SETUP_ITEM, OPT_CURR_CLR, OPT_SEL_CLR);
#endif
vCtrlDraw(prMenu->prEntry[_bEntry-1]->wType, _bEntry); //r add
if (prMenu->prEntry[_bEntry-1]->wMaxOpt > _rMenuRoot.bEntryNo)
{
_wStartX = SETUP_ITEM_W - 42;
_wEndX = _wStartX+40;
_wStartY = 34; //[runma] 5; -> 34
_wEndY = 66; //[runma] 30; -> 66
vRectangle(WB_SETUP_ITEM, 0, 0, 1, ENTRY_COL_BG);
_wStartY = 266;
_wEndY = 266+32;
vRectangle(WB_SETUP_ITEM, 0, 0, 1, ENTRY_COL_BG);
}
#endif
//vCtrlDeactivate();
}
return FALSE;
}
BOOL fgOptionSelected(sEntry *prEntry) large
{
BYTE bTmp;
WORD wEEPos;
BYTE (code *bDeal)(WORD wEEPos, BYTE bValue) large;
if ((_bDataCur == _bDataSel) &&
(prEntry->wType == ENTRY_TYPE_GROUPBUTTON) && (prEntry->wMaxOpt > 0))
return FALSE;
// if (prEntry->wType == TYPE_SPK_CONFIG)
// return FALSE;
_bDataPrev = _bDataSel = _bDataCur;
wEEPos = prEntry->wEEPos;
switch (wEEPos)
{
case PASS_SW_POSITION:
case PTL_LEVEL_POSITION:
#ifdef PLAYER_TRIM
case DIALOG_POS:
#endif
break;
default:
if(prEntry->prData) //[runma] add line
fgEepromWriteByte(wEEPos, prEntry->prData[_bDataSel]->bVal);
else //[runma] add line
fgEepromWriteByte(wEEPos, _bDataSel); //[runma] add line
break;
}
if (prEntry->wType == ENTRY_TYPE_DIALOG)
{
_bDlgId = prEntry->wEEPos;
}
bDeal = prEntry->bFun;
if (bDeal)
{
bTmp = bDeal(wEEPos, prEntry->prData[_bDataSel]->bVal);
if (bTmp == ENTRY_FUN_EXIT)
{
vSetupMenuClose();
return(TRUE);
}
else
{
vRedrawMenu(bTmp);
}
}
if (_fgReset)
{
/* moved from bResetDefault() to prevent recursive call */
fgEepromSetWriteShadow();
vEepromClearShadow(FALSE);
vInitMenuEntry(MENU_ITEM_DEFAULT);
vEepromSetWriteStart();
_fgReset = FALSE;
#ifdef RESET_CLOSE_SETUP_MENU
vSetupMenuClose();
#else
_bMenu = PRE_PAGE;
_bEntry = PREFERENCE_RESET;
vRedrawMenu(ENTRY_FUN_REDRAW);
#endif // after reset not close setup menu
return(TRUE);
}
return TRUE;
}
BYTE bProcSpecialKey(void) large
{
switch(_bIRKey)
{
/* check if power down, setup close, open/close key */
case IR_SETUP:
vSetupMenuClose();
return(RESULT_SUCCESS);
case IR_EJECT:
case IR_MANUAL_EJECT:
case IR_POWER:
vSetupMenuClose();
return(RESULT_UNFINISHED);
default:
if (_bIRKey >= IR_INTERNAL_KEY_ST
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -