📄 flmenu.c
字号:
#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 + -