📄 osd_handler_icon.c
字号:
/******************************************************************************
* Filename : OSD_manager.c
* Start : 2002. 11. 19
* By : Taejin Kwon
* Contact : tj1kwon@samsung.co.kr
* Description :
******************************************************************************
*/
/******************************************************
* INCLUDES
*****************************************************/
#include <string.h>
#include <stdio.h>
#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 "MAIN/DVD/Dvd_predef.h"
#include "MAIN/DVD/Dvd_common.h"
#include "MAIN/MMP/Mmp_common.h"
#include "CUSTOM/Key_receive.h"
#include "CUSTOM/FP_handle.h"
#include "CUSTOM/Key_defs.h"
#include "MAIN/SVCD/Svcd_types.h"
#include "MAIN/SVCD/Svcd_ext.h"
#include "MAIN/SVCD/Svcd_show.h"
#include "Osd_util.h"
#include "Osd_draw.h"
#include "Osd_timer.h"
#include "CUSTOM/Strings_ext.h"
#include "Osd_data.h"
#include "Osd_draw_explore.h"
#include "Osd_draw_setup.h"
#include "Osd_draw_program.h"
/******************************************************
* Global variables / functions
*****************************************************/
extern BOOL gOsd_onoff;
/******************************************************
* Extern variables / functions
*****************************************************/
extern INLINE OSD_MainType_et GetDisplayMainState( VOID ); //(weilf)20060726
extern void GetCurrentDvdvPbTime(PlaybackTime_t *ptr_pb_time); //(weilf)20060726
extern INLINE IconState_et GetDisplayIconState( VOID ); //(weilf)20060726
#if _APP_CAP_AUD_FUNCTION_KEY
extern INLINE VolOsdType_et GetDisplayVolOsdTypeState( void ); //(weilf)20060726
#endif
extern VOID LED_SetLedOnOff( BYTE1 led_num, BOOL onoff ); //(weilf)20060726
extern VOID OsdHandleDisplayDiscType( VOID ); //(weilf)20060726
/******************************************************************************
* Function name : RestoreInfoOsdState
* Arguments :
* IN BOOL isUpdate
*
* OUT
* I/O
* Return : STATIC BOOL
*
* By : Yanglu
* Description : Return to no-editable info osd
* Revision : 1.0
******************************************************************************
*/
STATIC BOOL RestoreInfoOsdState( BOOL isUpdate ) /* Yanglu 05.02.01 to avoid update media info for "Play" icon*/
{
PlaybackTime_t ptr_pb_time;
OsdCtrl_st ctrl;
// Qian liping 060721: bug fix
if( S5H_GetAppType()== APP_MMN &&
GetMmpFileType()== MMP_VIDEO_FILE &&
(GetDisplayMainState() != DISPLAY_INFO&& GetDisplayMainState() != DISPLAY_EXPLORER ))
OSD_SetMainDisplay(DISPLAY_OFF, SYS_NO_WAIT );
if( GetDisplayMainState() != DISPLAY_INFO )
return FALSE;
SetTempValueSetFlag( FALSE );
InitTempValueState();
// Reset current playing infomation. // Qian liping 060719
if(gOSD_state.etInfo_sub != INFO_SUB_NONE)
{
InitSearchValue();
InitXvcdSearchValue();
ctrl.p.info.old = gOSD_state.etInfo_sub;
ctrl.p.info.new = INFO_SUB_NONE;
OSD_ChangeDisplay(OSD_CTRL_ELEM_SELECT, &ctrl, SYS_NO_WAIT);
}
/*Jiangshanbin for dvda 060323*/
if( GetDiscState() == DVDV_DISC ||GetDiscState() == DVDA_DISC)
{
#if _APP_CAP_FUNC_REMAIN_TIME
if(gOSD_state.etInfo_dsp == INFO_FIRST)
{
GetCurrentDvdvPbTime(&ptr_pb_time);
OwGraphicChangedPlaytime(ptr_pb_time.hour, ptr_pb_time.min,ptr_pb_time.sec);
}
#endif
if(isUpdate)
{
#if _APP_CAP_FUNC_REMAIN_TIME
if(gOSD_state.etInfo_dsp!=INFO_FIRST)
{
gOSD_state.etInfo_dsp = INFO_FIRST;
OwCreateFirstDVDInfoDisplay();
}
else
#endif/*_APP_CAP_FUNC_REMAIN_TIME */
OwGraphicChangeValueLineDvdv();
}
}
else
{
if(isUpdate)
{
#if _APP_CAP_FUNC_REMAIN_TIME
if(gOSD_state.etInfo_dsp !=INFO_FIRST)
{
gOSD_state.etInfo_dsp = INFO_FIRST;
OwCreateXvcdInfoDisplay();
}
else
#endif/*_APP_CAP_FUNC_REMAIN_TIME */
#if _APP_CAP_OSD_SHOW_DISC_TIME_IN_STOP //wanglin 20061009
if(GetMainState() != MAIN_STOP)
#endif
OwGraphicChangeValueLineXvcd();
}
}
return TRUE;
}
BOOL IconResetGraphicKeepingOsd( IconState_et new_icon )
{
BOOL flag= FALSE;
switch( new_icon )
{
case ICON_NEXT:
case ICON_PREV:
RestoreInfoOsdState(FALSE);
break;
case ICON_VOLUME:
#if _APP_CAP_AUD_FUNCTION_KEY
if(GetDisplayIconState() == ICON_VOLUME && GetDisplayVolOsdTypeState() == VOL_TYPE_NULL)
{
OSD_SetIconDisplay(ICON_KEEP,NULL, SYS_NO_WAIT );
return TRUE ;
}
#endif /* _APP_CAP_AUD_FUNCTION_KEY */
break;
case ICON_RETURN:
RestoreInfoOsdState(TRUE);
break;
case ICON_STOP:
case ICON_STOP_NO_RESUME:
OSD_LogoOn(LOGO_IDLE, TRUE);
if(RestoreInfoOsdState(TRUE)==FALSE)
{
/* Yanglu 05.03.11 to avoid clearing cold start /unknown disc osd, in runtime */
if(
#if _APP_CAP_FUNC_RANDOM_PLAY // cydrain 20050715
gOSD_state.etCur_dsp != DISPLAY_MODE_SEL &&
#endif
gOSD_state.etCur_dsp != DISPLAY_PROGRAM &&
gOSD_state.etCur_dsp != DISPLAY_RC_ERROR &&
gOSD_state.etCur_dsp != DISPLAY_NODISC &&
gOSD_state.etCur_dsp != DISPLAY_UNKNOWN_DISC &&
gOSD_state.etCur_dsp != DISPLAY_SETUP&&
gOSD_state.etCur_dsp != DISPLAY_OFF )
OSD_SetMainDisplay(DISPLAY_OFF, SYS_NO_WAIT);
}
break;
}
return flag;
}
/******************************************************************************
* Function name : OsdHandlerIconMsg
* Arguments :
* IN IconState_et icon, OsdIconCtrl_st *ctrl
*
* OUT
* I/O
* Return : STATIC BOOL
*
* By : Qian liping
* Description : Handle icon messages
* Revision : 1.0
******************************************************************************
*/
VOID OsdHandlerIconMsg( IconState_et icon, OsdIconCtrl_st *ctrl)
{
S5H_ZoomFactor_t zoom;
BOOL menu_state;
CHAR tmp[8];
IconTimerReset( icon );
if( gOsd_onoff == FALSE)
return;
if( IconResetGraphicKeepingOsd( icon ) == TRUE )
return;
switch( icon )
{
case ICON_LOADING:
LED_SetLedOnOff(1, FALSE);
LED_SetLedOnOff(2, FALSE);
LED_SetLedOnOff(3, FALSE);
GfxCreateLoading();
OsdLoadingTimerSet( OSD_TIME_FOR_LOAD_SHOW, TIMER_ENABLE );
break;
case ICON_HIDE_NOTICE_BOX_ICON:
GfxHideNoticeBoxIcon();
break;
case ICON_CAMERA:
SysPrintf("\n[Cursor] ON Camera .");
GfxShowNoticeBoxIcon(ICON_CAMERA );
gOSD_state.etRedraw_icon = ICON_CAMERA;
/* Keeping camera, no timer .*/
break;
case ICON_WARNING:
#if !(_API_CAP_GLB_BIG_GFX_TO_VIDEO_BUFF)
if( gOSD_state.etCur_dsp == DISPLAY_SETUP && GetMainState() == MAIN_STOP )
{
OSD_LogoOn(LOGO_IDLE, TRUE);
}
#endif /* !(_API_CAP_GLB_BIG_GFX_TO_VIDEO_BUFF) */
GraphicNotAvailOn();
#if _APP_CAP_OSD_SEPERATE_ICON_TIMER
OsdWarnTimerSet( OSD_TIME_FOR_WARNING, TIMER_ENABLE );
#else
OsdIconTimerSet( OSD_TIME_FOR_WARNING, TIMER_ENABLE );
#endif
break;
case ICON_CENTER_WARN:
if( S5H_GetOutputTvMode() == OUTPUT_525_60 )
{ // NTSC
GfxCreateIconWarn( ZOOM_POS_X_CENTER -20, ZOOM_POS_Y_CENTER_N-20 );
}
else
{
GfxCreateIconWarn( ZOOM_POS_X_CENTER-20, ZOOM_POS_Y_CENTER_P-20 );
}
break;
case ICON_VOLUME:
if(GetDisplayIconState()!= ICON_VOLUME)
{
GfxVolumeOn();
}
else
{
GfxVolumeControl();
}
OsdIconTimerSet( OSD_TIME_FOR_VOLUME, TIMER_ENABLE );
break;
case ICON_RC_CODE:
strcpy(gString_buf, "");
while(ctrl->num>0)
{
strcat(gString_buf, "*");
ctrl->num--;
}
CursorMessageOn( NOTICE_TYPE_DEFAULT, gString_buf);
OsdIconTimerSet( OSD_TIME_FOR_NUM_ACTION, TIMER_ENABLE );
break;
case ICON_NUMERIC:
if(GetDiscState()==DVDV_DISC || GetDiscState() == DVDA_DISC)
{
if(GetDvdButtonSelectionState() != DVD_BTN_NONE)
strcpy( gString_buf, (char*)gpSelect[MENU_LANG]);
else
#if _APP_CAP_FUNC_SEARCH_TITLE_BY_NUMBER//By QQ 050831
{
DvdVideoInfo_t DvdInfo;
GetDvdVideoInfo(&DvdInfo);
if(DvdInfo.total_chapter ==1)
strcpy( gString_buf, (char*)gpTitle[MENU_LANG]);
else
strcpy( gString_buf, (char*)gpChapter[MENU_LANG]);
}
#else/*_APP_CAP_FUNC_SEARCH_TITLE_BY_NUMBER*/
strcpy( gString_buf, (char*)gpChapter[MENU_LANG]]);
#endif/*_APP_CAP_FUNC_SEARCH_TITLE_BY_NUMBER*/
}
else if (S5H_GetAppType() == APP_VCD)
{
if( GetSvcdMenuState() == TRUE ) /* PBC is on */
strcpy( gString_buf, (char*)gpSelect[MENU_LANG]);
else
strcpy( gString_buf, (char*)gpTrack[MENU_LANG]);
}
else if (S5H_GetAppType() == APP_MMN)
{
strcpy( gString_buf, (char*)gpSelect[MENU_LANG]);
}
sprintf( tmp, " %2d", ctrl->num );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -