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

📄 flmenu.c

📁 mtk1389L latest sourcecode enjoy
💻 C
📖 第 1 页 / 共 5 页
字号:
      {
       if(_wFlCurAdoIdx != 0xffff && _wFlCurAdoIdx >= wFlGetItemIdx(_bFlMnCurItemIdx))
       {
        _wFlCurAdoIdx --;
       }
      }
      //added end  
      if (fgFlClLock(FL_CMDPATH_PL_RM))
        fgFlCmdGetItems(_bFlMnListId, 0x0);
    }
    else
    {
      fgFlMnChgListType();
    }
  }
  else
  {
    // - error occurs
    _wFlMnListLen = 0xFF;
  }

  return;
}

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

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

  if (bRCode == FLRET_S_OK)
  {
    // - successful
    fgFlMnChgListType();
  }
  else
  {
    // - error occurs
  }
}

static void vFlMnRetQueryItem(void) large
{
  WORD  wBlkPtr, wTmp;
  BYTE  bRCode;
  BYTE  bTmp1, bTmp2;
#ifdef FSMENU_WITH_FILE_INFO
  DWRD  dwFileSz;
#endif

  wBlkPtr = FL_CMD_BLK_SA + 1;
  bRCode = bSharedInfo(wBlkPtr ++);

#ifdef FSMENU_WITH_FILE_INFO
  if (bRCode != FLRET_S_OK)
#else
  if ((bRCode != FLRET_S_OK) || !fgFlClIsLock())
#endif
    return;

  vFlCmdDone();

  switch (bFlClPath())
  {
    case FL_CMDPATH_ATPLY_0:
      vFlClNext();
      wBlkPtr += 5;
      bLoByte(wTmp) = bSharedInfo(wBlkPtr);
      bHiByte(wTmp) = bSharedInfo(wBlkPtr + 1);
      if (_wFlCurAdoDir != wTmp)
      {
        _wFlCurAdoDir = wTmp;
        bLoByte(_wFlCurAdoIdx) = bSharedInfo(wBlkPtr + 2);
        bHiByte(_wFlCurAdoIdx) = bSharedInfo(wBlkPtr + 3);
        vFlCmdSet(_bFlMnListId, FLPARM_LIST_FOLDER, FLPARM_INC_PARENT,
                  _wFlCurAdoDir, FLPARM_FF_DIR|FLMN_DEF_FFAC, FLPARM_SO_GDIR);
      }
      else
      {
        bLoByte(wTmp) = bSharedInfo(wBlkPtr + 2);
        bHiByte(wTmp) = bSharedInfo(wBlkPtr + 3);

        bTmp1 = (BYTE) (wTmp % FLMN_ITEM_N);
        bTmp2 = (BYTE) (_wFlCurAdoIdx % FLMN_ITEM_N);

        if ((bTmp1 > bTmp2) && (bTmp1 < (bTmp2 + FLMN_ITEM_N)))
        {
          vFlCmdClickItem(_bFlMnListId, _wFlCurAdoIdx);
        }
        else
        {
          fgFlCmdGetItems(_bFlMnListId, _wFlCurAdoIdx - (_wFlCurAdoIdx % FLMN_ITEM_N));
        }
     }

     break;
#ifdef FSMENU_WITH_FILE_INFO
    default:
      switch (bSharedInfo(wBlkPtr ++))
      {
        case FTYPE_MPG:
        case FTYPE_DAT:
        case FTYPE_VOB:
        case FTYPE_AVI:
        case FTYPE_TS1:
        case FTYPE_MP4:
        case FTYPE_3GP:
        case FTYPE_TS2:
        case FTYPE_OGG:
        case FTYPE_TS4:
          bLoByte(wLoWord(dwFileSz)) = bSharedInfo(wBlkPtr);
          bHiByte(wLoWord(dwFileSz)) = bSharedInfo(wBlkPtr + 1);
          bLoByte(wHiWord(dwFileSz)) = bSharedInfo(wBlkPtr + 2);
          bHiByte(wHiWord(dwFileSz)) = bSharedInfo(wBlkPtr + 3);
          vFlClRls();
          break;

        default:
          break;
      }
      break;
#endif
  }

  return;
}

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

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

  vFlCmdDone();
  //added by msz00049 for CR PL00105822
  if(fgFlClIsLock() && bFlClPath() == FL_CMDPATH_ADDTO_PLAYLIST)
  {
    vFlClRls();
  }
  //added end
  if (bRCode == FLRET_S_OK)
  {
    // - successful
//    _wFlMnPlLen = bSharedInfo(wBlkPtr ++);
    vOsdPosShow(OSD_POS_FS_INFO_BAR, OSD_MSG_FL_ADD_TO_PLAYLIST, OSD_TIMEOUT_SHORT);
  }
  else
  {
    // - error occurs
//    _wFlMnPlLen = 0xFF;
  }

  return;
}

#ifdef SUPPORT_EMD
static void vFlMnRetAddItem(void) large
{
  WORD  wBlkPtr, wItem;
  BYTE  bRCode;

  wBlkPtr = FL_CMD_BLK_SA + 1;
  bRCode = bSharedInfo(wBlkPtr ++);

  vFlCmdDone();

  if (bRCode == FLRET_S_OK)
  {
    switch (bFlClPath())
    {
    case FL_CMDPATH_MV:
      if (_fgFlSrcSet)
      {
        _fgFlFmving = TRUE;
      }
      _fgFlSrcSet = !_fgFlSrcSet;
      break;
    }
  }
  else
  {
    _fgFlSrcSet = FALSE;
    _fgFlFmving = FALSE;
  }

  vFlClRls();
}

static void vFlMnRetDelItem(void) large
{
  WORD  wBlkPtr, wItem;
  BYTE  bRCode;

  wBlkPtr = FL_CMD_BLK_SA + 1;
  bRCode = bSharedInfo(wBlkPtr ++);

  vFlCmdDone();

  if (bRCode == FLRET_S_OK)
  {
    switch (bFlClPath())
    {
    case FL_CMDPATH_MV:
      vFlClRls();
      vFlMnRdListInfo(_bFlMnListId);
      if (_wFlMnListLen)
      {
        if (fgFlClLock(FL_CMDPATH_REDRAW))
        {
          _bFlMnCurItemIdx = (_bFlMnCurItemIdx + FLMN_ITEM_N - 1) % FLMN_ITEM_N;
          fgFlCmdGetItems(_bFlMnListId, wFlGetItemIdx(_bFlMnCurItemIdx) - (WORD)_bFlMnCurItemIdx);
        }
      }
      else
      {
    #ifdef SUPPORT_EMD
        vFlMnClrPage();
        vFlMnShowPage();
        vDrawFolderName(FALSE);
        vOsdPosClear(OSD_POS_FS_INFO_BAR);
        vFlIpShowInfo(IP_INFO_EMD_ATTACH, EMD_INFO_USB, 0);
        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;
        vOsdMsgPaste(FL_MENU_WB, OSD_MSG_EMPTY_CARD);
    #endif
      }

      break;
    }
  }
  else
  {
    _fgFlSrcSet = FALSE;
    _fgFlFmving = FALSE;
  }

  vFlClRls();
}

static void vFlMnRetCancelCopy(void) large
{
  WORD  wBlkPtr, wItem;
  BYTE  bRCode;

  wBlkPtr = FL_CMD_BLK_SA + 1;
  bRCode = bSharedInfo(wBlkPtr ++);

  vFlCmdDone();

  if (bRCode == FLRET_S_OK)
  {
    switch (bFlClPath())
    {
    case FL_CMDPATH_MV:
      _fgFlSrcSet = FALSE;
      _fgFlFmving = FALSE;
      //vSendUopCmd(UOP_CHG_DEV, SV_ASSIGN_DEV, _bSourceDev, 0);
      break;
    }
  }
  else
  {
    _fgFlSrcSet = FALSE;
    _fgFlFmving = FALSE;
  }

  vFlClRls();
}
#endif  // SUPPORT_EMD

////////////////////////////////////////////////////////////////////////////////
//
// MP3 ID3
//
#ifdef ENABLE_ID3

static code BYTE _pbId3V1Tag[3] = { 'T', 'A', 'G' };
static code BYTE _pbId3V1FldLen[ID3V1_MAX] =  { 3, 30, 30, 30,  4, 30 , 1 };
static code BYTE _pbId3V1FldPos[ID3V1_MAX] =  { 0, 3, 33, 63, 93, 97, 127 };

static void vFlGetId3Info(void) large
{
  DWRD  dwAddr, dwTmpAddr;
  BYTE  bFld, i, bChar, bLen;


#ifndef MT1379_MANUFACTURE_TEST
  vPlayerShowLogo(ISO_STOP_LOGO, ISO_LOGO_COLOR);
#endif

  dwAddr = dwMakeDWord(SI_MP3_ID3TAG_B1);

  if (dwAddr == 0xffffffff)
    return;

  for (bFld=0; bFld < ID3V1_MAX; bFld++)
  {
    dwTmpAddr = dwAddr;
    for (i=0; i<_pbId3V1FldLen[bFld]; i++)
    {
      bChar = bReadDRAMTbl(bLoByte(wHiWord(dwTmpAddr)), wLoWord(dwTmpAddr));

      if (bFld == 0)
      {
        if (bChar != _pbId3V1Tag[i])
          return;
      }

      if (bChar == 0x00)
      {
        bLen = i;
        break;
      }
      else
      {
        dwTmpAddr++;
      }
    }

    if (bFld != 0)
    {
      _wStartX = (WORD) FLMN_PREVIEW_X - FSMENU_BASIC_WB_LEFT;
      _wStartY = (WORD) FLMN_PREVIEW_Y - FSMENU_BASIC_WB_TOP + 15 + 30 * bFld;
    #ifdef FLMN_DONT_SHOW_NONPRINTABLE_CHAR
      vDrawStrAddr(FL_MENU_WB, bLen, 0xffff, dwAddr, '_', 0);
    #else
      vDrawStrAddr(FL_MENU_WB, bLen, 0xffff, dwAddr, 0, 0);
    #endif
    }
    dwAddr += _pbId3V1FldLen[bFld];
  }
}
#endif

////////////////////////////////////////////////////////////////////////////////
//
// Last Memory
//

#ifdef ISO_LAST_MEM
static void vFlMnGetLastMemItem(void) large
{
  WORD  wSlotSa, wIdx;

  _wFlCurAdoIdx = 0xFFFF;

  wSlotSa = wSIItemPos(bSharedInfo(SI_DDISC_LASTMEM_GRP), 1);

  wSlotSa += ((bSharedInfo(SI_DDISC_LASTMEM_NS)-1) *
               bSharedInfo(SI_DDISC_MEM_SLOT_SZ));

  wSlotSa++;

  if (bSharedInfo(wSlotSa) != SV_MEM_SLOT_DDISC)
  {
    return;
  }

  wSlotSa += 9;
  bLoByte(wIdx) = bSharedInfo(wSlotSa);
  wSlotSa ++;
  bHiByte(wIdx) = bSharedInfo(wSlotSa);
  _wFlCurAdoDir = wIdx;

  wSlotSa ++;
  bLoByte(wIdx) = bSharedInfo(wSlotSa);
  wSlotSa ++;
  bHiByte(wIdx) = bSharedInfo(wSlotSa);

  _wFlCurAdoIdx = wIdx;
/* it seems unnecessary
  if (_wFlCurAdoDir != 0)
      _wFlCurAdoIdx++;
*/
}
#endif

////////////////////////////////////////////////////////////////////////////////
//
// General Display Function
//

/**
 * Operations for showing the basic visual components of the
 *  file browser menu.
 */
#ifdef FL_USE_LOGO

static void vFlMnShowPage(void) large
{
  // - display the menu logo
#ifndef MT1379_MANUFACTURE_TEST
  vPlayerShowLogo(ISO_STOP_LOGO, ISO_LOGO_COLOR);
#endif

#ifdef FSMENU_INFO_PANEL
  vEnableWB(FL_INFO_WB);
#endif
  vEnableWB(FL_MENU_WB);

  vSetSharedInfo(SI_HLI_STATE, SV_ON); // - turn on hili select mode

  return;
}

#else  // FL_USE_LOGO

static void vFlMnShowPage(void) large
{
  _wStartX = FLMN_BTN_0_X;
  _wEndX = FLMN_BTN_0_X + FLMN_BTN_0_W;
  _wStartY = FLMN_BTN_0_Y;
  _wEndY = FLMN_BTN_0_Y + FLMN_BTN_0_H;
  vCreateButton(FL_MENU_WB, 30, 4);
  vSetBtnCol(FL_MENU_WB, 0, 0, 3, 2);
  vUnselButton(FL_MENU_WB, 30);

  _wStartX = FLMN_BTN_1_X;
  _wEndX = FLMN_BTN_1_X + FLMN_BTN_1_W;
  _wStartY = FLMN_BTN_1_Y;
  _wEndY = FLMN_BTN_1_Y + FLMN_BTN_1_H;
  vCreateButton(FL_MENU_WB, 30, 4);
  vSetBtnCol(FL_MENU_WB, 0, 0, 3, 2);
  vSelButton(FL_MENU_WB, 30);

  _wStartX = FLMN_BTN_2_X;
  _wEndX = FLMN_BTN_2_X + FLMN_BTN_2_W;
  _wStartY = FLMN_BTN_2_Y;
  _wEndY = FLMN_BTN_2_Y + FLMN_BTN_2_H;
  vCreateButton(FL_MENU_WB, 30, 4);
  vSetBtnCol(FL_MENU_WB, 0, 0, 3, 2);
  vSelButton(FL_MENU_WB, 30);

  _wStartX = FLMN_BTN_3_X;
  _wEndX = FLMN_BTN_3_X + FLMN_BTN_3_W;
  _wStartY = FLMN_BTN_3_Y;
  _wEndY = FLMN_BTN_3_Y + FLMN_BTN_3_H;
  vCreateButton(FL_MENU_WB, 30, 4);
  vSetBtnCol(FL_MENU_WB, 0, 0, 3, 2);
  vSelButton(FL_MENU_WB, 30);

  vDrawSpin();
}
#endif  // FL_USE_LOGO

/**
 * This function draw the file name of the given item by the
 *  new OSD command "vpast_msg_addr".
 *
 * It also demos how to get item info from descriptor.
 */
void vFlMnDrawItem(BYTE bItemIdx) large
{
  DWRD dwAddr;
  WORD wPos;
  BYTE bFType, bStrLen;
  WORD wIdx, wDirIdx;
  BYTE pbStr[4];
  BOOL fgIsPrnt = TRUE;

  wPos = FL_ITEM_FIELD(bItemIdx);

  // - collect misc info
  bFType = bSharedInfo(wPos + 5);
  bLoByte(wIdx) = bSharedInfo(wPos + 6);
  bHiByte(wIdx) = bSharedInfo(wPos + 7);
  if (bFType == FTYPE_DIR)
  {
    bLoByte(wDirIdx) = bSharedInfo(wPos + 12);
    bHiByte(wDirIdx) = bSharedInfo(wPos + 13);
  }

  // - collect name info
  dwAddr = dwMakeDWord(wPos);
  bStrLen = bSharedInfo(wPos + 4);

  // - preprocess the name string
  if (!((bStrLen == 1) && (bReadDRAMTbl(bLoByte(wHiWord(dwAddr)), wLoWord(dwAddr)) == 0x01)))
  {
    fgIsPrnt = FALSE;
    vFlMnPProcName(&dwAddr, &bStrLen);
  }

  // - paste icon
  vOsdPasteBmpXY(_prFlMnItemTbl[bItemIdx].wLeft,
                 _prFlMnItemTbl[bItemIdx].wTop,
                 FL_MENU_WB, bFlMnGetIconIdx(bFType));

  // - paste the message of file name
  _wStartX = _prFlMnItemTbl[bItemIdx].wLeft + FL_ICON_W;
  _wStartY = _prFlMnItemTbl[bItemIdx].wTop;

  if (fgIsPrnt)
  {
    // - special case " .." as the string of parent dir
    pbStr[0] = 3;
    pbStr[1] = ' ';
    pbStr[2] = pbStr[3] = '.';
    vOsdShowStr(FL_MENU_WB, pbStr);
  }
  else
  {
  #ifdef FLMN_DONT_SHOW_NONPRINTABLE_CHAR
    vDrawStrAddr(FL_MENU_WB, bStrLen, 0xffff, dwAddr, '_', 0);

⌨️ 快捷键说明

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