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

📄 flmenu.c

📁 mtk1389L latest sourcecode enjoy
💻 C
📖 第 1 页 / 共 5 页
字号:
  {
  case IR_SELECT_DONE:
  case IR_PLAY_ENTER:
  case IR_PLAY:
  case IR_ENTER:
  case IR_PLAY_PAUSE:
  case IR_PROGRAM:
    fgFlAutoPlayQuit();
    break;
  }
#endif

  for (i = 0; i <  sizeof(_rFlMnIrHandler) / sizeof(_rFlMnIrHandler[0]); i++)
  {
    if (_bIRKey == _rFlMnIrHandler[i].bIrKey)
    {
      fgIsGrabbed = _rFlMnIrHandler[i].pHandler();
      return fgIsGrabbed;
    }
  }

  return fgIsGrabbed;
}

////////////////////////////////////////////////////////////////////////////////
//
// Fslist Command Handler
//

/**
 * Check the return value of command "FLCMD_CREATE".
 */
static void vFlMnRetCreate(void) large
{
  WORD wBlkPtr;
  BYTE bRCode;

  wBlkPtr = FL_CMD_BLK_SA + 1; // - shift to the parameter block
  bRCode = bSharedInfo(wBlkPtr ++);

  // - mark the command is done
  vFlCmdDone();

  if (bRCode == FLRET_S_OK)
  {
    // - read in the newly created list info
    if (fgFlClIsLock())
    {
      switch(bFlClPath())
      {
        case FL_CMDPATH_INIT_0:
          _bFlMnListId = bSharedInfo(wBlkPtr ++);
          vFlMnRdListInfo(_bFlMnListId);
#ifdef ISO_AUTO_PLAY
          vFlClNext();
          vFlCmdCreate(FLPARM_LIST_DISC, 0, 0x0,
#ifdef MT1379_MANUFACTURE_TEST
                       FLPARM_FF_MPG,
#else
                       FL_AUDIO_FILE,
#endif
                       FLPARM_SO_GDIR);
          break;
        case FL_CMDPATH_INIT_1:
          _bFlRefListId = bSharedInfo(wBlkPtr ++);
#ifdef MT1379_MANUFACTURE_TEST
          vFlMnRdListInfo(_bFlRefListId);

          if (!_wFlMnListLen)
            vNotMp4CD();
          else
            vFlCmdClickItem(_bFlRefListId, 0);
#endif
#endif
          if (bSharedInfo(SI_DISC_TYPE) == SV_PCD)
          {
            vFlSetCmdTarget(FL_CMD_TARGET_JPEG);
          }
          else
          {
            if (_wFlMnListLen)
            {
              if (_wFlCurAdoIdx == 0xFFFF)
              {
                fgFlCmdGetItems(_bFlMnListId, 0);
                //vFlSetCmdTarget(FL_CMD_TARGET_MENU);
              }
              else
              {
                _bFlMnCurItemIdx = _wFlCurAdoIdx % FLMN_ITEM_N;
                fgFlCmdGetItems(_bFlMnListId, _wFlCurAdoIdx - _bFlMnCurItemIdx);
              }
            }
            else
            {
          #ifdef SUPPORT_EMD
              vFlMnShowPage();
              vFlMnDrawInfoPanel(_bFlIpState);
              vFlIpShowInfo(IP_INFO_FILE_INDEX, 0, 0);
              _wStartX = FLMN_BTN_1_X + FLMN_MENU_BORDER + 80;
              _wStartY = FLMN_BTN_1_Y + FLMN_MENU_BORDER + 2;
              if (bSharedInfo(SI_FAT_ERR_CODE) == SV_FAT_E_NOT_SUPPORT)
                vOsdMsgPaste(FL_MENU_WB, OSD_MSG_ERR_DISC_NOT_SUPPORT);
              else
                vOsdMsgPaste(FL_MENU_WB, OSD_MSG_EMPTY_CARD);
              _bFlCmdTarget = FL_CMD_TARGET_MENU;
              vFlClRls();
          #endif
            }
          }
          break;
      }
    }
  }
  else
  {
    // - error occurs
    _bFlMnListId = 0xFF;
    _bFlRefListId = 0xFF;
  }

  return;
}

/**
 * Check the return value of command "FLCMD_SET".
 */
static void vFlMnRetSet(void) large
{
  WORD wBlkPtr;
  BYTE bRCode;

  wBlkPtr = FL_CMD_BLK_SA + 1; // - shift to the parameter block
  bRCode = bSharedInfo(wBlkPtr ++);

  //bRetOp = bFlCmdRetOp();
  // - mark the command is done
  vFlCmdDone();

  if (bRCode == FLRET_S_OK)
  {
    // - successful
    vFlMnRdListInfo(_bFlMnListId);
    if (fgFlClIsLock())
    {
      switch(bFlClPath())
      {
        case FL_CMDPATH_RETURN:
          _bFlMnCurItemIdx = _wFlCurAdoIdx % FLMN_ITEM_N;
          fgFlCmdGetItems(_bFlMnListId, _wFlCurAdoIdx - _bFlMnCurItemIdx);
          break;

        case FL_CMDPATH_CHG_DIR:
        case FL_CMDPATH_DIR_UP_0:
        case FL_CMDPATH_DIR_UP_1:
          _bFlMnCurItemIdx = 0x0;
          fgFlCmdGetItems(_bFlMnListId, 0);
          break;
        case FL_CMDPATH_CHG_LIST:
          fgFlCmdGetItems(_bFlMnListId, 0x0);
          break;
        case FL_CMDPATH_ATPLY_1:
          _wFlCurAdoIdx += wFlGetSubFldrNs(_bFlMnListId);
          fgFlCmdGetItems(_bFlMnListId, _wFlCurAdoIdx - (_wFlCurAdoIdx % FLMN_ITEM_N));
          break;
      }
    }
    else
    {
#if 0
      if (bRetOp == FLCMD_RET_OP_CHG_LIST)
        fgFlCmdGetItems(_bFlMnListId, 0x0);
      else
#endif
        fgFlCmdGetItems(_bFlMnListId, 0x0);

      _bFlMnCurItemIdx = 0x0;
    }
  }
  else
  {
    // - error occurs
  }

  return;
}

/**
 * Check the return value of command "FLCMD_GET_ITEMS".
 */
static void vFlMnRetGetItems(void) large
{
  WORD wBlkPtr;
  WORD wNum;
  BYTE bType;
  BYTE bRCode;

  wBlkPtr = FL_CMD_BLK_SA + 1; // - shift to the parameter block
  bRCode = bSharedInfo(wBlkPtr ++);

  if (bRCode == FLRET_S_OK)
  {
    // - successful, update the item number, redraw the page
    _bFlMnItemNs = bSharedInfo(wBlkPtr ++);
    vFlCmdDone();

    switch(bFlClPath())
    {
    #ifdef ISO_AUTO_PLAY
      case FL_CMDPATH_INIT_1:
    #else
      case FL_CMDPATH_INIT_0:
    #endif
#ifdef ISO_LAST_MEM
        // lastmem & autoplay can't be happened at the same time
        if (_wFlCurAdoIdx != 0xffff)
        {
          vFlMnDrawPage();
          fgFlMnEntItem(_bFlMnCurItemIdx);
          vFlCmdClickItem(_bFlMnListId, _wFlCurAdoIdx);
        }else
#endif
        {
          vFlSetCmdTarget(FL_CMD_TARGET_MENU);
        }
        break;
      case FL_CMDPATH_CHG_LIST:
        vFlIpShowInfo(IP_INFO_LIST_TYPE, bSharedInfo(FL_LIST_FIELD(_bFlMnListId)), 0);
      case FL_CMDPATH_CHG_DIR:
      case FL_CMDPATH_REDRAW:
      case FL_CMDPATH_DIR_UP_1:
      case FL_CMDPATH_UP:
      case FL_CMDPATH_DOWN:
      case FL_CMDPATH_RETURN:
        vFlMnSyncState();
        vFlMnDrawPage();
        fgFlMnEntItem(_bFlMnCurItemIdx);
        vFlClRls();
        break;
      case FL_CMDPATH_SEL_2:
        vFlMnDrawPage();
        fgFlMnEntItem(_bFlMnCurItemIdx);
        vFlClRls();
        break;
      case FL_CMDPATH_DIR_DOWN:
        fgFlMnEntDir(0x0, FALSE);
        break;
      case FL_CMDPATH_DIR_UP_0:
        vFlClNext();
        fgFlMnEntDir(0x0, TRUE);
        break;
      case FL_CMDPATH_PL_RM:
        vFlMnDrawPage();
        fgFlMnEntItem(_bFlMnCurItemIdx);
        vFlClRls();
        break;
      case FL_CMDPATH_SEL_0:
        _fgFlMdChg = TRUE;
        _bFlMnItemType = bFlGetItemType(_bFlMnCurItemIdx);//061212 xinzhen modify for CQ( PL00003089)
        switch (_bFlMnItemType)
        {
          case FTYPE_FOLDER:
            vFlClNext();
            if (fgIsParentDir())
              vParseFolderName(_bFlMnCurItemIdx, TRUE);
            else
              vParseFolderName(_bFlMnCurItemIdx, FALSE);
            vFlSetCmdTarget(FL_CMD_TARGET_MENU);
            break;
          case FTYPE_AUDIO:
            vFlClNext();
            vFlSetCmdTarget(FL_CMD_TARGET_MENU);
            break;
          case FTYPE_STILL:
            vFlClNext();
            vFlSetCmdTarget(FL_CMD_TARGET_JPEG);
            break;
          case FTYPE_AV:
            vFlClNext();
            vFlSetCmdTarget(FL_CMD_TARGET_MPEG);
            break;
        }
        break;
#ifdef ISO_AUTO_PLAY
      case FL_CMDPATH_ATPLY_0:
        vFlCmdQueryItem(_bFlRefListId, _wFlAtplyIdx);
        break;
      case FL_CMDPATH_ATPLY_1:
        _bFlMnCurItemIdx = _wFlCurAdoIdx % FLMN_ITEM_N;
     #ifdef FL_AUTO_PLAY_SYNC_MENU
        vFlMnDrawPage();
        fgFlMnEntItem(_bFlMnCurItemIdx);
     #endif
        vFlCmdClickItem(_bFlMnListId, _wFlCurAdoIdx);
        break;
#endif
    }
  }
  else
  {
    // - error occurs, mark the number of item is negative
    vFlCmdDone();

    switch(bFlClPath())
    {
      case FL_CMDPATH_CHG_LIST:
        bType = bSharedInfo(FL_LIST_FIELD(_bFlMnListId));
        switch (bType)
        {
          case FLPARM_LIST_FOLDER:
            bType = FLPARM_LIST_DISC;
            _wFlCurAdoIdx = _wFlFdIdx;
            break;
          case FLPARM_LIST_DISC:
            bType = FLPARM_LIST_PLAYLIST;
            _wFlCurAdoIdx = _wFlFlIdx;
            break;
          case FLPARM_LIST_INVALID:
          case FLPARM_LIST_PLAYLIST:
            bType = FLPARM_LIST_FOLDER;
            _wFlCurAdoIdx = _wFlPlIdx;
            break;
        }
#if 0
        if (bType == FLPARM_LIST_PLAYLIST)
        {
          vSetSharedInfo(SI_DDISC_MIXED_TYPE_MODE, SV_ON);
          vSetSharedInfo(SI_DDISC_CONC_AV_MODE, SV_OFF);
        }
        else
        {
          vSetSharedInfo(SI_DDISC_MIXED_TYPE_MODE, SV_OFF);
          vSetSharedInfo(SI_DDISC_CONC_AV_MODE, SV_ON);
        }
#endif
        switch (bType)
        {
          case FLPARM_LIST_FOLDER:
#ifdef SUPPORT_SACD
            if (IS_SACD_TYPE())
            {
              vFlCmdSet(_bFlMnListId, FLPARM_LIST_FOLDER, 0x0,
                        _wBaseDir, FLMN_DEF_FFAC, FLPARM_SO_GDIR);
            }else
#endif
            {
              vFlCmdSet(_bFlMnListId, FLPARM_LIST_FOLDER, FLPARM_INC_PARENT,
                        _wBaseDir, FLMN_DEF_FFAC | FLPARM_FF_DIR, FLPARM_SO_GDIR);
            }
            break;
          case FLPARM_LIST_DISC:
          case FLPARM_LIST_PLAYLIST:
          default:
              vFlCmdSet(_bFlMnListId, bType, 0x0,
                        0x0, FLMN_DEF_FFAC, FLPARM_SO_GDIR);
        }
        break;
      default:
        //vFlCmdDone();
        _bFlMnCurItemIdx = 0xFF;
        _bFlMnItemNs = 0xFF;
        break;
    }
  }

  return;
}

/**
 * Check the return value of command "FLCMD_CLICK_ITEM".
 */
