📄 key_handler_svcd.c
字号:
/****************************************************************************** * Filename : Change_key_svcd.c * Start : 2002. 11. 6. * By : Taejin Kwon * Contact : tj1kwon@samsung.co.kr * Description : Key to UI command for SVCD. ****************************************************************************** *//****************************************************** * INCLUDES *****************************************************/#include "Basic_typedefs.h"#include "CUSTOM/Custom_option.h"#include "OS/OS_abstract.h"#include "API/SH_types.h"#include "API/SH_api.h"#include "COMMON/Common.h"#include "MAIN/Global_state.h"#include "MAIN/Appl_types.h"#include "MAIN/Uop_msg.h"#include "DRIVER/FS/Fs_api.h"#include "CUSTOM/Osd_types.h"#include "CUSTOM/Osd_if.h"#include "CUSTOM/Key_handler_setup.h"#include "CUSTOM/Key_receive.h"#include "CUSTOM/Key_defs.h"#include "CUSTOM/Key_2_uop.h"#include "MAIN/DVD/Dvd_predef.h"#include "MAIN/DVD/Dvd_common.h"#include "MAIN/SVCD/Svcd_types.h"#include "MAIN/SVCD/Svcd_ext.h"#include "MAIN/SVCD/Svcd_show.h"#include "MAIN/MMP/Mmp_common.h"#include "FP_handle.h"#include "I2c_api.h"/****************************************************** * Global variables / functions *****************************************************//****************************************************** * Extern variables *****************************************************/extern SysQueue_t gQ_gui;/*limeng 060422* control by custom option*/ //#if (_APP_CAP_NAV_SUPER_VIDEO_CD || _APP_CAP_NAV_VIDEO_CD )/****************************************************** * functions *****************************************************/extern VOID OsdSelTimerSet( SysTimeTick_t time, SysEnable_t set );extern INLINE BYTE1 GetDisplayDigestState( VOID );//BOOL IsXvcdSpecialKeyForbidden( UCHAR data );/****************************************************************************** * Function name : IsXvcdPBCMenuDomainKeyForbidden * Arguments : * Return : BOOL * By : Qian liping 050804 * Description : when in these states, some key is forbidden. Initial state: FF/FR/SLOW_FWD/STEP/RPT/RPT_AB/PBC/PAUSE/SKIP PBC Menu : FF/FR/SLOW_FWD/STEP/ZOOM/RPT/RPT_AB/ PBC_ON playing : RPT * Revisions : ****************************************************************************** */BOOL IsXvcdPBCMenuKeyForbidden( UCHAR data ){ BOOL flag = FALSE; if(IsThisItemEmpty()) //limeng 060403 {#if _APP_CAP_FUNC_VCD_DIGEST_PREVIEW //limeng 061026:forbid num & enter key at critical digest state if(IsVcdDigestMode()) { if(IS_NUM_KEY(data)||(data == RC_KEY_ENTER)) flag = TRUE; }#endif if( IS_INVALID_KEY_IN_VCD_Empty(data) ) { //OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT); flag = TRUE; } } else if( GetSvcdMenuState() == TRUE ) //PBC_ON { if( IsThisItemSpi() ) { if( IS_INVALID_KEY_IN_VCD_SPI(data) ) { flag = TRUE; } } else { if( IS_INVALID_KEY_IN_VCD_PBCON(data) ) { flag = TRUE; } } } if( flag ) // Qian liping 060428 OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT); return flag;}/****************************************************************************** * Function name : GuiXvcdHandleSpecialOsd * Arguments : * Return : BOOL * By : QQ * Description : * Revisions : ****************************************************************************** */ BOOL GuiXvcdHandleSpecialOsd(UCHAR data){ OSD_State_st *osd_state; BOOL return_val = FALSE; osd_state = OSD_GetState(); switch( osd_state->etCur_dsp ) {#if _APP_CAP_FUNC_BOOKMARK case DISPLAY_BOOKMARK: return_val = ( GuiHandleKeysInBookmarkOsd( data ) ); break;#endif case DISPLAY_REPEAT: return_val = ( GuiHandleKeysInRepeatOsd( data ) ); break;#if _APP_CAP_OSD_3D case DISPLAY_3D: return_val = ( GuiHandleKeysIn3DOsd( data ) ); break;#endif #if _APP_CAP_FUNC_RANDOM_PLAY case DISPLAY_MODE_SEL: return_val = ( GuiHandleKeysInModeSelOsd( data ) ); break; #endif /* _APP_CAP_FUNC_RANDOM_PLAY */ } return return_val; }VOID ChangeKeyToXvcdCommand( UCHAR data, UCHAR param ){ DiscType_t disc; //BOOL invalid_key = FALSE; disc = GetDiscState();#if 0#if _APP_CAP_FUNC_MIXED_VCD_CDDA if( disc == CD_DA && GetMixedCdState() == FALSE && IS_INVALID_KEY_FOR_CD_DA(data))#else /* _APP_CAP_FUNC_MIXED_VCD_CDDA */ if( disc == CD_DA && IS_INVALID_KEY_FOR_CD_DA(data))#endif /* _APP_CAP_FUNC_MIXED_VCD_CDDA */ { invalid_key = TRUE; } else if(IsDiscCDG() && IS_INVALID_KEY_FOR_CDG(data)) { invalid_key = TRUE; } else if(IsXvcdPBCMenuKeyForbidden( data )) { invalid_key = IsXvcdPBCMenuKeyForbidden( data ); } if(invalid_key) { OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT); return; } #endif /* Pre-process of specila osd (yanglu, 051027) */ if( GuiXvcdHandleSpecialOsd(data) ) return; switch(data) { case RC_KEY_STOP: if(IsSvcdFullStopMode()) { OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT); return; } GuiStop( param); break; case RC_KEY_NUM0: case RC_KEY_NUM1: case RC_KEY_NUM2: case RC_KEY_NUM3: case RC_KEY_NUM4: case RC_KEY_NUM5: case RC_KEY_NUM6: case RC_KEY_NUM7: case RC_KEY_NUM8: case RC_KEY_NUM9: case RC_KEY_NUM10: NumberKeyControl( data ); /* (yanglu, 051025) */ break; case RC_KEY_NEXT: case RC_KEY_PREV: GuiXvcdSkip(data); break; case RC_KEY_SLOW_FWD: GuiXvcdSlowForward( param); break; case RC_KEY_FF: case RC_KEY_FR: GuiXvcdScan(data); break; case RC_KEY_UP: case RC_KEY_DOWN: GuiXvcdUpDown(data); break; case RC_KEY_LEFT: case RC_KEY_RIGHT: GuiXvcdLeftRight(data); break; case RC_KEY_DISPLAY: GuiXvcdDisplay(param); break; case RC_KEY_SEARCH: GuiInfoGoto(param); break; case RC_KEY_SETUP: GuiSetUp( ); break; case RC_KEY_ENTER: GuiXvcdEnter( param); break; case RC_KEY_PLAY: GuiXvcdPlayPause( param); break; case RC_KEY_PAUSE: GuiXvcdPause( param); break; case RC_KEY_RETURN: GuiXvcdReturn(param); break; #if _APP_CAP_KEY_USE_CLEAR case RC_KEY_CLEAR: GuiClear(); break; #endif /* _APP_CAP_KEY_USE_CLEAR */ case RC_KEY_3D:#if _APP_CAP_OSD_3D Gui3DId(param);#endif /* _APP_CAP_OSD_3D */ break; case RC_KEY_DUALMONO: GuiDualMonoOn(); break; #if _APP_CAP_AUD_REVERBERATION case RC_KEY_REVERBRATION: GuiReverbration(param); break;#endif/*_APP_CAP_AUD_REVERBERATION*/ case RC_KEY_PROGRAM: GuiProgram(); break; #if _APP_CAP_FUNC_BOOKMARK case RC_KEY_BOOKMARK: GuiBookMark(); break;#endif /* _APP_CAP_FUNC_BOOKMARK */ case RC_KEY_ZOOM: GuiZoom(); break; case RC_KEY_STEP: GuiXvcdStep( param); break;#if _APP_CAP_AUD_KARAOKE case RC_KEY_KARAOKE: /* Merge code (yanglu, 051024) */#if !_APP_CAP_AUD_KARAOKE_IN_DTS if(GetCddaDiscLoaded() && GetDtsDiscLoaded()) { ToggleKaraokeSetting(); OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT); } else#endif /* !_APP_CAP_AUD_KARAOKE_IN_DTS */ GuiKaraoke(); break;#endif /* _APP_CAP_AUD_KARAOKE */ case RC_KEY_ROOT_MENU: UiCmdGeneral( UOP_PBCMENU ); break; case RC_KEY_PBC: UiCmdGeneral( UOP_SVCD_MENU ); break; case RC_KEY_ANGLE: GuiXvcdLang(param); break;#if 0 //(weilf)20060425#if _APP_CAP_FUNC_VCD_DIGEST_PREVIEW case RC_KEY_DIGEST: GuiXvcdDigest(); break;#endif#endif #if _APP_CAP_FUNC_VCD_INTRO_SCAN case RC_KEY_INTRO: UiCmdGeneral( UOP_SVCD_INTROSCAN ); break; #endif #if _APP_CAP_KEY_TIME_KEY case RC_KEY_TIME: if (IsSvcdFullStopMode()) OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT); else OSD_SetMainDisplay(DISPLAY_TIME, SYS_NO_WAIT); break;#endif /* _APP_CAP_KEY_TIME_KEY */ default: OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT); break; }}/****************************************************************************** * Function name : GuiXvcdSkip * Arguments : * Return : VOID * By : Liu renliang * Description : ****************************************************************************** */VOID GuiXvcdSkip( UCHAR param ){ if(param==RC_KEY_PREV) UiCmdGeneral( UOP_SVCD_PREV ); else UiCmdGeneral(UOP_SVCD_NEXT);}/****************************************************************************** * Function name : GuiXvcdSlowForward * Arguments : * Return : VOID * By : kwon * Description : ****************************************************************************** */VOID GuiXvcdSlowForward( UCHAR param ){ ScanCtrl_t scan; UCHAR speed; UCHAR direction; GetScanControlState( &scan ); speed = scan.speed; direction = scan.direction; if( param == PM_SPEED_UNDEFINED ) { switch( speed ) { case PM_SPEED_X1_32: speed = PM_SPEED_X1_16; break; case PM_SPEED_X1_16: speed = PM_SPEED_X1_8; break; case PM_SPEED_X1_8: speed = PM_SPEED_X1_4; break; case PM_SPEED_X1_4: speed = PM_SPEED_X1_2; break; case PM_SPEED_X1_2:#if _APP_CAP_FUNC_CIRCULAR_SPEED_CONTROL// speed = SCAN_SPEED_X1;// break;#if _APP_CAP_KEY_SEPERATE_PLAY UiCmdGeneral( UOP_PLAY);#else UiCmdGeneral( UOP_PLAYPAUSE );#endif return;#else OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT); return;#endif default: speed = PM_SPEED_X1_32; break; } } UiScanForward( UOP_SVCD_FORWARD_SCAN, speed );}/****************************************************************************** * Function name : GuiXvcdDisplay * Arguments : * Return : VOID * By : Taejin Kwon * Description : * Revisions : ****************************************************************************** */VOID GuiXvcdDisplay( UCHAR param ) //limeng 060428 { OSD_State_st *osd_state; osd_state = OSD_GetState(); SysPrintf("\nxVCD Display/search key "); if(osd_state->etInfo_sub== INFO_SUB_CTRACK || osd_state->etInfo_sub == INFO_SUB_CTIME) GuiInfoGoto(param); else OSD_SetMainDisplay(DISPLAY_INFO, SYS_NO_WAIT); }/****************************************************************************** * Function name : GuiXvcdScan * Arguments : * Return : VOID * By : Liurenliang * Description : ****************************************************************************** */VOID GuiXvcdScan(UCHAR param ){ ScanCtrl_t scan; UCHAR speed; UCHAR direction; //UCHAR par; //SetMainState_t main; BOOL FastForwardFlag=0; if(param==RC_KEY_FF) FastForwardFlag=1; /* Check previous main state */ /* In slow motion, use another routine by their direction.*/ /* Set new fast forward scan speed */ SysPrintf("\nxVCD Fast Forward Scan key."); GetScanControlState( &scan ); speed = scan.speed; direction = scan.direction; /* Change direction */ if((FastForwardFlag==1)&&(direction==PM_DIR_BACKWARD)) { speed = PM_SPEED_X1; direction = PM_DIR_FORWARD; } if((FastForwardFlag==0)&&(direction==PM_DIR_FORWARD)) { speed = PM_SPEED_X1; direction = PM_DIR_BACKWARD; } /* * This command comes from Fast Forward Button action */ switch( speed ) { case PM_SPEED_X2:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -