📄 fljview.c
字号:
//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, bSharedInfo(SI_THUMBNAIL_1_IDX_HI), bSharedInfo(SI_THUMBNAIL_1_IDX_LO), 0x00);
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:
//_bFlJvDgtItemIdx = 0;
//_bFlJvDgtMnOn = FLJVDGTMN_OBJ_MN;
vSendUopCmd(UOP_NEXT, 0x0, 0x0, 0x0);
break;
case FLJVDGTMN_BTN_PV:
//_bFlJvDgtItemIdx = 0;
//_bFlJvDgtMnOn = FLJVDGTMN_OBJ_MN;
vSendUopCmd(UOP_PREVIOUS, 0x0, 0x0, 0x0);
break;
default:
// - error handling
break;
}
return;
}
#endif //JPEG_DDISC_DIGEST_ENABLE
/**
* General IR_TRANS_EFF handler of "JVIEW and JVIEW DIGEST MENU".
*/
static BOOL fgFlJvOnIrTransEff(void) large
{
#if defined(TRANSITION_SPECIAL_EFFECT)
_bFlJvTransEff = (++_bFlJvTransEff) % FLJV_MAX_TRANS_EFF;
vSetSharedInfo(SI_JPG_TRANSITION_EFFECT, _rFlJvTransEff[_bFlJvTransEff].bCode);
vFlShowError(OSD_POS_ERROR, _rFlJvTransEff[_bFlJvTransEff].wMsg, 4);
#endif
return TRUE;
}
static BOOL fgFlJvOnIrPlay(void) large
{
//if (bSharedInfo(SI_PBC_STATE) == SV_PAUSE)
if (_bFlVdoPbcStt == SV_PAUSE)
{
vSendUopCmd(UOP_PLAY, 0x00, bSharedInfo(SI_JPG_ITEM_IDX_LO), bSharedInfo(SI_JPG_ITEM_IDX_HI));
_bFlVdoPbcStt = SV_PLAY ; //nicle[04\07\27] fix jpeg pause once, can't pause anymore.
}
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
// 20050412, though SOPPORT_PCD is not defined, we still use INPUT_STATE_PCD_ZOOM for JPEG
//#if defined(SOPPORT_PCD)
if (fgIsInputStateValid(INPUT_STATE_PCD_ZOOM))
{
vFlShowError(OSD_POS_ERROR, OSD_MSG_ERROR, OSD_TIMEOUT_SHORT);
return TRUE;
}
//#endif
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
vSendUopCmd(UOP_PLAY, 0x00, bSharedInfo(SI_JPG_ITEM_IDX_LO), bSharedInfo(SI_JPG_ITEM_IDX_HI));
#endif
_bFlVdoPbcStt = SV_PLAY;
return TRUE;
}
//else if (bSharedInfo(SI_PBC_STATE) == SV_PLAY)
else if (_bFlVdoPbcStt == SV_PLAY)
{
vSendUopCmd(UOP_PAUSE, 0x0, 0x0, 0x0);
_bFlVdoPbcStt = SV_PAUSE;
return TRUE;
}
return FALSE;
}
#ifdef JPEG_DDISC_DIGEST_ENABLE
/**
* 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;
}
#endif
/**
* Focus on object "MAIN VIDEO - JVIEWER".
*/
BOOL fgFlJvOnMv(void) large
{
BOOL fgIsGrabbed = TRUE;
#ifndef JPEG_DDISC_DIGEST_ENABLE
//if (bSharedInfo(SI_DISC_TYPE) != SV_PCD)//oneway
{
if (_bIRKey == IR_STOP)
_bIRKey = IR_ROOT_MENU;
}
#endif
#if 0//oneway
if (bSharedInfo(SI_DISC_TYPE) == SV_PCD)
{
if (_bIRKey == IR_ROOT_MENU)
_bIRKey = IR_STOP;
}
#endif
switch (_bIRKey)
{
case IR_CMD_DONE:
fgIsGrabbed = fgFlJvMvIrCmdDoneHdr();
break;
#ifdef JPEG_DDISC_DIGEST_ENABLE
case IR_STOP:
// - turn on digest menu
vFlJvDgtOn();
break;
#endif
#if 0
case IR_LEFT:
case IR_RIGHT:
case IR_UP:
case IR_DOWN:
fgIsGrabbed = FALSE;
break;
#endif
case IR_NEXT:
vSendUopCmd(UOP_NEXT, 0, 0, 0);
break;
case IR_PREV:
vSendUopCmd(UOP_PREVIOUS, 0, 0, 0);
break;
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;
case IR_PROGRAM:
fgIsGrabbed = fgFlJvOnIrTransEff();
break;
case IR_AUD_KEY_PLUS:
case IR_AUD_KEY_MINUS:
case IR_MARK:
case IR_RANDOM:
#if 1
case IR_MEMORY:
vFlShowError(OSD_POS_ERROR, OSD_MSG_ERROR, OSD_TIMEOUT_SHORT);
fgIsGrabbed = TRUE;
break;
#else
fgIsGrabbed = fgFlJvOnIrTransEff();
vOsdShowError(SV_ERR_INVALID_OPERATION, OSD_TIMEOUT_SHORT);
break;
#endif
case IR_PLAY_ENTER:
case IR_PLAY:
case IR_ENTER:
case IR_PLAY_PAUSE:
fgIsGrabbed = fgFlJvOnIrPlay();
break;
case IR_PAUSE:
fgIsGrabbed = fgFlJvOnIrPause();
break;
case IR_MUTE:
case IR_FF:
case IR_FR:
#if 1//def JPG_INFO
vFlShowError(OSD_POS_ERROR, OSD_MSG_ERROR, OSD_TIMEOUT_SHORT);
#endif
/*
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;
case IR_SELECT_DONE:
fgIsGrabbed = fgFlJvOnIrSelDone();
break;
case IR_DISPLAY:
break;
default:
fgIsGrabbed = FALSE;
break;
}
return fgIsGrabbed;
}
#ifdef JPEG_DDISC_DIGEST_ENABLE
/**
* 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;
default:
fgIsGrabbed = FALSE;
break;
}
return fgIsGrabbed;
}
#endif
/**
* IR dispatcher when the focus is on the object.
*/
BOOL fgFlOnJv(void) large
{
BOOL fgIsGrabbed;
switch (_bFlJvOn)
{
case FLJV_OBJ_MV:
fgIsGrabbed = fgFlJvOnMv();
break;
#ifdef JPEG_DDISC_DIGEST_ENABLE
case FLJV_OBJ_DGTMN:
fgIsGrabbed = fgFlJvOnDgtMn();
break;
#endif
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;
}
#ifdef JPEG_DDISC_DIGEST_ENABLE
void vFlJvChgLang(BYTE bLang) large
{
vFlJvDrawDgtBtns(bLang);
}
#endif
#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 + -