Example #1
0
PRESULT ap_cas_IPPV_proc()
{
	static UINT8 flag = 0;
	POBJECT_HEAD p_top_menu = menu_stack_get_top();
	
	if ((MAIN_MENU_HANDLE == menu_stack_get(0)) \
		||(EPG_HANDLE == menu_stack_get_top()) \
		||(LIT_CHAN_LIST_HANDLE == menu_stack_get_top()) \
		||(CHAN_LIST_HANDLE == menu_stack_get_top()) \
		||(SEARCHN_HANDLE == menu_stack_get_top()) \
		)
	{
		//current_ippv_ecm = ecmpid;
		return;
	}
	

	//avoid to open the same window frequently, i see this scenario on site
//	if (0 ==win_ippv_check_request())
//		return;
	
	if((p_top_menu == CHANNEL_BAR_HANDLE)
		||(p_top_menu == AUDIO_HANDLE)
		||(p_top_menu == VOLUMEBAR_HANDLE))
	{
		OSD_ObjClose ( p_top_menu, C_CLOSE_CLRBACK_FLG );
		menu_stack_pop();
	}
			
	if (OSD_ObjOpen((POBJECT_HEAD)&g_win_ippv_popup, 0xFFFFFFFF) != PROC_LEAVE)
	{
    	if ((POBJECT_HEAD)&g_win_ippv_popup != menu_stack_get_top())
    		menu_stack_push((POBJECT_HEAD)&g_win_ippv_popup);
	}

	return;
}
Example #2
0
PRESULT OSD_ProgressBarProc(POBJECT_HEAD pObj, UINT32 msg_type, UINT32 msg,UINT32 param1)
{
	PRESULT Result = PROC_PASS;
	PROGRESS_BAR* b = (PROGRESS_BAR*)pObj;
	INT16 len,shift;
	
	if(msg_type==MSG_TYPE_KEY)
	{
		VACTION Action;
		UINT32 vkey;
		BOOL bContinue;
    	
		Result = OSD_ObjCommonProc(pObj,msg,param1,&vkey,&Action,&bContinue);
		if(!bContinue)
	    		goto CHECK_LEAVE;
	    	
		len = (b->nMax - b->nMin)/b->nBlocks/*nStep*/;

		switch(Action)
		{
		case VACT_INCREASE:
		case VACT_DECREASE:
		{
			INT16	cur_pos = b->nPos;
			if(Action == VACT_INCREASE)
				shift = len;
			else
				shift = -len;				
										
			OSD_ShiftBarPoint(b, shift);
			Result = OSD_SIGNAL(pObj,EVN_PRE_CHANGE,(UINT32)&(b->nPos),cur_pos);
			if(Result!=PROC_PASS)
				goto CHECK_LEAVE;
				
			OSD_TrackObject(pObj, C_DRAW_SIGN_EVN_FLG);			
			Result = OSD_SIGNAL(pObj,EVN_POST_CHANGE,b->nPos,cur_pos);
			if(Result!=PROC_PASS)
				goto CHECK_LEAVE;
			
			Result = PROC_LOOP;							
			break;
		}
		case VACT_CLOSE:
CLOSE_OBJECT:			
    		Result = OSD_ObjClose(pObj,C_CLOSE_CLRBACK_FLG);
    		goto EXIT;
    		break;			
		default:
			Result = OSD_SIGNAL(pObj, EVN_UNKNOWN_ACTION, (Action<<16) | vkey, param1);
			break;
		}
	}
	else// if(msg_type==MSG_TYPE_EVNT)
		Result = OSD_SIGNAL(pObj, msg_type, msg, param1);
	
CHECK_LEAVE:
	if(!(EVN_PRE_OPEN == msg_type))
		CHECK_LEAVE_RETURN(Result,pObj);
	
EXIT:		
	return Result;
}
Example #3
0
static PRESULT win_imageslide_unkown_act_proc(VACTION act)
{
	PRESULT ret = PROC_PASS;
	UINT8 rotate_mode, display_mode;
	POBJECT_HEAD win,mplayer_menu;
	int next_image;
	UINT16 slide_interval;
	FileInfo file_node;
	char image_name[FULL_PATH_SIZE];
	
	switch(act)
	{
	case VACT_ROTATEL:
	case VACT_ROTATER:
		if(FALSE == decode_finish_flag)
			break;
		
		if(imageslide_pause_state == IMG_UNPAUSE_STATE)
		{
			api_stop_timer(&imageslide_timer_id);
			imageslide_pause_state = IMG_PAUSE_STATE;
		}
		if(act == VACT_ROTATER)
		{
			image_rot_ang = (image_rot_ang + 1)%IMAGE_ANGLE_CNT;
		}
		else
		{
			image_rot_ang = (image_rot_ang+IMAGE_ANGLE_CNT - 1)%IMAGE_ANGLE_CNT;
		}
		
		image_rotate(image_rot_ang);
		
		if(image_rot_ang == ANG_ORI)
		{
			win_imageslide_showrotate(FALSE);
			win_imageslide_showpause();
		}
		else
		{
			OSD_ClearObject((POBJECT_HEAD)&imageslide_pause, 0);
			win_imageslide_showrotate(TRUE);
		}
		slideidx_display(TRUE);
		break;
	case VACT_INCREASE:
	case VACT_DECREASE:
		if(imageslide_pause_state == IMG_UNPAUSE_STATE)
		{
			api_stop_timer(&imageslide_timer_id);
			imageslide_pause_state = IMG_PAUSE_STATE;
			win_imageslide_showpause();
		}
		if(act == VACT_INCREASE)
		{
			next_image = get_next_index_from_play_list(cur_playlist_image);
		}
		else
		{
			next_image = get_previous_index_from_play_list(cur_playlist_image);
		}
		if(next_image != -1)
		{
			cur_image_idx = next_image;
			api_stop_timer(&imageslide_timer_id);
			image_abort();
			if(image_rot_ang!= ANG_ORI)
			{
				image_rot_ang = ANG_ORI;
				win_imageslide_showrotate(FALSE);
				win_imageslide_showpause();
			}
			osal_task_sleep(20);
			set_play_list_info(cur_playlist_image,&cur_image_idx,NULL);
			get_file_from_play_list(cur_playlist_image, cur_image_idx, &file_node);
			win_get_fullname(image_name, file_node.path, file_node.name);
			win_image_file_play(image_name, image_rot_ang);
			decode_finish_flag = FALSE;
			osal_task_sleep(20);
			slideidx_display(TRUE);
		}
		break;
	case VACT_PAUSE:
		if(imageslide_pause_state == IMG_UNPAUSE_STATE)
		{
			imageslide_pause_state = IMG_PAUSE_STATE;
			win_imageslide_showpause();
			api_stop_timer(&imageslide_timer_id);
		}
	    else
	    {
			if(image_rot_ang == ANG_ORI)
			{
				imageslide_pause_state = IMG_UNPAUSE_STATE;
				slide_interval = (image_slide_setting.uTime_gap * 1000);
				win_imageslide_showpause();
				if(0 != image_slide_setting.uTime_gap)
					imageslide_timer_id = api_start_timer("IMAGESLIDE",slide_interval,win_imageslide_handler);
			}
	    }
		ret = PROC_LOOP;
		break;
	case VACT_PLAY:
		if(IMG_PAUSE_STATE == imageslide_pause_state)
		{
			if(image_rot_ang == ANG_ORI)
			{
				imageslide_pause_state = IMG_UNPAUSE_STATE;
				win_imageslide_showpause();
				slide_interval = (image_slide_setting.uTime_gap * 1000);
				if(0 != image_slide_setting.uTime_gap)
					imageslide_timer_id = api_start_timer("IMAGESLIDE",slide_interval,win_imageslide_handler);
			}
		}
		ret = PROC_LOOP;
		break;
	case VACT_ZOOM:
		if(decode_finish_flag)
		{
			if(imageslide_pause_state == IMG_UNPAUSE_STATE)
			{
				imageslide_pause_state = IMG_PAUSE_STATE;
				win_imageslide_showpause();
				api_stop_timer(&imageslide_timer_id);
			}

			win_mpzoom_open();

			if(image_rot_ang == ANG_ORI)
			{
				imageslide_pause_state = IMG_UNPAUSE_STATE;
				slide_interval = (image_slide_setting.uTime_gap * 1000);
				win_imageslide_showpause();
				imageslide_timer_id = api_start_timer("IMAGESLIDE",slide_interval,win_imageslide_handler);
			}
		}
		break;
	case VACT_MP:
		win = (POBJECT_HEAD)(&g_win_imageslide);
		OSD_ObjClose(win,C_CLOSE_CLRBACK_FLG);

		while((POBJECT_HEAD)&g_win_usb_filelist != menu_stack_get_top())
		{
			menu_stack_pop();
		}
		
		image_abort();
		win_set_image_multiview_firstidx();
		mplayer_menu = (POBJECT_HEAD)(&g_win_imagepreview);

		if(OSD_ObjOpen(mplayer_menu,(UINT32)(~0)) != PROC_LEAVE)
			menu_stack_push(mplayer_menu);
		break;
	default:
		break;
	}

	return ret;
}
Example #4
0
/*****************************************************
Interface : static PRESULT chapter_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2);
Function  : callback of chapter container
Author    : Wu Jianwen
Date      : 2010.8.25
Input     : 
Output    : NONE
Return    : 
******************************************************/
static PRESULT chapter_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	UINT8 i;
	UINT16 wait_time = 0;
	UINT8 unact = 0;
	INT32 i_DestChapter = 0;        //dest chapter num
	INT32 i_DestChapStartTime;
	DEC_CHAPTER_INFO t_ChapterInfo;    //save chapter info of the stream

	switch(event)
	{
	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_OPEN:
        api_set_deo_layer(0);
        api_inc_wnd_count();

		for(i=0;i<CHAPTER_ITEM_NUMBER;i++)
		{
			p_chapter_track_str[i]=Chapter_track_str[i];
			p_chapter_track_idx[i]=Chapter_track_idx[i];
		}
		ListChapterInfoInit();
		break;		
		
	case EVN_UNKNOWN_ACTION:
		unact = (VACTION)(param1>>16);
		if(VACT_ENTER == unact)
		{
			i_DestChapter = OSD_GetListCurPoint(&g_ls_chapter);  //get current chapter
			t_ChapterInfo.dst_chapter = i_DestChapter;
			MpgFileGetChapterInfo(&t_ChapterInfo);
			//i_DestChapStartTime = t_ChapterInfo.dst_start_time/1000;   //second
			i_DestChapStartTime = t_ChapterInfo.dst_start_time;   //ms
			if(t_ChapterInfo.dst_start_time > t_ChapterInfo.cur_start_time)  
			{
				//mpg_cmd_search_proc((DWORD)i_DestChapStartTime);
				mpg_cmd_search_ms_proc((DWORD)i_DestChapStartTime);
				while ((i_DestChapStartTime > MPGFileDecoderGetPlayTime()) && (wait_time < MP_TRICK_TIMEOUT))
				{
					osal_task_sleep(2);
					wait_time++;
				}
			}
			else                  //chapter18 to chapter1          
			{
				//mpg_cmd_search_proc((DWORD)i_DestChapStartTime);
				mpg_cmd_search_ms_proc((DWORD)i_DestChapStartTime);
				while ((i_DestChapStartTime + VIDEO_SEARCH_DLYS < MPGFileDecoderGetPlayTime()) && (wait_time < MP_TRICK_TIMEOUT))
				{
					osal_task_sleep(2);
					wait_time++;
				}
			}
			
			PlayProc();
			OSD_ObjClose(pObj,C_CLOSE_CLRBACK_FLG);
			return PROC_LEAVE;		
		}
		break;
		
	case EVN_PRE_CLOSE:
		ret = PROC_PASS;
        break;

	case EVN_POST_CLOSE:
        api_set_deo_layer(1);
        api_dec_wnd_count();
        break;
	default:
		break;
	}

	return ret;
}
Example #5
0
static void win_mpegYTplayer_close_video_vol()
{
	OSD_ObjClose((POBJECT_HEAD)&g_win_volume, C_UPDATE_ALL);
}
Example #6
0
static VACTION localset_con_keymap(POBJECT_HEAD pObj, UINT32 key)
{
    VACTION act;
    
    switch(key)
    {
    case V_KEY_UP:
        act = VACT_CURSOR_UP;
        break;
    case V_KEY_DOWN:
        act = VACT_CURSOR_DOWN;
        break;      
 #ifdef EXIT_KEY_EXIT_ALL_MENU
    case V_KEY_MENU:
           	#ifdef NETWORK_FACTORY_TEST//没有网路功能,但要工厂测试网口
		if(factest_enter_to_ping_test==1)
		{
			factest_enter_to_ping_test=0;
			factest_ping_to_factory_test=1;
			OSD_ObjClose((POBJECT_HEAD)&g_win_localsetting,C_DRAW_SIGN_EVN_FLG | C_CLOSE_CLRBACK_FLG);
			menu_stack_pop();
			 if(OSD_ObjOpen((POBJECT_HEAD)&g_win_netping, 0) != PROC_LEAVE)
			{
					menu_stack_push((POBJECT_HEAD)&g_win_netping);
					
			}
			 libnet_stop_ping();
			act = VACT_PASS;
		}
		else
		{
			act = VACT_CLOSE;
		}
			
	#else
	 	act = VACT_CLOSE;
	#endif

		break;
   case V_KEY_EXIT:
   	#ifdef NETWORK_FACTORY_TEST//没有网路功能,但要工厂测试网口
		if(factest_enter_to_ping_test==1)
		{
			factest_enter_to_ping_test=0;
			factest_ping_to_factory_test=1;
			OSD_ObjClose((POBJECT_HEAD)&g_win_localsetting,C_DRAW_SIGN_EVN_FLG | C_CLOSE_CLRBACK_FLG);
			menu_stack_pop();
			 if(OSD_ObjOpen((POBJECT_HEAD)&g_win_netping, 0) != PROC_LEAVE)
			{
					menu_stack_push((POBJECT_HEAD)&g_win_netping);
			}
			 libnet_stop_ping();
			act = VACT_PASS;
		}
		else
		{
			act = VACT_CLOSE;
			exit_key_flag =TRUE;
		}
			
	#else
	 	act = VACT_CLOSE;
		exit_key_flag =TRUE;
	#endif
		
		break;
#else
    case V_KEY_MENU:
    case V_KEY_EXIT:

	#ifdef NETWORK_FACTORY_TEST//没有网路功能,但要工厂测试网口
	if(factest_enter_to_ping_test==1)
	{
		factest_enter_to_ping_test=0;
		factest_ping_to_factory_test=1;
		OSD_ObjClose((POBJECT_HEAD)&g_win_localsetting,C_DRAW_SIGN_EVN_FLG | C_CLOSE_CLRBACK_FLG);
		menu_stack_pop();
		 if(OSD_ObjOpen((POBJECT_HEAD)&g_win_netping, 0) != PROC_LEAVE)
		{
				menu_stack_push((POBJECT_HEAD)&g_win_netping);
		}
		 libnet_stop_ping();
		act = VACT_PASS;
	}
	else
		act = VACT_CLOSE;
	#else
	 act = VACT_CLOSE;
	#endif
		break;
#endif
    default:    
        act = VACT_PASS;
        break;
    }

    return act;
}
Example #7
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 #8
0
static void mbx_unkown_act_proc(VACTION act)
{
	POBJECT_HEAD win;
	PMATRIX_BOX pmbx = &imgpreview_mbx_img;
	UINT16 curpos;
	
	switch(act)
	{
		case VACT_CURSOR_PGUP:
		case VACT_CURSOR_PGDN:
			if(act == VACT_CURSOR_PGUP)
			{
				if(image_multiview_first <=1 )
				{
					break;
				}
				else if(image_multiview_first > MULTI_IMG_COUNT)
				{
					image_multiview_first -= MULTI_IMG_COUNT;
					image_cnt_inpage = MULTI_IMG_COUNT;
				}
				else
				{
					image_multiview_first = 1;
					image_cnt_inpage = (image_multiview_total<MULTI_IMG_COUNT)?image_multiview_total:(MULTI_IMG_COUNT);
				}
			}
			else //(act == VACT_CURSOR_PGDN)
			{
				if(image_multiview_first <= image_multiview_total - MULTI_IMG_COUNT)
				{
					image_multiview_first += MULTI_IMG_COUNT;
					image_cnt_inpage = ((image_multiview_total-image_multiview_first+1) < MULTI_IMG_COUNT)? \
									(image_multiview_total-image_multiview_first+1):(MULTI_IMG_COUNT);
				}
				else
					break;
			}
			
//			OSD_ClearObject((POBJECT_HEAD)&g_win_imagepreview,0);
			OSD_SetMtrxboxCount(pmbx, image_cnt_inpage, MULTI_IMG_COUNT/MULTI_IMG_X_COUNT, MULTI_IMG_X_COUNT);
			curpos = OSD_GetMtrxboxCurPos(pmbx);
			if(curpos > image_cnt_inpage-1)
			{
				curpos = image_cnt_inpage-1;
				OSD_SetMtrxboxCurPos(pmbx, curpos);
			}
			OSD_TrackObject((POBJECT_HEAD)pmbx,C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL | C_DRAW_TYPE_HIGHLIGHT);
			hl_index = image_multiview_first + curpos;

			show_loadinglogo(1);
			//imagedec_ioctl(1,IMAGEDEC_IO_CMD_FILL_LOGO,0xB9748F);//yvu
      	  	imagedec_ioctl(1, IMAGEDEC_IO_CMD_FILL_LOGO, 0x356B9D);//yvu
			image_abort();
			image_idx_inpage = 0;
			preview_image(image_idx_inpage, image_multiview_first + image_idx_inpage);
			show_title(hl_index);
			break;
		case VACT_ENTER:
			win = (POBJECT_HEAD)(&g_win_imagepreview);
			OSD_ObjClose(win,C_CLOSE_CLRBACK_FLG);

			image_abort();
			from_imagepreview = TRUE;
			curpos = OSD_GetMtrxboxCurPos(pmbx);
			win_set_image_slide_idx(image_multiview_first+curpos);
			win = (POBJECT_HEAD)(&g_win_imageslide);
			if(OSD_ObjOpen(win,(UINT32)(~0)) != PROC_LEAVE)
				menu_stack_push(win);
			break;
		default:
			break;
	}
}
Example #9
0
BOOL submenu_unknown_act(sub_menu_t *sub_menu, UINT32 vact)
{
    UINT32 count = sub_menu->item_count;
    UINT32 depth = sub_menu->list_page;
    UINT32 top_pos = sub_menu->list_top;
    UINT32 cur_sel = sub_menu->list_sel;
    UINT32 cur_pos = cur_sel - top_pos;
    UINT32 old_sel = cur_sel;
    UINT32 old_top = top_pos;
    UINT32 i;
    BOOL ret = TRUE;
#ifndef PREVIEW_SUBMENU  //-a by wangyang 
	if (vact >= VACT_NUM_1 && vact<= VACT_NUM_9)
	{
        OSD_ChangeFocus((POBJECT_HEAD)&g_win_submenu, vact - VACT_NUM_0, C_UPDATE_FOCUS);
        return TRUE;
	}

	if(vact == VACT_FOCUS_P_UP || vact == VACT_FOCUS_P_DOWN)
	{
	    if (vact == VACT_FOCUS_P_UP)
	        ret = OSD_ScrollLinePgUp(count, depth, &top_pos, &cur_pos);
	    else
	        ret = OSD_ScrollLinePgDown(count, depth, &top_pos, &cur_pos);
	    if (!ret)
	        return FALSE;

	    cur_sel = top_pos + cur_pos;
	    if (cur_sel == old_sel)
	        return FALSE;
	    if (submenu_item_attr(sub_menu, cur_sel) == C_ATTR_ACTIVE)
		{
	        vact = VACT_PASS;
	    }
		else
		{
		    if (vact == VACT_FOCUS_P_UP)
		        vact = VACT_FOCUS_UP;
		    else
		        vact = VACT_FOCUS_DOWN;
		}
	}
#endif	
	if(vact == VACT_FOCUS_UP || vact == VACT_FOCUS_DOWN)
	{
	    for (i = 0; i < count; i++)
	    {
	        if (vact == VACT_FOCUS_UP)
	            ret = OSD_ScrollLineUp(count, depth, &top_pos, &cur_pos);
	        else
	            ret = OSD_ScrollLineDown(count, depth, &top_pos, &cur_pos);
	        if (!ret)
	            return FALSE;

	        cur_sel = top_pos + cur_pos;
	        if (cur_sel == old_sel)
	            return FALSE;
	        if (submenu_item_attr(sub_menu, cur_sel) == C_ATTR_ACTIVE)
	            break;
	    }
    if (i == count)
        return FALSE;
	}

    if (cur_sel != old_sel)
    {
        sub_menu->list_top = top_pos;
        sub_menu->list_sel = cur_sel;
    	//OSD_SetScrollBarPos(&subm_scrollbar, cur_sel);

        if (old_top == top_pos)
        {
            OSD_ChangeFocus((POBJECT_HEAD)&g_win_submenu, cur_pos + 1, C_UPDATE_FOCUS);
        //    OSD_DrawObject((POBJECT_HEAD)&subm_scrollbar, C_UPDATE_ALL);
        }
        else
        {
            submenu_set_one_page(sub_menu);

        	OSD_TrackObject((POBJECT_HEAD)&g_win_submenu, C_UPDATE_CONTENT);
        }
    }
 #ifdef EXIT_KEY_EXIT_ALL_MENU
	if(vact == VACT_CLOSE_ALL_MENU)
 	{
	 exit_key_flag =TRUE;
 	OSD_ObjClose((POBJECT_HEAD)&g_win_submenu,C_CLOSE_CLRBACK_FLG);	
 		mm_leave_all_menu();
	//	ap_clear_all_menus();
	//	ap_exit_key_clear_all_menus();
	//		ap_send_msg(CTRL_MSG_SUBTYPE_CMD_ENTER_ROOT, (UINT32)&win_diag, TRUE);
	}
   #endif
    return TRUE;
}
Example #10
0
static PRESULT subtitle_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	SYSTEM_DATA * sys;
	struct nim_device* nim_dev;	
	UINT8 i,lock;
	UINT8 unact;
	
	if(cur_tuner_idx == 0)
		nim_dev = g_nim_dev;
	else
		nim_dev = g_nim_dev2;
    	nim_get_lock(nim_dev,&lock);

	switch(event)
	{
	case EVN_PRE_OPEN:
        #ifdef SUPPORT_CAS9
			if(0==get_mmi_showed())
				ShowSignalStatusOSDOnOff(0);
        #endif
        api_set_deo_layer(0);
        api_inc_wnd_count();

		for(i=0;i<SUBTITLE_ITEM_NUMBER;i++)
		{
			p_subtitle_track_str[i]=Subtitle_track_str[i];
			p_subtitle_track_idx[i]=Subtitle_track_idx[i];
		}

		if(system_state != SYS_STATE_USB_MP)//vic100507#1	
		{
			win_subtitle_init_data();
			if(((0 == g_win_subtitle_count ) && (0 == g_win_ttx_subtitle_count)) || (!lock))
			#if (DVR_PVR_SUPPORT_SUBTITLE)//temp disable
			if(((0 == g_win_subtitle_count ) && (0 == g_win_ttx_subtitle_count)) 
			#ifdef DVR_PVR_SUPPORT
				|| ((!lock) && !api_pvr_is_playing())
			#else
				|| (!lock)
			#endif
				)
			#endif
			{
				win_com_popup_open(WIN_POPUP_TYPE_SMSG,NULL, RS_DISPLAY_NO_DATA);			
				osal_task_sleep(1000);
				win_compopup_close();
	            api_dec_wnd_count();
				return PROC_LEAVE;
			}
		}
		else
		{
		#ifdef MP_SUBTITLE_SUPPORT	//vic100507#1			
			//TODO:
			//such like win_subtitle_init_data
			long resut;
			resut = win_mp_subtitle_init_data();
			if (resut < 0)
			{						
				return PROC_LEAVE;				
			}
			
		#endif				
		}
		break;		
	case EVN_UNKNOWN_ACTION:
		unact = (VACTION)(param1>>16);

		if(system_state != SYS_STATE_USB_MP)//vic100507#1 
		{

			if(VACT_ENTER == unact)
			{
				UINT16	cur_sel = OSD_GetListCurPoint(&g_ls_subtitle);
				sys = sys_data_get();
				if(g_win_subtitle_count + g_win_ttx_subtitle_count==cur_sel)
				{
					sys->osd_set.subtitle_display = 0;/*select off option*/
					sys->osd_set.subtitle_lang = 0xFF;
				}
				else if(cur_sel < g_win_ttx_subtitle_count)
				{
					sys->osd_set.subtitle_display = 1;/*subtitle on*/
					sys->osd_set.subtitle_lang = cur_sel;/*set_sub_lang_idx is used in api_osd_mode_change function*/
				}
				else if(cur_sel < g_win_subtitle_count + g_win_ttx_subtitle_count)
				{/*ttx_subtitle on the top then normal subtitle*/
					sys->osd_set.subtitle_display = 1;
					sys->osd_set.subtitle_lang = cur_sel;/*set_sub_lang_idx is used in api_osd_mode_change function*/
				}
				ret = PROC_LEAVE;
				api_osd_mode_change(OSD_NO_SHOW);
				//api_osd_mode_change(OSD_SUBTITLE);
			}
		}
		else if(VACT_ENTER == unact)
		{
		//vic100507#1 begin
		#ifdef MP_SUBTITLE_SUPPORT	
			//TODO:
			//select language index
			if (!subtitle_handle)
			{
				return PROC_LEAVE;
			}
			long resut;
			UINT16	cur_sel = OSD_GetListCurPoint(&g_ls_subtitle);

			if(g_ext_subtitle_plugin)
				g_ext_subtitle_plugin->mps_change_language(subtitle_handle,cur_sel);
			
			OSD_ObjClose(pObj,C_CLOSE_CLRBACK_FLG);
			//if (resut < 0)
			{
				return PROC_LEAVE;
			}			
		#endif					
		//vic100507#1 end
		}
		break;
	case EVN_PRE_CLOSE:
		unact = (VACTION)(param1>>16);
		ret = PROC_PASS;
        break;

	case EVN_POST_CLOSE:
        #ifdef SUPPORT_CAS9
            restore_ca_msg_when_exit_win();
        #endif
        api_set_deo_layer(1);
        api_dec_wnd_count();
        break;
	default:
		break;
	}

	return ret;
}