コード例 #1
0
ファイル: win_search.c プロジェクト: Janesak1977/ali3602
static void win_srch_draw_info_ex(OSD_RECT* pRect, char* str, UINT16* unistr, UINT8 shidx)
{
	PCONTAINER  pObj;
    TEXT_FIELD  *pTxt,*pLine;
    OSD_RECT     rect_01,rect_02;
    
    rect_01.uTop = pRect->uTop+TXT_T_OF;
    rect_01.uLeft = pRect->uLeft+TXT_L_OF;
    rect_01.uWidth = TXT_W;
    rect_01.uHeight = TXT_H;

    rect_02.uTop =  pRect->uTop + LINE_T_OF;
    rect_02.uLeft=  pRect->uLeft+LINE_L_OF;
    rect_02.uHeight = LINE_H;
    rect_02.uWidth  = TXT_W;
    
	pObj = &srch_info_ex;//&srch_info;
	pTxt = &srch_info_txt_ex;
    pLine = &srch_info_line;
	//OSD_SetRect2(&pObj->head.frame,pRect);
	OSD_SetRect2(&pObj->head.frame,pRect);
	OSD_SetRect2(&pTxt->head.frame,&rect_01);
    OSD_SetRect2(&pLine->head.frame,&rect_02);
    //OSD_SetTextFieldContent() 
	if(str != NULL)
		OSD_SetTextFieldContent(pTxt, STRING_ANSI, (UINT32)str);
	else if (unistr != NULL)
		OSD_SetTextFieldContent(pTxt, STRING_UNICODE, (UINT32)unistr);
	//OSD_SetColor(pTxt,shidx,shidx,shidx,shidx);
	OSD_DrawObject( (POBJECT_HEAD)pObj, C_UPDATE_ALL);
}
コード例 #2
0
ファイル: Win_rs232upg.c プロジェクト: alkap007/ali3606
static void win_rs232upg_msg_update(UINT8 * str)
{
	UINT32 i,j;
	OSD_RECT rect;

	//ComAscStr2Uni(str, display_strs[10+rs232upg_msg_line%RS232UPG_MSG_MAX_LINE]);
	ComUniStrCopyChar((UINT16 *)display_strs[10+rs232upg_msg_line%RS232UPG_MSG_MAX_LINE],str);

	for(i=0; i<RS232UPG_MSG_MAX_LINE; i++)
	{
		if(rs232upg_msg_line<RS232UPG_MSG_MAX_LINE)
			j = i%RS232UPG_MSG_MAX_LINE;
		else
			j = (rs232upg_msg_line+1+i)%RS232UPG_MSG_MAX_LINE;
		
		rs232upg_msg_buf[i] = display_strs[10+j];
	}
	
		//draw msg infos
	for(i=0; i<RS232UPG_MSG_MAX_LINE; i++)
	{
		rect.uLeft 	= MSG_L;
		rect.uTop  	= MSG_T+(MSG_H+MSG_GAP)*i;
		rect.uWidth = MSG_W;
		rect.uHeight= MSG_H;

		OSD_SetRect2(&rs232upg_txt_msg.head.frame, &rect);
		OSD_SetTextFieldContent(&rs232upg_txt_msg, STRING_UNICODE, (UINT32)rs232upg_msg_buf[i]);
		OSD_DrawObject( (POBJECT_HEAD)&rs232upg_txt_msg, C_UPDATE_ALL);
	}
	
	rs232upg_msg_line++;;
}
コード例 #3
0
ファイル: win_pvod.c プロジェクト: alkap007/ali3606
static void win_pvod_msg_update(UINT8 * str)
{
	UINT32 i,j;
	OSD_RECT rect;

	ComAscStr2Uni(str, display_strs[10+pvod_msg_line%PVOD_MSG_MAX_LINE]);

	for(i=0; i<PVOD_MSG_MAX_LINE; i++)
	{
		if(pvod_msg_line<PVOD_MSG_MAX_LINE)
			j = i%PVOD_MSG_MAX_LINE;
		else
			j = (pvod_msg_line+1+i)%PVOD_MSG_MAX_LINE;
		
		pvod_msg_buf[i] = display_strs[10+j];
	}
	
		//draw msg infos
	for(i=0; i<PVOD_MSG_MAX_LINE; i++)
	{
		rect.uLeft 	= MSG_L;
		rect.uTop  	= MSG_T+(MSG_H+MSG_GAP)*i;
		rect.uWidth = MSG_W;
		rect.uHeight= MSG_H;

		OSD_SetRect2(&pvod_txt_msg.head.frame, &rect);
		OSD_SetTextFieldContent(&pvod_txt_msg, STRING_UNICODE, (UINT32)pvod_msg_buf[i]);
		OSD_DrawObject( (POBJECT_HEAD)&pvod_txt_msg, C_UPDATE_ALL);
	}
	
	pvod_msg_line++;;
}
コード例 #4
0
ファイル: win_usbupg.c プロジェクト: alkap007/ali3606
static void win_usbupg_msg_update(UINT16 str_id)
{
	UINT32 i,j;
	OSD_RECT rect;

	//ComAscStr2Uni(str, display_strs[10+usbupg_msg_line%USBUPG_MSG_MAX_LINE]);
#if 0
	for(i=0; i<USBUPG_MSG_MAX_LINE; i++)
	{
		if(usbupg_msg_line<USBUPG_MSG_MAX_LINE)
			j = i%USBUPG_MSG_MAX_LINE;
		else
			j = (usbupg_msg_line+1+i)%USBUPG_MSG_MAX_LINE;
		
		usbupg_msg_buf[i] = str_id;//display_strs[10+j];
	}
#endif
	usbupg_msg_buf[usbupg_msg_line % USBUPG_MSG_MAX_LINE] = str_id;

		//draw msg infos
	for(i=0; i<USBUPG_MSG_MAX_LINE; i++)
	{
		rect.uLeft 	= MSG_L;
		rect.uTop  	= MSG_T+(MSG_H+MSG_GAP)*i;
		rect.uWidth = MSG_W;
		rect.uHeight= MSG_H;

		OSD_SetRect2(&usbupg_txt_msg.head.frame, &rect);
		OSD_SetTextFieldContent(&usbupg_txt_msg, STRING_ID, (UINT32)usbupg_msg_buf[i]);
		OSD_DrawObject( (POBJECT_HEAD)&usbupg_txt_msg, C_UPDATE_ALL);
	}
	
	usbupg_msg_line++;
}
コード例 #5
0
ファイル: win_cti_osdmsg.c プロジェクト: alkap007/ali3606
static void osdmsg_clear_msg(VSCR* pVscr, OSD_RECT prect)
{

    MEMSET(vscr_osdmsg_btm.lpbScr,OSD_TRANSPARENT_COLOR_BYTE,prect.uHeight*prect.uWidth);
    OSD_SetRect2 (&vscr_osdmsg_btm.vR,&prect);
    vscr_osdmsg_btm.updatePending = 1;
    osdmsg_updatevscr(&vscr_osdmsg_btm,OSDMSG_REGION_BTM);
}
コード例 #6
0
ファイル: win_search.c プロジェクト: Janesak1977/ali3602
static void win_srch_draw_bmp(OSD_RECT* pRect, UINT16 iconID)
{
	BITMAP* bmp;

	bmp = &srch_bmp;
	
	OSD_SetRect2(&bmp->head.frame,pRect);
	OSD_SetBitmapContent(bmp, iconID);
	OSD_DrawObject( (POBJECT_HEAD)bmp, C_UPDATE_ALL);
}
コード例 #7
0
ファイル: win_search.c プロジェクト: Janesak1977/ali3602
static void win_srch_draw_info(OSD_RECT* pRect, char* str, UINT16* unistr, UINT8 shidx)
{
	TEXT_FIELD* txt;
	txt = &srch_info;
	OSD_SetRect2(&txt->head.frame,pRect);
	if(str != NULL)
		OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)str);
	else if (unistr != NULL)
		OSD_SetTextFieldContent(txt, STRING_UNICODE, (UINT32)unistr);
	OSD_SetColor(txt,shidx,shidx,shidx,shidx);
	OSD_DrawObject( (POBJECT_HEAD)txt, C_UPDATE_ALL);
}
コード例 #8
0
ファイル: win_cti_osdmsg.c プロジェクト: alkap007/ali3606
static void vscr_osddata_copy(VSCR* vDec,VSCR* vSrc,UINT32 len)
{
    UINT32 i;
    OSD_SetRect2( &vDec->vR,&vSrc->vR);
    //memcpy(vDec->lpbScr,vSrc->lpbScr,len);
    for(i=0; i<len; i++)
    {
        vDec->lpbScr[i]=vSrc->lpbScr[i];
    }
    vDec->bBlockID = vSrc->bBlockID;
    vDec->updatePending = vSrc->updatePending;
    vDec->bColorMode = vSrc->bColorMode;

}
コード例 #9
0
void ap_cas_free_previewing_open(UINT16 strID)
{
	static UINT8 i=0;
	OSD_RECT free_prew_rc;
	free_prew_rc.uLeft = 350;
	free_prew_rc.uTop = 0;
	free_prew_rc.uWidth = 360;
	free_prew_rc.uHeight = 120;

	OSD_SetRect2(&cas_freeprewing_info.head.frame, &free_prew_rc);
	OSD_SetRect(&(cas_freeprewing_info.rcText), 4, 4, free_prew_rc.uWidth-8, free_prew_rc.uHeight-8);	

	cas_reeprewing_txt.bTextType =STRING_ID;
	cas_reeprewing_txt.text.wStringID= strID;
	OSD_DrawObject((POBJECT_HEAD)&cas_freeprewing_info, C_UPDATE_ALL);
	CAS_POPUP_FREE_PREVIEWING_STATUS = 1;
}
コード例 #10
0
ファイル: win_usb_backup.c プロジェクト: alkap007/ali3606
static void win_sys_backup_msg_update(UINT16 str_id)
{
	UINT32 i,j;
	OSD_RECT rect;

	sys_backup_msg_buf[sys_backup_msg_line % SYS_BACKUP_MSG_MAX_LINE] = str_id;
	for(i=0; i<SYS_BACKUP_MSG_MAX_LINE; i++)
	{
		rect.uLeft 	= MSG_L;
		rect.uTop  	= MSG_T+(MSG_H+MSG_GAP)*i;
		rect.uWidth = MSG_W;
		rect.uHeight= MSG_H;

		OSD_SetRect2(&sys_backup_txt_msg.head.frame, &rect);
		OSD_SetTextFieldContent(&sys_backup_txt_msg, STRING_ID, (UINT32)sys_backup_msg_buf[i]);
		OSD_DrawObject( (POBJECT_HEAD)&sys_backup_txt_msg, C_UPDATE_ALL);
	}
	
	sys_backup_msg_line++;
}
コード例 #11
0
ファイル: win_usb_backup.c プロジェクト: alkap007/ali3606
static void win_sys_backup_msg_clear()
{
	UINT8 i;
	OSD_RECT rect;
	
	for(i=0;i<SYS_BACKUP_MSG_MAX_LINE;i++)
	{
		sys_backup_msg_buf[i] = 0;//display_strs[10+i];

		rect.uLeft 	= MSG_L;
		rect.uTop  	= MSG_T+(MSG_H+MSG_GAP)*i;
		rect.uWidth = MSG_W;
		rect.uHeight= MSG_H;

		OSD_SetRect2(&sys_backup_txt_msg.head.frame, &rect);
		OSD_SetTextFieldContent(&sys_backup_txt_msg, STRING_ID, (UINT32)sys_backup_msg_buf[i]);
		OSD_DrawObject( (POBJECT_HEAD)&sys_backup_txt_msg, C_UPDATE_ALL);
	}

 	sys_backup_msg_line = 0;
}
コード例 #12
0
ファイル: win_usbupg.c プロジェクト: alkap007/ali3606
static void win_usbupg_msg_clear()
{
	UINT8 i;
	OSD_RECT rect;
	
	for(i=0;i<USBUPG_MSG_MAX_LINE;i++)
	{
		//ComAscStr2Uni("", display_strs[10+i]);
		usbupg_msg_buf[i] = 0;//display_strs[10+i];

		rect.uLeft 	= MSG_L;
		rect.uTop  	= MSG_T+(MSG_H+MSG_GAP)*i;
		rect.uWidth = MSG_W;
		rect.uHeight= MSG_H;

		OSD_SetRect2(&usbupg_txt_msg.head.frame, &rect);
		OSD_SetTextFieldContent(&usbupg_txt_msg, STRING_ID, (UINT32)usbupg_msg_buf[i]);
		OSD_DrawObject( (POBJECT_HEAD)&usbupg_txt_msg, C_UPDATE_ALL);
	}

 	usbupg_msg_line = 0;	
}
コード例 #13
0
ファイル: win_pvod.c プロジェクト: alkap007/ali3606
static void win_pvod_msg_clear()
{
	UINT8 i;
	OSD_RECT rect;
	
	for(i=0;i<PVOD_MSG_MAX_LINE;i++)
	{
		ComAscStr2Uni("", display_strs[10+i]);
		pvod_msg_buf[i] = display_strs[10+i];

		rect.uLeft 	= MSG_L;
		rect.uTop  	= MSG_T+(MSG_H+MSG_GAP)*i;
		rect.uWidth = MSG_W;
		rect.uHeight= MSG_H;

		OSD_SetRect2(&pvod_txt_msg.head.frame, &rect);
		OSD_SetTextFieldContent(&pvod_txt_msg, STRING_UNICODE, (UINT32)pvod_msg_buf[i]);
		OSD_DrawObject( (POBJECT_HEAD)&pvod_txt_msg, C_UPDATE_ALL);
	}

 	pvod_msg_line = 0;	
}
コード例 #14
0
ファイル: win_smc_upgrade.c プロジェクト: jinfeng-geeya/3202C
static void win_draw_text_content(OSD_RECT *pRect, char *str, UINT16 *unistr, UINT32 strtype, UINT8 shidx)
{
	TEXT_FIELD *txt;

	txt = &smc_upgrade_item_str;
	OSD_SetRect2(&txt->head.frame, pRect);
	if (NULL == str && NULL == unistr)
	{
		txt->pString = NULL;
		OSD_SetTextFieldContent(txt, STRING_ID, (UINT32)strtype);
	}
	else if (str != NULL)
	{
		txt->pString = display_strs[40];
		OSD_SetTextFieldContent(txt, STRING_ANSI, (UINT32)str);
	}
	else if (unistr != NULL)
	{
		txt->pString = display_strs[40];
		OSD_SetTextFieldContent(txt, STRING_UNICODE, (UINT32)unistr);
	}
	OSD_SetColor(txt, shidx, shidx, shidx, shidx);
	OSD_DrawObject((POBJECT_HEAD)txt, C_UPDATE_ALL);
}
コード例 #15
0
ファイル: win_timer_set.c プロジェクト: Janesak1977/ali3602
static PRESULT timerset_mselinfo_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	UINT32 sel;
	VACTION unact;
	P_NODE p_node;
	UINT16* Uni_str;	
	TIMER_SET_CONTENT* settimer;
	COM_POP_LIST_PARAM_T param;
	OSD_RECT rect;

	
	settimer = &timer_set;
	
	
	switch(event)
	{
	case EVN_PRE_CHANGE:
		sel = *((UINT32*)param1);
		break;
	case EVN_POST_CHANGE:
		sel = param1;
		break;
	case EVN_UNKNOWN_ACTION:
		unact  = (VACTION)(param1>>16);
		if(unact == VACT_ENTER) // select channel 
		{
			OSD_SetRect2(&rect,&pObj->frame);
			rect.uTop -= 80;
			rect.uLeft -= 40;
			rect.uWidth += 40;
			rect.uHeight = 300;

			param.selecttype = POP_LIST_SINGLESELECT;
			param.cur = TIMER_SERVICE_INFO;		
			sel = win_com_open_sub_list(POP_LIST_TYPE_CHANLIST,&rect,&param);
			if(sel < (UINT32)TIMER_SERVICE_INFO_CNT)
			{
				get_prog_at(sel,&p_node);
				settimer->wakeup_channel = p_node.prog_id;
				TIMER_SERVICE_INFO = sel;
			}

			OSD_TrackObject( (POBJECT_HEAD )&timer_con_serviceinfo, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
		}
		break;
	case EVN_REQUEST_STRING:
		sel = param1;	
		Uni_str= (UINT16*)param2;
		get_prog_at(sel,&p_node);
		if(p_node.ca_mode)
			ComAscStr2Uni("$", Uni_str);
		ComUniStrCopyChar((UINT8*)&Uni_str[p_node.ca_mode], p_node.service_name);			
 		if((TIMER_MODE == TIMER_MODE_OFF) || (TIMER_SERVICE_TYPE != TIMER_SERVICE_DVR_RECORD) || (p_node.ca_mode == 1))
 		{
 			set_container_active(&timer_con_rec_type, C_ATTR_INACTIVE);
 			settimer->wakeup_message = 0;
 		}
		else if((TIMER_SERVICE_TYPE == TIMER_SERVICE_DVR_RECORD) && (!pvr_info.hdd_valid))  //guop add
 			set_container_active(&timer_con_rec_type, C_ATTR_INACTIVE);
 		else
 		{
 			set_container_active(&timer_con_rec_type, C_ATTR_ACTIVE);
 			if(settimer->wakeup_message > 2)
 				settimer->wakeup_message = 0;
 		}
 		OSD_SetMultiselSel(&timer_msel_rec_type, settimer->wakeup_message);
 		OSD_DrawObject((POBJECT_HEAD)&timer_con_rec_type, C_UPDATE_ALL);

		break;
		
	}

	return ret;
}
コード例 #16
0
ファイル: win_cti_osdmsg.c プロジェクト: alkap007/ali3606
void scroll_string(UINT16* str,OSD_RECT rc,UINT16 fontColor,UINT16 backColor,UINT8 delay)
{
    UINT8 c,width;
    UINT8 fontArray[CA_MAXLEN_OSD];
    UINT8 *fontbuf;
    UINT8 *pDataBitmap;
    UINT8 regionID = 0;
    UINT16 ch, i,j,k,times=0,*buf;
    ID_RSC RscLibId;
    VSCR* vScr;
    VSCR vScrTemp;
    UINT8 * pscr=NULL;
    OBJECTINFO RscLibInfo;
    OBJECTINFO *pRscLibInfo = &RscLibInfo;
    POBJECT_HEAD p_top_menu = NULL;

    pscr =MALLOC(rc.uHeight*rc.uWidth);
    if (NULL == pscr)
    {
        ASSERT(0);
    }
    vScrTemp.lpbScr = pscr;

    if(str == NULL)
        return;

    if(delay == 0)
        delay = 30;  //default speed is 30

    fontbuf = fontBuf_btm;
    regionID = osdmsg_btm_regionID;
    vScr = &vscr_osdmsg_btm;

    SetScrollStopFlag(SCROLL_PLAY);
    while(*str != 0)
    {
        ch = COMMB16ToUINT16(*str);
        RscLibId = OSD_GetDefaultFontLib(ch);
        pDataBitmap = OSD_GetRscObjData_ext(RscLibId, ch, &RscLibInfo,fontbuf);
        if(NULL == pDataBitmap)
        {
            str++;
            continue;
        }

        /*****************************************************************************************
         **qjzheng 2010.3.10 NOTE:
         **当cpy的长度是72时导致显示的字符不全,具体原因未查明,但是改成CA_MAXLEN_OSD后错误得到修正
         *****************************************************************************************/
        MEMCPY(fontArray,pDataBitmap,CA_MAXLEN_OSD );
        width = RscLibInfo.m_objAttr.m_wActualWidth;
        for(i=0; i<width; i++)
        {
            for(k=0; k<rc.uHeight; k++)
            {
                UINT8 cmask=0;
                UINT16 pos=k*rc.uWidth;
                for(j=0; j<rc.uWidth-1; j++)
                {
                    vScr->lpbScr[pos+j] = vScr->lpbScr[pos+j+1];
                }

                if( k <(rc.uHeight -  RscLibInfo.m_objAttr.m_wHeight))
                {
                    vScr->lpbScr[pos+rc.uWidth-1]  = backColor;
                    continue;
                }
                c=fontArray[(k-(rc.uHeight -  RscLibInfo.m_objAttr.m_wHeight))*(RscLibInfo.m_objAttr.m_wWidth/8)+i/8];
                cmask = 0x80 >> (i%8) ;
                vScr->lpbScr[pos+rc.uWidth-1] = (c &cmask)?(fontColor):(backColor);
            }

            OSD_SetRect2 ( &vScr->vR,&rc);
            vScr->updatePending = 1;
            osdmsg_updatevscr(vScr,regionID);

            if(GetScrollStopFlag()==SCROLL_PAUSE)
            {
                vscr_osddata_copy(&vScrTemp,vScr,rc.uHeight*rc.uWidth);
                osdmsg_clear_msg(vScr,rc);

                SetScrollStopFlag(SCROLL_HIDE);
                while(GetScrollStopFlag()==SCROLL_HIDE)
                {
                    osal_task_sleep(100);
                }
                vscr_osddata_copy(vScr,&vScrTemp,rc.uHeight*rc.uWidth);
                osdmsg_updatevscr(vScr,regionID);
            }

            if(GetScrollStopFlag()==SCROLL_STOP)
            {
                p_top_menu=menu_stack_get_top();
                while(p_top_menu!=NULL && p_top_menu!=(POBJECT_HEAD)&g_win_progname)
                {
                    p_top_menu=menu_stack_get_top();
                    osal_task_sleep(100);
                }
                return;
            }

            while(times<delay)
            {
                osal_task_sleep(1);
                times++;
                if(times >= delay)
                {
                    times = 0;
                    break;
                }
            }
        }

        str++;
    }
    SetScrollStopFlag(SCROLL_STOP);

    return;
    //GeCleanRegion(regionID);
}
コード例 #17
0
ファイル: win_motor_setting.c プロジェクト: alkap007/ali3606
static PRESULT motorset_item_sel_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	VACTION unact;
	
	UINT32 sel;
	UINT16* Uni_str;
	UINT8 bID;

	COM_POP_LIST_TYPE_T list_type;
	OSD_RECT rect;
	COM_POP_LIST_PARAM_T param;
	S_NODE s_node;
	UINT16 cur_idx;
	UINT8 back_saved;
	

	bID = OSD_GetObjID(pObj);

	switch(event)
	{
	case EVN_REQUEST_STRING:
		sel = param1;
		Uni_str= (UINT16*)param2;
		if(bID == SAT_ID)
			get_tuner_sat_name(antset_cur_tuner,sel,Uni_str);
		else //TP_ID
		{
			get_tuner_sat(antset_cur_tuner,SAT_IDX,&s_node);
			get_tp_name(s_node.sat_id,sel,Uni_str);
		}
		break;
	case EVN_POST_CHANGE:
		sel = param1;

SAT_TP_CHANGED:
		/* Need to turn SAT/TP here*/
		if(bID == SAT_ID)
		{
			win_motorset_load_sat(SAT_IDX,TRUE);
			win_motorset_set_frontend();
			get_tuner_sat(antset_cur_tuner,SAT_IDX,&s_node);			
			wincom_dish_move_popup_open(0xFFFF,s_node.sat_id,antset_cur_tuner,&back_saved);			
		}
		else
		{
			win_motorset_turn_tp();
		}
		
		break;
	case EVN_UNKNOWN_ACTION:
		unact = (VACTION)(param1>>16);
		if(unact == VACT_ENTER)
		{
			param.selecttype = POP_LIST_SINGLESELECT;

			OSD_SetRect2(&rect,&pObj->frame);	
			rect.uLeft -= 40;
			rect.uWidth += 40;

			if(bID == SAT_ID)
			{
				list_type = POP_LIST_TYPE_SAT;
				list_type = POP_LIST_TYPE_SAT;
				rect.uHeight = 300;
				param.id = antset_cur_tuner;
				param.cur = SAT_IDX;				
			}
			else// if(bID == TP_ID)
			{
				list_type = POP_LIST_TYPE_TP;
				list_type = POP_LIST_TYPE_TP;
				rect.uHeight = 300;
				get_tuner_sat(antset_cur_tuner,SAT_IDX,&s_node);
				param.id = s_node.sat_id;
				param.cur = TP_IDX;
			}
			
			cur_idx = win_com_open_sub_list(list_type,&rect,&param);
			if(cur_idx == LIST_INVALID_SEL_IDX || cur_idx == param.cur)
				break;
			
			if(bID == SAT_ID)
				SAT_IDX = cur_idx;
			else
				TP_IDX = cur_idx;
			OSD_TrackObject(pObj, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
			
			sel = cur_idx;
			
			goto SAT_TP_CHANGED;
		}
		
		break;
	}


	return ret;
}
コード例 #18
0
static PRESULT atnsetm_item_sel_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	UINT32 sel;
	UINT8 bID;
 	char str[10];
    UINT16 * Uni_str;
    UINT8* pstr;
	SYSTEM_DATA* sys_data;
	POBJECT_HEAD other_antset_menu;
	VACTION unact;
	COM_POP_LIST_TYPE_T list_type;
	OSD_RECT rect;
	COM_POP_LIST_PARAM_T param;
	UINT16 cur_idx;
	BOOL b;
	UINT8 back_saved;

	sys_data = sys_data_get();

	bID = OSD_GetObjID(pObj);

	switch(event)
	{
	case EVN_PRE_CHANGE:
		sel = *((UINT32*)param1);
		if(bID == TUNER_ID)
		{
			if(TUNER_CNT < 2)
			{
				ret = PROC_LOOP;
				break;
			}

			b = win_atnsetm_check_save_motor_antenna_setting();
			if(!b)
			{
				win_compopup_init(WIN_POPUP_TYPE_OK);
				win_compopup_set_msg(NULL, NULL, RS_MSG_OUT_RANGE);
				win_compopup_open_ext(&back_saved);
				ret = PROC_LOOP;
				break;
			}

			/* Check tuner : sel has selected satellite or not.*/
			if(get_tuner_sat_cnt(sel)  == 0)
			{
				UINT8 back_saved;
				win_compopup_init(WIN_POPUP_TYPE_OK);
				win_compopup_set_msg(NULL,NULL, RS_TUNER_HAS_NO_SATE_SEL);
				win_compopup_open_ext(&back_saved);
				antset_cur_tuner = (sel == 0)? 1: 0;
				ret = PROC_LOOP;
			}
			else
				cur_tuner_idx = antset_cur_tuner = sel;
			
		}
		break;
	case EVN_POST_CHANGE:
		sel = param1;
		if(bID == TUNER_ID)
		{
			
			if(sys_data->tuner_lnb_type[sel] != LNB_MOTOR)
			{
				/* Need to change : Fixed antenna setting menu. */
				other_antset_menu = (POBJECT_HEAD)&g_win_antenna_set_fixed;
				if(OSD_ObjOpen(other_antset_menu, MENU_OPEN_TYPE_MENU + bID) != PROC_LEAVE)
				{
					menu_stack_pop();
					menu_stack_push(other_antset_menu);
				}
				ret  = PROC_LOOP;
			}
			else
			{
				//win_atnsetm_load_sat_cnt(TRUE);
				win_atnsetm_load_motor_antenna_setting(TRUE);
			}
		}
		else if(bID == MOTOR_ID)
		{
			win_atnsetm_load_local_action(TRUE);		
		}
#ifdef SUPPORT_UNICABLE
		else if(bID == LNB_ID)
		{
			if(win_unicable_setting_open(LNB_IDX))
				OSD_TrackObject((POBJECT_HEAD)&g_win_antenna_set_motor, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
		}
#endif
		break;		
	case EVN_REQUEST_STRING:
		sel = param1;
		Uni_str= (UINT16*)param2;
		get_lnb_name(sel,Uni_str);
		break;
		
	case EVN_UNKNOWN_ACTION:
		unact = (VACTION)(param1>>16);
		if(unact == VACT_ENTER)
		{
			OSD_SetRect2(&rect,&pObj->frame);
			/*Patch: For solve pop-up windows show bugs,for example: Universal(5150-10600) can not be all show*/
			OSD_SetRect(&rect, rect.uLeft, rect.uTop, (rect.uWidth + 10), rect.uHeight);
			param.selecttype = POP_LIST_SINGLESELECT;
			switch(bID)
			{
			case LNB_ID:
				list_type = POP_LIST_TYPE_LNB;
				rect.uHeight = 330;
				param.cur = LNB_IDX;
				break;
			default:
				list_type = 0xFF;
				break;
			}

			if(list_type == 0xFF)
				break;

			cur_idx = win_com_open_sub_list(list_type,&rect,&param);
			if(cur_idx == LIST_INVALID_SEL_IDX || cur_idx == param.cur)
				break;		

			if(bID == LNB_ID)
			{
				LNB_IDX = cur_idx;
				OSD_TrackObject((POBJECT_HEAD)anesetm_items[LNB_ID - 1], C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);	
#ifdef SUPPORT_UNICABLE
				if(win_unicable_setting_open(LNB_IDX))
					OSD_TrackObject((POBJECT_HEAD)&g_win_antenna_set_motor, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
#endif
			}
			
		}		
		break;
	}

	return ret;
}
コード例 #19
0
ファイル: win_timer_set.c プロジェクト: jinfeng-geeya/3202C
static PRESULT timerset_mselinfo_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	UINT32 sel;
	VACTION unact;
	P_NODE p_node;
	UINT16 *Uni_str;
	TIMER_SET_CONTENT *settimer;
	COM_POP_LIST_PARAM_T param;
	OSD_RECT rect;


	settimer = &timer_set;


	switch (event)
	{
		case EVN_PRE_CHANGE:
			sel = *((UINT32*)param1);
			break;
		case EVN_POST_CHANGE:
			sel = param1;
			break;
		case EVN_UNKNOWN_ACTION:
			unact = (VACTION)(param1 >> 16);
			if (unact == VACT_ENTER)
			// select channel
			{
				OSD_SetRect2(&rect, &pObj->frame);
				rect.uLeft -= 40;
				rect.uWidth += 40;
				rect.uHeight = 180;

				param.selecttype = POP_LIST_SINGLESELECT;
				param.cur = TIMER_SERVICE_INFO;
				sel = win_com_open_sub_list(POP_LIST_TYPE_CHANLIST, &rect, &param);
				if (sel < (UINT32)TIMER_SERVICE_INFO_CNT)
				{
					get_prog_at(sel, &p_node);
					settimer->wakeup_channel = p_node.prog_id;
					//MEMCPY(settimer->event_name, (UINT8 *)&p_node.service_name[0], 40);
					TIMER_SERVICE_INFO = sel;
				}

				OSD_TrackObject((POBJECT_HEAD) &timer_con_serviceinfo, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
			}
			break;
		case EVN_REQUEST_STRING:
			sel = param1;
			Uni_str = (UINT16*)param2;
			get_prog_at(sel, &p_node);
			if (p_node.ca_mode)
				ComAscStr2Uni("$", Uni_str);
			ComUniStrCopyChar((UINT8*) &Uni_str[p_node.ca_mode], p_node.service_name);
			MEMCPY(settimer->event_name, (UINT8 *)Uni_str, 40);
			break;

	}

	return ret;
}
コード例 #20
0
ファイル: win_satsearch_set.c プロジェクト: alkap007/ali3606
static PRESULT satsrch_item_sel_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	VACTION unact;
	UINT32 sel;
	UINT8 bID;
 	char str[10];
    UINT16 * Uni_str;
    UINT8* pstr;
	UINT16 cur_idx;
	COM_POP_LIST_TYPE_T list_type;
	OSD_RECT rect;
	COM_POP_LIST_PARAM_T param;
	UINT16 i,n = 0;
	S_NODE s_node;
	UINT32 flag;

	bID = OSD_GetObjID(pObj);

	switch(event)
	{
	case EVN_PRE_CHANGE:
		sel = *((UINT32*)param1);
		break;
	case EVN_POST_CHANGE:
		sel = param1;
		if(bID == MODE_ID)
			win_satsrch_set_nitactive(TRUE);
        if(bID == SAT_ID)
        {
			get_sat_at(sel,SET_SELECTED,&s_node);		
		#ifdef SUPPORT_TWO_TUNER  //guop modify
		#ifdef SUPPORT_SELECT_SAME_SAT
			OSD_SetTextFieldContent(&satsrch_txt6_note , STRING_ID, ((s_node.reserve_1 == 0) ? RS_LNB1 : RS_LNB2));
		#else
			OSD_SetTextFieldContent(&satsrch_txt6_note , STRING_ID, (s_node.tuner1_valid ? RS_LNB1 : RS_LNB2));
		#endif
		
			OSD_DrawObject((POBJECT_HEAD)&satsrch_txt6_note, C_UPDATE_ALL);
		#endif
        }

		
		break;
	case EVN_REQUEST_STRING:
		sel = param1;
		Uni_str= (UINT16*)param2;
		if(bID == SAT_ID)
		{
			get_tuner_sat_name(2,sel,Uni_str);
			sys_data_set_cur_satidx(sel);
		}	
		break;
	case EVN_UNKNOWN_ACTION:
		unact = (VACTION)(param1>>16);		
		if(unact ==  VACT_POP_UP)
		{
			OSD_SetRect2(&rect,&pObj->frame);
			switch(bID)
			{
			case SAT_ID:
				rect.uLeft -= 80;
				rect.uWidth += 80;
				list_type 	= POP_LIST_TYPE_SAT;
				rect.uHeight = 300;
				param.id 	= TUNER_EITHER;
				param.cur 	= SATSRCH_SAT_IDX;
				if(single_multi_srch_flag == 0)
					param.selecttype = POP_LIST_SINGLESELECT;
				else
				{
					MEMSET(sat_select,0,sizeof(sat_select));
					n = get_tuner_sat_cnt(TUNER_EITHER);
					if(n == 0)
					{
						list_type = 0xFF;
						break;
					}

					for(i=0;i<n;i++)
					{
						get_tuner_sat(TUNER_EITHER,i,&s_node);
						if(s_node.selected_flag)
							sat_select[i] = 1;							
					}
#if (defined(SUPPORT_TWO_TUNER) || !defined(SELECT_SAT_ONLY))
					param.selecttype = POP_LIST_MULTISELECT;
#else
					param.selecttype = POP_LIST_SINGLESELECT;
#endif
					param.select_array = sat_select;					
				}
				break;
			default:
				list_type = 0xFF;							
			}
			
			if(list_type == 0xFF)
				break;

			cur_idx = win_com_open_sub_list(list_type,&rect,&param);
			if(single_multi_srch_flag == 0)
			{
				if(cur_idx == LIST_INVALID_SEL_IDX || cur_idx == param.cur)
					break;
			}
			else
			{
				/* Check the select satellite */

#if (defined(SUPPORT_TWO_TUNER) || !defined(SELECT_SAT_ONLY))				
				for(i=0;i<n;i++)
				{
					if(win_comlist_ext_check_item_sel(i))
						flag = 1;
					else
						flag = 0;
					get_tuner_sat(TUNER_EITHER,i,&s_node);
					if(s_node.selected_flag != flag)
					{
						s_node.selected_flag = flag;
						modify_sat(s_node.sat_id, &s_node);						
					}
				}
				update_data(TYPE_SAT_NODE);
#endif				
			}

			if(single_multi_srch_flag == 0)
				SATSRCH_SAT_IDX = cur_idx;
			get_sat_at(cur_idx,SET_SELECTED,&s_node);		
#ifdef SUPPORT_SELECT_SAME_SAT
			OSD_SetTextFieldContent(&satsrch_txt6_note , STRING_ID, ((s_node.reserve_1 == 0) ? RS_LNB1 : RS_LNB2));
#else
			OSD_SetTextFieldContent(&satsrch_txt6_note , STRING_ID, (s_node.tuner1_valid ? RS_LNB1 : RS_LNB2));
#endif
			OSD_DrawObject((POBJECT_HEAD)&satsrch_txt6_note, C_UPDATE_ALL);
			OSD_TrackObject((POBJECT_HEAD)&satsrch_item1, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
			if(single_multi_srch_flag)
			{
				/* TODO :
					Draw the select satellites name */
					win_satsrch_set_drawselectsats();
			}
	
	
		}
		break;
	}

	return ret;
	
}
コード例 #21
0
ファイル: win_ota_set.c プロジェクト: Janesak1977/ali3602
static PRESULT  otaset_item_sel_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	UINT8 bID;
	UINT32 sel;
	UINT16 * Uni_str;
	S_NODE s_node;
	VACTION unact;
	COM_POP_LIST_TYPE_T list_type;
	OSD_RECT rect;
	COM_POP_LIST_PARAM_T param;
	UINT16 cur_idx;

	bID = OSD_GetObjID(pObj);

	switch(event)
	{
	case EVN_REQUEST_STRING:
		sel = param1;
		Uni_str= (UINT16*)param2;
		if(bID == EDIT_TP_SATE_ID)
		{
		#ifdef	_BUILD_OTA_E_
			ComAscStr2Uni("Fixed Sat", Uni_str);
		#else
			get_tuner_sat_name(OTA_TUNER_IDX,sel,Uni_str);
		#endif
		}
		else if(bID == EDIT_TP_TPIDX_ID)
		{
			get_tuner_sat(cur_tuner_idx,SAT_POS,&s_node);
		#ifdef	_BUILD_OTA_E_
			ComAscStr2Uni("Fixed TP", Uni_str);
		#else
			get_tp_name(s_node.sat_id,sel,Uni_str);
		#endif
		}
		break;
	case EVN_POST_CHANGE:
		sel = param1;
		if(bID == EDIT_TP_SATE_ID)
			win_otaset_load_sat_setting(sel,TRUE);
		else if(bID == EDIT_TP_TPIDX_ID)
			win_otaset_load_tp_setting(sel,TRUE);
		win_otaset_turn_frntend();
		break;
	case EVN_UNKNOWN_ACTION:
		unact = (VACTION)(param1>>16);		
		if(unact ==  VACT_POP_UP)
		{
			ret = PROC_LOOP;
			OSD_SetRect2(&rect,&pObj->frame);
			param.selecttype = POP_LIST_SINGLESELECT;
			switch(bID)
			{
			case EDIT_TP_SATE_ID:
				rect.uLeft -= 40;
				rect.uWidth += 40;
				list_type = POP_LIST_TYPE_SAT;
				rect.uHeight = 300;//230;
				param.id = OTA_TUNER_IDX;
				param.cur = SAT_POS;
				break;
			case EDIT_TP_TPIDX_ID:
				list_type = POP_LIST_TYPE_TP;
				rect.uHeight = 300;//230;
				get_tuner_sat(OTA_TUNER_IDX,SAT_POS,&s_node);
				param.id = s_node.sat_id;
				param.cur = TP_POS;
				break;
			default:
				list_type = 0xFF;
				break;
			}

			if(list_type == 0xFF)
				break;

			cur_idx = win_com_open_sub_list(list_type,&rect,&param);
			if(cur_idx == LIST_INVALID_SEL_IDX || cur_idx == param.cur)
				break;

			if(bID == EDIT_TP_SATE_ID)
			{
				SAT_POS = cur_idx;
				OSD_TrackObject((POBJECT_HEAD)&wota_con0, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);											
				win_otaset_load_sat_setting((UINT32)cur_idx, TRUE);
			}
			else if(bID == EDIT_TP_TPIDX_ID)
			{
				TP_POS = cur_idx;
				OSD_TrackObject((POBJECT_HEAD)&wota_con1, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);	
				win_otaset_load_tp_setting((UINT32)cur_idx,TRUE);
			}
			win_otaset_turn_frntend();
		
		}
	}
	
	return ret;
}
コード例 #22
0
ファイル: obj_progressbar.c プロジェクト: jinfeng-geeya/3202C
void OSD_DrawProgressBarCell(PPROGRESS_BAR b,UINT8 bStyleIdx,UINT32 nCmdDraw)
{ 
	PGUI_VSCR		pVscr;
	INT16 	wLeft, wDig,wDigWidth,wDigHeight,wCount;
	GUI_RECT	r,iconrect;
	GUI_RECT MidRect;
	PWINSTYLE  	lpWinSty;
	UINT32 pbarstyle;
	UINT16 wIconWidth,wIconHeight;
	INT32 start_pos,end_pos,page_width,reverse;
	
	wIconWidth = 0;
	wIconHeight = 0;
	lpWinSty = g_gui_rscfunc.osd_get_win_style(bStyleIdx);
	if(OSD_GetUpdateType(nCmdDraw) == C_UPDATE_CONTENT)
		pbarstyle = (UINT32)(~0);
	else
		pbarstyle = bStyleIdx;
	
	OSD_SetRect2(&r, &b->head.frame);
	if(OSD_GetAttrSlave(b))
		pVscr=OSD_DrawSlaveFrame(&r, bStyleIdx);
	else
		pVscr=OSD_DrawObjectFrame(&r, pbarstyle);
	OSD_ProgressBarGetMidRect(b,&MidRect);
	OSD_DrawStyleRect(&MidRect, b->wTickBg, pVscr);//ERR_LIBGE,b->wTickBg is a style not color
	
	if(!OSD_ProgressBarCheckValid(b))//check data 
		return;

	if((GetProgressBarStyle(b) & PROGRESSBAR_HORI_NORMAL)||(GetProgressBarStyle(b) & PROGRESSBAR_HORI_REVERSE))
	{
		if(b->bX==0)//analog bar
		{
			if(b->nPos<b->nMin)
				wDigWidth = 0;
			else
				wDigWidth = MidRect.uWidth*(b->nPos-b->nMin)/(b->nMax-b->nMin);

			if(GetProgressBarStyle(b)&PROGRESSBAR_HORI_NORMAL)
				OSD_SetRect(&iconrect,MidRect.uStartX,MidRect.uStartY,wDigWidth,MidRect.uHeight);
			else //reverse type
				OSD_SetRect(&iconrect,MidRect.uStartX+MidRect.uWidth-wDigWidth,MidRect.uStartY,wDigWidth,MidRect.uHeight);

			OSD_DrawProgressBarTick(b, &iconrect, lpWinSty->wBgIdx, pVscr);
		}
		else//digital bar
		{
			INT32 i ;
			if((b->nBlocks-1)*b->bX>=MidRect.uWidth)// Interval width is too large
				return;
			wDig = MidRect.uWidth/b->nBlocks;//wDig is the total tick width
			if(wDig<=1)
				return;
			wDigWidth = (MidRect.uWidth-(b->nBlocks-1)*b->bX)/b->nBlocks;//wDigWidth is the width for Foreback winstyle draw
			if(wDigWidth==0)
				wDigWidth =1;//at least is 1
			wCount = b->nMax-b->nMin;
			if(GetProgressBarStyle(b)&PROGRESSBAR_HORI_NORMAL)
			{
				for(i = b->nMin,wLeft=MidRect.uStartX; (i < b->nPos)&&(wLeft<MidRect.uStartX+MidRect.uWidth); wLeft += wDig, i += wCount/b->nBlocks)
				{/*i += wCount/b->nBlocks may cause divisibility problem,So we should assure right blocks,nMax,nMin value when using digital bar*/
					if(wLeft+wDigWidth-wDig>MidRect.uStartX+MidRect.uWidth)
						OSD_SetRect(&iconrect,wLeft,MidRect.uStartY,MidRect.uStartX+MidRect.uWidth-wLeft,MidRect.uHeight);
					else if (wLeft+wDigWidth>MidRect.uStartX+MidRect.uWidth)
						OSD_SetRect(&iconrect,wLeft,MidRect.uStartY,MidRect.uStartX+MidRect.uWidth-wLeft,MidRect.uHeight);
					else
						OSD_SetRect(&iconrect,wLeft,MidRect.uStartY,wDigWidth,MidRect.uHeight);

					OSD_DrawProgressBarTick(b, &iconrect, lpWinSty->wBgIdx, pVscr);
				}
			}
			else//PROGRESSBAR_HORI_REVERSE
			{
				wLeft = MidRect.uStartX+MidRect.uWidth-wDig;
				for(i = b->nMin,wLeft=MidRect.uStartX+MidRect.uWidth-wDig; (i < b->nPos)&&(wLeft >MidRect.uStartX); wLeft -= wDig, i += wCount/b->nBlocks)
				{
					if(wLeft+wDigWidth-wDig<MidRect.uStartX)
						OSD_SetRect(&iconrect,MidRect.uStartX,MidRect.uStartY,wLeft-MidRect.uStartX,MidRect.uHeight);
					else if (wLeft-wDigWidth<MidRect.uStartX)
						OSD_SetRect(&iconrect,MidRect.uStartX,MidRect.uStartY,wLeft-MidRect.uStartX,MidRect.uHeight);
					else
						OSD_SetRect(&iconrect,wLeft,MidRect.uStartY,wDigWidth,MidRect.uHeight);

					OSD_DrawProgressBarTick(b, &iconrect, lpWinSty->wBgIdx, pVscr);
				}
			}
		}
	}
	else
	{
		if(b->bY==0)//analog bar
		{
			if(b->nPos<b->nMin)
				wDigHeight = 0;
			else
				wDigHeight = MidRect.uHeight*(b->nPos-b->nMin)/(b->nMax-b->nMin);
			if(GetProgressBarStyle(b)&PROGRESSBAR_VERT_NORMAL)
				OSD_SetRect(&iconrect,MidRect.uStartX,MidRect.uStartY,MidRect.uWidth,wDigHeight);
			else
				OSD_SetRect(&iconrect,MidRect.uStartX,MidRect.uStartY+MidRect.uHeight-wDigHeight,MidRect.uWidth,wDigHeight);				

			OSD_DrawProgressBarTick(b, &iconrect, lpWinSty->wBgIdx, pVscr);
		}
		else//digital bar
		{
			INT32 i ;
			INT32 wRectTop;
			if((b->nBlocks-1)*b->bY>=MidRect.uHeight)//Interval width is too large
				return;
			wDig = MidRect.uHeight/b->nBlocks;
			if(wDig<=1)
				return;
			wDigHeight = (MidRect.uHeight-(b->nBlocks-1)*b->bY)/b->nBlocks;
			if(wDigHeight==0)
				wDigHeight=1;
			wCount = b->nMax-b->nMin;
			if(GetProgressBarStyle(b)&PROGRESSBAR_VERT_NORMAL)
			{
				for(i = b->nMin,wRectTop=MidRect.uStartY; (i < b->nPos)&&(wRectTop<MidRect.uStartY+MidRect.uHeight); wRectTop += wDig, i += wCount/b->nBlocks)
				{
					if(wRectTop+wDig-wDigHeight>MidRect.uStartY+MidRect.uHeight)
						OSD_SetRect(&iconrect,MidRect.uStartX,wRectTop,MidRect.uWidth,MidRect.uStartY+MidRect.uHeight-wRectTop);
					else if (wRectTop+wDigHeight>MidRect.uStartY+MidRect.uHeight)
						OSD_SetRect(&iconrect,MidRect.uStartX,wRectTop,MidRect.uWidth,MidRect.uStartY+MidRect.uHeight-wRectTop);
					else
						OSD_SetRect(&iconrect,MidRect.uStartX,wRectTop,MidRect.uWidth,wDigHeight);
					OSD_DrawProgressBarTick(b, &iconrect, lpWinSty->wBgIdx, pVscr);
				}
			}
			else
			{
				for(i = b->nMin,wRectTop=MidRect.uStartY+MidRect.uHeight-wDig; (i < b->nPos)&&(wRectTop>MidRect.uStartY); wRectTop -= wDig, i += wCount/b->nBlocks)
				{
					if(wRectTop+wDigHeight-wDig<MidRect.uStartY)
						OSD_SetRect(&iconrect,MidRect.uStartX,MidRect.uStartY,MidRect.uWidth,wRectTop-MidRect.uStartY);
					else if(wRectTop-wDigHeight<MidRect.uStartY)
						OSD_SetRect(&iconrect,MidRect.uStartX,MidRect.uStartY,MidRect.uWidth,wRectTop-MidRect.uStartY);
					else
						OSD_SetRect(&iconrect,MidRect.uStartX,wRectTop,MidRect.uWidth,wDigHeight);
					OSD_DrawProgressBarTick(b, &iconrect, lpWinSty->wBgIdx, pVscr);
				}
			}
		}
	}
}
コード例 #23
0
static PRESULT atnsetf_item_sel_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	VACTION unact;
	UINT32 sel;
	UINT8 bID;
 	char str[30];
    UINT16 * Uni_str;
    UINT8* pstr;
	SYSTEM_DATA* sys_data;
	POBJECT_HEAD other_antset_menu,item;
	S_NODE s_node;
	UINT16 cur_idx;
	COM_POP_LIST_TYPE_T list_type;
	OSD_RECT rect;
	COM_POP_LIST_PARAM_T param;
    MULTISEL* msel;

	sys_data = sys_data_get();

	bID = OSD_GetObjID(pObj);

	switch(event)
	{
	case EVN_PRE_CHANGE:
		sel = *((UINT32*)param1);
		if(bID == TUNER_ID)
		{
			if(TUNER_CNT < 2)
				break;
			
			/* Check tuner : sel has selected satellite or not.*/
			if(get_tuner_sat_cnt(sel)  == 0)
			{
				UINT8 back_saved;
				win_compopup_init(WIN_POPUP_TYPE_OK);
				win_compopup_set_msg(NULL,NULL, RS_TUNER_HAS_NO_SATE_SEL);
				win_compopup_open_ext(&back_saved);
				antset_cur_tuner = (sel == 0)? 1: 0;
				win_atnsetf_load_sat_cnt(FALSE);
				ret = PROC_LOOP;
			}
			else
			{
				antset_cur_tuner = sel;
				cur_tuner_idx = antset_cur_tuner;
			}
		}		
		break;
	case EVN_POST_CHANGE:
		sel = param1;
		if(bID == LNB_ID)
		{
          	win_atnsetf_load_22k_action(TRUE);
            #ifdef SUPPORT_UNICABLE
            if(win_unicable_setting_open(LNB_IDX))
                OSD_TrackObject((POBJECT_HEAD)&g_win_antenna_set_fixed, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);           
            #endif 
        }
		if(bID == TUNER_ID)
		{
			if(sys_data->tuner_lnb_type[sel] != LNB_FIXED)
			{
				/* Need to change : Motor antenna setting menu. */
				other_antset_menu = (POBJECT_HEAD)&g_win_antenna_set_motor;
				if(OSD_ObjOpen(other_antset_menu, MENU_OPEN_TYPE_MENU + bID) != PROC_LEAVE)
				{
					win_signal_close();
					menu_stack_pop();
					menu_stack_push(other_antset_menu);
				}
				ret = PROC_LOOP;
			}
			else
			{
				win_atnsetf_load_sat_cnt(TRUE);
				win_atnsetf_load_sat_setting(0,TRUE);
			}

		}
		else if(bID == SAT_ID)
			win_atnsetf_load_sat_setting(sel,TRUE);
		else if(bID != TP_ID)
		{
			win_atnsetf_modify_sat_setting(SAT_IDX);
        }

		if(ret != PROC_LOOP)
		{
            api_stop_timer(&set_frontend);
            set_frontend = api_start_timer("SETANT",600,(OSAL_T_TIMER_FUNC_PTR)atnsetf_set_frontend_handler);
        }
		break;
	case EVN_REQUEST_STRING:
		sel = param1;
		Uni_str= (UINT16*)param2;
		if(bID == SAT_ID)
		{
			get_tuner_sat_name(antset_cur_tuner,sel,Uni_str);
			sys_data_set_cur_satidx(sel);
		}
		else if(bID == TP_ID)
		{
			get_tuner_sat(antset_cur_tuner,SAT_IDX,&s_node);
			get_tp_name(s_node.sat_id,sel,Uni_str);

#ifdef SUPPORT_SELECT_SAME_SAT
			s_node.reserve_1 = antset_cur_tuner;

			modify_sat(s_node.sat_id, &s_node);
			update_data();
#endif
		}
		else if(bID == LNB_ID)
			get_lnb_name(sel,Uni_str);
		else if(bID == DISEQC11_ID)
			get_diseqc11_name(sel,Uni_str);
		else if(bID == IF_CHANNEL_ID)
			get_IF_channel_name(sel,Uni_str);
		else if(bID == CENTRE_FREQ_ID)
			get_centre_freqs_name(sel,Uni_str);
		break;
	case EVN_UNKNOWN_ACTION:
		unact = (VACTION)(param1>>16);		
		if(unact ==  VACT_POP_UP)
		{
			OSD_SetRect2(&rect,&pObj->frame);
			/*Patch: For solve pop-up windows show bugs,for example: Universal(5150-10600) can not be all show*/
			OSD_SetRect(&rect, rect.uLeft, rect.uTop, (rect.uWidth + 10), rect.uHeight);
			param.selecttype = POP_LIST_SINGLESELECT;
			switch(bID)
			{
			case SAT_ID:
				rect.uLeft -= 40;
				rect.uWidth += 40;
				list_type = POP_LIST_TYPE_SAT;
				rect.uHeight = 300;
				param.id = antset_cur_tuner;
				param.cur = SAT_IDX;
				break;
			case LNB_ID:
				list_type = POP_LIST_TYPE_LNB;
				rect.uHeight = 300;
				param.cur = LNB_IDX;
				break;
			case TP_ID:
				list_type = POP_LIST_TYPE_TP;
				rect.uHeight = 340;
				get_tuner_sat(antset_cur_tuner,SAT_IDX,&s_node);
				param.id = s_node.sat_id;
				param.cur = TP_IDX;
				break;
			case DISEQC10_ID:
				list_type = POP_LIST_TYPE_DISEQC10;
				rect.uHeight = 280;
				param.cur = DISEQC10_IDX;
				break;
			case DISEQC11_ID:
				list_type = POP_LIST_TYPE_DISEQC11;
				rect.uHeight = 240;
				param.cur = DISEQC11_IDX;
				break;
			case IF_CHANNEL_ID:
				list_type = POP_LIST_TYPE_IF_CHANNEL;
				rect.uHeight = 200;
				param.cur = IF_CHANNEL_IDX;
				break;
			case CENTRE_FREQ_ID:
				list_type = POP_LIST_TYPE_CENTRE_FREQ;
				rect.uHeight = 200;
				param.cur = CENTRE_FREQ_IDX;
				break;     
			default:
				list_type = 0xFF;
				break;
			}

			if(list_type == 0xFF)
				break;

			cur_idx = win_com_open_sub_list(list_type,&rect,&param);
			if(cur_idx == LIST_INVALID_SEL_IDX || cur_idx == param.cur)
				break;

			item = anesetf_items[bID - 1];
            msel = anesetf_msels[bID - 1];										

			switch(bID)
			{
            case SAT_ID:
				SAT_IDX = cur_idx;
				OSD_TrackObject(item, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);											
				win_atnsetf_load_sat_setting((UINT32)cur_idx, TRUE);
                break;
            case LNB_ID:
                LNB_IDX = cur_idx;
				OSD_TrackObject(item, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);	
				win_atnsetf_load_22k_action(TRUE);
#ifdef SUPPORT_UNICABLE
				if(win_unicable_setting_open(LNB_IDX))
					OSD_TrackObject((POBJECT_HEAD)&g_win_antenna_set_fixed, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
#endif
                break;
/*            case TP_ID:
				TP_IDX = cur_idx;
				OSD_TrackObject(item, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);	
                break;
            case DISEQC10_ID:
				DISEQC10_IDX = cur_idx;
				OSD_TrackObject(item, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);	
                break;
            case DISEQC11_ID:
				DISEQC11_IDX = cur_idx;
				OSD_TrackObject(item, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
                break;
            case IF_CHANNEL_ID:
                IF_CHANNEL_IDX= cur_idx;
				OSD_TrackObject(item, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);	
                break;
            case CENTRE_FREQ_ID:
                CENTRE_FREQ_IDX= cur_idx;
				OSD_TrackObject(item, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
                break;
*/            default:            
                msel->nSel = cur_idx;
			    OSD_TrackObject(item, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);	
                break;
            }

			if(bID != SAT_ID && bID != TP_ID)
				win_atnsetf_modify_sat_setting(SAT_IDX);			

			api_stop_timer(&set_frontend);
            set_frontend = api_start_timer("SETANT",500,(OSAL_T_TIMER_FUNC_PTR)atnsetf_set_frontend_handler);
		}
		
		break;
	}

	return ret;	
}