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

📄 flmenu.c

📁 手机8032的完整代码。吐血推荐。小做改动就可以生产。
💻 C
📖 第 1 页 / 共 5 页
字号:

#ifdef DATA_DISC_SUPPORT_PLAY_LIST

/**
 * 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();

  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;
}
#endif


#ifdef UNICODE_SUPPORT_COPY
#ifdef SUPPORT_USB_COPY
static void vFlMnRetAddItem(void) large
{
  WORD  wBlkPtr, wItem;
  BYTE  bRCode;
  
  wBlkPtr = FL_CMD_BLK_SA + 1;
  bRCode = bSharedInfo(wBlkPtr++);
  vFlCmdDone();

  vFlClRls();
  //SDS, if the select folder is empty, it will not copy this folder, just return ok and let 8032 go on to copy next item
  //if it return FLRET_S_OK and SI_DDISC_NO_AUDIO is TRUE, it means it is a empty folder, just go on to copy next file
  if (bRCode == FLRET_S_OK)
  {
    if (bSharedInfo(SI_DDISC_NO_AUDIO) == TRUE)
    {
      if (_bUSBCopyState == USB_COPY_STATE_COPYING)
      {
        // move file
        vFlMnUSBCp();
      }
	  
      vSetSharedInfo(SI_DDISC_NO_AUDIO, FALSE);
      }
    }
  else
  {
    vUSBCopyStateExit(FALSE,FALSE);
    //do nothing here
  }
}

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

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

  vFlCmdDone();

  vFlClRls();

  if (bRCode == FLRET_S_OK)
  {
    if (_bUSBCopyState == USB_COPY_STATE_ERASING)
        {
      //check the next file
      vFlMnUSBDel();
        }
	
    return;
      }
      else
      {
    // exit copy state
    vUSBCopyStateExit(TRUE,TRUE);
  }
      }

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

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

  vFlCmdDone();

  vFlClRls();
  vUSBCopyStateExit(FALSE,FALSE);
}

#ifdef UNICODE_SUPPORT_COPY
static void vFlMnRetCopyChk(void) large
{
  WORD  wBlkPtr, wItem;
  BYTE  bRCode;

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

  vFlClRls();

  //show USB COPY confirm page
  vUSBCpConfirmShowMenu();
}
#endif

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

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

  vFlCmdDone();

  vFlClRls();
}
#endif  

#else
#ifdef SUPPORT_EMD
#ifdef SUPPORT_USB_COPY
static void vFlMnRetAddItem(void) large
{
  WORD  wBlkPtr, wItem;
  BYTE  bRCode;
  
#ifdef USB_COPY_DEBUG
  DRS232LogS("vFlMnRetAddItem, _fgFlSrcSet:");
  DRS232LogB(_fgFlSrcSet, 0, 0, 0);
#endif

  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();

#ifdef USB_COPY_DEBUG
  DRS232LogS("vFlMnRetAddItem, _fgFlSrcSet:");
  DRS232LogB(_fgFlSrcSet, 0, 0, 0);
#endif
}

#if 0
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();
}
#else
static void vFlMnRetDelItem(void) large
{
}
#endif

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_USB_COPY
#endif  // SUPPORT_EMD

#endif
/**
 * Display a page with the prepared items. Mark the hovered item by hili if
 *  necessary.
 *
 * DES:
 *  1. clear the previous display
 *  2. redraw the slider
 *  3. draw the full path
 *  4. draw each items
 *
 * NOTE: demo how to get the item info when the command "FLCMD_GET_ITEMS"
 *  suceeds.
 */
