Example #1
0
static PRESULT win_volume_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	SYSTEM_DATA* sys_data;
	PROGRESS_BAR* bar;
	char timestr[50];

	bar = &vol_bar;

	sys_data = sys_data_get();	

	switch(event)
	{
	case EVN_PRE_OPEN:
        win_volume_switch_clrstyle();        
        api_inc_wnd_count();
		VOLUME_TIMER_TIME = sys_data->osd_set.time_out;
		if(VOLUME_TIMER_TIME == 0 || VOLUME_TIMER_TIME>10)
			VOLUME_TIMER_TIME = 5;
		VOLUME_TIMER_TIME *= 1000;		
		OSD_SetProgressBarPos(bar, sys_data->volume);
		sprintf(timestr,"vol  %d",sys_data->volume);
		OSD_SetTextFieldContent(&vol_Proc_txt, STRING_ANSI,timestr);
		break;
	case EVN_POST_OPEN:
		volume_timer = api_start_timer(VOLUME_TIMER_NAME,VOLUME_TIMER_TIME,volume_timer_func);
		break;
	case EVN_UNKNOWNKEY_GOT:
		ap_send_msg(CTRL_MSG_SUBTYPE_KEY, param1,FALSE);
		ret = PROC_LEAVE;
		break;
	case EVN_MSG_GOT:
		if(param1 ==  CTRL_MSG_SUBTYPE_CMD_EXIT)
		{
			ret = PROC_LEAVE;
		}
#ifdef USB_MP_SUPPORT
		else if(param1 == CTRL_MSG_SUBTYPE_STATUS_VIDEO_OVER)
		{
			ret = PROC_LEAVE;
			ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_VIDEO_OVER,0,TRUE);
		}
#endif
		break;
	case EVN_PRE_CLOSE:
		break;
	case EVN_POST_CLOSE:
		api_stop_timer(&volume_timer);		
        sys_data_save(1);
        api_dec_wnd_count();
		key_cnt=0;
		i=0;
		break;
	default:
		;
	}


	return ret;
}
/*this interface is keep for "key_check_signal_status()" in key.c*/
BOOL new_win_signal_set_level_quality(UINT32 level, UINT32 quality, UINT32 lock)
{
	PROGRESS_BAR *bar;
	POBJECT_HEAD pObj;
	UINT16 level_shIdx;
	UINT16 quality_shIdx;
	UINT16 ber_idx;
	UINT32 ber_value;

	if (lock)
	{
		level_shIdx = PROGRESS_COLOR_GREEN;
		quality_shIdx = LOCK_IDX;
		ber_idx = PROGRESS_COLOR_BLUE;
	}
	else
	{
		level_shIdx = UNLOCK_IDX;
		quality_shIdx = UNLOCK_IDX;
		ber_value = 0;
	}

	if (level < 4)
		level_shIdx = WSTL_NOSHOW_IDX;
	if (quality < 4)
		quality_shIdx = WSTL_NOSHOW_IDX;

	bar = &new_sig_bar_level;//sig_bar_level;
	OSD_SetProgressBarPos(bar, level);
	bar->wTickFg = level_shIdx;

	bar = &new_sig_bar_CN;//sig_bar_CN;
	OSD_SetProgressBarPos(bar, quality);
	bar->wTickFg = quality_shIdx;


	/* If signal display is on */
	pObj = (POBJECT_HEAD) &g_new_signal_test;//g_win_signal;
	if (pObj->pRoot == NULL)
		return FALSE;
	else
		return TRUE;
}
Example #3
0
BOOL win_signal_set_wifi_level_quality(UINT32 level,UINT32 quality,UINT32 lock)
{
	PROGRESS_BAR* bar;
	POBJECT_HEAD pObj;
	UINT16 level_shIdx;
    UINT16 quality_shIdx;


    if(lock)
    {
    	level_shIdx  = B_LEVEL_LOCK_SH_IDX;	
        quality_shIdx = B_QUALITY_LOCK_SH_IDX;
    }
    else
    {
    	level_shIdx = B_LEVEL_UNLOCK_SH_IDX;
        quality_shIdx = B_QUALITY_UNLOCK_SH_IDX;
    }	
    if(level < 4)
	    level_shIdx = WSTL_NOSHOW_IDX;
    if(quality < 4)
	   quality_shIdx = WSTL_NOSHOW_IDX;

//	level_shIdx  = WSTL_PROGNAME_BAR_SH;	
//	quality_shIdx = WSTL_PROGNAME_BAR_SH;

	bar = &sig_bar_level;
	OSD_SetProgressBarPos(bar,level);
	bar->wTickFg = level_shIdx;
	
	bar = &sig_bar_quality;


	OSD_SetProgressBarPos(bar,quality);
	bar->wTickFg = quality_shIdx;

	/* If signal display is on */
	pObj = (POBJECT_HEAD)&g_win_signal;
	if(pObj->pRoot == NULL)
		return FALSE;
	else
		return TRUE;
}
Example #4
0
static void win_usbupg_process_update(UINT32 process)
{

	if(process > 100)
		process = 0;

	OSD_SetProgressBarPos(&usbupg_bar_progress,(INT16)process);
	OSD_SetTextFieldContent(&usbupg_txt_progress, STRING_NUM_PERCENT, (UINT32)process);

	OSD_DrawObject( (POBJECT_HEAD)&usbupg_bar_progress, C_UPDATE_ALL);
	OSD_DrawObject( (POBJECT_HEAD)&usbupg_txt_progress, C_UPDATE_ALL);
}
Example #5
0
static void win_rs232upg_start()
{
	UINT16 channel;

	OSD_SetProgressBarPos(&rs232upg_bar_progress,(INT16)0);
	OSD_SetTextFieldContent(&rs232upg_txt_progress, STRING_NUM_PERCENT, (UINT32)0);

	sys_upgrade(win_rs232upg_update,upg_check_exit_key/*UIGetExitKey*/);
	FreeSlavelist();
	if(screen_back_state == SCREEN_BACK_VIDEO)
	{
		channel = sys_data_get_cur_group_cur_mode_channel();
		api_play_channel(channel, TRUE, TRUE,FALSE);
	}
}
Example #6
0
static void win_rs232upg_process_update(INT32 process)
{

#ifdef WATCH_DOG_SUPPORT
    dog_set_time(0, 0);
#endif

	if(process > 100)
		process = 0;

	OSD_SetProgressBarPos(&rs232upg_bar_progress,(INT16)process);
	OSD_SetTextFieldContent(&rs232upg_txt_progress, STRING_NUM_PERCENT, (UINT32)process);

	OSD_DrawObject( (POBJECT_HEAD)&rs232upg_bar_progress, C_UPDATE_ALL);
	OSD_DrawObject( (POBJECT_HEAD)&rs232upg_txt_progress, C_UPDATE_ALL);
}
Example #7
0
static PRESULT sys_backup_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	CONTAINER* cont = (CONTAINER*)pObj;
	UINT8	id = OSD_GetObjID(pObj);

	switch(event)
	{
		case EVN_PRE_OPEN:
			//epg_release();
			wincom_open_title(pObj, RS_SYSTEM_BACKUP, 0);
			wincom_open_help(NULL, NULL, HELP_TYPE_RS232);
			OSD_SetProgressBarPos(&sys_backup_bar_progress,(INT16)0);
			OSD_SetTextFieldContent(&sys_backup_txt_progress, STRING_NUM_PERCENT, (UINT32)0);
			ret = win_sys_backup_init();
			break;			
		case EVN_POST_OPEN:
			system_state = SYS_STATE_USB_UPG;
			win_sys_backup_msg_clear();
			break;
		case EVN_PRE_CLOSE:
          	/* Make OSD not flickering */
		    *((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG;	
			break;
		case EVN_POST_CLOSE:
			system_state = SYS_STATE_NORMAL;
			wincom_close_title();
			wincom_close_help();
			//epg_init(ap_send_epg_PF_update, ap_send_epg_sch_update, ap_send_epg_detail_update);
			break;
		case EVN_MSG_GOT:
			if(param1 ==  CTRL_MSG_SUBTYPE_CMD_EXIT)
			{
				ret = PROC_LEAVE;
			}
			break;		
		default:
			break;
	}
	return ret;
}
Example #8
0
static void win_pvod_download()
{
	UINT16 i;
	BOOL bFinished=FALSE;
#if 0	
	OSD_SetAttr(&pvod_item_con1, C_ATTR_INACTIVE);
	OSD_DrawObject( (POBJECT_HEAD)&pvod_item_con1, C_UPDATE_ALL);
		
	OSD_SetAttr(&pvod_item_con2, C_ATTR_INACTIVE);
	OSD_DrawObject( (POBJECT_HEAD)&pvod_item_con1, C_UPDATE_ALL);
		
	OSD_SetAttr(&pvod_item_con3, C_ATTR_INACTIVE);
	OSD_DrawObject( (POBJECT_HEAD)&pvod_item_con1, C_UPDATE_ALL);
		
	OSD_SetAttr(&pvod_item_con4, C_ATTR_INACTIVE);
	OSD_DrawObject( (POBJECT_HEAD)&pvod_item_con1, C_UPDATE_ALL);
	
	OSD_SetProgressBarPos(&pvod_bar_progress,(INT16)0);
	OSD_SetTextFieldContent(&pvod_txt_progress, STRING_NUM_PERCENT, (UINT32)0);
#endif

	//download data
/*
	for(i=0;i<5;i++)
	{
		
		osal_delay(300);
		win_pvod_process_update(20*(i+1));
	}
*/
	//download finished
//	bFinished = TRUE;
//	SendMsgtoThread(0x01,0x00,0x00);/**Pvod_Programschedule_Query*/
	//检查USB连接????
	//启动pushvod
	SendMsgtoThread(Pvod_START_PAT,0,0);	
	
}
Example #9
0
static void win_mpegYT_player_draw_infor(void)
{
	BITMAP* bmp;
	TEXT_FIELD* txt;
	PROGRESS_BAR* bar;
	mpegYTplayer_bmp_t* bmp_desc;
	mpegYTplayer_txt_t* txt_desc;
	UINT32 i, hd_fulless;
	UINT16 icon;
	char string[30];
	UINT32 hh, mm, ss;
	UINT32 play_pos = 0;
	FileInfo file_node;
	char name_buffer[MAX_FILE_NAME_SIZE + 1];

	bmp = &mpegYT_player_bmp;
	txt = &mpegYT_player_text;
	bar = &mpegYT_player_bar;

	for (i = 0; i < MPEGYT_BMP_NUM; i++)
	{
		bmp_desc = &mpegYTplayer_bmps[i];
		icon = INVALID_ID;
		switch (bmp_desc->bmp_type)
		{
		case MPEGYT_BMP_STATIC:
			//icon = bmp_desc->icon;
			break;
		case MPEGYT_BMP_PLAY_RECORD:
			icon = bmp_desc->icon;
			break;
		case MPEGYT_BMP_PLAY_MODE:
			if (MPEGYTInfo.PlayState < sizeof(mpegplayer_yt_status_icons) / 2)
			{
				icon = mpegplayer_yt_status_icons[MPEGYTInfo.PlayState];
			}
			break;
		case MPEGYT_BMP_HDD_STATUS:
			/*			step_sectors =  (hdd_info.total_size - hdd_info.tms_size) / 5;
						if(step_sectors >0 )
						{
							hd_fulless = (hdd_info.rec_size + step_sectors/2) / step_sectors ;
							if(hd_fulless == 5)
								hd_fulless = 4;
							icon = MP_HDstatus_icons[4-hd_fulless];//hd_fulless -> 4-hd_fulles, show used space!
						}
			*/
			break;
		default:
			break;
		}


		OSD_SetBitmapContent(bmp, icon);
		OSD_SetRect(&bmp->head.frame, bmp_desc->left, bmp_desc->top, bmp_desc->width, bmp_desc->height);
		OSD_DrawObject( (OBJECT_HEAD*) bmp, C_UPDATE_ALL);
	}

	for (i = 0;i < MPEGYT_TXT_NUM;i++)
	{
		txt_desc = &mpegYTplayer_txts[i];

		OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)"");

		switch (txt_desc->txt_type)
		{
		case MPEGYT_TXT_PLAY_NAME:
			//get_file_from_file_list(win_file_list[VIDEO_FILE_LIST], mpegYTlist_idx, &file_node);
			//filter_unkownfont_name(file_node.name, name_buffer);
			win_shorten_filename(entry_youtube->title,name_buffer);
			sprintf(name_buffer, "%s", name_buffer);
			OSD_SetTextFieldContent(txt, STRING_UTF8, (UINT32)name_buffer);
			break;
		case MPEGYT_TXT_DATE:
			//sprintf(string,"%02d/%02d",dt.month,dt.day);
			//STRCPY(string, "");
			sprintf(string, "%02d/%02d/%02d",
					entry_youtube->pub_date.year,
					entry_youtube->pub_date.month,
					entry_youtube->pub_date.day);
			OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)string);
			break;
		case MPEGYT_TXT_TIME:
			//sprintf(string,"%02d:%02d",dt.hour,dt.min);
			STRCPY(string, "");
			OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)string);
			break;
		case MPEGYT_TXT_PLAY_MODE:
			STRCPY(string, "");
			if (MPEGYTInfo.PlayState == MPEG_STOP)
			{
				sprintf(string, "%s", "Stop");
			}
			else if (MPEGYTInfo.PlayState == MPEG_PLAY)
			{
				sprintf(string, "%s", "Play");
			}
			else if (MPEGYTInfo.PlayState == MPEG_PAUSE)
			{
				sprintf(string, "%s", "Pause");
			}
			else if (MPEGYTInfo.PlayState == MPEG_FF || MPEGYTInfo.PlayState == MPEG_FB)
			{
				sprintf(string, "X%d", mpegYTspeed_steps[MPEGYTInfo.PlaySpeed]);
			}
			else if (MPEGYTInfo.PlayState == MPEG_SF || MPEGYTInfo.PlayState == MPEG_SB)
			{
				sprintf(string, "X1/%d", mpegYTspeed_steps[MPEGYTInfo.PlaySpeed]);
			}
			else if(MPEGYTInfo.PlayState == MPEG_STEP)
			{
				sprintf(string,"%s","Step");
			}
#ifdef SUPPORT_DIVX_CERT
            else if(MPEGYTInfo.PlayState == MPEG_RESUME_STOP)
            {
                sprintf(string,"%s","Stop");
            }
#endif
			OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)string);
			break;
		case MPEGYT_TXT_PLAY_1ST_TIME:
			STRCPY(string, "");
			MPEGYTInfo.PlayTime = (UINT32)MPGFileDecoderGetPlayTime() + s_ytvideo_seektime;
            if (MPEGYTInfo.PlayState == MPEG_STOP)
                MPEGYTInfo.PlayTime = 0;
#if 1
			hh = MPEGYTInfo.PlayTime / 3600;
			mm = (MPEGYTInfo.PlayTime % 3600) / 60;
			ss = MPEGYTInfo.PlayTime % 60;
#else
			hh = entry_youtube->info->duration/3600;
			mm = (entry_youtube->info->duration % 3600) / 60;
			ss = entry_youtube->info->duration % 60;			
#endif
			sprintf(string, "%02d:%02d:%02d", hh, mm, ss);
			OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)string);
			break;

		case MPEGYT_TXT_PLAY_2ND_TIME:
			STRCPY(string, "");
#if 0
			hh = MPEGYTInfo.TotalTime / 3600;
			mm = (MPEGYTInfo.TotalTime % 3600) / 60;
			ss = MPEGYTInfo.TotalTime % 60;
#else
			hh = entry_youtube->info->duration/3600;
			mm = (entry_youtube->info->duration % 3600) / 60;
			ss = entry_youtube->info->duration % 60;	
#endif
			sprintf(string, "%02d:%02d:%02d", hh, mm, ss);
			OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)string);
			break;
		case MPEGYT_TXT_HDD_STATUS:
			/*step_sectors = (hdd_info.total_size - hdd_info.tms_size)/100;
			if(step_sectors >0 )
			{
				sprintf(string,"%d%%",(100 - (hdd_info.rec_size+ step_sectors/2 )/step_sectors));
			}
			else
			{
				STRCPY(string,"");
			}
			OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)string);
			*/
			break;
		}

		OSD_SetRect(&txt->head.frame, txt_desc->left, txt_desc->top, txt_desc->width, txt_desc->height);
		txt->head.style.bShowIdx = txt_desc->shidx;
		OSD_DrawObject( (OBJECT_HEAD *)txt, C_UPDATE_ALL);
	}

	/* Draw progress bar */
	OSD_SetProgressBarPos(bar, 100);
	OSD_SetRect(&bar->head.frame, BAR_L, BAR_T, BAR_W, 24);
	bar->rcBar.uLeft 	= 2;
	bar->rcBar.uTop 		= 5;
	bar->rcBar.uWidth	= BAR_W - 4;
	bar->rcBar.uHeight 	= 14;//16 - 6;
	bar->wTickFg 		= WSTL_BAR_06;
	OSD_DrawObject((POBJECT_HEAD)bar, C_UPDATE_ALL);

	/* Draw play pos */
//    BarState.nPos = MPEGYTInfo.PlayTime;
	if (BarState.nRange)
	{
		play_pos = BarState.nPos * 100 / BarState.nRange;
	}
	OSD_SetRect(&bmp->head.frame, bar->head.frame.uLeft+6 + (bar->head.frame.uWidth-12)*play_pos / 100*OSD_GetProgressBarPos(bar) / 100 - POS_ICON_WIDTH / 2,
				bar->head.frame.uTop, POS_ICON_WIDTH, bar->head.frame.uHeight);
	OSD_SetBitmapContent(bmp, IM_PVR_DOT);
	OSD_DrawObject((POBJECT_HEAD)bmp, C_UPDATE_ALL);

	/* Draw play cursor */
	if (CURSOR_MOVING == BarState.State)
	{
		if (BarState.nRange)
		{
			play_pos = BarState.nCursor * 100 / BarState.nRange;
		}
		OSD_SetRect(&bmp->head.frame, bar->head.frame.uLeft + 6 + (bar->head.frame.uWidth-4)*play_pos / 100/**OSD_GetProgressBarPos(bar) / 100*/ - POS_ICON_WIDTH / 2,
		//OSD_SetRect(&bmp->head.frame, bar->head.frame.uLeft + 6 + (bar->head.frame.uWidth-4)*play_pos / 100*OSD_GetProgressBarPos(bar) / 100 - POS_ICON_WIDTH / 2,
					bar->head.frame.uTop, POS_ICON_WIDTH, bar->head.frame.uHeight);
		OSD_SetBitmapContent(bmp, IM_PVR_DOT_ORANGE);
		OSD_DrawObject((POBJECT_HEAD)bmp, C_UPDATE_ALL);
	}
}
Example #10
0
static PRESULT sys_backup_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	CONTAINER* cont = (CONTAINER*)pObj;
	UINT8	id = OSD_GetObjID(pObj);
	OSD_RECT rect;
	UINT32 posi;
	switch(event)
	{
		case EVN_PRE_OPEN:
#ifdef PREVIEW_SUBMENU  //-a by wangyang 
			if(param2==MENU_OPEN_TYPE_OTHER)
			{
				if(focus_flag==1)
				{
					POBJECT_HEAD focusObj=OSD_GetFocusObject(pObj);
					focusObj_id =focusObj->bID;
				       OSD_SetContainerFocus((CONTAINER*)pObj,0);
					 focus_flag  =0;
				}
			}
			else
			{
			        OSD_SetContainerFocus((CONTAINER*)pObj,focusObj_id);
				focus_flag  =1;

			}
#endif
#ifdef EXIT_KEY_EXIT_ALL_MENU
	         exit_key_flag =  FALSE;
#endif
	//		win_usb_backup_tmr_loop =0;
			wincom_open_subtitle(pObj, RS_SYSTEM_BACKUP, 0);
			wincom_open_help(NULL, NULL, HELP_TYPE_RS232);
			OSD_SetProgressBarPos(&sys_backup_bar_progress,(INT16)0);
			OSD_SetTextFieldContent(&sys_backup_txt_progress, STRING_NUM_PERCENT, (UINT32)0);
			ret = win_sys_backup_init();
			break;			
		case EVN_POST_OPEN:
			system_state = SYS_STATE_USB_UPG;
		wincom_open_commen_help(pObj);//-a by wangyang 
			win_sys_backup_msg_clear();
			break;
		case EVN_PRE_CLOSE:
          	/* Make OSD not flickering */
		    *((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG;	
			break;
		case EVN_POST_CLOSE:
			system_state = SYS_STATE_NORMAL;
			//wincom_close_title();
			wincom_close_subtitle();
			wincom_close_help();
			win_progress_bar_draw_bmp_close();
			OSD_ClearScreen();
#ifdef EXIT_KEY_EXIT_ALL_MENU
	        if( exit_key_flag == TRUE)
	        	{
 			 exit_key_flag =FALSE;
			mm_leave_all_menu();
		}
#endif
			//epg_init(ap_send_epg_PF_update, ap_send_epg_sch_update, ap_send_epg_detail_update);
			//OSD_TrackObject( (POBJECT_HEAD) &g_win_mainmenu, C_UPDATE_ALL);
			break;
		case EVN_MSG_GOT:
			if(param1 ==  CTRL_MSG_SUBTYPE_CMD_EXIT)
			{
				ret = PROC_LEAVE;
			}
		#ifdef PREVIEW_SUBMENU  //-a by wangyang 
			if (param1 == CTRL_MSG_SUBTYPE_CMD_STO && param2 == USB_STATUS_OVER)
			{
				system_state = SYS_STATE_NORMAL;
				wincom_close_subtitle();
				OSD_ClearScreen();
				wincom_close_help();
				OSD_ClearObject( pObj, C_UPDATE_ALL);
				OSD_DrawFill(SUBMENU_W_L, SUBMENU_W_T, (SUBMENU_W_W), (SUBMENU_W_H), OSD_TRANSPARENT_COLOR, NULL);
				OSD_ObjOpen((POBJECT_HEAD)&win_rs232upg_con, MENU_OPEN_TYPE_OTHER );
				ret = PROC_LEAVE;
			}
		#endif
			if (param1 == CTRL_MSG_SUBTYPE_CMD_TIMEDISPLAYUPDATE )
			{
				/*if(start_backup==1)
				{
					win_usb_backup_tmr_loop++;
					posi = win_usb_backup_tmr_loop % PROGRESS_BAR_ICON_CNT;
					OSD_SetRect(&rect, BAR_TXT_L, BAR_TXT_T+BAR_TXT_H+4, 80, 80);
					win_progress_bar_draw_bmp(&rect,progress_bar_ids[posi]);
				}
				else
					win_progress_bar_draw_bmp_close();*/

			}

			break;		
		default:
			break;
	}
	return ret;
}
Example #11
0
static PRESULT win_volume_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	SYSTEM_DATA* sys_data;
	PROGRESS_BAR* bar;

	bar = &vol_bar;

	sys_data = sys_data_get();	

	switch(event)
	{
	case EVN_PRE_OPEN:
        win_volume_switch_clrstyle();        
        api_inc_wnd_count();
		VOLUME_TIMER_TIME = sys_data->osd_set.time_out;
		if(VOLUME_TIMER_TIME == 0 || VOLUME_TIMER_TIME>10)
			VOLUME_TIMER_TIME = 5;
		VOLUME_TIMER_TIME *= 1000;		
		OSD_SetProgressBarPos(bar, sys_data->volume);
		break;
	case EVN_POST_OPEN:
		volume_timer = api_start_timer(VOLUME_TIMER_NAME,VOLUME_TIMER_TIME,volume_timer_func);
		break;
	case EVN_UNKNOWNKEY_GOT:
		ap_send_msg(CTRL_MSG_SUBTYPE_KEY, param1,FALSE);
		ret = PROC_LEAVE;
		break;
	case EVN_MSG_GOT:
		if(param1 ==  CTRL_MSG_SUBTYPE_CMD_EXIT)
		{
			ret = PROC_LEAVE;
		}
#ifdef USB_MP_SUPPORT
		else if(param1 == CTRL_MSG_SUBTYPE_STATUS_VIDEO_OVER)
		{
			ret = PROC_LEAVE;
			ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_VIDEO_OVER,0,TRUE);
		}
#endif
		break;
	case EVN_PRE_CLOSE:
		// if open volume window by popup window, not clear OSD. 
		if(menu_stack_get_top() != (POBJECT_HEAD)&g_win_volume)
		{
			/* Make OSD not flickering */
			*((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG;	
		}
		break;
	case EVN_POST_CLOSE:
		api_stop_timer(&volume_timer);		
        sys_data_save(1);
        api_dec_wnd_count();
		break;
	default:
		;
	}


	return ret;
}
Example #12
0
BOOL win_signal_set_level_quality(UINT32 level,UINT32 quality,UINT32 lock)
{
	PROGRESS_BAR* bar;
	POBJECT_HEAD pObj;
	UINT16 level_shIdx;
    UINT16 quality_shIdx;


    if(api_is_sd_color_mode())
    {
        if(lock)
        {
        	level_shIdx  = B_LEVEL_LOCK_SH_IDX;	
            quality_shIdx = B_QUALITY_LOCK_SH_IDX;
        }
        else
        {
        	level_shIdx = B_LEVEL_UNLOCK_SH_IDX;
            quality_shIdx = B_QUALITY_UNLOCK_SH_IDX;
        }	
        if(level < 4)
		    level_shIdx = WSTL_NOSHOW_IDX;
	    if(quality < 4)
		   quality_shIdx = WSTL_NOSHOW_IDX;
    }
    else
    {
         if(lock)
        {
        	level_shIdx  = B_LEVEL_LOCK_SH_IDX_HD;	
            quality_shIdx = B_QUALITY_LOCK_SH_IDX_HD;
        }
        else
        {
        	level_shIdx = B_LEVEL_UNLOCK_SH_IDX_HD;
            quality_shIdx = B_QUALITY_UNLOCK_SH_IDX_HD;
        } 
        if(level < 4)
		    level_shIdx = WSTL_NOSHOW_IDX;
	    if(quality < 4)
		   quality_shIdx = WSTL_NOSHOW_IDX;        
    }

    
	if(lock)
	{
		level+=30;	
		if(level>=100)
		{
			level=98;
		}

		quality+=30;	
		if(quality>=100)
		{
			quality=98;
		}
	}
	
		
	bar = &sig_bar_level;
	OSD_SetProgressBarPos(bar,level);
	bar->wTickFg = level_shIdx;
	
	bar = &sig_bar_quality;
    if(quality < 10)
    {
        quality = 10;
    }
	OSD_SetProgressBarPos(bar,quality);
	bar->wTickFg = quality_shIdx;


	/* If signal display is on */
	pObj = (POBJECT_HEAD)&g_win_signal;
	if(pObj->pRoot == NULL)
		return FALSE;
	else
		return TRUE;
}
Example #13
0
void ap_tf_cas_process_update(UINT8 process, UINT8 mark)
{
	date_time dt;
	SYSTEM_DATA* pSysData = NULL;
	static tem_process = 0; //
	static BOOL g_smc_read = FALSE;

	//libc_printf("smc upd process:%d, %d\n", process, mark);
	ap_tf_cas_clear_screen(CLEAR_CA_MSG);

	if(CDCA_SCALE_RECEIVEPATCH == mark)
	{
		smcupg_txt_msg.wStringID = RS_DISPLAY_DOWNLOADING;
	}
	else if(CDCA_SCALE_PATCHING == mark)
	{
		smcupg_txt_msg.wStringID = RS_TF3_SHOWMSG_UPDATE;
	}

	pSysData = sys_data_get();

	if (CDCA_SCALE_PATCHING == mark && (process == 0 ||(FALSE == g_smc_read) ))
	{
			if(FALSE == g_smc_read)
			{
				if(g_smc_no[0] != 0)
				{
					MEMCPY(pSysData->upd_smc_no, g_smc_no, sizeof(g_smc_no));
					g_smc_read = TRUE;
				}
			}
	}
		
	if(process > 100)
	{
		if (CDCA_SCALE_PATCHING == mark)
		{
			get_local_time(&dt);			
			pSysData->smc_update_dt = dt;

			if (tem_process == 100)
			{
				pSysData->bUpd_status = TRUE;
			}
			else
			{
				pSysData->bUpd_status = FALSE;
			}
		}
		
		sys_data_save(0);
#if 1
		OSD_ClearObject((POBJECT_HEAD)&smcupg_info_con, C_UPDATE_ALL);
        
		if((POBJECT_HEAD)&smcupg_info_con == menu_stack_get_top())
		{
			menu_stack_pop();
		}
        BackToFullScrPlay();
#else
		OSD_ClearObject( (POBJECT_HEAD)&smcupg_txt_msg, C_UPDATE_ALL);
		OSD_ClearObject( (POBJECT_HEAD)&smcupg_bar_progress, C_UPDATE_ALL);
		OSD_ClearObject( (POBJECT_HEAD)&smcupg_txt_progress, C_UPDATE_ALL);
#endif
	}
	else
	{
		if((POBJECT_HEAD)CHANNEL_BAR_HANDLE == menu_stack_get_top())
		{
			OSD_ObjClose((POBJECT_HEAD)CHANNEL_BAR_HANDLE, C_DRAW_SIGN_EVN_FLG|C_CLOSE_CLRBACK_FLG);
			menu_stack_pop();
		}
		
		if(-1 == window_pos_in_stack((POBJECT_HEAD)&smcupg_info_con))
		{
			menu_stack_push((POBJECT_HEAD)&smcupg_info_con);
		}
		
		OSD_SetProgressBarPos(&smcupg_bar_progress,(INT16)process);
		OSD_SetTextFieldContent(&smcupg_txt_progress, STRING_NUM_PERCENT, (UINT32)process);
#if 1
		OSD_DrawObject((POBJECT_HEAD)&smcupg_info_con, C_UPDATE_ALL);
#else
		OSD_DrawObject( (POBJECT_HEAD)&smcupg_txt_msg, C_UPDATE_ALL);
		OSD_DrawObject( (POBJECT_HEAD)&smcupg_bar_progress, C_UPDATE_ALL);
		OSD_ClearObject( (POBJECT_HEAD)&smcupg_txt_progress, C_UPDATE_ALL);
		OSD_DrawObject( (POBJECT_HEAD)&smcupg_txt_progress, C_UPDATE_ALL);
#endif
	}

    tem_process = process;
}
Example #14
0
static PRESULT pvod_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	CONTAINER* cont = (CONTAINER*)pObj;
	UINT8	id = OSD_GetObjID(pObj);

	switch(event)
	{
		case EVN_PRE_OPEN:
//			SendMsgtoThread(Pvod_START_PAT,0,0);//自己启动PVOD
			win_pvod_pause();
			win_pvod_load_prog_info();

			OSD_SetProgressBarPos(&pvod_bar_progress,(INT16)0);
			OSD_SetTextFieldContent(&pvod_txt_progress, STRING_NUM_PERCENT, (UINT32)0);

			break;
			
		case EVN_POST_OPEN:
			win_pvod_msg_clear();
			//win_pvod_display_msg( OSD_GetMultiselSel(&pvod_sel_prog_name));
			wincom_open_title_ext((POBJECT_HEAD)&g_win_pvod,"Push VOD", 0);
			break;
		
		case EVN_PRE_CLOSE:
			win_pvod_clear();
			/* Make OSD not flickering */
			*((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG;	
			
			break;

		case EVN_POST_CLOSE:
			break;

		case EVN_MSG_GOT:
			if(param1 == CTRL_MSG_SUBTYPE_STATUS_PVOD)
				{
				
					UINT16 percent = (UINT16)(param2 );
					pvod_disp_type_t disp_type = (pvod_disp_type_t)(param2>>16);

					if(PVOD_DISP_DDB_DOWNLOAD_PROGRASS == disp_type)
					{
						win_pvod_process_update(percent);
						if(percent == 100)
						{
							POBJECT_HEAD submenu=NULL;
							mp_title_type = TITLE_VIDEO;
							submenu = (POBJECT_HEAD)&g_win_usb_filelist;
							g_enter_from_pvod = TRUE;
							if(OSD_ObjOpen(submenu, MENU_OPEN_TYPE_MENU | 1) != PROC_LEAVE)
							{
								menu_stack_push(submenu);					
							}
						}
					}

				}
				
			break;
			
	}
Example #15
0
static PRESULT win_search_update_progress(UINT8 progress_prec)
{	
	UINT8 result = PROC_LOOP;
	win_popup_choice_t popup_result=WIN_POP_CHOICE_NULL;
	UINT8 back_save;
	PROGRESS_BAR* bar;
	TEXT_FIELD* txt;
	P_NODE node;
	UINT8 str[32];

	DBG_PRINTF("Enter %s....\n",__FUNCTION__);

	BOOL is_flash_full = FALSE;
	bar = &srch_progress_bar;
	txt = &srch_progress_txt;
	if(progress_prec == 150)
	{
		progress_prec = 100;
		is_flash_full = TRUE;
	}

	OSD_SetProgressBarPos(bar, progress_prec);
	if(progress_prec< 3)
		bar->wTickFg = WSTL_NOSHOW_IDX;
	else
		bar->wTickFg = PROGRESSBAR_PROGRESS_SH_IDX;
	OSD_SetTextFieldContent(txt, STRING_NUM_PERCENT,progress_prec);
	if(win_search_param.as_method != AS_METHOD_NIT_TP &&
		win_search_param.as_method != AS_METHOD_NIT&&
		win_search_param.as_method != AS_METHOD_MULTI_NIT)
	{
		OSD_DrawObject( (POBJECT_HEAD)bar, C_UPDATE_ALL);
		OSD_DrawObject( (POBJECT_HEAD)txt, C_UPDATE_ALL);
	}/*If search mode is AS_METHOD_NIT_TP/AS_METHOD_NIT/AS_METHOD_MULTI_NIT, do not show progress bar*/	

	
	if(progress_prec == 100) // is completed ?
	{
		// stop drawave timer, at first
		//osal_timer_activate(win_search_tmr_id, FALSE);
				
		if((srch_ch_cnt[0] != 0x0)  // radio
		|| (srch_ch_cnt[1] != 0x0))// tv
		{
			//win_search_save_data(TRUE);
		}
		else // not find
		{
			if(!is_flash_full)
			{
				INT32 ret = 0;

				if(pid_search_flg)		
				{
#ifdef NEW_DEMO_FRAME
					struct dmx_device *dmx = (struct dmx_device *)dev_get_by_id(HLD_DEV_TYPE_DMX, 0);
					ret = as_prog_pid_search(dmx, 1, pid_search_VPid,pid_search_APid, pid_search_PPid);
#else
					ret = as_prog_pid_search(1,pid_search_VPid,pid_search_APid,pid_search_PPid);
#endif
					if(ret)
					{//add node
						MEMSET(&node,0,sizeof(node));
						node.sat_id = pid_search_tp>>NODE_ID_TP_BIT;
						node.tp_id = pid_search_tp;
						node.video_pid = pid_search_VPid;
						node.audio_count = 1;
						node.audio_pid[0] = pid_search_APid;
						node.pcr_pid = pid_search_PPid;
						node.av_flag =1;
						sprintf(str,"tp%d_%d",node.tp_id,node.video_pid);
						ComAscStr2Uni(str, (UINT16*)node.service_name);
						if(SUCCESS!= lookup_node(TYPE_PROG_NODE, &node, node.tp_id))
						{
							add_node(TYPE_PROG_NODE, node.tp_id, &node);
							update_data();
						}
					}
				}
				if(!ret)
				{
                    win_search_last_tp_ok_failed(srch_tp_cnt);

					win_compopup_init(WIN_POPUP_TYPE_OK);
					win_compopup_set_msg(NULL,NULL,RS_MSG_NO_PROGRAM_FOUND);
					win_compopup_open_ext(&back_save);
				}
			}			
		}
		
		if(is_flash_full==TRUE)
		{
            win_search_last_tp_ok_failed(srch_tp_cnt);

			win_compopup_init(WIN_POPUP_TYPE_OK);
			win_compopup_set_msg(NULL,NULL,RS_MSG_SPACE_FULL);
			win_compopup_open_ext(&back_save);
		}
		
		result = PROC_LEAVE;
	}
Example #16
0
static PRESULT win_volume_bar_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	PROGRESS_BAR* bar;	
	SYSTEM_DATA* sys_data;
	UINT32 vkey;
	static int  m=0;
	VACTION unact;
	
	bar = (PROGRESS_BAR*)pObj;
	
	sys_data = sys_data_get();	

	switch(event)
	{
	case EVN_PRE_CHANGE:
		unact = (VACTION)(param1>>16);
		if(unact==VACT_DECREASE)
			volume_flag = 0;
		else if(unact==VACT_INCREASE)
			volume_flag = 1;
		if(key_cnt==1)
			i=0;
		m=sys_data->volume = OSD_GetProgressBarPos(bar);
		if(sys_data->volume > 0 && GetMuteState() )
		{
			SetMuteOnOff(TRUE);
			restore_mute_bg();
		}
		if(key_cnt > 1)
		{
			 if(volume_flag)
			 {
			   	sys_data->volume = sys_data->volume +2*(++i);
			 }
			 else 
			 {
			       
			   	m = sys_data->volume -2*(++i);
				if(m<=0)
				{
					m=0;
				}
				sys_data->volume = m;
			 }
			 
		}
		if(sys_data->volume>=100)
		{
			sys_data->volume=100;
		}
		api_audio_set_volume(sys_data->volume);
		OSD_SetProgressBarPos(bar, sys_data->volume);
		break;
	case EVN_POST_CHANGE:
		api_stop_timer(&volume_timer);		 
		volume_timer = api_start_timer(VOLUME_TIMER_NAME,VOLUME_TIMER_TIME,volume_timer_func);
		ret = PROC_LOOP;
		break;
	case EVN_UNKNOWNKEY_GOT:
		ap_hk_to_vk(0, param1, &vkey);
		if(vkey == V_KEY_NULL)
		{
			ret = PROC_LOOP;
		}
		break;
	default:
		break;
	}

	return ret;		 
}
Example #17
0
BOOL new_win_signal_update()
{
	POBJECT_HEAD pObj;
	PROGRESS_BAR *bar;
	TEXT_FIELD *txt;

	UINT16 cn_noise, level;
	UINT32 ber;
	INT32 temp = 0;
	UINT32 dot = 0;
	char str[20];
	struct nim_device *nim_dev;
	UINT8 lock, cn_noise_maped = 0, level_maped = 0;
	UINT16 level_shIdx,quality_shIdx,ber_idx;
    
	pObj = (POBJECT_HEAD) &g_new_signal_test;//lin
	if (pObj->pRoot == NULL)
		return FALSE;

	if (cur_tuner_idx == 0)
		nim_dev = g_nim_dev;
	else
		nim_dev = g_nim_dev2;

	nim_get_lock(nim_dev, &lock);
    nim_ioctl_ext(nim_dev, NIM_DRIVER_GET_RF_LEVEL, (void*) &level);
        
	if (lock)
	{
		level_shIdx = PROGRESS_COLOR_GREEN;
		quality_shIdx = LOCK_IDX;
		ber_idx = PROGRESS_COLOR_BLUE;
        nim_ioctl_ext(nim_dev, NIM_DRIVER_GET_CN_VALUE, (void*) &cn_noise);    
		nim_ioctl_ext(nim_dev, NIM_DRIVER_GET_BER_VALUE, (void*) &ber);
	}
	else
	{
		level_shIdx = UNLOCK_IDX;
		quality_shIdx = UNLOCK_IDX;
		ber_idx = UNLOCK_IDX;
		cn_noise = 0;
		ber = 0;
	}

	//update the text value & uint for each item
	if(lock)
	{
		sprintf(str, "%d.%d ", cn_noise / 10, cn_noise % 10);
	}
	else
	{
		sprintf(str, "0");
	}
	txt = &new_sig_txt_CN0;//sig_txt_CN_uint;
	OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)str);


	sprintf(str, "%d ", ber);
	txt = &new_sig_txt_BER0;//sig_txt_BER_uint;
	OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)str);
            
    if (level % 10)
    {
		temp = (107-level / 10) - 1; //107
		dot = 10-level % 10;
	}
	else
	{
		temp = 107-level / 10; //107
		dot = 0;
	}

    if(temp<0)
        temp= -temp;  //temp=0; //avoid the negative value

	sprintf(str, "%d.%d", temp, dot);
	txt = &new_sig_txt_level0;//sig_txt_level_uint;
	OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)str);

//draw SNR bar
	nim_get_SNR(nim_dev, &cn_noise_maped);
	bar = &new_sig_bar_CN;//sig_bar_CN;  
    if(0==cn_noise)
    {
        OSD_SetProgressBarPos(bar, cn_noise_maped);
        bar->wTickFg = quality_shIdx;
    }
    else
    {
	    OSD_SetProgressBarPos(bar, cn_noise_maped); //OSD_SetProgressBarPos(bar, cn_noise_maped);
	    bar->wTickFg = quality_shIdx;
    }


//Draw the signal error bar
	bar = &new_sig_bar_BER;//sig_bar_BER;
	ber = new_map_ber_value(&ber);
	OSD_SetProgressBarPos(bar, ber);
	bar->wTickFg = ber_idx;

//Draw the signal intensity bar
    level_maped = temp *100 / 107;  
//    if((level_maped>=0)&&(level_maped<30))
    if(level_maped<30)
    {
        level_maped = 5*level_maped/2;  
    }
    else if((level_maped>=30)&&(level_maped<60))
    {
        level_maped = 75 + (level_maped - 30)/3; 
    }
    else
    {
        level_maped = 95 + (level_maped - 60)/20;
    }
    
	if (level_maped > 100)
	{
		level_maped = 100;
//        osal_task_sleep(10);
    } 
    
	bar = &new_sig_bar_level;//sig_bar_level; 
	OSD_SetProgressBarPos(bar, level_maped);
	bar->wTickFg = level_shIdx;

