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

📄 key_handler_dvdv.c

📁 SAMSUNG 5009的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
	/* Handle for different playmode */
	GuiDvdvSkipModeHandle(param);
	/*
	if(!GuiDvdvSkipModeHandle(param))
	{
		SetNextPrevTimer(TIMER_DISABLE);
		InitNextPrevStValue();
		OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);
		return;
	}*/

	if( IsNext )
		OSD_SetIconDisplay( ICON_NEXT, NULL, SYS_NO_WAIT );
	else
		OSD_SetIconDisplay( ICON_PREV, NULL, SYS_NO_WAIT );

	OSD_ChangeDisplay(OSD_CTRL_UPDATE_INFO, NULL, SYS_NO_WAIT);	
}
#else/*_APP_CAP_KEY_QUICK_RESPONSE_NEXT_PREV*/
VOID GuiDvdvSkip( UCHAR param )
{		
	SetTempValueSetFlag( FALSE );
	InitTempValueState();
#if _APP_CAP_NAV_DVD_AUDIO      /*Jiangshanbin for DVDA*/
	if(GetDiscState() == DVDA_DISC)
	{
		if ( param == RC_KEY_PREV )
			UiCmdGeneral( UOP_DVDA_PREV_TRACK );
		else
			UiCmdGeneral(UOP_DVDA_NEXT_TRACK);
	}
	else
#endif
	{
		if (param==RC_KEY_PREV)
			UiCmdGeneral( UOP_DVDV_PREV_PG );
		else
			UiCmdGeneral(UOP_DVDV_NEXT_PG);
	}
}
#endif/*_APP_CAP_KEY_QUICK_RESPONSE_NEXT_PREV*/

/******************************************************************************
 *  Function name : GuiDvdvSlow
 *  Arguments     : 
 *  Return        : VOID
 *  By            : Liu renliang
 *  Description   : 
 ******************************************************************************
 */
VOID GuiDvdvSlow( UCHAR data,UCHAR param )
{
	ScanCtrl_t		scan;
	UCHAR			speed;
	UCHAR			direction;

	GetScanControlState( &scan );
	speed = scan.speed;
	direction = scan.direction;

#ifdef _MTK_STYLE

		switch( speed )
		{
			case PM_SPEED_X1_16:
				if( direction == PM_DIR_FORWARD )
				{
#if _APP_CAP_FUNC_SLOW_REV
					speed = PM_SPEED_X1_2;
					direction = PM_DIR_BACKWARD;
#else
					speed = PM_SPEED_X1;
#endif
				}
				else
				{
					speed = PM_SPEED_X1;
					direction = PM_DIR_FORWARD;
				}
				break;			
			case PM_SPEED_X1_8:
				speed = PM_SPEED_X1_16;
				break;
			case PM_SPEED_X1_4:
				speed = PM_SPEED_X1_8;
				break;
			case PM_SPEED_X1_2:
				speed = PM_SPEED_X1_4;
				break;
			default:		//wanglin 20060327
				speed = PM_SPEED_X1_2;
				break;
		}

#else	/* _MTK_STYLE */
		switch( speed )
		{
			case PM_SPEED_X1_2:
				if( direction == PM_DIR_FORWARD )
				{
#if _APP_CAP_FUNC_SLOW_REV
					speed = PM_SPEED_X1_32;
					direction = PM_DIR_BACKWARD;
#else
					speed = PM_SPEED_X1;
#endif
				}
				else
				{
					speed = PM_SPEED_X1;
					direction = PM_DIR_FORWARD;
				}
				break;			
			case PM_SPEED_X1_4:
				speed = PM_SPEED_X1_2;
				break;
			case PM_SPEED_X1_8:
				speed = PM_SPEED_X1_2;
				break;
			case PM_SPEED_X1_16:
				speed = PM_SPEED_X1_8;
				break;
			case PM_SPEED_X1_32:
				speed = PM_SPEED_X1_16;
				break;	
			default:	
				speed = PM_SPEED_X1_32;
				break;
		}
#if 0
	if(data==RC_KEY_SLOW_FWD) //<<< KSH@5010 050907
	{
		if( direction == PM_DIR_BACKWARD )
		{
			speed = PM_SPEED_X1;
			direction = PM_DIR_FORWARD;
		}
	}
	else
	{
		if( direction == PM_DIR_FORWARD)
		{
			speed = PM_SPEED_X1;
			direction = PM_DIR_BACKWARD;
		}
	}

	//if( param == PM_SPEED_UNDEFINED ) //<<< KSH@5010 050907
	{
		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:
				direction = PM_DIR_FORWARD;
				speed = PM_SPEED_X1;
				break;
			default:
				speed = PM_SPEED_X1_32;
				break;
		}
	} 
#endif	
#endif	/* _MTK_STYLE */	
	SetTempValueSetFlag( FALSE );
	InitTempValueState();
	
	if ( direction == PM_DIR_FORWARD )
		UiScanForward( UOP_DVDV_FORWARD_SCAN, speed );
	else
		UiScanBackward(UOP_DVDV_BACKWARD_SCAN,speed);
}

/******************************************************************************
 *  Function name : GuiDvdvScan
 *  Arguments     : 
 *  Return        : VOID
 *  By            : Liu renliang
 *  Description   : 
 ******************************************************************************
 */
VOID GuiDvdvScan( UCHAR data,UCHAR param )
{
	ScanCtrl_t		scan;
	UCHAR			speed;
	UCHAR			direction;

	GetScanControlState( &scan );
	speed = scan.speed;
	direction = scan.direction;

	/* Change direction */
	if(data==RC_KEY_FF)
	{
		if( direction == PM_DIR_BACKWARD )
		{
			speed = PM_SPEED_X1;
			direction = PM_DIR_FORWARD;
		}
	}
	else
	{
		if( 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:
			speed = PM_SPEED_X4;
			break;
		case PM_SPEED_X4:
			speed = PM_SPEED_X8;
			break;
		case PM_SPEED_X8:
			speed = PM_SPEED_X16;
			break;
		case PM_SPEED_X16:
			speed =PM_SPEED_X32;
			break;
		case PM_SPEED_X32:
			direction = PM_DIR_FORWARD;
			speed = PM_SPEED_X1;
			break;
		default:
			speed = PM_SPEED_X2;
			break;
	}

	SetTempValueSetFlag( FALSE );
	InitTempValueState();
#if _APP_CAP_NAV_DVD_AUDIO      /*Jiangshanbin for DVDA*/
	if(GetDiscState() == DVDA_DISC)
	{
		if ( direction == PM_DIR_FORWARD )
			UiScanForward( UOP_DVDA_FORWARD_SCAN, speed );
		else
			UiScanBackward(UOP_DVDA_BACKWARD_SCAN,speed);
	}
	else
#endif
	{
		if ( direction == PM_DIR_FORWARD )
			UiScanForward( UOP_DVDV_FORWARD_SCAN, speed );
		else
			UiScanBackward(UOP_DVDV_BACKWARD_SCAN,speed);
	}
}

/******************************************************************************
 *  Function name : GuiDvdvMenu
 *  Arguments     : 
 *  Return        : VOID
 *  By            : Liu renliang
 *  Description   : 
 *  Revisions     :
 ******************************************************************************
 */
VOID GuiDvdvMenu( UCHAR param )
{
	Uop_t			tx;
	OSD_State_st		*osd_state;
	UCHAR			prev_menu_id;
	BOOL TitleFlag=0;

	if(param==RC_KEY_TITLE_MENU)
		TitleFlag=1;
	
#ifdef _DAEWOO
	if( GetDvdvPlayMode() == PARAM_PB_PROGRAM )
	{
		OsdNotAvailOn();
		return;	
	}
#endif

	/*
	 * Check OSD and off that 
	 */
	osd_state = OSD_GetState();
	
	//if( osd_state->etCur_dsp != DISPLAY_OFF ) //clina 061018bug 146
	//{
		// Qian liping 060623: use OSD_GraphicClear not redraw the info osd.
	//	OSD_GraphicClear();
	//}	

	if( osd_state->etCur_icon != ICON_NONE )
	{
		OSD_SetIconDisplay(ICON_CLEAR, NULL, SYS_NO_WAIT);
	}	

	prev_menu_id = GetPrevSelectedMenuId();

	if((( prev_menu_id == PARAM_MENU_ID_TITLE )&&(TitleFlag==1))||\
		((prev_menu_id==PARAM_MENU_ID_ROOT)&&(TitleFlag==0)))
	{
		/* 
		 * In this case, current display is menu.
		 */
#if _APP_CAP_NAV_DVD_AUDIO      /*Jiangshanbin for DVDA*/
	if(GetDiscState() == DVDA_DISC)
		tx.uop_id = UOP_DVDA_RESUME;
	else
#endif
		tx.uop_id = UOP_DVDV_RESUME;
	} else {
#if _APP_CAP_NAV_DVD_AUDIO      /*Jiangshanbin for DVDA*/
	if(GetDiscState() == DVDA_DISC)
		tx.uop_id = UOP_DVDA_MENU;
	else
#endif
		tx.uop_id = UOP_DVDV_MENU;
		if(TitleFlag)	
				tx.param.dvdv_menu.menu_id = PARAM_MENU_ID_TITLE;
			else
				tx.param.dvdv_menu.menu_id = PARAM_MENU_ID_ROOT;
				
		/* Reset zoom */
		SetZoomDefault();

		/* Reset temp keeper */
		InitTempValueState();
	}
	SysSendMsg( &gQ_gui, &tx, sizeof(Uop_t), SYS_NO_WAIT, 0 );
}

/******************************************************************************
 *  Function name : GuiDvdvUpDown
 *  Arguments     : 
 *  Return        : VOID
 *  By            : Liu renliang
 *  Description   : 
 *  Revisions     :
 *  Date	: 2004-7-15
 ******************************************************************************
 */
VOID GuiDvdvUpDown( UCHAR param )
{
	DvdVideoInfo_t 		dvdv;
	UINT				temp_sum;
	BOOL   	UpFlag=0;
	OSD_State_st *osd_state;	

	BYTE2	temp_2dig = GetTempValue(2);
	DVDSearch_t search_value;
	Pttn_t		pttn;

	if (param==RC_KEY_UP)
		UpFlag=1;

	osd_state = OSD_GetState();
	switch( osd_state->etCur_dsp )
	{
		case DISPLAY_INFO:
			GetDvdvInfoInAppLayer(&dvdv);

			/* If value setting area activated */
			switch( osd_state->etInfo_sub )
			{
				case INFO_SUB_TITLE:
					if (temp_2dig == 0)
						temp_sum = dvdv.cur_title;
					else
						temp_sum = temp_2dig;		
						
					SetTempValueSetFlag( TRUE );
					
					temp_sum = GuiSelFuc[UpFlag](temp_sum, 1, dvdv.total_title);
					
					InitTempValueState();

					SetTempValue( temp_sum / 10);
					SetTempValue( temp_sum % 10);
					
					GetSearchValue(&search_value);
					search_value.title_search = temp_sum;
					SetSearchValue( search_value );
					
					OSD_ChangeDisplay(OSD_CTRL_UPDATE_INFO, NULL, SYS_NO_WAIT);
					break;
					
				case INFO_SUB_CHAPTER:

					if (temp_2dig == 0)
						temp_sum = dvdv.cur_chapter;
					else
						temp_sum = temp_2dig;			
					
					GetSearchValue(&search_value);
					if(search_value.title_search < 1)
						GetDvdTtInfo(1, &pttn);
					else
						GetDvdTtInfo(search_value.title_search, &pttn);
					
					SetTempValueSetFlag( TRUE );

					temp_sum = GuiSelFuc[UpFlag](temp_sum, 1, pttn);
					InitTempValueState();		

					SetTempValue( temp_sum / 10);
					SetTempValue( temp_sum % 10);
					
					search_value.chapter_search = temp_sum;
					SetSearchValue( search_value );
					OSD_ChangeDisplay(OSD_CTRL_UPDATE_INFO, NULL, SYS_NO_WAIT);

					break;	
				default:				
					OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);
			} /* switch sub menu */
			break;

		default:
			if( GetDvdButtonSelectionState() != DVD_BTN_NONE )
			{
				GuiDvdvHandleKeysWithBtn(param);
			}
			else
			{
				OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);
			} /* switch sub menu */			
			break;
	} /* switch (main display selection) */
}


