⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key_handler_dvdv.c

📁 SAMSUNG 5009的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
/******************************************************************************
 *   Filename    : Change_key_dvdv.c
 *   Start       : 2002. 11. 6.
 *   By          : Taejin Kwon
 *   Contact     : tj1kwon@samsung.co.kr
 *   Description : Key to UI command for dvd video.
 ******************************************************************************
 */

/******************************************************
 *       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/Appl_types.h"
#include "MAIN/Global_state.h"
#include "MAIN/Uop_msg.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"//for removing warnings

#include "DRIVER/FS/Fs_api.h"

#include "MAIN/DVD/Dvd_predef.h"
#include "MAIN/DVD/Dvd_common.h"

#include "MAIN/MMP/Mmp_common.h"



/******************************************************
 *       Global variables / functions
 *****************************************************/

/******************************************************
 *       Extern variables 
 *****************************************************/
extern SysQueue_t		gQ_gui;
/******************************************************
 *       functions
 *****************************************************/
VOID GuiDvdvSkip( UCHAR param );
VOID GuiDvdvSlow( UCHAR data,UCHAR param );
VOID GuiDvdvScan( UCHAR data,UCHAR param );
VOID GuiDvdvMenu( UCHAR param );
VOID GuiDvdvUpDown( UCHAR param );
VOID GuiDvdvLeftRight( UCHAR param );
VOID GuiDvdvAudSubtAngleId( UCHAR param );
VOID GuiDvdvDefaultEnter(VOID);
 BOOL GuiDvdvHandleSpecialOsd(UCHAR data);		
BOOL GuiDvdvUpdateAudio(VOID);
BOOL GuiDvdvUpdateSubtitle(VOID);
BOOL GuiDvdvUpdateAngle( VOID );
extern BYTE1 GetDvdvCMDState(void);
extern VOID GetDvdvInfoInAppLayer(DvdVideoInfo_t* dvdv);
extern INLINE OSD_MainType_et GetDisplayMainState( VOID );
extern VOID GuiDualMonoOn(VOID);
extern VOID OsdSelTimerSet( SysTimeTick_t time, SysEnable_t	set );

#if _APP_CAP_NAV_DVD_VIDEO

/******************************************************************************
 *  Function name : ChangeKeyToDvdvCommand
 
 *  By            :  Liu renliang

 *  Revisions     :
 ******************************************************************************
 */
VOID ChangeKeyToDvdvCommand( UCHAR data, UCHAR param )
{
	if( GuiDvdvHandleSpecialOsd(data) ) /* (yanglu, 051024) */
		return;
	
	switch(data)
  	{
#if _APP_CAP_FUNC_SLOW_REV
  		case RC_KEY_REV_STEP:
  			GuiDvdvReverseStep(param);
  			break;
#endif			

		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 );
			break;

		case RC_KEY_PREV:
		case RC_KEY_NEXT:
			GuiDvdvSkip(data);
			break;
		case RC_KEY_SLOW_FWD:
		case RC_KEY_SLOW_REV:
			GuiDvdvSlow( data, param);
			break;
		case RC_KEY_FF:
		case RC_KEY_FR:
			GuiDvdvScan(data,param);
			break;
		case RC_KEY_ROOT_MENU:
		case RC_KEY_TITLE_MENU:
			GuiDvdvMenu(data);
			break;
		case RC_KEY_UP:
		case RC_KEY_DOWN:
			GuiDvdvUpDown(data);
			break;
		case RC_KEY_LEFT:
		case RC_KEY_RIGHT:
			GuiDvdvLeftRight(data);
			break;
		case RC_KEY_SETUP:
			GuiSetUp( );
			break;
		case RC_KEY_ENTER:
			GuiDvdvEnter(param);
			break;
			
#if _APP_CAP_AUD_KARAOKE
		case RC_KEY_KARAOKE:	/* Merge code (yanglu, 051025) */
#if !_APP_CAP_AUD_KARAOKE_IN_DTS
			if(DvdExt_GetDvdvAudioCodingMode() == C_MODE_DTS)
			{
				ToggleKaraokeSetting();
				OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);
			}
			else
