⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stpmain.c

📁 mtk1389L latest sourcecode enjoy
💻 C
📖 第 1 页 / 共 5 页
字号:
#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 + -