//draw them all
	OSD_DrawObject(pObj, C_UPDATE_ALL);

	return TRUE;
}
Example #18
0
static void progname_signal_refresh(BOOL update)
{
	UINT8 level,quality,lock;
	struct nim_device* nim_dev;
	char stringTemp[50];

	PROGRESS_BAR* bar;
	POBJECT_HEAD pObj;
	UINT16 level_shIdx;
    UINT16 quality_shIdx;

	
  	if(cur_tuner_idx == 0)
		nim_dev = g_nim_dev;
	else
		nim_dev = g_nim_dev2;	
	nim_get_lock(nim_dev, &lock);
	nim_get_AGC(nim_dev, &level);
	nim_get_SNR(nim_dev, &quality);
	
	dem_signal_to_display(lock,&level,&quality);

	memset(stringTemp,0,sizeof(stringTemp));
	sprintf(stringTemp,"%d%%",level);
	OSD_SetTextFieldContent(&progname_progress_S_value, STRING_ANSI, (UINT32)stringTemp);
	sprintf(stringTemp,"%d%%",quality);
	OSD_SetTextFieldContent(&progname_progress_Q_value, STRING_ANSI, (UINT32)stringTemp);

    if(api_is_sd_color_mode())
    {
        if(lock)
        {
        	level_shIdx  = WSTL_BAR_04_8BIT;	
            quality_shIdx = WSTL_BAR_02_8BIT;
        }
        else
        {
        	level_shIdx = WSTL_BAR_03_8BIT;
            quality_shIdx = WSTL_BAR_03_8BIT;
        }	
        if(level < 4)
		    level_shIdx = WSTL_NOSHOW_IDX;
	    if(quality < 4)
		   quality_shIdx = WSTL_NOSHOW_IDX;
    }
    else
    {
         if(lock)
        {
        	level_shIdx  = WSTL_BAR_01_HD;	
            quality_shIdx = WSTL_BAR_02_HD;
        }
        else
        {
        	level_shIdx = WSTL_BAR_03_HD;
            quality_shIdx = WSTL_BAR_03_HD;
        } 
        if(level < 4)
		    level_shIdx = WSTL_NOSHOW_IDX;
	    if(quality < 4)
		   quality_shIdx = WSTL_NOSHOW_IDX;        
    }

	bar = &progname_progress_bar_S;
	OSD_SetProgressBarPos(bar,level);
	bar->wTickFg = level_shIdx;
	
	bar = &progname_progress_bar_Q;
    if(quality < 10)
    {
        quality = 10;
    }
	OSD_SetProgressBarPos(bar,quality);
	bar->wTickFg = quality_shIdx;

	if(update)
	{
		memset(stringTemp,0,sizeof(stringTemp));
		sprintf(stringTemp,"Intensity");
		OSD_SetTextFieldContent(&progname_progress_S_name, STRING_ANSI, (UINT32)stringTemp);
		OSD_DrawObject((POBJECT_HEAD)&progname_progress_S_name,C_DRAW_SIGN_EVN_FLG |C_UPDATE_ALL);
		
		memset(stringTemp,0,sizeof(stringTemp));
		sprintf(stringTemp,"Quality");
		OSD_SetTextFieldContent(&progname_progress_Q_name, STRING_ANSI, (UINT32)stringTemp);
		OSD_DrawObject((POBJECT_HEAD)&progname_progress_Q_name,C_DRAW_SIGN_EVN_FLG |C_UPDATE_ALL);

		OSD_DrawObject((POBJECT_HEAD)&progname_progress_bar_S,C_DRAW_SIGN_EVN_FLG |C_UPDATE_ALL);
		OSD_DrawObject((POBJECT_HEAD)&progname_progress_S_value,C_DRAW_SIGN_EVN_FLG |C_UPDATE_ALL);
		OSD_DrawObject((POBJECT_HEAD)&progname_progress_bar_Q,C_DRAW_SIGN_EVN_FLG |C_UPDATE_ALL);
		OSD_DrawObject((POBJECT_HEAD)&progname_progress_Q_value,C_DRAW_SIGN_EVN_FLG |C_UPDATE_ALL);
	}
}
Example #19
0
static PRESULT rs232upg_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	CONTAINER* cont = (CONTAINER*)pObj;
	UINT8	id = OSD_GetObjID(pObj);

	switch(event)
	{
		case EVN_PRE_OPEN:
#ifdef PREVIEW_SUBMENU  //-a by wangyang 
			if(param2==MENU_OPEN_TYPE_OTHER)
			{
				if(focus_flag==1)
				{
					POBJECT_HEAD focusObj=OSD_GetFocusObject(pObj);
					focusObj_id =focusObj->bID;
				       OSD_SetContainerFocus((CONTAINER*)pObj,0);
					 focus_flag  =0;
				}
			}
			else
			{
			        OSD_SetContainerFocus((CONTAINER*)pObj,focusObj_id);
				focus_flag  =1;

			}
#endif
#ifdef EXIT_KEY_EXIT_ALL_MENU
	         exit_key_flag =  FALSE;
#endif
			wincom_open_subtitle((POBJECT_HEAD)&win_rs232upg_con,RS_UPGRADE_MODE_RS232, 0);
			win_rs232upg_load_chunk_info();
			OSD_SetProgressBarPos(&rs232upg_bar_progress,(INT16)0);
			OSD_SetTextFieldContent(&rs232upg_txt_progress, STRING_NUM_PERCENT, (UINT32)0);

			break;
			
		case EVN_POST_OPEN:
			win_rs232upg_msg_clear();
		wincom_open_commen_help(pObj);//-a by wangyang 
			break;
		
		case EVN_PRE_CLOSE:
			win_rs232upg_clear();
			/* Make OSD not flickering */
			*((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG;	
			
			break;

		case EVN_POST_CLOSE:
	  		wincom_close_subtitle();
			OSD_ClearScreen();
#ifdef EXIT_KEY_EXIT_ALL_MENU
	        if( exit_key_flag == TRUE)
	        	{
 			 exit_key_flag =FALSE;
			mm_leave_all_menu();
		}
#endif
			//OSD_TrackObject( (POBJECT_HEAD) &g_win_mainmenu, C_UPDATE_ALL);
			break;
		#ifdef PREVIEW_SUBMENU  //-a by wangyang 
  		case EVN_MSG_GOT:
			if (param1 == CTRL_MSG_SUBTYPE_CMD_STO && param2 == USB_STATUS_OVER)
			{
			OSD_ObjOpen((POBJECT_HEAD)&g_win_submenu, MENU_OPEN_TYPE_OTHER );
			}
			break;		
		#endif
	}
	return ret;
}