#endif	
			GuiKaraoke();
			break;
#endif


		case RC_KEY_DUALMONO:
			GuiDualMonoOn();
			break;

		case RC_KEY_AUDIO:
		case RC_KEY_SUBTITLE:
		case RC_KEY_ANGLE:
			GuiDvdvAudSubtAngleId(data);
			break;
		case RC_KEY_DISPLAY:
			GuiDvdvDisplay(param);
			break;
		case RC_KEY_SEARCH:
			GuiInfoGoto(param);
			break;
		case RC_KEY_SCREEN_DISPLAY:
			break;
		case RC_KEY_PAUSE:
			UiCmdGeneral( UOP_PAUSE); 
			break;
		case RC_KEY_STEP:
			GuiDvdvStep( param);
			break;
#if _APP_CAP_FUNC_BOOKMARK		
		case RC_KEY_BOOKMARK:
			GuiBookMark();
			break;
#endif		
		case RC_KEY_RETURN:
			GuiDvdvReturn( param);
			break;
		case RC_KEY_ZOOM:
			GuiZoom();
			break;
#if _APP_CAP_KEY_USE_CLEAR		
		case RC_KEY_CLEAR:
			GuiClear();
			break;
#endif	
#if _APP_CAP_OSD_3D	
	case RC_KEY_3D:
			Gui3DId(param);
		break;
#endif		
		break;
#if _APP_CAP_AUD_REVERBERATION
	case RC_KEY_REVERBRATION:
			GuiReverbration(param);
			break;
#endif
		case RC_KEY_PLAY:
			GuiDvdvPlay( param);
			break;
		case RC_KEY_STOP:
			GuiStop( param);
			break;
#if _APP_CAP_FUNC_INSTANT_PLAY
		case RC_KEY_INST_SKIP:
			GuiDvdvInstantSkip(param);
			break;
		case RC_KEY_INST_REPLAY:
			GuiDvdvInstantReplay(param);
			break;
#endif
#if _APP_CAP_FUNC_DISPLAY_FIT
		case RC_KEY_FIT_DISPLAY:
			GuiDvdvDisplayFit(param);
			break;
#endif
#if _APP_CAP_KEY_TIME_KEY		
		case RC_KEY_TIME:
			SysPrintf("\n[LS] RC_KEY_TIME input\n");
			/* Merge code (yanglu, 051024) */
#if !(_USE_5010 || _USE_5009)
			if( IsDvdFullStopMode() )
				OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);
			else
#endif				
			OSD_SetMainDisplay(DISPLAY_TIME, SYS_WAIT);
			break;
#endif	
		default:
			OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);
			break;	
   	}
}

/******************************************************************************
  Function name 	: IsMenuDomainKeyForbidden
 *  Arguments     	: 
 *  Return        	: BOOL
 *  By            		: 
 *  Description   	: Added by Qian liping 050804
 					 Used to forbidden some key in Menu domain.
 *  Revisions     	: 
 ******************************************************************************
 */
BOOL IsMenuDomainKeyForbidden( UCHAR data )		
{
	Domain_t		domain;

	domain = GetDvdDomain();
	if( (domain == DVD_DOM_VTSM) || (domain == DVD_DOM_VMGM) ) 
	{
		if( IS_INVALID_KEY_IN_MENU_DOMAIN(data) )
		{
			OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);
			return TRUE;
		}
	}

	return FALSE;
}

/* Merge code(yanglu, 051028) */
BOOL GuiDvdvHandleKeysWithBtn( UCHAR data )
{
	if( IS_NUM_KEY(data) )
	{
		NumberKeyControl( data );
	}
	else if( IS_DIRECTION_KEY(data) )
	{
#if _APP_CAP_NAV_DVD_AUDIO	
		if(GetDiscState() == DVDA_DISC)
			UiCmdGeneral( ( UOP_DVDA_BTN_UP + ( data - RC_KEY_UP )));
		else
#endif
		UiCmdGeneral( UOP_DVDV_BTN_UP + ( data - RC_KEY_UP ));
		if( gOSD_state.etCur_icon == ICON_NUMERIC )
		{
			OSD_SetIconDisplay(ICON_CLEAR, NULL, SYS_NO_WAIT);
		}
	}
	else if( data == RC_KEY_ENTER )
	{
		GuiDvdvDefaultEnter();
	}
	else if( data == RC_KEY_PLAY )
	{
		if( (GetMainState() >= MAIN_PAUSE && GetMainState() <= MAIN_SR) )
			UiCmdGeneral( UOP_PLAY );
		else
			GuiDvdvDefaultEnter();
	}
	else
	{
		return FALSE;
	}

	return TRUE;
}

