Esempio n. 1
0
void win_multifeed_load(void)
{
	OBJLIST* ol;	
	P_NODE p_node;
	UINT16 channel,cnt,sel,top_idx,cur_idx,dep;
	struct MULTIFEED_INFO multifeed_info;
	INT32 ret;

	ol = &multifeed_ol;

	channel = sys_data_get_cur_group_cur_mode_channel();

	get_prog_at(channel,&p_node);
	MEMSET(&multifeed_info, 0, sizeof(struct MULTIFEED_INFO));
	ret = multifeed_get_info(p_node.prog_id, &multifeed_info);

	sel = 0xFFFF;
	cnt = multifeed_info.num;

	if(multifeed_info.idx < cnt)
		sel= multifeed_info.idx;
		
	dep = OSD_GetObjListPage(ol);	
	cur_idx = 0;
	top_idx = 0;
	if(sel<multifeed_info.num)
		cur_idx = sel;
	top_idx = cur_idx / dep * dep;

	OSD_SetObjListCount(ol, cnt);
	OSD_SetObjListSingleSelect(ol, sel);	
	OSD_SetObjListTop(ol, top_idx);
	OSD_SetObjListCurPoint(ol, cur_idx);
	OSD_SetObjListNewPoint(ol, cur_idx);	
}
Esempio n. 2
0
static void init_movefile_info()
{
	char file_path[FULL_PATH_SIZE], str_buff[10];
	UINT16 offset;
	TEXT_FIELD *pTxt;
	POBJLIST pOl;

	get_file_list_info(win_move_dirlist, &movefile_dirnum, &movefile_filenum, file_path);
	if(!STRCMP(file_path, FS_ROOT_DIR))
	{
		offset = 0;
	}
	else
	{
		offset = 1;
	}
	
	pOl = &ol_mpmove;
	OSD_SetObjListCount(pOl,(movefile_dirnum + movefile_filenum + offset));
	OSD_SetObjListNewPoint(pOl,0);
	OSD_SetObjListCurPoint(pOl,0);
	OSD_SetObjListTop(pOl,0);

	pTxt = &mpmove_dir_txt;
	win_get_display_dirname(str_buff, file_path);
	OSD_SetTextFieldContent(pTxt,STRING_UTF8,(UINT32)str_buff);//show current dir name

	pTxt = &mpmove_dev_name;
	win_get_display_devicename(str_buff, movefile_cur_device);
	sprintf(str_buff,"%s",str_buff);
	OSD_SetTextFieldContent(pTxt,STRING_ANSI,(UINT32)str_buff);//show current device name
}
Esempio n. 3
0
void win_satfav_load_groupcount(void)
{
	UINT8 av_flag;
	OBJLIST		*ol;
	UINT16 group_cnt,group_idx;
	UINT8 group_type, group_pos;
	UINT16 channel,select,page;
	UINT16 title_id;
	TEXT_FIELD* txt;
	
	ol = &satfav_item_list;

	select = INVALID_POS_NUM;

	av_flag = sys_data_get_cur_chan_mode();
	group_idx = sys_data_get_cur_group_index();

	sys_data_get_cur_mode_group_infor( group_idx, &group_type,&group_pos, &channel);

	if(sat_fav_list_flag == 0)	/* SAT */
	{
		group_cnt = sys_data_get_sate_group_num(av_flag);
		group_cnt ++;
		if(group_type == FAV_GROUP_TYPE)
			group_idx = 0;
		else
			select = group_idx;
		
	}
	else	/* FAV */
	{
		group_cnt = sys_data_get_fav_group_num(av_flag);
		if(group_type != FAV_GROUP_TYPE)
			group_idx = 0;
		else
		{
			group_idx -= sys_data_get_sate_group_num(av_flag);
			group_idx --;
			select = group_idx;
		}
	}

	page = OSD_GetObjListPage(ol); 	

	OSD_SetObjListCount(ol, group_cnt);
	OSD_SetObjListCurPoint(ol, group_idx);
	OSD_SetObjListNewPoint(ol, group_idx);
	OSD_SetObjListTop(ol,group_idx / page*page);
	OSD_SetObjListSingleSelect(ol, select); 

	title_id = (sat_fav_list_flag == 0)?  RS_INFO_SATELLITE : RS_FAVORITE;
	txt = &satfav_title;
	OSD_SetTextFieldContent(txt, STRING_ID,title_id);
}
Esempio n. 4
0
static void catch_up_list_load(UINT8 num)
{
	OBJLIST* ol;

	ol = &ol_catch_up;

	OSD_SetObjListCount(ol, num);
	OSD_SetObjListTop(ol, 0);
	OSD_SetObjListNewPoint(ol, 0);
	OSD_SetObjListCurPoint(ol, 0);
}
Esempio n. 5
0
static void news_list_load(UINT16 num)
{
	OBJLIST *ol = NULL;
	
	ol = &ol_news_list;
	
	OSD_SetObjListCount(ol, num);
	OSD_SetObjListCurPoint(ol, 0);
	OSD_SetObjListNewPoint(ol, 0);
	OSD_SetObjListTop(ol, 0);
}
Esempio n. 6
0
static void win_purse_set_display(void)
{
	UINT32 i,j,n;
	OBJLIST* ol;
	UINT16 top,cnt,page,index,curitem;
	UINT32 valid_idx,ew_flag;
	CONTAINER* item;
	TEXT_FIELD* txt;
	UINT8  purse_str[30];
	UINT16 icon_id;
	BITMAP* bmp;
	SYSTEM_DATA* sys_data;
	UINT8	hl_idx;

	sys_data = sys_data_get();
	
	ol = &purse_olist;
	cnt = purse_cnt;
//	cnt = OSD_GetObjListCount(ol);
	OSD_SetObjListCount(ol, cnt);
	page = OSD_GetObjListPage(ol); 
	top = OSD_GetObjListTop(ol);
	curitem = OSD_GetObjListNewPoint(ol);

	for(i=0;i<page;i++)
	{
		item = (CONTAINER*)purselist_items[i];
		index = top + i;
		
		if(index< cnt)
			valid_idx = 1;
		else
			valid_idx = 0;		

		/* Name*/
		txt = (PTEXT_FIELD)OSD_GetContainerNextObj(item);
		if(valid_idx)
			OSD_SetTextFieldContent(txt, STRING_ANSI,ap_purse[top+i].name);
		else
			OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)"");

		 /* Balance*/
		txt = (PTEXT_FIELD)OSD_GetObjpNext(txt);
		if(valid_idx)
		{
			sprintf(purse_str, "%d", ap_purse[top+i].balance);
			OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)purse_str);
		}
		else
			OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)"");
	}
}
Esempio n. 7
0
void weathercitylst_load_list()
{
	OBJLIST *ol = NULL;
	int num = 0;
	
	ol = &weather_city_olist;
	num = weathercitylst_get_num();
	
	OSD_SetObjListCount(ol, num);
	OSD_SetObjListCurPoint(ol, 0);
	OSD_SetObjListNewPoint(ol, 0);
	OSD_SetObjListTop(ol, 0);
}
Esempio n. 8
0
static void map_city_list_load(void)
{
	OBJLIST *ol = NULL;
	int num = 0;
	
	ol = &ol_map_city;
	num = map_city_get_num();

	OSD_SetObjListCount(ol, num);
	OSD_SetObjListCurPoint(ol, 0);
	OSD_SetObjListNewPoint(ol, 0);
	OSD_SetObjListTop(ol, 0);
}
Esempio n. 9
0
static void SNstate_addr_list_load(void)
{
	OBJLIST *ol = NULL;
	int num = 0;
	
	ol = &ol_SNstate_addr;
	//num = SNstate_addr_get_num();

	OSD_SetObjListCount(ol, 2);
	OSD_SetObjListCurPoint(ol, 0);
	OSD_SetObjListNewPoint(ol, 0);
	OSD_SetObjListTop(ol, 0);
}
Esempio n. 10
0
static PRESULT movefile_change_storage(VACTION act)
{
	PRESULT ret = PROC_LOOP;
	TEXT_FIELD *pTxt;
	OBJLIST *pOl;
	char str_buff[10];
	
	if(act == VACT_CHG_DEVL)
	{
		if(RET_FAILURE == win_get_next_device(movefile_cur_device, movefile_cur_device,TRUE))
		{
			return ret;
		}
	}
	else
	{
		if(RET_FAILURE == win_get_next_device(movefile_cur_device, movefile_cur_device,FALSE))
		{
			return ret;
		}
	}

	file_list_change_device(win_move_dirlist,movefile_cur_device);

	pTxt = &mpmove_dev_name;
	win_get_display_devicename(str_buff, movefile_cur_device);
	sprintf(str_buff,"%s",str_buff);
	OSD_SetTextFieldContent(pTxt,STRING_ANSI,(UINT32)str_buff);//show current device name
	//OSD_DrawObject((POBJECT_HEAD)pTxt,C_UPDATE_ALL);
	OSD_DrawObject((POBJECT_HEAD)&mpmove_dev_con,C_UPDATE_ALL);
/*
	pTxt = &mpmove_dir_txt;
	sprintf(str_buff,"%s","Root");
	OSD_SetTextFieldContent(pTxt,STRING_ANSI,(UINT32)str_buff);
	OSD_DrawObject((POBJECT_HEAD)pTxt,C_UPDATE_ALL);
*/
	pOl  = &ol_mpmove;
	get_file_list_info(win_move_dirlist, &movefile_dirnum, &movefile_filenum, NULL);
	OSD_SetObjListCurPoint(pOl, 0);
	OSD_SetObjListNewPoint(pOl, 0);
	OSD_SetObjListTop(pOl, 0);
	OSD_SetObjListCount(pOl, movefile_dirnum+movefile_filenum);

	OSD_TrackObject((POBJECT_HEAD)pOl, C_UPDATE_ALL | C_DRAW_SIGN_EVN_FLG);

	return ret;
}
Esempio n. 11
0
static PRESULT win_detitle_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
    PRESULT ret = PROC_PASS;
    OBJLIST* ol = &detitle_olist;
    UINT16 tmp, num=0;
    struct help_item_resource detitle_help[] =
    {
        {1,IM_EPG_COLORBUTTON_RED,RS_HELP_DELETE},
        {1,IM_EPG_COLORBUTTON_GREEN,RS_DELETE_ALL},
        {1,IM_HELP_ICON_TB,RS_HELP_SELECT},
    };
    switch(event)
    {
    case EVN_PRE_OPEN:
        init_detitle_flag();
        tmp = detitle_get_info(&num);
        if (0 == tmp)
        {
            ret = PROC_LEAVE;
            break;
        }
        OSD_SetObjListCount(ol, num);
        if (num <= OSD_GetObjListCurPoint(&detitle_olist))
        {
            OSD_SetObjListCurPoint (&detitle_olist, 0);
            OSD_SetObjListNewPoint (&detitle_olist, 0);
            OSD_SetObjListTop (&detitle_olist, 0);
            //OSD_SetObjListNewPoint(&detitle_olist, 0);
        }
        wincom_open_title_ext(RS_DETITLE, IM_TITLE_ICON_SYSTEM);
        wincom_open_help(detitle_help, 3);
        win_init_pstring(18);
        break;
    case EVN_POST_OPEN:
        break;
    case EVN_PRE_CLOSE:
        /* Make OSD not flickering */
        save_detitle();
        *((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG;
        break;
    case EVN_POST_CLOSE:
        //TFCAS_WriteFlash();//write to flash at once, ignore the delay
        break;
    }

    return ret;
}
Esempio n. 12
0
INT32 mail_update_info()
{
	UINT8 ret,i,j;
	UINT8 total, newmail;
	gycamail data;
	OBJLIST* ol = &mail_ol;
	
	MEMSET(email_head, 0, sizeof(gycamail_head)*GYCA_EMAIL_MAX_CNT);
	email_count = GYCA_EMAIL_MAX_CNT;

	ret = gyca_getmail_condition_from_ram(&total, &newmail);

	if (GYCA_OK != ret)
	{
		//cas_popup_msg(NULL, NULL, RS_CAERR_NOINFO);
		//email_count = 0;
		//return 0;
		total = 0;
		newmail = 0;
		email_count  = 0;
	}
	
	email_count_unread = newmail;
	
	for(i=0,j=0; i<total; i++)
	{	
		MEMSET(&data, 0, sizeof(gycamail));
		if(!gyca_readmail_one_from_ram(i, &data))
		{
			MEMCPY(email_head[j].title, data.info.m_szEmail_Title, STRLEN(data.info.m_szEmail_Title));
			MEMCPY(email_head[j].create_Time, data.info.m_byEmail_Create_Time, 5);
			email_head[j].status = data.status;
			j++;
		}
	}
	email_count = j;
	OSD_SetObjListCount(ol, email_count);
	if (email_count <= OSD_GetObjListCurPoint(ol))
	{
		OSD_SetObjListCurPoint(ol, 0);
		OSD_SetObjListNewPoint(ol, 0);
		OSD_SetObjListTop(ol, 0);
	}
	return 1;
}
Esempio n. 13
0
static PRESULT IPPVinfo_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	UINT32 cnt = 0;
	INT32 iret;

	switch(event)
	{
	case EVN_PRE_OPEN:
		total_IPPV_number = 0;
		
        	iret = IPPVinfo_got_info();
		if(0 == iret)
		{
			ret = PROC_LEAVE;
			break;
		}
		OSD_SetObjListCount(&IPPVinfo_olist,total_IPPV_number);
		//for different card display
		if (total_IPPV_number <= OSD_GetObjListCurPoint(&IPPVinfo_olist))
		{
			//OSD_SetObjListNewPoint(&IPPVinfo_olist, 0);
			OSD_SetObjListCurPoint (&IPPVinfo_olist, 0);
			OSD_SetObjListNewPoint (&IPPVinfo_olist, 0);
			OSD_SetObjListTop (&IPPVinfo_olist, 0);
		}
		wincom_open_title_ext(RS_IPPV_PROGRAM, IM_TITLE_ICON_SYSTEM);
		wincom_open_help(win_opinfo_help, 2);
        	win_init_pstring(9);
		break;
	case EVN_POST_OPEN:
//		win_ippv_draw_title();
		break;
	case EVN_PRE_CLOSE:
		/* Make OSD not flickering */
		*((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG;	
		break;
	case EVN_POST_CLOSE:
		break;
	}

	return ret;
}
Esempio n. 14
0
static PRESULT playlst_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
    UINT16 title_strid;
    PRESULT ret = PROC_PASS;
    POBJLIST pOl;
    TEXT_FIELD *pTxt;
    UINT32 file_num;
    win_popup_choice_t choice;
    UINT8 back_saved;
    UINT16 i;
    WIN_PLAYLIST_TYPE play_list;

    pOl = &ol_playlist;
    switch(event)
    {
    case EVN_PRE_OPEN:
        get_play_list_info(cur_display_playlist,&file_num, NULL);
        OSD_SetObjListCount(pOl, file_num);
        OSD_SetObjListCurPoint(pOl, 0);
        OSD_SetObjListNewPoint(pOl, 0);
        OSD_SetObjListTop(pOl, 0);
        moving_flag = 0;
        move_file_idx = INVALID_IDX;
        break;
    case EVN_POST_OPEN:
        win_open_playlist_help();
        break;
    case EVN_PRE_CLOSE:
        /* Make OSD not flickering */
        *((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG;
        break;
    case EVN_POST_CLOSE:
        break;
    default:
        break;
    }

    return ret;
}
Esempio n. 15
0
static void win_biss_load_select(void)
{
	UINT32 n;
	CAS_KEYINFO *Pm = NULL;
	OBJLIST* ol;
	SCROLL_BAR* sb;
	POBJECT_HEAD pObj;
	
	ol = &biss_olist;
	n = softcam_get_keyinfo_num((u8) CAS_ID_BISS);

	/* Set count */
	OSD_SetObjListCount(ol, n);
	OSD_SetObjListCurPoint(ol, 0);
	OSD_SetObjListNewPoint(ol, 0);
	OSD_SetObjListTop(ol, 0);

	sb = &biss_scb;
	OSD_SetScrollBarMax(sb,n);
	OSD_SetScrollBarPos(sb, 0);
	
}
Esempio n. 16
0
static void win_wifilist_update_all_wifi_manager_menu(BOOL refresh_device_status)
{
	UINT16 i;
	OBJLIST* ol;
	CONTAINER* item;	
	TEXT_FIELD* txt;	
	SCROLL_BAR* sb;	
	
	ol = &wifilist_olist;
	txt = &wifilst_dev_status;
	sb = &wifilist_scb;

	DEBUG_PRINTF("win_wifilist_update_all_wifi_manager_menu(bFlag=%d)\n", refresh_device_status);
	

	if(ap_list_pos >= AP_Num)
	{
		ap_list_top = 0;
		ap_list_item_sel=0;
		ap_list_pos=0;
	}

	OSD_SetObjListCount(ol, AP_Num);	/* Set count */	
	OSD_SetObjListCurPoint(ol, ap_list_item_sel);
	OSD_SetObjListNewPoint(ol, ap_list_item_sel);
	OSD_SetObjListTop(ol, ap_list_top);
	OSD_SetScrollBarMax(sb, AP_Num);
	OSD_SetScrollBarPos(sb, ap_list_top);

	// update WiFi Device Status (content) 
	win_wifilist_update_wifi_device_status_display(refresh_device_status);

	// update and redraw AP List (content) only	
	win_wifilist_update_wifi_ap_list_display(refresh_device_status);

}
Esempio n. 17
0
static void win_camail_set_display(void)
{
	UINT32 i,j,n;
	OBJLIST* ol;
	UINT16 top,cnt,page,index,curitem;
	UINT32 valid_idx,ew_flag;
	CONTAINER* item;
	TEXT_FIELD* txt;
	//char str[30];
	UINT8 name[10], msg[300];
	UINT16 icon_id;
	BITMAP* bmp;
	
	SYSTEM_DATA* sys_data;
	UINT8	hl_idx;
	
	sys_data = sys_data_get();
	
	ol = &mail_olist;
	cnt = 16;//OSD_GetObjListCount(ol);
	OSD_SetObjListCount(ol, cnt);
	page = OSD_GetObjListPage(ol); 
	top = OSD_GetObjListTop(ol);
	curitem = OSD_GetObjListNewPoint(ol);

	for(i=0;i<page;i++)
	{
		item = (CONTAINER*)maillist_items[i];
		index = top + i;
		
		if(index< cnt)
		{
			/* name */
			txt = (PTEXT_FIELD)OSD_GetContainerNextObj(item);
			sprintf(name,"%d", index+1);
			OSD_SetTextFieldContent(txt, STRING_ANSI,(UINT32)name);
			
			/* msg */
			txt = (PTEXT_FIELD)OSD_GetObjpNext(txt);
			MEMSET(msg,0,300);
			//if(conax_get_msg_info(msg, index)==SUCCESS)			
			conax_get_msg_info(msg, index);
				msg[32+50] = 0;
			//else
			//	msg[32] = 0;
			OSD_SetTextFieldContent(txt, STRING_ANSI,(UINT32)&msg[32]);
		}
		else
		{
			/* name */
			txt = (PTEXT_FIELD)OSD_GetContainerNextObj(item);
			OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)"");

			/* msg */
			txt = (PTEXT_FIELD)OSD_GetObjpNext(txt);
			OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)"");

		}
		
	}
}
Esempio n. 18
0
static PRESULT mail_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	BOOL changed;
	UINT8 TV_Out;
	UINT16 x, y, w, h;
	VACTION unact;
	UINT8 av_mode, id;
	UINT16 chan_idx;
    UINT8 rating;
    UINT16 rating_ret;
	OBJLIST* ol = &mail_ol;
	/*struct help_item_resource mail_help[] =
	{
		{1,IM_EPG_COLORBUTTON_RED,RS_HELP_DELETE},
		{1,IM_EPG_COLORBUTTON_GREEN,RS_DELETE_ALL},
		{1,IM_HELP_ICON_TB,RS_HELP_SELECT},
		{0,RS_HELP_ENTER,RS_HELP_ENTER_INTO},
	};
*/
	switch (event)
	{
		case EVN_PRE_OPEN:
			
		   OSD_ClearObject((POBJECT_HEAD)&g_win_mainmenu, C_UPDATE_ALL);
			
			rating_ret = GYCA_GetParentControl(&rating);
	    		/*if ((CDCA_RC_CARD_INVALID == rating_ret)|| (CDCA_RC_POINTER_INVALID ==rating_ret))
	    		{
	    			win_popup_msg(NULL, NULL, RS_CAERR_NOSMC);
	    			    return PROC_LEAVE;
	    		}
	    		else if (CDCA_RC_OK != rating_ret)
	    		{
	    			win_popup_msg(NULL, NULL, RS_CAERR_UNKNOWN);
	    			    return PROC_LEAVE;
	    		}
	    		*/
   			MEMSET(display_strs[0], 0, sizeof(display_strs[0])*MAX_DISP_STR_ITEMS);
			//wincom_open_title_ext(RS_EMAIL, IM_TITLE_ICON_EMAIL);
			//wincom_open_help(mail_help, 4);
			mail_got_info();
			//mail_init_str(20);			
			//mail_clear_del_flag();
			if(email_count<=100)
				OSD_SetObjListCount(ol, email_count);
			else
				OSD_SetObjListCount(ol, 100);
			if (email_count <= OSD_GetObjListCurPoint(ol))
			{
				OSD_SetObjListCurPoint(ol, 0);
				OSD_SetObjListNewPoint(ol, 0);
				OSD_SetObjListTop(ol, 0);
			}
			//CDCASTB_RequestMaskBuffer();
			break;
		case EVN_POST_OPEN:

			MailDrawNum0();
			wincom_scroll_textfield_resume();
			break;
		case EVN_PRE_CLOSE:
			mail_exec_delete();
			if(menu_stack_get(0)==((POBJECT_HEAD)&g_win_mainmenu))
				*((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG;
			else
			{
				wincom_close_title();
				wincom_close_help();
			    *((UINT32*)param2) &= C_CLOSE_CLRBACK_FLG;
			}
			//CDCASTB_RequestUpdateBuffer();
			wincom_scroll_textfield_pause();
			break;
		case EVN_POST_CLOSE:
			break;
		case EVN_MSG_GOT:
			if( param1 == CTRL_MSG_SUBTYPE_STATUS_SCROLL_STRING)
				win_mail_scroll_string();
            if(param1 == CTRL_MSG_SUBTYPE_STATUS_SIGNAL)
                ret = PROC_LOOP;
		default:
			break;
		
	}

	return ret;
}
Esempio n. 19
0
static PRESULT playlist_colorkey_proc(VACTION unact)
{
	UINT16 curPos;
	PRESULT ret_proc = PROC_PASS;
	POBJLIST pOl;
	POBJECT_HEAD top_win;
	UINT8 back_saved;
	win_popup_choice_t choice;
	UINT32 file_num;
	
	pOl = &ol_playlist;
	curPos = OSD_GetObjListCurPoint(pOl);
	switch(unact)
	{
		case VACT_PLAY:
			top_win = (POBJECT_HEAD)(&g_win_usb_filelist);
			if(cur_playlist_type == PL_MUSIC)
			{
				win_set_musicplay_param(&cur_display_playlist,curPos+1,0);
				ap_send_msg(CTRL_MSG_SUBTYPE_CMD_PLAYMUSIC,(UINT32)top_win,TRUE);
			}
			else
			{
				win_set_imageplay_param(&cur_display_playlist, curPos+1,0);
				ap_send_msg(CTRL_MSG_SUBTYPE_CMD_PLAYIMAGE,(UINT32)top_win,TRUE);
			}
			ret_proc = PROC_LEAVE;
			break;
		case VACT_MOVE:
			if(moving_flag == 0)
			{
				moving_flag = 1;
				move_file_idx = curPos;
			}
			else
			{
				moving_flag = 0;
				//move file
				move_file_in_play_list(cur_display_playlist, move_file_idx+1, curPos+1);
				move_file_idx = INVALID_IDX;
			}
   			OSD_TrackObject((POBJECT_HEAD)pOl, C_UPDATE_ALL | C_DRAW_SIGN_EVN_FLG);
			break;
		case VACT_DELETE:
			if(moving_flag == 1)
			{
				moving_flag = 0;
				//move file
				move_file_in_play_list(cur_display_playlist, move_file_idx+1, curPos+1);
				move_file_idx = INVALID_IDX;
			}
			delete_play_list_item(cur_display_playlist, curPos+1);

			if(cur_playlist_type == PL_MUSIC)
			{
				musiclist_changed = TRUE;
			}
			else
			{
				imagelist_changed = TRUE;
			}
			get_play_list_info(cur_display_playlist,&file_num, NULL);
			OSD_SetObjListCount(pOl, file_num);
   			if(file_num == 0)//all items have been deleted
   			{
 				delete_play_list(win_play_list[cur_playlist_type]);
				win_play_list[cur_playlist_type] = NULL;
  				ret_proc = PROC_LEAVE;
   				break;
   			}
   			if(curPos >= file_num)
   			{
   				OSD_SetObjListCurPoint(pOl, 0);
   				OSD_SetObjListNewPoint(pOl, 0);
   				OSD_SetObjListTop(pOl, 0);
   			}
   			OSD_TrackObject((POBJECT_HEAD)pOl, C_UPDATE_ALL | C_DRAW_SIGN_EVN_FLG);
			break;
		case VACT_DELETE_ALL:
 			win_compopup_init(WIN_POPUP_TYPE_OKNO);
 			win_compopup_set_msg(NULL,NULL,RS_MP_DELETE_PLAYLIST);
 			choice = win_compopup_open_ext(&back_saved);		
 			if(choice == WIN_POP_CHOICE_YES)
 			{
				delete_play_list(win_play_list[cur_playlist_type]);
				win_play_list[cur_playlist_type] = NULL;
				if(cur_playlist_type == PL_MUSIC)
				{
					musiclist_changed = TRUE;
				}
				else
				{
					imagelist_changed = TRUE;
				}
	   			ret_proc = PROC_LEAVE;
 			}
			break;
		default:
			break;
	}

	return ret_proc;
}
Esempio n. 20
0
static void win_tplist_load_sat(BOOL updatesat)
{
	UINT16 i,tp_num,focus_pos,max_top;
	OBJLIST* ol;
	CONTAINER* item;	
	TEXT_FIELD* txt;	
	SCROLL_BAR* sb;	
	S_NODE s_node;	
	T_NODE prog_tp_node;

	if(cur_tp_sat_idx >= get_tuner_sat_cnt(TUNER_EITHER) )
		cur_tp_sat_idx= 0;
	
	get_tuner_sat(TUNER_EITHER, cur_tp_sat_idx, &s_node);
	
	ol = &tplst_olist;
	txt = &tplst_sat;
	sb = &tplst_scb;

	recreate_tp_view(VIEW_SINGLE_SAT, s_node.sat_id);
	tp_num = get_tp_num_sat(s_node.sat_id);
	OSD_SetObjListCount(ol, tp_num);	/* Set count */
	focus_pos = tp_list_pos;//OSD_GetObjListCurPoint(ol);

    if (tp_num > OSD_GetObjListPage(ol))
        max_top = tp_num - OSD_GetObjListPage(ol);
    else
        max_top = 0;

    if (focus_pos == 0xffff)
    {
    	if(playing_pnode.sat_id == s_node.sat_id)
    	{
    		for(i = 0;i < tp_num;i++)
    		{
    			get_tp_at(playing_pnode.sat_id, i, &prog_tp_node);
    			if(prog_tp_node.tp_id == playing_pnode.tp_id)
    			{
    				focus_pos = i;
                	if (focus_pos > max_top)
                        tp_list_top = max_top;
                    else
                        tp_list_top = focus_pos;
    				break;
    			}
    		}
    	}
    }
	if(focus_pos >= tp_num)
	{
		focus_pos = 0;
        tp_list_top = 0;
	}
	
	OSD_SetObjListCurPoint(ol, focus_pos);
	OSD_SetObjListNewPoint(ol, focus_pos);
	OSD_SetObjListTop(ol, tp_list_top);
	OSD_SetScrollBarMax(sb,tp_num);
	OSD_SetScrollBarPos(sb, focus_pos);

	win_tplist_set_sat_display();

	if(updatesat)
		OSD_DrawObject( (POBJECT_HEAD)txt, C_UPDATE_ALL);		

}
Esempio n. 21
0
static PRESULT movefile_item_enter(UINT16 uIdx)
{
	PRESULT ret = PROC_LOOP;
	BOOL bRoot;
	char str_name[FULL_PATH_SIZE],str_txt[FULL_PATH_SIZE];
	FileInfo file_node;
	POBJLIST pOl;
	TEXT_FIELD *pTxt;
	UINT8 back_saved;

	bRoot = win_check_openroot(win_move_dirlist);
	if((uIdx == 0) && (bRoot == FALSE))
	{//TODO:Exit to up dir		

		get_file_list_info(win_move_dirlist, &movefile_dirnum, &movefile_filenum, str_name);
		win_get_parent_dirname(str_txt, str_name);
		win_compopup_init(WIN_POPUP_TYPE_SMSG);
		win_compopup_set_frame(200, 200, 200, 100);
		win_compopup_set_msg(NULL, NULL,RS_DISPLAY_PLEASE_WAIT);
		win_compopup_open_ext(&back_saved);
		read_folder_to_file_list(win_move_dirlist, str_txt);
		win_compopup_smsg_restoreback();
		bRoot = win_check_openroot(win_move_dirlist);
		if(bRoot)
		{
			file_list_change_device(win_move_dirlist, movefile_cur_device);
		}
		movefile_curidx = win_get_file_idx(win_move_dirlist, str_name);
		if(movefile_curidx == (UINT16)(~0))
			movefile_curidx = 0;
		
		get_file_list_info(win_move_dirlist, &movefile_dirnum, &movefile_filenum, str_name);
		pTxt = &mpmove_dir_txt;
		win_get_display_dirname(str_txt, str_name);//get dirname to show
		OSD_SetTextFieldContent(pTxt,STRING_UTF8,(UINT32)str_txt);
		OSD_DrawObject((POBJECT_HEAD)pTxt,C_UPDATE_ALL);

		pOl  = &ol_mpmove;
		movefile_curidx = movefile_curidx + (bRoot?0:1);
		OSD_SetObjListCurPoint(pOl, movefile_curidx);
		OSD_SetObjListNewPoint(pOl, movefile_curidx);
		OSD_SetObjListTop(pOl, movefile_curidx);
		if(bRoot == TRUE)
			OSD_SetObjListCount(pOl, (movefile_dirnum + movefile_filenum));//to show it's child dir
		else
			OSD_SetObjListCount(pOl, (movefile_dirnum + movefile_filenum + 1));//to show it's child dir
		if(OSD_GetObjListCount(pOl) <= MV_ITEM_CNT)
			OSD_SetObjListTop(pOl, 0);
		OSD_TrackObject((POBJECT_HEAD)pOl, C_UPDATE_ALL | C_DRAW_SIGN_EVN_FLG);
		return ret;
	}

	if(!bRoot)
	{
		uIdx--;
	}
	
	get_file_from_file_list(win_move_dirlist, uIdx+1, &file_node);
	if(file_node.filetype == F_DIR)
	{
		//TODO: Enter child directory & retrive items,set not_root flag
		win_get_fullname(str_name, file_node.path, file_node.name);
		win_compopup_init(WIN_POPUP_TYPE_SMSG);
		win_compopup_set_frame(200, 200, 200, 100);
		win_compopup_set_msg(NULL, NULL,RS_DISPLAY_PLEASE_WAIT);
		win_compopup_open_ext(&back_saved);
		read_folder_to_file_list(win_move_dirlist, str_name);
		win_compopup_smsg_restoreback();

		get_file_list_info(win_move_dirlist, &movefile_dirnum, &movefile_filenum, str_name);

		pTxt = &mpmove_dir_txt;
		win_get_display_dirname(str_txt, str_name);//get dirname to show
		OSD_SetTextFieldContent(pTxt,STRING_UTF8,(UINT32)str_txt);
		OSD_DrawObject((POBJECT_HEAD)pTxt,C_UPDATE_ALL);

		movefile_curidx = 0;
		pOl  = &ol_mpmove;
		OSD_SetObjListCount(pOl, (movefile_dirnum + movefile_filenum + 1));//to show it's child dir
		OSD_SetObjListCurPoint(pOl, movefile_curidx);
		OSD_SetObjListNewPoint(pOl, movefile_curidx);
		OSD_SetObjListTop(pOl, movefile_curidx);
		OSD_TrackObject((POBJECT_HEAD)pOl, C_UPDATE_ALL | C_DRAW_SIGN_EVN_FLG);
	}
	else
	{
		//TODO:soc_printf("not dir!!\n");
	}

	return ret;
}
Esempio n. 22
0
static void ci_info_init()
{
	char * tmp;
	UINT8 *tmp_buf;
	
	// init
	MEMSET(&ci_info, 0, sizeof(ci_info));
	// get menu string
	tmp_buf = (void*)(win_ci_get_tmp_buf());
	
	tmp = api_ci_get_menu_string(tmp_buf, CI_DATA_BUFFER_LEN, ci_slot);

	if(tmp != NULL)
	{
		ci_info_set_string(ci_info.name, CI_MENU_TXT_LENGTH, tmp);
	}
	else
	{
		ci_info.name[0] = '\0';
	}


	//set the window style as the difference show modal
	win_ci_info_set_colorstyle();
	if(win_ci_info_modal == WIN_CI_INFO_SHOW_AS_MODAL)
	{
        OSD_SetColor((POBJECT_HEAD)&g_win_ci_info,WIN_SH_IDX_SD,WIN_HL_IDX_SD,WIN_SL_IDX_SD,WIN_GRY_IDX_SD);
        OSD_MoveObject((POBJECT_HEAD)&g_win_ci_info, W_L_SD,W_T_SD, 0);//62, 55, 0);
		OSD_MoveObject((POBJECT_HEAD)&txt_ci_info_split1, W_L_SD + 10, SPLIT_1_T_SD, 0); //62, SPLIT_1_T, 0);
		OSD_MoveObject((POBJECT_HEAD)&txt_ci_info_split2, W_L_SD + 10, SPLIT_2_T_SD, 0);//62, SPLIT_2_T - 1, 0);
	}
	else
	{
		OSD_SetColor((POBJECT_HEAD)&g_win_ci_info, WIN_SUBMENU_BODY_FRAME, WIN_SUBMENU_BODY_FRAME, WIN_SUBMENU_BODY_FRAME, WIN_SUBMENU_BODY_FRAME);//guop
		OSD_MoveObject((POBJECT_HEAD)&g_win_ci_info, W_L,W_T, 0);
		OSD_MoveObject((POBJECT_HEAD)&txt_ci_info_split1, SPLIT_1_L, SPLIT_1_T, 0);
		OSD_MoveObject((POBJECT_HEAD)&txt_ci_info_split2, SPLIT_1_L, SPLIT_2_T, 0);
	}
	

	/////////////////////////////////////////////////////////////////////////	
	//clear the menu
	//1. CI Title
	OSD_SetTextFieldContent(&txt_ci_info_title, STRING_UNICODE, (UINT32)"");
	//2. sub title
	ci_info_subtitle_content[0].text.pString = NULL;
	
	//3. bottom 
	OSD_SetTextFieldContent(&txt_ci_info_bottom, STRING_UNICODE, (UINT32)"");
	//4. list
	OSD_SetObjListCount(&olst_ci_info, 0);
	
	OSD_SetAttr(&sb_ci_info, C_ATTR_HIDDEN);

	//show the ci enquiry dialog
	OSD_SetObjpNext(&txt_ci_info_bottom, NULL);
	//the the windows focus to the dialog
	g_win_ci_info.FocusObjectID = 1;


}
Esempio n. 23
0
static void ci_info_display()
{
	OBJLIST* ol;
	UINT16 cnt, page;
	UINT8 i;

	CONTAINER* item = NULL;	
	TEXT_FIELD* txt = NULL;	


	//1. CI Title
	OSD_SetTextFieldContent(&txt_ci_info_title, STRING_UNICODE, (UINT32)ci_info.menu.title_str);
	//2. sub title
	ci_info_subtitle_content[0].text.pString = ci_info.menu.subtitle_str;
	//3. bottom 
	OSD_SetTextFieldContent(&txt_ci_info_bottom, STRING_UNICODE, (UINT32)ci_info.menu.bottom_str);
	//4. fill the list
	ol = &olst_ci_info;


	page = OSD_GetObjListPage(ol); 

	cnt = ci_info.menu.entry_cnt;
	OSD_SetObjListCount(ol, cnt);

	if(cnt <= page)
		OSD_SetAttr(&sb_ci_info, C_ATTR_HIDDEN);
	else
		OSD_SetAttr(&sb_ci_info, C_ATTR_ACTIVE);
	OSD_SetObjListTop(ol, 0);
	OSD_SetObjListCurPoint(ol, 0);
	OSD_SetObjListNewPoint(ol, 0);
	
	for( i = 0; i < page; i++)	
	{
		item = (PCONTAINER)ci_info_list_items[i];
		txt  = (PTEXT_FIELD)OSD_GetContainerNextObj(item);

		if(ci_info.menu.is_selectable)	
		{
            if(api_is_sd_color_mode())
            {
    	//		OSD_SetColor(item, CON_SH_IDX_SD, CON_HL_IDX_SD, CON_SL_IDX_SD, CON_GRY_IDX_SD);
     			OSD_SetColor(item, CON_SH_IDX, CON_HL_IDX, CON_SL_IDX, CON_GRY_IDX);
   	//		OSD_SetColor(txt, TXT_SH_IDX_SD,TXT_HL_IDX_SD,TXT_SL_IDX_SD,TXT_GRY_IDX_SD);
    			OSD_SetColor(txt, TXT_SH_IDX,TXT_HL_IDX,TXT_SL_IDX,TXT_GRY_IDX);
            }
            else
            {
#if 0
    			OSD_SetColor(item, CON_SH_IDX, CON_HL_IDX, CON_SL_IDX, CON_GRY_IDX);
    			OSD_SetColor(txt, TXT_SH_IDX,TXT_HL_IDX,TXT_SL_IDX,TXT_GRY_IDX);                
#endif
            }            
        }
		else
		{
            if(api_is_sd_color_mode())
            {
     			OSD_SetColor(item, CON_SH_IDX_SD, CON_SH_IDX_SD, CON_SL_IDX_SD, CON_GRY_IDX_SD);
     			OSD_SetColor(txt, TXT_SH_IDX_SD,TXT_SH_IDX_SD,TXT_SL_IDX_SD,TXT_GRY_IDX_SD);
            }
            else
            {
#if 0
                OSD_SetColor(item, CON_SH_IDX, CON_SH_IDX, CON_SL_IDX, CON_GRY_IDX);
    			OSD_SetColor(txt, TXT_SH_IDX,TXT_SH_IDX,TXT_SL_IDX,TXT_GRY_IDX);    
#endif
            }
        }
	}

	OSD_TrackObject( (POBJECT_HEAD)&g_win_ci_info, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);


}
Esempio n. 24
0
PRESULT comlist_tvsys_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	UINT16 i,wTop;
	UINT8 id;
	char str_len;
	OBJLIST* ol;
	UINT8 temp[4];
	SYSTEM_DATA* p_sys_data=sys_data_get();
	
	PRESULT cbRet = PROC_PASS;

	ol = (OBJLIST*)pObj;
	
	if(event==EVN_PRE_DRAW)
	{
		id=OSD_GetFocusID((POBJECT_HEAD)&win_av_con);
		switch(id)
		{
			case TVMODE_ID:
			    	wTop = OSD_GetObjListTop(ol);
			    	for(i=0;i<ol->wDep && (i+wTop)<ol->wCount;i++)
			    	{
						win_comlist_set_str(i + wTop,get_tv_mode_string(i+wTop),NULL,0);
			    	}
				break;
			
			case TVASPECT_ID:
#ifdef HDMI_CERTIFICATION_UI
				if( check_tv_display_in_hd_mode() )
				{
					OSD_SetObjListCount(ol, 1);
					//insert [16:9] into com_list[0];
					win_comlist_set_str(0, tv_ratio[3], NULL,0);
					break;
				}
				else
				{
					wTop = OSD_GetObjListTop(ol);
					OSD_SetObjListCount(ol, TV_RATIO_NCNT);
				}
#else
				wTop = OSD_GetObjListTop(ol);
#endif
			    	for(i=0;i<ol->wDep && (i+wTop)<ol->wCount;i++)
			    	{
						win_comlist_set_str(i + wTop,tv_ratio[i+wTop],NULL,0);
			    	}
				break;

				
			case VIDEOOUT_ID:
			    	wTop = OSD_GetObjListTop(ol);
			    	for(i=0;i<ol->wDep && (i+wTop)<ol->wCount;i++)
			    	{
#ifndef HDTV_SUPPORT
						win_comlist_set_str(i + wTop,NULL,NULL,video_output_ids[i]);
#else
						win_comlist_set_str(i + wTop,video_output[i+wTop],NULL,0);
#endif
			    	}			
				break;
				
			case RFSYSTEM_ID:
			    	wTop = OSD_GetObjListTop(ol);
			    	for(i=0;i<ol->wDep && (i+wTop)<ol->wCount;i++)
			    	{
						win_comlist_set_str(i + wTop,rf_mode_stings[i+wTop],NULL,0);
			    	}
				break;
				
			case RFCHAN_ID:
			    	wTop = OSD_GetObjListTop(ol);
			    	for(i=0;i<ol->wDep && (i+wTop)<ol->wCount;i++)
			    	{
						sprintf(temp,"%d", i+wTop+rf_ch_range[p_sys_data->avset.rf_mode][0]);
						win_comlist_set_str(i + wTop,temp,NULL,0);
			    	}
				break;

			
#ifdef HDTV_SUPPORT
			case HDMIOUT_ID:
			    	wTop = OSD_GetObjListTop(ol);
			    	for(i=0;i<ol->wDep && (i+wTop)<ol->wCount;i++)
			    	{
						win_comlist_set_str(i + wTop,format_setting[i+wTop],NULL,0);
			    	}
				break;
				
			case AUDIOOUT_ID:
			    	wTop = OSD_GetObjListTop(ol);
			    	for(i=0;i<ol->wDep && (i+wTop)<ol->wCount;i++)
			    	{
						win_comlist_set_str(i + wTop,audio_setting[i+wTop],NULL,0);
			    	}
				break;
#endif
		}
	}
	else if(event == EVN_POST_CHANGE)
	{
		cbRet = PROC_LEAVE;
	}

	return cbRet;
}
Esempio n. 25
0
static PRESULT win_tplist_list_unkown_act_proc(VACTION act)
{
	PRESULT ret = PROC_LOOP;
	UINT8	pre_sat_idx;
	UINT16 sel,sat_cnt;
	OSD_RECT rect;
	COM_POP_LIST_PARAM_T param;
	OBJLIST* ol;
	S_NODE s_node;
	T_NODE t_node;
	UINT32 freq,symb,pol;
	UINT8 back_saved;
	UINT32 ftaonly_VPid,srch_chan_APid,nit_PPid;
	UINT32 choice;
	POBJECT_HEAD sub_menu;
	INT32 iret;
	UINT16 pre_sat_id,cur_sat_id;

	sat_cnt = get_tuner_sat_cnt(TUNER_EITHER);
	
	get_tuner_sat(TUNER_EITHER, cur_tp_sat_idx, &s_node);
	ol = &tplst_olist;
	sel = OSD_GetObjListCurPoint(ol);

	pre_sat_idx = cur_tp_sat_idx;

	switch(act)
	{
	case VACT_SAT_PRE:
		if(cur_tp_sat_idx > 0)
			cur_tp_sat_idx --;
		else
			cur_tp_sat_idx = sat_cnt - 1;
		goto SAT_CHANGE;
		
	case VACT_SAT_NEXT:
		if(cur_tp_sat_idx < (sat_cnt - 1))
			cur_tp_sat_idx ++;
		else
			cur_tp_sat_idx = 0;					
		goto SAT_CHANGE;
		
	case VACT_SAT_SELECT:
		param.id = TUNER_EITHER;
		param.cur = cur_tp_sat_idx;
		param.selecttype = POP_LIST_SINGLESELECT;	
		OSD_SetRect(&rect, LST_SAT_L - 20 , LST_SAT_T, LST_SAT_W + 40, 360);
		rect.uTop += LST_SAT_H;
		sel = win_com_open_sub_list(POP_LIST_TYPE_SAT,&rect,&param);
		if(sel < sat_cnt)
			cur_tp_sat_idx = sel;			
		goto SAT_CHANGE;
SAT_CHANGE:
        tp_list_pos = 0;
        tp_list_top = 0;
		if(cur_tp_sat_idx != pre_sat_idx)
		{
			pre_tp_sat_idx = pre_sat_idx;
			get_tuner_sat(TUNER_EITHER, pre_sat_idx, &s_node);			
			pre_sat_id = s_node.sat_id;

			get_tuner_sat(TUNER_EITHER, cur_tp_sat_idx, &s_node);			
			cur_sat_id = s_node.sat_id;

			#ifdef SUPPORT_TWO_TUNER
			#ifdef SUPPORT_SELECT_SAME_SAT
				cur_tuner_idx = s_node.reserve_1; //s_node.tuner1_valid? 0 : 1;
			#else
				cur_tuner_idx = s_node.tuner1_valid? 0 : 1;			
			#endif
			#endif
			
			if(win_tplist_check_change())
				update_data();
			win_tplist_load_sat(TRUE);
			//OSD_TrackObject( (POBJECT_HEAD)&tplst_olist, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
			OSD_TrackObject( (POBJECT_HEAD)&g_win_tplist, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
			api_stop_timer(&tpturn_timer_id);			
			tpturn_timer_id = api_start_timer(TPTURN_TIMER_NAME, TPTURN_TIMER_TIME, win_tplist_tpturn_handler);		
		}
		break;
	case VACT_TP_EDIT:
		/* If not TP, can't EDIT */
		if(OSD_GetObjListCount(ol) == 0)
			break;
		
		get_tp_at(s_node.sat_id,sel, &t_node);		
		choice = win_tpe_open(0, s_node.sat_id, t_node.tp_id);
		if( choice)
 		{
			win_tpe_get_setting(&freq, &symb, &pol);
			if(freq != t_node.frq || symb != t_node.sym || pol != t_node.pol)
			{
				t_node.frq = freq;
				t_node.sym = symb;
				t_node.pol = pol;				
				modify_tp(t_node.tp_id,&t_node);
				api_stop_timer(&tpturn_timer_id);
				tpturn_timer_id = api_start_timer(TPTURN_TIMER_NAME, TPTURN_TIMER_TIME, win_tplist_tpturn_handler);
				
			}
		}
		
		//OSD_TrackObject( (POBJECT_HEAD)ol, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
		OSD_TrackObject( (POBJECT_HEAD)&g_win_tplist, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
		
		break;
	case VACT_TP_ADD:
		if(OSD_GetObjListCount(ol) == MAX_TP_NUM)
			break;
		extern UINT32 edit_tp_exist;
	    edit_tp_exist = 0;
		
		choice = win_tpe_open(1, s_node.sat_id, 0);
		if(choice)
		{
			win_tpe_get_setting(&freq, &symb, &pol);
			MEMSET(&t_node,0,sizeof(t_node) );
			t_node.frq = freq;
			t_node.sym = symb;
			t_node.pol = pol;	
			t_node.sat_id = s_node.sat_id;
			iret = add_node(TYPE_TP_NODE,s_node.sat_id,(void*)&t_node);
			if((iret == DBERR_MAX_LIMIT) || (iret == DBERR_FLASH_FULL))
			{
				OSD_TrackObject( (POBJECT_HEAD)ol, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
				win_compopup_init(WIN_POPUP_TYPE_OK);
				win_compopup_set_msg(NULL,NULL, RS_DISPLAY_TOO_MANY_TP);
				win_compopup_open_ext(&back_saved);
				break;				
			}
			OSD_SetObjListCount(ol, OSD_GetObjListCount(ol) + 1);
			//OSD_TrackObject( (POBJECT_HEAD)ol, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
			OSD_TrackObject( (POBJECT_HEAD)&g_win_tplist, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
			OSD_ChangeFocus((POBJECT_HEAD)ol,OSD_GetObjListCount(ol) - 1, C_DRAW_SIGN_EVN_FLG | C_UPDATE_FOCUS);

			api_stop_timer(&tpturn_timer_id);
			tpturn_timer_id = api_start_timer(TPTURN_TIMER_NAME, TPTURN_TIMER_TIME, win_tplist_tpturn_handler);
			
		}
		else
		{
            OSD_TrackObject( (POBJECT_HEAD)&g_win_tplist, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
			//OSD_TrackObject( (POBJECT_HEAD)ol, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
             if( edit_tp_exist > 0)
             {
                 OSD_ChangeFocus((POBJECT_HEAD)ol,edit_tp_exist - 1, C_DRAW_SIGN_EVN_FLG | C_UPDATE_FOCUS);
                 edit_tp_exist = 0;
             }
             //OSD_TrackObject( (POBJECT_HEAD)ol, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
		}
		break;
	case VACT_TP_DEL:
		/* If not TP, can't DEL */
		if(OSD_GetObjListCount(ol) == 0)
			break;

		win_compopup_init(WIN_POPUP_TYPE_OKNO);
		win_compopup_set_msg(NULL, NULL,RS_DISPLAY_SURE_TO_DELETE);
		if(win_compopup_open_ext(&back_saved) != WIN_POP_CHOICE_YES)
			break;
		
		get_tp_at(s_node.sat_id,sel, &t_node);	
		del_tp_by_id(t_node.tp_id);
		OSD_SetObjListCount(ol, OSD_GetObjListCount(ol) -1);
		OSD_TrackObject( (POBJECT_HEAD)ol, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
		
		if( OSD_GetObjListCount(ol) > 0)
		{	
			if(sel ==  OSD_GetObjListCount(ol))	/* Delete last TP */
				OSD_ChangeFocus((POBJECT_HEAD)ol,OSD_GetObjListCount(ol) - 1, C_DRAW_SIGN_EVN_FLG | C_UPDATE_FOCUS);
			else
				tpturn_timer_id = api_start_timer(TPTURN_TIMER_NAME, TPTURN_TIMER_TIME, win_tplist_tpturn_handler);		
		}
		break;
	case VACT_TP_SRCH:
		/* If not TP, can't SEARCH */
		if(OSD_GetObjListCount(ol) == 0)
			break;

        sys_data_set_cur_satidx(cur_tp_sat_idx);
        tp_list_pos = OSD_GetObjListCurPoint(ol);
        tp_list_top = OSD_GetObjListTop(ol);

		choice = win_tpsrch_open(&ftaonly_VPid,&srch_chan_APid,&nit_PPid);
		if(choice==1)
		{
			win_tpsrch_set_search_param(ftaonly_VPid,srch_chan_APid,nit_PPid);
			sub_menu = (POBJECT_HEAD)&g_win_search;
			wincom_close_help();
			if(OSD_ObjOpen(sub_menu, 0xFFFFFFFF) != PROC_LEAVE)
			{
				menu_stack_push(sub_menu);
				set_movedish_flag(TRUE);/*only tp search,need not moving dish when return*/
			}
		}
		else if(choice==2) //pid search
		{
			tp_VPid = ftaonly_VPid;
			tp_APid = srch_chan_APid;
			tp_PPid = nit_PPid;
			
			prog_callback_register((prog_node_return)win_tplist_set_search_pid_callback);

			get_tp_at(s_node.sat_id,sel,&t_node);
			win_search_set_pid_param(t_node.tp_id, tp_VPid, tp_APid, tp_PPid);
			
			win_tpsrch_set_search_param(P_SEARCH_FTA|P_SEARCH_SCRAMBLED,P_SEARCH_TV|P_SEARCH_RADIO,0);

			sub_menu = (POBJECT_HEAD)&g_win_search;
			wincom_close_help();
			if(OSD_ObjOpen(sub_menu, 0xFFFFFFFF) != PROC_LEAVE)
				menu_stack_push(sub_menu);

		}
		else
		{
			//OSD_TrackObject( (POBJECT_HEAD)ol, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
			OSD_TrackObject( (POBJECT_HEAD)&g_win_tplist, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
		}	
		break;
		
	}


	return ret;	
}