void vFlMnRetClickItem(void) large
{
  WORD  wBlkPtr, wItem;
  BYTE  bRCode;

  wBlkPtr = FL_CMD_BLK_SA + 1; // - shift to the parameter block
  bRCode = bSharedInfo(wBlkPtr ++);

  vFlCmdDone();

  if (bRCode == FLRET_S_OK)
  {
    // - successful
    switch (bSharedInfo(wBlkPtr ++))
    {
    case FTYPE_DIR:
      // - we clicked a dir, the list goes into it.
      //    re-get items for redraw later
      vFlMnRdListInfo(_bFlMnListId);
      bLoByte(wItem) = bSharedInfo(wBlkPtr ++);
      bHiByte(wItem) = bSharedInfo(wBlkPtr);
      _bFlMnCurItemIdx = wItem % FLMN_ITEM_N;
      fgFlCmdGetItems(_bFlMnListId, wItem - _bFlMnCurItemIdx);
      break;
    case FTYPE_JPG:
      // - we clicked a JPEG file
      switch (bFlClPath())
      {
        case FL_CMDPATH_CHG_CMDTGT:
        case FL_CMDPATH_RPLC_CMDTGT:
        case FL_CMDPATH_SEL_2:
          vFlClRls();
          break;
        case FL_CMDPATH_CLICK:
          vFlClRls();
          if (_bPreview == PREVIEW_STATE_FINISHED)
          {
            // - clicked for preview
            _bPreview = PREVIEW_STATE_IDLE;
          }
          else
          {
            // - clicked for selection
            if (fgFlClLock(FL_CMDPATH_CHG_CMDTGT))
              vFlSetCmdTarget(FL_CMD_TARGET_JPEG);
          }
          break;
      }
      break;
    case FTYPE_MP1:
    case FTYPE_MP2:
    case FTYPE_MP3:
    case FTYPE_WMA:
    case FTYPE_AC3:
#ifdef OGG_AUDIO_AS_MP3
    case FTYPE_OGG:
#endif
#ifdef DDISC_FTYPE_MLP_SUPPORT
    case FTYPE_MLP:
#endif
#ifdef DDISC_ENB_CDFS
    case FTYPE_CDA:
#endif
#ifdef SUPPORT_SACD
    case FTYPE_DST:
    case FTYPE_DSD:
#endif
      // - we clicked a Audio file
      switch (bFlClPath())
      {
#ifdef ISO_LAST_MEM
        case FL_CMDPATH_INIT_0:
          vFlSetCmdTarget(FL_CMD_TARGET_MENU);
          break;
#endif

        case FL_CMDPATH_SEL_2:
          vFlMnDrawPage();
          vFlMnHiliItem(_bFlMnCurItemIdx, TRUE);
          _wFlCurAdoDir = wFlGetListBaseDir(_bFlMnListId);
          _wFlCurAdoIdx = wFlGetItemIdx(_bFlMnCurItemIdx);
          vFlIpShowInfo(IP_INFO_FILE_INDEX, 0, _wFlCurAdoIdx);
          break;
#ifdef ISO_AUTO_PLAY
        case FL_CMDPATH_ATPLY_1:
          break;
#endif
      }
      vFlClRls();
      break;
    case FTYPE_MPG:
    case FTYPE_DAT:
    case FTYPE_VOB:
    case FTYPE_AVI:
    case FTYPE_TS1:
    case FTYPE_MP4:
    case FTYPE_3GP:
    case FTYPE_TS2:
#ifdef OGG_AUDIO_AS_MP3
    case FTYPE_OGM:
#else
    case FTYPE_OGG:
#endif
    case FTYPE_TS4:
    case FTYPE_ASF:
      vFlClRls();
      vFlSetCmdTarget(FL_CMD_TARGET_MPEG);
      break;
    default:
      // - other case
      break;
    }
  }
  else
  {
    // - error occurs, do nothing
  }
 // _bFlCurAdoFileType = bSharedInfo(FL_LIST_FIELD(_bFlMnListId));

  return;
}

/**
 * Check the return value of command "FLCMD_RM_FROM_PL".
 */
void vFlMnRetRmFromPl(void) large
{
  WORD  wBlkPtr,wPos;
  BYTE  bRCode;

  wBlkPtr = FL_CMD_BLK_SA + 1; // - shift to the parameter block
  bRCode = bSharedInfo(wBlkPtr ++);

  vFlCmdDone();

  if (bRCode == FLRET_S_OK)
  {
    // - successful
    _wFlMnListLen = bSharedInfo(wBlkPtr ++);
    if (_wFlMnListLen)
    {
      if (_bFlMnCurItemIdx >= _wFlMnListLen)
        _bFlMnCurItemIdx--;
      //added by msz00049 for CR PL00105606 @07-4-24
      wPos = FL_LIST_FIELD(_bFlMnListId);
      if(FLPARM_SO_GDIR == bSharedInfo(wPos + 8))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -