Example #1
0
static PRESULT mail_content_callback ( POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2 )
{
	PRESULT ret = PROC_PASS;
	INT32 iret;
	/*struct help_item_resource mail_con_help[] =
	{
		{1,IM_HELP_ICON_TB,RS_HELP_SELECT},
		{0,RS_MENU,RS_HELP_BACK},
		{0,RS_HELP_EXIT,RS_FULL_PLAY},  
	};*/

	switch ( event )
	{
		case EVN_PRE_OPEN:
			 OSD_ClearObject((POBJECT_HEAD)&g_win_mail, C_UPDATE_ALL);
			mail_title_info.pTextTable = ( PTEXT_CONTENT ) &mail_mtxt_title;
			//mail_title_info.pString = NULL;
			mail_content_info.pTextTable = ( PTEXT_CONTENT ) &mail_mtxt_content;
			//mail_content_info.pString = NULL;
			win_init_pstring(3);

			iret = mail_content_got_info();
			if (0 == iret)
			{
				ret = PROC_LEAVE;
				break;
			}
			//wincom_open_help(mail_con_help, 3);
			break;
		case EVN_POST_OPEN:
			break;
		case EVN_PRE_DRAW:
			mail_content_set_display();
			break;
		case EVN_PRE_CLOSE:
			/* Make OSD not flickering */
			if((menu_stack_get(0)!=( POBJECT_HEAD ) &g_win_mainmenu)&&(menu_stack_get(0)!=( POBJECT_HEAD ) &g_win_mail))
			{	
				*((UINT32*)param2) &= C_CLOSE_CLRBACK_FLG;
				MAILCONTENT_FORCE_FLAG=0;
			}
			else
				*((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG;
			break;
		case EVN_POST_CLOSE:
			break;
	}
	return ret;
}
Example #2
0
static PRESULT  hdmi_factest_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	UINT8 bID;
	POBJECT_HEAD nxtObj;
    POBJECT_HEAD topmenu;
	bID = OSD_GetObjID(pObj);
	extern sys_state_t      system_state; 

	switch(event)
	{
    case EVN_PRE_OPEN:
        
        //ap_enable_key_task_get_key(TRUE);
		//key_set_upgrade_check_flag(0);
		last_system_state = system_state;
        //system_state = SYS_STATE_UPGRAGE_HOST;
		memset(hdmi_info_name_str,0x00,sizeof(hdmi_info_name_str));
        memset(hdmi_info1_str,0x00,sizeof(hdmi_info1_str));
        memset(hdmi_info2_str,0x00,sizeof(hdmi_info2_str));
        memset(hdmi_info3_str,0x00,sizeof(hdmi_info3_str));
        memset(hdmi_info4_str,0x00,sizeof(hdmi_info4_str));		
        wincom_close_title();
		if(menu_stack_get(0) == (POBJECT_HEAD)&g_win_mainmenu)
		{
			OSD_ClearObject( (POBJECT_HEAD) &g_win_mainmenu, C_UPDATE_ALL);
			topmenu = menu_stack_get_top();
			if(topmenu)
				OSD_ClearObject( topmenu, C_UPDATE_ALL);
		}
        break;
    case EVN_POST_OPEN:
        
        hdmi_display_info_set();
        break;
    case EVN_POST_CLOSE:
        if(menu_stack_get(0) == (POBJECT_HEAD)&g_win_mainmenu)
		    OSD_TrackObject( (POBJECT_HEAD) &g_win_mainmenu, C_UPDATE_ALL);	
        system_state = last_system_state;
        break;
	case EVN_UNKNOWN_ACTION:
	    break;
	}

	return ret;		
}
Example #3
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 #4
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;
}
Example #5
0
PRESULT ap_cas_mail_detitle_proc()
{

	static UINT8 flag = 1;
	static UINT8 flag2 = 0;
	//static UINT8 dtl_flag = 1;
	//static UINT8 dtl_flag2 = 0;
	static UINT32 time_flag=0;

#if 0
	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())
		||(WELCOME_MENU_HANDLE == menu_stack_get_top())
		||(MAIL_HANDLE == menu_stack_get(0))
		||(SUBT_HANDLE == menu_stack_get_top())
		||(AUDIO_HANDLE == menu_stack_get_top()))//BY LMC
	{
		return;
	}
