📄 fljview.c
字号:
vFlJvDgtRdIdx(_bFlJvDgtItemNs - 1);
}
break;
case SI_JPG_MODE:
// - the module back from digest mode
if (FL_PARM1(_dwIrDoneParm) != JPEGMOD_DIGEST)
{
// - bury the menu
vFlJvBuryDgtMn();
}
break;
case SI_JPG_SLIDE_SHOW_DONE:
// - slide show done
//vOsdShowError(SV_ERR_GENERAL, FL_MSG_TIMEOUT);
break;
case FL_CMD_ASSERT:
// - "FS LIST" command ack, this should not happen here
default:
// - other notification and command ack.
return FALSE;
}
return TRUE;
}
#endif //0
////////////////////////////////////////////////////////////////////////////////
// Jpeg View IR Key Handler
/**
* IR_ENTER handlder of "JVIEWER DIGEST MENU".
*/
void vFlJvDgtMnIrEnterHdr(void) large
{
switch (_bFlJvDgtMnOn)
{
case FLJVDGTMN_OBJ_MN:
// - select item from item menu
vSendUopCmd(UOP_DIGITAL_BTN, _bFlJvDgtItemIdx, 0x0, 0x0);
break;
case FLJVDGTMN_BTN_SS:
vSendUopCmd(UOP_PLAY, 0x00, bSharedInfo(SI_THUMBNAIL_1_IDX_LO), bSharedInfo(SI_THUMBNAIL_1_IDX_HI));
break;
case FLJVDGTMN_BTN_HP:
// - show help menu
vFlSetCmdTarget(FL_CMD_TARGET_HELP);
//vOsdShowError(SV_ERR_GENERAL, FL_MSG_TIMEOUT);
break;
case FLJVDGTMN_BTN_NT:
case FLJVDGTMN_BTN_PV:
//_bFlJvDgtItemIdx = 0;
//_bFlJvDgtMnOn = FLJVDGTMN_OBJ_MN;
/*
Mark it by Bright_liu 2005/09/12/, for CQ(PL00001222):
*/
#if 0 // #ifdef HILI_USE_OSD
// - Clean the OSD Highlight of SS/HELP MENU/PREV/NEXT.
_wStartX = DGT_BTN_SS_L;
_wEndX = DGT_BTN_SS_L + DGT_BTN_SS_W + DGT_BTN_HP_W + DGT_BTN_PV_W
+ DGT_BTN_NT_W + 3*DGT_BTN_H_GAP + DGT_BTN_HL_RB;
_wStartY = DGT_BTN_T;
_wEndY = _wStartY + DGT_BTN_PV_H;
vChgColRep(FL_DGTMN_WB, FLJVDGTMN_BTN_COLOR, 0);
#endif
if (_bFlJvDgtMnOn == FLJVDGTMN_BTN_NT)
vSendUopCmd(UOP_NEXT, 0x0, 0x0, 0x0);
else
vSendUopCmd(UOP_PREVIOUS, 0x0, 0x0, 0x0);
break;
default:
// - error handling
break;
}
}
/**
* General IR_TRANS_EFF handler of "JVIEW and JVIEW DIGEST MENU".
*/
static BOOL fgFlJvOnIrTransEff(void) large
{
_bFlJvTransEff = (++_bFlJvTransEff) % FLJV_MAX_TRANS_EFF;
vSetSharedInfo(SI_JPG_TRANSITION_EFFECT, _rFlJvTransEff[_bFlJvTransEff].bCode);
vFlShowError(OSD_POS_ERROR, _rFlJvTransEff[_bFlJvTransEff].wMsg, 4);
return TRUE;
}
static BOOL fgFlJvOnIrPlay(void) large
{
if (fgIsInputStateValid(INPUT_STATE_PCD_ZOOM))
{
vFlShowError(OSD_POS_ERROR, OSD_MSG_ERROR, OSD_TIMEOUT_SHORT);
return TRUE;
}
if (_bFlVdoPbcStt == SV_PAUSE)
{
#ifdef MT1389_REV_HD
// - Resume to decoding.
vSendUopCmd(UOP_PLAY, 0x0, 0x0, 0x0);
#else
vSendUopCmd(UOP_PLAY, 0x00, bSharedInfo(SI_JPG_ITEM_IDX_LO), bSharedInfo(SI_JPG_ITEM_IDX_HI));
#endif
_bFlVdoPbcStt = SV_PLAY;
}
return TRUE;
}
/**
* IR_PAUSE handler of "JVIEW".
*
* NOTE: PCD only. to stop the slide show but do _NOT_ show digest.
*/
static BOOL fgFlJvOnIrPause(void) large
{
#ifdef FLJV_PAUSE_PLAY_SHOW_NEXT
WORD wIdx, wTotal;
#endif
if (fgIsInputStateValid(INPUT_STATE_PCD_ZOOM))
{
vFlShowError(OSD_POS_ERROR, OSD_MSG_ERROR, OSD_TIMEOUT_SHORT);
return TRUE;
}
if (_bFlVdoPbcStt == SV_PAUSE)
{
#ifdef FLJV_PAUSE_PLAY_SHOW_NEXT
wIdx = (WORD) bSharedInfo(SI_JPG_ITEM_IDX_HI) * 256 + (WORD) bSharedInfo(SI_JPG_ITEM_IDX_LO);
// todo : check if wIdx is the last picture
wIdx ++;
vSendUopCmd(UOP_PLAY, 0x00, bLoByte(wIdx), bHiByte(wIdx));
#else
#ifdef MT1389_REV_HD
vSendUopCmd(UOP_PAUSE, 0x0, 0x02, 0x0);
#else
vSendUopCmd(UOP_PLAY, 0x00, bSharedInfo(SI_JPG_ITEM_IDX_LO), bSharedInfo(SI_JPG_ITEM_IDX_HI));
#endif
#endif
_bFlVdoPbcStt = SV_PLAY;
return TRUE;
}
//else if (bSharedInfo(SI_PBC_STATE) == SV_PLAY)
else if (_bFlVdoPbcStt == SV_PLAY)
{
#ifdef MT1389_REV_HD
vSendUopCmd(UOP_PAUSE, 0x0, 0x01, 0x0);
#else
vSendUopCmd(UOP_PAUSE, 0x0, 0x0, 0x0);
#endif
_bFlVdoPbcStt = SV_PAUSE;
return TRUE;
}
return FALSE;
}
#ifdef SUPPORT_EMD
static BOOL fgFlJvOnIrCopy(void) large
{
DWRD dwAddr;
BYTE bLen;
//WORD wPos;
if (!_fgFlSrcSet)
{
if (fgFlClLock(FL_CMDPATH_MV))
{
#if 0
wPos = FL_ITEM_FIELD(_bFlMnCurItemIdx);
dwAddr = dwMakeDWord(wPos);
vFlCmdAddItem(FL_ADD_FILE_TO_CB,
wFlGetListBaseDir(_bFlMnListId), dwAddr, bSharedInfo(wPos + 4), 0);
#endif
dwAddr = dwMakeDWord(SI_JPG_ITEM_INFO_B1);
dwAddr += 4;
bLen = bReadDRAMTbl(bLoByte(wHiWord(dwAddr)), wLoWord(dwAddr));
dwAddr++;
vFlCmdAddItem(FL_ADD_FILE_TO_CB,
wFlGetListBaseDir(_bFlMnListId), dwAddr, bLen, 0);
}
}
else
{
if (fgFlClLock(FL_CMDPATH_MV))
{
vFlCmdAddItem(FL_ADD_CB_TO_FILE,
wFlGetListBaseDir(_bFlMnListId), 0, 0,0);
}
}
return TRUE;
}
static BOOL fgFlJvOnIrDelete(void) large
{
return TRUE;
}
#endif
/**
* IR_DIR (LEFT, RIGHT, UP and DOWN) handler of "JVIEW DIGEST MENU".
*/
void vFlJvDgtMnIrDirHdr(void) large
{
switch (_bFlJvDgtMnOn)
{
case FLJVDGTMN_OBJ_MN:
vFlJvDgtMnMnIrDirHdr();
break;
case FLJVDGTMN_BTN_SS:
case FLJVDGTMN_BTN_HP:
case FLJVDGTMN_BTN_NT:
case FLJVDGTMN_BTN_PV:
vFlJvDgtMnBtnsIrDirHdr();
break;
default:
// - error handling
break;
}
return;
}
/**
* IR_DIR (LEFT, RIGHT, UP and DOWN) handler of "JVIEW DIGEST MENU ITEM MENU".
*
* NOTE: Adjust the global variable _bFlJvDgtItemIdx to indicate
* the current item.
*/
void vFlJvDgtMnMnIrDirHdr(void) large
{
BYTE bItemNs = bSharedInfo(SI_THUMBNAIL_16_IDX_HI) + 1;
switch (_bIRKey)
{
case IR_RIGHT:
// - move to next right item
_bFlJvDgtItemIdx ++;
if ((_bFlJvDgtItemIdx % DGT_MN_X_DIM_NS) == 0)
_bFlJvDgtItemIdx -= DGT_MN_X_DIM_NS;
else if (_bFlJvDgtItemIdx >= bItemNs)
_bFlJvDgtItemIdx -= (bItemNs % DGT_MN_X_DIM_NS);
break;
case IR_LEFT:
// - move to next left item
_bFlJvDgtItemIdx = ((_bFlJvDgtItemIdx % DGT_MN_X_DIM_NS) == 0) ?
(_bFlJvDgtItemIdx + (DGT_MN_X_DIM_NS - 1)) :
(_bFlJvDgtItemIdx - 1);
if (_bFlJvDgtItemIdx >= bItemNs)
_bFlJvDgtItemIdx = bItemNs -1;
//_bFlJvDgtItemIdx -= (DGT_MN_NS - bItemNs);
break;
case IR_UP:
// - move to upper item
if (_bFlJvDgtItemIdx < DGT_MN_X_DIM_NS) // - first row
// - move to function buttons
_bFlJvDgtMnOn = FLJVDGTMN_BTN_SS;
else
_bFlJvDgtItemIdx -= DGT_MN_X_DIM_NS;
break;
case IR_DOWN:
// - move to lower item
if ((_bFlJvDgtItemIdx + DGT_MN_X_DIM_NS) >= bItemNs)
_bFlJvDgtMnOn = FLJVDGTMN_BTN_SS;
else
_bFlJvDgtItemIdx += DGT_MN_X_DIM_NS;
break;
default:
// - this should _NOT_ happen
return;
}
vFlJvDgtMnHil();
return;
}
/**
* IR_DIR (LEFT, RIGHT, UP and DOWN) handler of "JVIEW DIGEST MENU BUTTONS".
*/
void vFlJvDgtMnBtnsIrDirHdr(void) large
{
switch (_bIRKey)
{
case IR_RIGHT:
// - move the next button
if (_bFlJvDgtMnOn == FLJVDGTMN_BTN_SS)
_bFlJvDgtMnOn = FLJVDGTMN_BTN_HP;
else if (_bFlJvDgtMnOn == FLJVDGTMN_BTN_HP)
_bFlJvDgtMnOn = FLJVDGTMN_BTN_PV;
else if (_bFlJvDgtMnOn == FLJVDGTMN_BTN_PV)
_bFlJvDgtMnOn = FLJVDGTMN_BTN_NT;
else
_bFlJvDgtMnOn = FLJVDGTMN_BTN_SS;
break;
case IR_LEFT:
// - move to previous button
if (_bFlJvDgtMnOn == FLJVDGTMN_BTN_SS)
_bFlJvDgtMnOn = FLJVDGTMN_BTN_NT;
else if (_bFlJvDgtMnOn == FLJVDGTMN_BTN_HP)
_bFlJvDgtMnOn = FLJVDGTMN_BTN_SS;
else if (_bFlJvDgtMnOn == FLJVDGTMN_BTN_PV)
_bFlJvDgtMnOn = FLJVDGTMN_BTN_HP;
else
_bFlJvDgtMnOn = FLJVDGTMN_BTN_PV;
break;
case IR_UP:
case IR_DOWN:
default:
// - move to menu
_bFlJvDgtMnOn = FLJVDGTMN_OBJ_MN;
break;
}
vFlJvDgtMnHil();
return;
}
/**
* Focus on object "MAIN VIDEO - JVIEWER".
*/
BOOL fgFlJvOnMv(void) large
{
BYTE i;
BOOL fgIsGrabbed = TRUE;
#ifndef JPEG_DDISC_DIGEST_ENABLE
if (bSharedInfo(SI_DISC_TYPE) != SV_PCD)
{
if (_bIRKey == IR_STOP)
_bIRKey = IR_ROOT_MENU;
}
#endif
if (bSharedInfo(SI_DISC_TYPE) == SV_PCD)
{
if (_bIRKey == IR_ROOT_MENU)
_bIRKey = IR_STOP;
}
for (i = 0; i < sizeof(_rFlJvIrHandler) / sizeof(_rFlJvIrHandler[0]); i++)
{
if (_bIRKey == _rFlJvIrHandler[i].bIrKey)
{
fgIsGrabbed = _rFlJvIrHandler[i].pHandler();
return fgIsGrabbed;
}
}
switch (_bIRKey)
{
#if 0
case IR_CMD_DONE:
fgIsGrabbed = fgFlJvMvIrCmdDoneHdr();
break;
case IR_STOP:
// - turn on digest menu
fgIsGrabbed = fgFlJvDgtOn();
break;
#endif
#if 0
case IR_LEFT:
case IR_RIGHT:
case IR_UP:
case IR_DOWN:
fgIsGrabbed = FALSE;
break;
#endif
case IR_ROOT_MENU:
// - back to file menu state
fgIsGrabbed = TRUE;
// - stop the JPEG module and turn back to "PBC_STOP_STATE"
// the JPEG module will go back to background and
// we will get the PB_MODULE notification
//vSendUopCmd(UOP_STOP, SV_JPG_STOP_ALL_STATE, 0x0, 0x0);
if (fgFlClLock(FL_CMDPATH_RPLC_CMDTGT))
vFlSetCmdTarget(FL_CMD_TARGET_MENU);
//vFlCtrlRefocus(IR_ROOT_MENU);
break;
#if 0
case IR_PROGRAM:
fgIsGrabbed = fgFlJvOnIrTransEff();
break;
case IR_PLAY_ENTER:
case IR_PLAY:
case IR_ENTER:
case IR_PLAY_PAUSE:
fgIsGrabbed = fgFlJvOnIrPlay();
break;
case IR_PAUSE:
fgIsGrabbed = fgFlJvOnIrPause();
break;
#endif
case IR_FF:
case IR_FR:
vFlShowError(OSD_POS_ERROR, OSD_MSG_ERROR, OSD_TIMEOUT_SHORT);
/*
if (bSharedInfo(SI_DISC_TYPE) == SV_PCD)
vFlShowError(OSD_POS_ERROR, SV_ERR_DISC_NOT_SUPPORT, OSD_TIMEOUT_SHORT);
else
vFlShowError(OSD_POS_ERROR, SV_ERR_GENERAL, OSD_TIMEOUT_SHORT);
*/
fgIsGrabbed = TRUE;
break;
#if 0
case IR_SELECT_DONE:
fgIsGrabbed = fgFlJvOnIrSelDone();
break;
#endif
#ifdef SUPPORT_EMD
case IR_COPY:
fgIsGrabbed = fgFlJvOnIrCopy();
break;
case IR_DELETE:
fgIsGrabbed = fgFlJvOnIrDelete();
break;
#endif
#ifdef JPEG_MTKMARKER
case IR_DISPLAY:
vSendUopCmd(UOP_MEMORY, 0x0, 0x0, 0x0);
break;
#endif
default:
fgIsGrabbed = FALSE;
break;
}
return fgIsGrabbed;
}
/**
* Focus on JVIEW digest menu.
*/
BOOL fgFlJvOnDgtMn(void) large
{
BOOL fgIsGrabbed = TRUE;
switch (_bIRKey)
{
case IR_CMD_DONE:
fgIsGrabbed = fgFlJvDgtMnIrCmdDoneHdr();
break;
case IR_PLAY:
case IR_ENTER:
case IR_PLAY_ENTER:
case IR_PLAY_PAUSE:
vFlJvDgtMnIrEnterHdr();
break;
case IR_SELECT_DONE:
fgIsGrabbed = fgFlJvOnIrSelDone();
break;
case IR_STOP:
break;
case IR_LEFT:
case IR_RIGHT:
case IR_UP:
case IR_DOWN:
vFlJvDgtMnIrDirHdr();
break;
case IR_NEXT:
case IR_PREV:
//_bFlJvDgtItemIdx = 0;
//_bFlJvDgtMnOn = FLJVDGTMN_OBJ_MN;
fgIsGrabbed = FALSE;
break;
case IR_ROOT_MENU:
if (bSharedInfo(SI_DISC_TYPE) != SV_PCD)
{
if (fgFlClLock(FL_CMDPATH_RPLC_CMDTGT))
{
vFlSetCmdTarget(FL_CMD_TARGET_MENU);
}
}
else
{
vFlShowError(OSD_POS_ERROR, OSD_MSG_ERROR, OSD_TIMEOUT_SHORT);
}
break;
#ifdef SUPPORT_EMD
case IR_COPY:
fgIsGrabbed = fgFlJvOnIrCopy();
break;
case IR_DELETE:
fgIsGrabbed = fgFlJvOnIrDelete();
break;
#endif
default:
fgIsGrabbed = FALSE;
break;
}
return fgIsGrabbed;
}
/**
* IR dispatcher when the focus is on the object.
*/
BOOL fgFlOnJv(void) large
{
BOOL fgIsGrabbed;
switch (_bFlJvOn)
{
case FLJV_OBJ_MV:
fgIsGrabbed = fgFlJvOnMv();
break;
case FLJV_OBJ_DGTMN:
fgIsGrabbed = fgFlJvOnDgtMn();
break;
default:
fgIsGrabbed = FALSE;
break;
}
// - the second level handler
if (fgIsGrabbed == FALSE)
{
switch (_bIRKey)
{
case IR_CMD_DONE:
fgIsGrabbed = TRUE;
break;
default:
// - keep the fgIsGrabbed as "FALSE" to pass the IRs
break;
}
}
return fgIsGrabbed;
}
void vFlJvChgLang(BYTE bLang) large
{
vFlJvDrawDgtBtns(bLang);
vFlJvDgtMnHil () ; // Redraw hilight
}
#if 0
void vFlJvHandleUopRet(BYTE bUopId) large
{
if (_bFlWaitUopRet == bUopId)
{
switch(bUopId)
{
case UOP_NEXT:
case UOP_PREVIOUS:
// _bFlJvDgtItemIdx = 0;
// _bFlJvDgtMnOn = FLJVDGTMN_OBJ_MN;
break;
/*
case UOP_STOP:
switch (_bFlUopRetJob)
{
}
break;
*/
}
}
}
#endif
#endif // #ifdef PLAYER_FLMENU
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -