?? flmenu.c
字號:
{
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 + -