/******************************************************************************
 *  Function name 	: GuiDvdvHandleSpecialOsd
 *  Arguments     	: 
 *  Return        	: BOOL
 *  By            		: QQ
 *  Description   	: 
 *  Revisions     	:
 ******************************************************************************
 */
 BOOL GuiDvdvHandleSpecialOsd(UCHAR data) /* Merge code(yanglu, 051024) */
{
	OSD_State_st *osd_state;
	OsdCtrl_st ctrl;
	BOOL			flag;
	BOOL			return_val = TRUE;

	osd_state = OSD_GetState();

	if( osd_state->etCur_dsp == DISPLAY_OFF ||

		( osd_state->etCur_dsp == DISPLAY_INFO && osd_state->etInfo_sub == INFO_SUB_NONE) )
	{
		if( GetDvdButtonSelectionState() != DVD_BTN_NONE )
		{
			if( GuiDvdvHandleKeysWithBtn( data ) )
			{
				return TRUE;
			}
		}
	}

	switch( osd_state->etCur_dsp )
	{
		case DISPLAY_ADULT_CONFIRM:
			flag = GetAdultLevelChangeState();
			switch( data )
			{
				case RC_KEY_UP:
				case RC_KEY_DOWN:
					SetAdultLevelChangeState( !flag );
					ctrl.p.toggle = !flag;
					OSD_ChangeDisplay( OSD_CTRL_ADULT_SET, &ctrl, SYS_NO_WAIT );
					break;
				case RC_KEY_ENTER:
					if( flag )
					{
						InitTempValueState();
						OSD_SetMainDisplay(DISPLAY_ADULT_PSWD_CHECK, SYS_WAIT);
					} 
					else {
						OSD_SetMainDisplay(DISPLAY_OFF, SYS_WAIT);
						UiDvdvPassword( FALSE );
					}
					break;
				default:
					OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);
					break;
			}			
			break;
			
		case DISPLAY_ADULT_PSWD_CHECK:
			if( IS_NUM_KEY(data) )
				NumberKeyControl( data );
			else
				OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);
			break;
			
		case DISPLAY_ADULT_PSWD_ERROR:
			break;

#if _APP_CAP_FUNC_BOOKMARK
		case DISPLAY_BOOKMARK:
			return_val = ( GuiHandleKeysInBookmarkOsd( data ) );
			break;
#endif	

#if _APP_CAP_OSD_3D
		case DISPLAY_3D:
			return_val = ( GuiHandleKeysIn3DOsd( data ) );
			break;
#endif	

		case DISPLAY_AUDIO:	//wanglin 20060330
			if(data == RC_KEY_AUDIO)
				return_val = GuiDvdvUpdateAudio();
			else
				return_val = FALSE;
			break;
			
		case DISPLAY_SUBTITLE:	//wanglin 20060330
			if(data == RC_KEY_SUBTITLE)
				return_val = GuiDvdvUpdateSubtitle();
			else
				return_val = FALSE;
			break;

		case DISPLAY_ANGLE:	//wanglin 20060407
			if(data == RC_KEY_ANGLE)
				return_val = GuiDvdvUpdateAngle();
			else
				return_val = FALSE;
			break;
			
		default:
			return_val = FALSE;
			break;
	}

	return return_val;
	
}

 /******************************************************************************
 *
 *	By		QQ 050818
 *
 ******************************************************************************
 */
#if _APP_CAP_KEY_QUICK_RESPONSE_NEXT_PREV//By QQ 0508019
BOOL GuiDvdvSkipModeHandleInProgramMode(UCHAR param)
{
	BYTE2				temp;
	
	if(GetNextPrevFlag() == FALSE)
	{
		SetNextPrevFlag(TRUE);
		SetNextPrevSearchValue(gDvd_program.cur_index);
	}
	
	SetNextPrevTimer(TIMER_ENABLE);	
	temp = GetNextPrevSearchValue();

	if (param==RC_KEY_NEXT)
	{
		if( temp < (gDvd_program.num_program -1) )
		{
			temp++;
		}
		else if( GetDvdvRepeatState() == REPEAT_SUB_TITLE )
		{
			temp = 0;
		}
	}
	else
	{
		if(temp>0)
		{
			temp --;
		}
	}
	SetNextPrevSearchValue(temp);
	return TRUE;

}

BOOL GuiDvdvSkipModeHandleInNormalMode(UCHAR param)
{
	DvdVideoInfo_t 		dvdv;
	BYTE2				temp;
	BOOL				is_sequential_playback;
		
	GetDvdvInfoInAppLayer(&dvdv);

	is_sequential_playback = IsCurrentPgcSequentialMode();

	if( !is_sequential_playback )
	{
		if (param==RC_KEY_NEXT)
			UiCmdGeneral( UOP_DVDV_NEXT_PG );
		else
			UiCmdGeneral( UOP_DVDV_PREV_PG );
		return TRUE;
	}

	if(GetNextPrevFlag() == FALSE)
	{
		SetNextPrevFlag(TRUE);
		SetNextPrevSearchValue(dvdv.cur_chapter);
	}
	
	SetNextPrevTimer(TIMER_ENABLE);	
	temp = GetNextPrevSearchValue();

	if (param==RC_KEY_NEXT)
	{
		if(temp < 0xFFFF)
		{
			if(temp < dvdv.total_chapter)
			{
				temp++;
			}
			else 
			{
				if( GetDvdvRepeatState() == REPEAT_SUB_TITLE )
					temp = 1;
				else
					temp = 0xFFFF;	/* 0xFFFF is only used to skip to the next TT */
			}
		}
	}
	else
	{
		if(temp > 0)
		{
			temp --;	/* 0x0 is only used to skip to the prev TT */
		}
	}

	SetNextPrevSearchValue(temp);
	return TRUE;
	/* >>> @: 5008CHN-XXX.QQ 050818 */
		
}
BOOL GuiDvdvSkipModeHandleInRandomMode(UCHAR param)
{
	if (param==RC_KEY_PREV)
		UiCmdGeneral( UOP_DVDV_PREV_PG );
	else
		UiCmdGeneral(UOP_DVDV_NEXT_PG);
	return TRUE;
}

BOOL GuiDvdvSkipModeHandle(UCHAR param)
{
	GuiDvdvSkipModeModeFunction GuiDvdvSkipModeModeFunction_temp[] = 
	{	
		GuiDvdvSkipModeHandleInNormalMode,
		GuiDvdvSkipModeHandleInRandomMode,
		GuiDvdvSkipModeHandleInProgramMode,
	}; 

	return GuiDvdvSkipModeModeFunction_temp[GetDvdvPlayMode()](param);
}

VOID GuiDvdvSkip( UCHAR param )//By QQ 050819
{		
	DvdVideoInfo_t 		dvdv;
	BOOL				IsNext;

	if( param == RC_KEY_NEXT )
		IsNext = TRUE;
	else
		IsNext = FALSE;
		
	GetDvdvInfoInAppLayer(&dvdv);
	SetTempValueSetFlag( FALSE );
	InitTempValueState();

	/* Handle Skip key in Menu domain or RepeatCH case */
	if(GetDvdDomain() == DVD_DOM_VTSM || GetDvdDomain() == DVD_DOM_VMGM || GetDvdvRepeatState() == REPEAT_SUB_CHAPTER)
	{
		if (param==RC_KEY_PREV)
			UiCmdGeneral( UOP_DVDV_PREV_PG );
		else
			UiCmdGeneral( UOP_DVDV_NEXT_PG );
			return;
	}
	
	/* Prohibit if nav is responsing previous Skip keys */
	if(!IsSkipAllowed(IsNext))
	{
		OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);
		return;
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -