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; }
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; }
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; }
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; }
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; } }
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; }
/******************************************************************************* * 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; }
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; }
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; }