#else
	if ((NULL != menu_stack_get(0))
		&&(CHANNEL_BAR_HANDLE != menu_stack_get_top())
		&&(VOLUMEBAR_HANDLE != menu_stack_get_top())
	/*	alfred.wu 20100313 OSD的测试还没有开始先关闭掉这些可以冲突的地方
	等以后发现了Bug再打开*/
		&&(AUDIO_HANDLE != menu_stack_get_top())
		&&(FIND_HANDLE != menu_stack_get_top()))
	{
		return;
	}
#endif


//first Email proc	
	if (Email_IconHide == MAIL_ICON_STATUS)
	{
		if (flag2)
		{
			/*alfred.wu 函数在win_mail_icon.c中*/
			ShowBMailOSDOnOff(0);
			flag2 = 0;
		}
	}
	else if (Email_New == MAIL_ICON_STATUS)
	{
		ShowBMailOSDOnOff(1);
		flag2 = 1;
	}
	else if (Email_SpaceExhaust == MAIL_ICON_STATUS)
	{
		ShowBMailOSDOnOff(flag);
		if(osal_get_tick()-time_flag>500)
		{
			time_flag = osal_get_tick();
			flag = !flag;
		}
		flag2 = 1;
	}
}
Example #6
0
PRESULT ap_cas_fingerprint_proc(UINT8 newinfo)
{
	static UINT8	disp_flag = 0, pos_flag = 0;
	static UINT32	duration = 6000, xpos = 450;
	POBJECT_HEAD	top_handle = menu_stack_get_top();
    static UINT8	finger_nuf[11] = {1,0};

	UINT8 i;
	
	if (1 == newinfo)
	{
/*qjzheng 20100427 BUG1005, 解决指纹内容显示错误,len由原来的10改成11,finger_nuf[0]不应该在这里直接赋值*/
		//finger_nuf[0]=0;
		cas_get_fingerprint_req(finger_nuf,11);
		pos_flag = 1;//need to display in a new x position
		//finger_start_time =0;
	#if 0
		libc_printf("finger_nuf %d pos:%d content: ",finger_nuf[0], finger_nuf[1]);
		for(i=2; i<11;i++)
			libc_printf("0x%x, ",finger_nuf[i]);
		libc_printf("\n");
	#endif
	}
	else if( (2 == newinfo) && (0 == finger_nuf[0]) )
	{
		libc_printf("to clear finger print\n");
	    show_finger_print(0, NULL,50+finger_nuf[1]);
		return;
	}
	else if( 3 == newinfo )
	{
		libc_printf("to clear finger buf\n");
		finger_nuf[0] =1;
	    //show_finger_print(0, NULL,50+finger_nuf[1]);
		//return;
	}
	
#if 0
	if ((MAIN_MENU_HANDLE == menu_stack_get(0))
		||(EPG_HANDLE == menu_stack_get_top())
		||(PROG_DETAIL_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())
		||(WELCOME_MENU_HANDLE == menu_stack_get_top())
		||(AUDIO_HANDLE == menu_stack_get_top())
		||(SUBT_HANDLE == menu_stack_get_top())
		||(IPPV_HANDLE == menu_stack_get_top()))
	{
		return;
	}
#else
	if ((NULL != menu_stack_get(0))
		&&(CHANNEL_BAR_HANDLE != top_handle)
		&&((POBJECT_HEAD)&g_win_volume != top_handle ))
	{
		return 1;
	}
#endif
	if (0 == finger_nuf[0])
	{
		if(1 == pos_flag)
		{
			MEMSET(smcstr, 0, sizeof(smcstr));
			sprintf(smcstr, "%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",finger_nuf[1],/*finger_nuf[1] --> THE POS*/
        		finger_nuf[2],finger_nuf[3],finger_nuf[4],finger_nuf[5],finger_nuf[6],
        		finger_nuf[7],finger_nuf[8],finger_nuf[9],finger_nuf[10]);
			finger_start_time = osal_get_tick();
			finger_end_time = finger_start_time + 10*1000;
			pos_flag = 0;
		}
		
		if (osal_get_tick() < finger_end_time)
		{
			show_finger_print(1,smcstr, 50+finger_nuf[1]);
			//libc_printf("to disp %s\n",smcstr);
		}
		else
		{
			finger_nuf[0] = 1;
			finger_end_time = 0;
			finger_start_time = 0;
		    show_finger_print(0, NULL,50+finger_nuf[1]);
		}
	}
	else if(1 == finger_nuf[0])
	{
		finger_nuf[0] =2;
	    show_finger_print(0, NULL,50+finger_nuf[1]);    
	}

	return 0;
	
}
Example #7
0
/*******************************************************************************
*	Window's keymap, proc and  callback
*******************************************************************************/
static VACTION popup_con_keymap(POBJECT_HEAD pObj, UINT32 vkey)
{
	VACTION act = VACT_PASS;
    UINT32  hwkey;
    
	if(win_popup_type!= WIN_POPUP_TYPE_SMSG)
	{
		switch(vkey)
		{
		case V_KEY_MENU:
		case V_KEY_EXIT:
			win_popup_choice = WIN_POP_CHOICE_NULL;
			act = VACT_CLOSE;
			break;
		case V_KEY_LEFT:
			act = VACT_CURSOR_LEFT;
			break;
		case V_KEY_RIGHT:
			act = VACT_CURSOR_RIGHT;
			break;            
		default:
			break;
		}
	}
	else
	{
        #ifdef SUPPORT_CAS9
        if(menu_stack_get(0) == (POBJECT_HEAD)&g_win_mainmenu)
        {
            if((vkey == V_KEY_EXIT)||(vkey == V_KEY_MENU)||(vkey == V_KEY_LEFT)||(vkey == V_KEY_UP)||(vkey == V_KEY_DOWN))
    		{  
                /*
                if((vkey!=V_KEY_EXIT)||)
    			{	ap_vk_to_hk(0, vkey, &hwkey);
    				ap_send_msg(CTRL_MSG_SUBTYPE_KEY, hwkey, FALSE);//if exit key got,repatch the messages again
    			}*/
                cas_pop_stop_timer();
    			clean_mmi_cur_msg();
                clean_mmi_msg(1,1);
    			act = VACT_CLOSE;

            }
        }
        else
        {
            if((vkey == V_KEY_EXIT)||(vkey == V_KEY_UP)||(vkey == V_KEY_DOWN)||(vkey == V_KEY_MENU))
    		{  
                cas_pop_stop_timer();
    			clean_mmi_cur_msg();
                clean_mmi_msg(1,1);
    			act = VACT_CLOSE;
                if(vkey!=V_KEY_EXIT)
    			{	
                    ap_vk_to_hk(0, vkey, &hwkey);
    				ap_send_msg(CTRL_MSG_SUBTYPE_KEY, hwkey, FALSE);//if exit key got,repatch the messages again
                }
            }
        }
        #else
        if((vkey == V_KEY_EXIT)||(vkey == V_KEY_MENU))
		{
			act = VACT_CLOSE;

        }
        #endif
	}
	return act;
}
Example #8
0
static PRESULT  hdmi_factest_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	struct hdmi_device *hdmi_dev = (struct hdmi_device *)dev_get_by_type(NULL,HLD_DEV_TYPE_HDMI);	
	PRESULT ret = PROC_PASS;
	UINT8 bID;
	POBJECT_HEAD nxtObj;
    POBJECT_HEAD topmenu;
	bID = OSD_GetObjID(pObj);
	extern sys_state_t      system_state; 
	UINT8 buf[512];
	UINT32 v_key, i;
	FILE *fp;
	MULTISEL *pMsel;
	static BOOL log_edid_info = FALSE, log_dbg_info = FALSE,  ignore_hotplug = FALSE;

	switch(event)
	{
    case EVN_PRE_OPEN:
        
        //ap_enable_key_task_get_key(TRUE);
		//key_set_upgrade_check_flag(0);
		last_system_state = system_state;
        //system_state = SYS_STATE_UPGRAGE_HOST;
		memset(hdmi_info_name_str,0x00,sizeof(hdmi_info_name_str));
        memset(hdmi_info1_str,0x00,sizeof(hdmi_info1_str));
        memset(hdmi_info2_str,0x00,sizeof(hdmi_info2_str));
        memset(hdmi_info3_str,0x00,sizeof(hdmi_info3_str));
        memset(hdmi_info4_str,0x00,sizeof(hdmi_info4_str));		
        wincom_close_title();
		if(menu_stack_get(0) == (POBJECT_HEAD)&g_win_mainmenu)
		{
			OSD_ClearObject( (POBJECT_HEAD) &g_win_mainmenu, C_UPDATE_ALL);
			topmenu = menu_stack_get_top();
			if(topmenu)
				OSD_ClearObject( topmenu, C_UPDATE_ALL);
		}
        break;
    case EVN_POST_OPEN:
	    hdmi_dev->io_control(hdmi_dev,HDMI_CMD_REG_CALLBACK, HDMI_CB_DBG_MSG, (UINT32)hdmi_debug_message_callback);        
        hdmi_display_info_set();
        break;
    case EVN_POST_CLOSE:
        if(menu_stack_get(0) == (POBJECT_HEAD)&g_win_mainmenu)
		    OSD_TrackObject( (POBJECT_HEAD) &g_win_mainmenu, C_UPDATE_ALL);	
        system_state = last_system_state;
        break;
	case EVN_UNKNOWN_ACTION:
		break;
	case EVN_UNKNOWNKEY_GOT:
		ap_hk_to_vk(0, param1, &v_key); 
		switch(v_key)
		{		
			case V_KEY_RED: 	// Red Button : Log EDID Information //old IR Red key is 65
				if(log_edid_info == FALSE)
				{
					log_edid_info = TRUE;						
					
					// Check log file exist or not, if exist delete it.
					edid_log_file= fs_open("/c/hdmi_edid_log.txt", O_RDONLY, 0666);
//						if(edid_log_file >= 0)	 /*always is true ,clean the warning */
					{
						fs_close(edid_log_file);
						fs_remove("/c/hdmi_edid_log.txt");
					}

						edid_log_file = fs_open("/c/hdmi_edid_log.txt", O_RDWR | O_CREAT, S_IFREG | S_IRWXU);							
					hdmi_log_edid_start();						
					win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Start to Log EDID Information", 0); 												
				}
				else
				{
					log_edid_info = FALSE;	
					fs_close( edid_log_file );
					fs_sync("/c/"); 		
					hdmi_log_edid_stop();
					win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Stop to Log EDID Information", 0);					
				}
				osal_task_sleep(2000);
				win_compopup_close();					
				hdmi_display_info_set();
				break;	
			case V_KEY_GREEN:		// Green Button : Log debug Information
				if(log_dbg_info == FALSE)
				{
					log_dbg_info = TRUE;						
					
					// Check log file exist or not, if exist delete it.
					debug_log_file= fs_open("/c/hdmi_debug_log.txt", O_RDONLY, 0666);
//						if(debug_log_file >= 0) 	/*always is true ,clean the warning */
					{
						fs_close(debug_log_file);
						fs_remove("/c/hdmi_debug_log.txt");
					}

						debug_log_file = fs_open("/c/hdmi_debug_log.txt", O_RDWR | O_CREAT, S_IFREG | S_IRWXU); 						
					hdmi_log_debug_start(); 					
					win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Start to Log Debug Information", 0);													
				}
				else
				{
					log_dbg_info = FALSE;	
					fs_close( debug_log_file );
					fs_sync("/c/"); 					
					hdmi_log_debug_stop();
					win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Stop to Log Debug Information", 0); 				
				}
				osal_task_sleep(2000);
				win_compopup_close();					
				hdmi_display_info_set();				
				break;
			case V_KEY_YELLOW:		// Yellow Button : Switch on/off HDCP
				if(api_get_hdmi_hdcp_onoff() == TRUE)
				{
					api_set_hdmi_hdcp_onoff(FALSE);
					win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Turn HDCP Off", 0); 
				}
				else
				{
					api_set_hdmi_hdcp_onoff(TRUE);
					win_com_popup_open(WIN_POPUP_TYPE_SMSG,"Turn HDCP On", 0);						
				}										
				osal_task_sleep(2000);
				win_compopup_close();					
				hdmi_display_info_set();						
				break;	
				
			default:
				break;
		}			

	    break;
	}

	return ret;		
}
Example #9
0
static PRESULT find_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	VACTION unact;
	mobile_input_type_t mobile_input_type;

	mobile_input_type.type 		= MOBILE_INPUT_NORMAL;
	mobile_input_type.caps_flag = MOBILE_CAPS_INIT_LOW;
	mobile_input_type.maxlen    = MAX_INPUT_STR_LEN;
	mobile_input_type.fixlen_flag = 0;
	mobile_input_type.callback	= input_callback;

	switch(event)
	{
	case EVN_PRE_OPEN:
		if(!edit_keyboard_flag)
			win_keyboard_set_title(RS_HELP_FIND);
		win_find_prog_num = 0;
 		mobile_input_init(&find_edt1,&mobile_input_type);

		//patch for clear find editfield content
		if(menu_stack_get(-1) == NULL)
			OSD_SetEditFieldContent(&find_edt1,STRING_UNICODE,(UINT32)"");
		break;
	case EVN_POST_OPEN:
		draw_caps_flag(CAPSFLG_L,CAPSFLG_T, 1);
		//draw_caps_del_colbtn(COLBTN_L, COLBTN_T,1);
	 	//draw_ok_cancel_colbtn(COLBTN_L, COLBTN_T + 40,1);	 	
	 	draw_caps_colbtn(COLBTN_L, 		COLBTN_T, 1);
		draw_del_colbtn(COLBTN_L + 100, 	COLBTN_T, 1);
		draw_ok_colbtn(COLBTN_L, 			COLBTN_T + 40, 1);
		draw_cancel_colbtn(COLBTN_L+ 100, 	COLBTN_T + 40, 1);
		break;
	case EVN_PRE_CLOSE:
		/* Make OSD not flickering */
		//*((UINT32*)param2) &= ~C_CLOSE_CLRBACK_FLG;			
		break;
	case EVN_POST_CLOSE:
		break;			
	case EVN_UNKNOWN_ACTION:
		unact = (VACTION)(param1>>16);
		if(unact == VACT_OK)
		{
			if(!edit_keyboard_flag)
			{
				if(win_find_prog_num == 0)
					ret = PROC_LEAVE;				
				else
				{
					//OSD_ObjClose(((POBJECT_HEAD)&g_win_find,C_UPDATE_ALL);
					OSD_ClearObject((POBJECT_HEAD)&g_win_find, C_UPDATE_ALL);
					menu_stack_pop();
					menu_stack_push((POBJECT_HEAD)&g_win_com_lst);
					ret = PROC_LOOP;
				}
			}
			else
			{
				check_ok = TRUE;
				ret = PROC_LEAVE;
				if(name_valid_func != NULL)
				{
					if(name_valid_func(input_name_str) == 0)
					{
						ret = PROC_LEAVE;				
					}
					else
					{
						ret = PROC_LOOP;
					}
				}
			}
		}
		else if(unact == VACT_CANCEL)
		{
			if(!edit_keyboard_flag)
			{
				if(win_find_prog_num > 0)
					OSD_ClearObject((POBJECT_HEAD)&g_win_com_lst, C_UPDATE_ALL);

				ret = PROC_LEAVE;
			}
			else
			{
				ret = PROC_LEAVE;
			}
		}		
	}
	return ret;
}