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

📄 stpmain.c

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