/******************************************************************************
 *  Function name : GuiDvdvLeftRight
 *  Arguments     : 
 *  Return        : VOID
 *  By            : Liurenliang
 *  Revisions     :
 *  Date	:2004.7.15
 ******************************************************************************
 */
VOID GuiDvdvLeftRight( UCHAR param )
{
	OSD_InfoSubState_et		dsp_sub_new;
	OSD_State_st *osd_state;
	OsdCtrl_st ctrl;
#if _APP_CAP_FUNC_DVD_TIMESEARCH_JUDGE_IN_UI	
	Uop_t	uop;
#endif



	BOOL 		LeftFlag=0;
	Domain_t		domain;
	domain = GetDvdDomain();
	
	if(param==RC_KEY_LEFT)
		LeftFlag=1;

	osd_state = OSD_GetState();
	switch( osd_state->etCur_dsp )
	{
#if _APP_CAP_FUNC_DISPLAY_FIT		
		case DISPLAY_FIT:
			OSD_SetMainDisplay(DISPLAY_OFF, SYS_WAIT);
			break;
#endif	
		case DISPLAY_INFO: // Qian liping 060525
			OsdSelTimerSet( 1,TIMER_DISABLE );
			
			if(osd_state->etInfo_sub == INFO_SUB_NONE)
			{
				OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);
				return;
			}
			
			/*  DVD: in menu & stop domain time search not vailable */
			/*Support time search in stop while there's only 1 title .   Jiang Shanbin*/
#if _APP_CAP_FUNC_TIMESEARCH_IN_STOP
			if (domain == DVD_DOM_VTSM || domain == DVD_DOM_VMGM/*|| domain == DVD_DOM_STOP*/)
#else
			if (domain == DVD_DOM_VTSM || domain == DVD_DOM_VMGM|| domain == DVD_DOM_STOP)
#endif
			{
				dsp_sub_new = INFO_SUB_CHAPTER;
			}
			else
			{
				dsp_sub_new = INFO_SUB_VTIME;
			}
			
			InitTempValueState();

			dsp_sub_new = GuiSelFuc[!LeftFlag](osd_state->etInfo_sub, INFO_SUB_TITLE, dsp_sub_new);
			ctrl.p.info.old = osd_state->etInfo_sub;
			ctrl.p.info.new = dsp_sub_new;
#if _APP_CAP_FUNC_DVD_TIMESEARCH_JUDGE_IN_UI	//wanglin 20060926		
			if(dsp_sub_new == INFO_SUB_VTIME)
			{
				uop.uop_id = UOP_DVDV_TIME_SEARCH;
				if(!DvdUopIsValid(&uop))
				{
					OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_WAIT);
					ctrl.p.info.new = ctrl.p.info.old;
				}
			}
#endif			
			OSD_ChangeDisplay(OSD_CTRL_ELEM_SELECT, &ctrl, SYS_NO_WAIT);
			break;
		
		default:
			if( GetDvdButtonSelectionState() != DVD_BTN_NONE )
			{
				GuiDvdvHandleKeysWithBtn(param);
			}
			else
				OSD_SetIconDisplay(ICON_WARNING, NULL, SYS_NO_WAIT);
			break;
	} /* switch (main display) */
}
/******************************************************************************
 *  Function name : GuiDvdvScan
 *  Arguments     : 
 *  Return        : VOID
 *  By            : Liu renliang
 *  Description   : 
 ******************************************************************************
 */ 
VOID GuiDvdvDefaultEnter(VOID)
{
	Domain_t		domain;
	MediaInfo_t	media;
	BYTE2		temp_3dig;
#if _APP_CAP_FUNC_SEARCH_TITLE_BY_NUMBER		 // Qian liping 061010
	DvdVideoInfo_t DvdInfo;
	GetDvdVideoInfo(&DvdInfo);
#endif 


	temp_3dig = GetTempValue(3);
	GetMediaInfoState(&media);
	
	domain = GetDvdDomain();
	if( (domain == DVD_DOM_VTSM) || (domain == DVD_DOM_VMGM)|| (domain == DVD_DOM_TT) 
#if _APP_CAP_NAV_DVD_VIDEO	
		||(domain == DVD_DOM_AMGM)  || (domain ==DVD_DOM_TT_GR)
#endif
									)
	{
		/* maybe menu domain */
		if( GetDvdButtonSelectionState() != DVD_BTN_NONE )
		{
			if( temp_3dig == 0 )
			{
#if _APP_CAP_NAV_DVD_VIDEO
				if(GetDiscState() == DVDA_DISC)
					UiCmdGeneral( UOP_DVDA_BTN_ACTIVATE );
				else
#endif
					UiCmdGeneral( UOP_DVDV_BTN_ACTIVATE );
			}

⌨️ 快捷键说明

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