static void vFlMnDrawPage(void) large
{
  BYTE  bItemIdx;

  #ifdef AUTO_SWITCH_USB_MCR
  if ((_bSwitchUSBMCRFlag == 0xf0)||(_bSwitchUSBMCRFlag ==0x3F))
     {
       _bSwitchTimeCnt = 0;
       _bSwitchUSBMCRFlag = 0xff;
       _fgInFileMenuFlag = TRUE;
     }
   #endif 

#ifdef CDG_SUPPORT
    // 20050608, PL00001079, if CD-G is playing, don't redraw page
    if((bSharedInfo(SI_CDG_DISC) == SV_ON) && (bSharedInfo(SI_PBC_STATE) != SV_STOP) && (bSharedInfo(SI_PBC_STATE) != SV_PBC_INIT))
      return ;
#endif

  // - clear the page first
  vFlMnClrPage();

  // - redraw the slider
  _wStartX = FS_SLIDER_X;
  _wEndX = FS_SLIDER_X + FS_SLIDER_W;
  _wStartY = FS_SLIDER_Y;
  _wEndY = FS_SLIDER_Y + FS_SLIDER_H;
  vRectangle(FL_MENU_WB, 0, 0, 1, 0);
#ifdef SHOW_FS_SLIDER
  vDrawSlider(wFlGetItemIdx(_bFlMnCurItemIdx), _wFlMnListLen);
#endif

  // - draw the full path name
  if (!_fgFlIsAutoPlay)
  {
    if (bSharedInfo(FL_LIST_FIELD(_bFlMnListId)) == FLPARM_LIST_FOLDER)
      vDrawFolderName(TRUE);
    else
      vDrawFolderName(FALSE);
  }

  _bFlMnMemLock = FALSE;
  //vFlClRls();

  // - draw items
  vSetMsgCol4(FL_MENU_WB, 0, 0, 2, 3);
  for (bItemIdx = 0;
       (bItemIdx < _bFlMnItemNs) && (bItemIdx < FLMN_PAGE_SZ);
       bItemIdx ++)
  {
    vFlMnDrawItem(bItemIdx);
  }
  vSetMsgCol4(FL_MENU_WB, 0, 0, 3, 2);
#ifdef UNICODE_SUPPORT_COPY
//Martin_20080402: Shorten too-long unicode file name: CQ(PL00112286, PL00112090, PL00112283)
#ifdef JPG_PREVIEW_SUPPORT
#ifdef SUPPORT_USB_COPY
  if(_bUSBCopyState == USB_COPY_STATE_NONE)
  {
    _wStartX = _prFlMnItemTbl[0].wRight;
    _wStartY = _prFlMnItemTbl[0].wTop;  //PL00112943, dont't clear path display
    _wEndX =  (SETUP_ITEM_END_X - SETUP_ITEM_START_X);
    _wEndY =  (SETUP_ITEM_END_Y -SETUP_ITEM_START_Y);
    vRectangle(FL_MENU_WB, 0, 0, 1, 0);
  }
#else
  _wStartX = _prFlMnItemTbl[0].wRight;
    _wStartY = _prFlMnItemTbl[0].wTop;  //PL00112943, dont't clear path display
  _wEndX =  (SETUP_ITEM_END_X - SETUP_ITEM_START_X);
  _wEndY =  (SETUP_ITEM_END_Y -SETUP_ITEM_START_Y);
  vRectangle(FL_MENU_WB, 0, 0, 1, 0);
#endif
#endif
#endif

  return;
}

/**
 * Redraw the display of the object "file list menu".
 */
#ifdef WB_ALLOC_MIN
void vFlMnRecover(void) large
{
  if (_wFlMnListLen)
  {
  // - enable the white boards used by this object
  vCreateWBEx(FL_MENU_WB);
  vFlMnDrawInfoPanel(_bFlIpState);
  vFlMnDrawPage();
  vFlMnHiliItem(_bFlMnCurItemIdx, TRUE);

  vFlIpShowInfo(IP_INFO_FILE_INDEX, 0, wFlGetItemIdx(_bFlMnCurItemIdx));
#if 1//def JPG_INFO
  vOsdPosClear(OSD_POS_FS_INFO_BAR);
#endif
#ifdef JPG_PREVIEW_SUPPORT
  if (_bFlMnItemType == FTYPE_STILL)
  {
    _bPreview = PREVIEW_STATE_START;
  }
#endif

  vFlUpdateVfd(TRUE);
  }
  else
  {
#ifdef SUPPORT_EMD
    vFlMnShowPage();
    vFlMnDrawInfoPanel(_bFlIpState);
    vFlIpShowInfo(IP_INFO_FILE_INDEX, 0, 0);
    _wStartX = FLMN_BTN_1_X + FLMN_MENU_BORDER + 60;
    _wStartY = FLMN_BTN_1_Y + FLMN_MENU_BORDER + 2;
    //Alan Cheng: temporarily for porting
    vOsdMsgPaste(FL_MENU_WB, OSD_MSG_EMPTY_CARD);
#endif
  }

#ifdef CDG_SUPPORT
  if(bSharedInfo(SI_CDG_DISC) == SV_ON)
  {
    if(bSharedInfo(SI_PBC_STATE) == SV_STOP) // != SV_PLAY  //windy
    {
      // tmp solution, if logo is not changed, not show it again.
      //if (_bIRKey0 != IR_SETUP)//deleted by msz00049 for fix CR PL00004053 07-8-20
      {
    #ifdef SUPPORT_CAPTURE_LOGO
        vPlayerShowLogo(ISO_NOMAL_LOGO, ISO_LOGO_COLOR);
    #else
        vPlayerShowLogo(ISO_STOP_LOGO, ISO_LOGO_COLOR);
    #endif
      }
      vEnableWB(FL_INFO_WB);
      vEnableWB(FL_MENU_WB);
    }
    // 20050527, need to enable FL_MENU_WB to show repeat type..
    else
    {
      vEnableWB(FL_MENU_WB);
      vClearWB(FL_MENU_WB);
    }
  }
#endif

  return;
}
#else
void vFlMnRecover(void) large
{
  // - disable all white board used outside
  //vHideHL(FSMENU_HOVER_HILIT);
  //vOsdShowWb(OSD_WB_FULL_SCR);

  // - enable the white boards used by this object
  vEnableWB(FL_INFO_WB);    // - for dynamic info
  vEnableWB(FL_MENU_WB);    // - for menu
#if 1//def JPG_INFO
  vOsdPosClear(OSD_POS_FS_INFO_BAR);
#endif
#ifdef JPG_PREVIEW_SUPPORT
  if (_bFlMnItemType == FTYPE_STILL)
  {
    _bPreview = PREVIEW_STATE_START;
  }
#endif

  vFlUpdateVfd(TRUE);

  return;
}
#endif

/**
 * Clear all item on the page.
 */
void vFlMnClrPage(void) large
{
  BYTE bItemIdx;

  _wStartX = FS_SLIDER_X;
  _wEndX = FS_SLIDER_X + FS_SLIDER_W;
  _wStartY = FS_SLIDER_Y;
  _wEndY = FS_SLIDER_Y + (WORD) FS_SLIDER_H;
  vRectangle(FL_MENU_WB, 0, 0, 1, 0);

  // - clear OSD message
  for (bItemIdx = 0; bItemIdx < FLMN_PAGE_SZ; bItemIdx ++)
  {
    vOsdClearPosXY(_prFlMnItemTbl[bItemIdx].wLeft,
                   _prFlMnItemTbl[bItemIdx].wTop,
                   FL_MENU_WB,
                   FLMN_ITEM_W, FLMN_ITEM_H);
  }

  return;
}

WORD wFlMnGetListBaseDir(BYTE bListId) large
{
  WORD  wPos, wBaseDir;

  if (bListId > 4)
    return 0xFFFF;

  wPos = FL_LIST_FIELD(bListId);
  bLoByte(wBaseDir) = bSharedInfo(wPos + 2);
  bHiByte(wBaseDir) = bSharedInfo(wPos + 3);

  return wBaseDir;
}

#if 0
static BOOL fgFlMnIsCurrPlay(BYTE bItemIdx) large
{
  if ((_wFlCurAdoDir == 0xFFFF) || (_wFlCurAdoIdx == 0xFFFF))
    return FALSE;

  if ((_wFlCurAdoDir == wFlMnGetListBaseDir(_bFlMnListId)) &&
      (_wFlCurAdoIdx == wFlGetItemIdx(bItemIdx)))
      return TRUE;

  return FALSE;

⌨️ 快捷键说明

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