static int win_pvr_detach_proc() { char rec_vol[16]; if (system_state != SYS_STATE_USB_PVR) { return 0; } rec_vol[0] = 0; pvr_get_cur_mode(rec_vol, NULL); if (rec_vol[0] == 0) { DM_DEBUG("disk detach in PVR record manager, enter main menu\n"); // Alert here:Clear all menus may cuase unpredictable result,must be tested api_osd_mode_change(OSD_NO_SHOW); ap_clear_all_menus(); //clear all menu & Hidden osd show menu_stack_pop_all(); if(api_get_usb_unmount_flag()==0) //-a by wangyang 2011-12-26 image_restore_vpo_rect(); api_set_usb_unmount_flag(0); ap_clear_all_message(); system_state = SYS_STATE_NORMAL; api_pvr_set_back2menu_flag(FALSE); ap_send_msg(CTRL_MSG_SUBTYPE_CMD_ENTER_ROOT,(UINT32)&g_win_mainmenu, FALSE); } }
// TODO: implement this function in win_filelist.c static int win_mp_detach_proc() { char cur_disk_name[8]; BOOL b_exit_win_mp = FALSE; int disk_type = 0, disk_idx = 0, dm_ret = 0, vol_num = 0; if ((mp_get_cur_disk_name(cur_disk_name, 8) == 0) && (STRLEN(cur_disk_name) == 3)) { disk_type = diskNamePrefix2Type(cur_disk_name); disk_idx = (int)cur_disk_name[2] - 'a'; dm_ret = dm_ioctl(DM_CMD2_GET_VOL_NUM, DM_CMD_PARAM(disk_type, disk_idx, 0), &vol_num, sizeof(int)); if (dm_ret != 0 || vol_num <= 0) win_delete_all_filelist(); } if (!mp_in_win_filelist()) return 0; DM_DEBUG("%s() system_state: %d\n", __FUNCTION__, system_state); if (!ap_mp_is_ready()) // exit menu, if all disks are detached { b_exit_win_mp = TRUE; } else if ((mp_get_cur_disk_name(cur_disk_name, 8) == 0) && (STRLEN(cur_disk_name) == 3)) { if (dm_ret != 0 || vol_num <= 0) { b_exit_win_mp = TRUE; } } else { b_exit_win_mp = TRUE; } if (b_exit_win_mp) { DM_DEBUG("disk detach in Media Player, enter main menu\n"); // Alert here:Clear all menus may cuase unpredictable result,must be tested api_osd_mode_change(OSD_NO_SHOW); ap_clear_all_menus(); //clear all menu & Hidden osd show menu_stack_pop_all(); if(api_get_usb_unmount_flag()==0) //-a by wangyang 2011-12-26 image_restore_vpo_rect(); api_set_usb_unmount_flag(0); ap_clear_all_message(); system_state = SYS_STATE_NORMAL; ap_send_msg(CTRL_MSG_SUBTYPE_CMD_ENTER_ROOT,(UINT32)&g_win_mainmenu, FALSE); } }
static PRESULT subtitle_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; SYSTEM_DATA * sys; struct nim_device* nim_dev; UINT8 i,lock; UINT8 unact; if(cur_tuner_idx == 0) nim_dev = g_nim_dev; else nim_dev = g_nim_dev2; nim_get_lock(nim_dev,&lock); switch(event) { case EVN_PRE_OPEN: api_set_deo_layer(0); api_inc_wnd_count(); for(i=0;i<SUBTITLE_ITEM_NUMBER;i++) { p_subtitle_track_str[i]=Subtitle_track_str[i]; p_subtitle_track_idx[i]=Subtitle_track_idx[i]; } win_subtitle_init_data(); if(((0 == g_win_subtitle_count ) && (0 == g_win_ttx_subtitle_count)) || (!lock)) #if (DVR_PVR_SUPPORT_SUBTITLE)//temp disable if(((0 == g_win_subtitle_count ) && (0 == g_win_ttx_subtitle_count)) #ifdef DVR_PVR_SUPPORT || ((!lock) && !api_pvr_is_playing()) #else || (!lock) #endif ) #endif { win_com_popup_open(WIN_POPUP_TYPE_SMSG,NULL, RS_DISPLAY_NO_DATA); osal_task_sleep(1000); win_compopup_close(); api_dec_wnd_count(); return PROC_LEAVE; } break; case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1>>16); if(VACT_ENTER == unact) { UINT16 cur_sel = OSD_GetListCurPoint(&g_ls_subtitle); sys = sys_data_get(); if(g_win_subtitle_count + g_win_ttx_subtitle_count==cur_sel) { sys->osd_set.subtitle_display = 0;/*select off option*/ sys->osd_set.subtitle_lang = 0xFF; } else if(cur_sel < g_win_ttx_subtitle_count) { sys->osd_set.subtitle_display = 1;/*subtitle on*/ sys->osd_set.subtitle_lang = cur_sel;/*set_sub_lang_idx is used in api_osd_mode_change function*/ } else if(cur_sel < g_win_subtitle_count + g_win_ttx_subtitle_count) {/*ttx_subtitle on the top then normal subtitle*/ sys->osd_set.subtitle_display = 1; sys->osd_set.subtitle_lang = cur_sel;/*set_sub_lang_idx is used in api_osd_mode_change function*/ } ret = PROC_LEAVE; api_osd_mode_change(OSD_NO_SHOW); //api_osd_mode_change(OSD_SUBTITLE); } break; case EVN_PRE_CLOSE: unact = (VACTION)(param1>>16); ret = PROC_PASS; break; case EVN_POST_CLOSE: api_set_deo_layer(1); api_dec_wnd_count(); break; default: break; } return ret; }
static PRESULT subtitle_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; SYSTEM_DATA * sys; struct nim_device* nim_dev; UINT8 i,lock; UINT8 unact; if(cur_tuner_idx == 0) nim_dev = g_nim_dev; else nim_dev = g_nim_dev2; nim_get_lock(nim_dev,&lock); switch(event) { case EVN_PRE_OPEN: #ifdef SUPPORT_CAS9 if(0==get_mmi_showed()) ShowSignalStatusOSDOnOff(0); #endif api_set_deo_layer(0); api_inc_wnd_count(); for(i=0;i<SUBTITLE_ITEM_NUMBER;i++) { p_subtitle_track_str[i]=Subtitle_track_str[i]; p_subtitle_track_idx[i]=Subtitle_track_idx[i]; } if(system_state != SYS_STATE_USB_MP)//vic100507#1 { win_subtitle_init_data(); if(((0 == g_win_subtitle_count ) && (0 == g_win_ttx_subtitle_count)) || (!lock)) #if (DVR_PVR_SUPPORT_SUBTITLE)//temp disable if(((0 == g_win_subtitle_count ) && (0 == g_win_ttx_subtitle_count)) #ifdef DVR_PVR_SUPPORT || ((!lock) && !api_pvr_is_playing()) #else || (!lock) #endif ) #endif { win_com_popup_open(WIN_POPUP_TYPE_SMSG,NULL, RS_DISPLAY_NO_DATA); osal_task_sleep(1000); win_compopup_close(); api_dec_wnd_count(); return PROC_LEAVE; } } else { #ifdef MP_SUBTITLE_SUPPORT //vic100507#1 //TODO: //such like win_subtitle_init_data long resut; resut = win_mp_subtitle_init_data(); if (resut < 0) { return PROC_LEAVE; } #endif } break; case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1>>16); if(system_state != SYS_STATE_USB_MP)//vic100507#1 { if(VACT_ENTER == unact) { UINT16 cur_sel = OSD_GetListCurPoint(&g_ls_subtitle); sys = sys_data_get(); if(g_win_subtitle_count + g_win_ttx_subtitle_count==cur_sel) { sys->osd_set.subtitle_display = 0;/*select off option*/ sys->osd_set.subtitle_lang = 0xFF; } else if(cur_sel < g_win_ttx_subtitle_count) { sys->osd_set.subtitle_display = 1;/*subtitle on*/ sys->osd_set.subtitle_lang = cur_sel;/*set_sub_lang_idx is used in api_osd_mode_change function*/ } else if(cur_sel < g_win_subtitle_count + g_win_ttx_subtitle_count) {/*ttx_subtitle on the top then normal subtitle*/ sys->osd_set.subtitle_display = 1; sys->osd_set.subtitle_lang = cur_sel;/*set_sub_lang_idx is used in api_osd_mode_change function*/ } ret = PROC_LEAVE; api_osd_mode_change(OSD_NO_SHOW); //api_osd_mode_change(OSD_SUBTITLE); } } else if(VACT_ENTER == unact) { //vic100507#1 begin #ifdef MP_SUBTITLE_SUPPORT //TODO: //select language index if (!subtitle_handle) { return PROC_LEAVE; } long resut; UINT16 cur_sel = OSD_GetListCurPoint(&g_ls_subtitle); if(g_ext_subtitle_plugin) g_ext_subtitle_plugin->mps_change_language(subtitle_handle,cur_sel); OSD_ObjClose(pObj,C_CLOSE_CLRBACK_FLG); //if (resut < 0) { return PROC_LEAVE; } #endif //vic100507#1 end } break; case EVN_PRE_CLOSE: unact = (VACTION)(param1>>16); ret = PROC_PASS; break; case EVN_POST_CLOSE: #ifdef SUPPORT_CAS9 restore_ca_msg_when_exit_win(); #endif api_set_deo_layer(1); api_dec_wnd_count(); break; default: break; } return ret; }
static PRESULT win_progname_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; UINT32 i; VACTION unact; static UINT16 recall_channel = P_INVALID_ID; SYSTEM_DATA *sys_data; ID taskID; UINT8 *screenBuf; UINT32 vKey; enum API_PLAY_TYPE ret_enum; P_NODE pnode; UINT16 channel = 0; sys_data = sys_data_get(); switch (event) { case EVN_PRE_OPEN: #if(CAS_TYPE == CAS_CONAX) if(get_mmi_showed()!=5) { #endif //Clear the subtitle or teletext content of the last program #if ((SUBTITLE_ON == 1 )||(TTX_ON ==1)) api_osd_mode_change(OSD_WINDOW); #endif #if(CAS_TYPE == CAS_CONAX) } #endif taskID = osal_task_get_current_id(); screenBuf = OSD_GetTaskVscrBuffer(taskID); MEMSET(screenBuf, OSD_TRANSPARENT_COLOR, OSD_VSRC_MEM_MAX_SIZE); #ifdef NVOD_FEATURE if(GetNvodPlayFlag()) return PROC_LEAVE; #endif PROGNAME_TIMER_TIME = sys_data->osd_set.time_out; if (PROGNAME_TIMER_TIME == 0 || PROGNAME_TIMER_TIME > 10) PROGNAME_TIMER_TIME = 5; PROGNAME_TIMER_TIME *= 1000; recall_channel = P_INVALID_ID; if ((param2 &MENU_OPEN_TYPE_MASK) == MENU_OPEN_TYPE_KEY) { vKey = param2 & MENU_OPEN_PARAM_MASK; if (vKey == V_KEY_RECALL) { recall_channel = recall_play_channel(0); if (recall_channel == P_INVALID_ID) return PROC_LEAVE; } #ifdef MULTI_CAS #if(CAS_TYPE==CAS_CONAX) else if( (param2 & MENU_OPEN_PARAM_MASK ) == V_KEY_INFOR) { if(get_mmi_msg_cnt()>0) { ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_MCAS, 0, FALSE); MMI_PRINTF("CTRL_MSG_SUBTYPE_STATUS_MCAS: info key; code:0"); set_mmi_showed(10); } } #endif #endif else { if(V_KEY_UP==vKey || V_KEY_DOWN==vKey || V_KEY_C_UP==vKey ||\ V_KEY_C_DOWN==vKey || V_KEY_P_UP==vKey || V_KEY_P_DOWN==vKey\ || V_KEY_TVRADIO==vKey) { unact = win_progname_keymap(pObj, vKey); if(VACT_PASS != unact) { win_progname_unkown_act_proc(unact); } } } } #ifdef MULTI_CAS #if(CAS_TYPE==CAS_IRDETO) if(IRCA_BAN_GetBannerShow()) { //ap_send_msg(CTRL_MSG_SUBTYPE_STATUS_MCAS,0x00200000 , FALSE); ap_send_msg_expand(CTRL_MSG_SUBTYPE_STATUS_MCAS,0x00000020 ,0, FALSE); //ap_cas_call_back(0x00000020); } #endif #endif //ad_show(AD_CHANNEL_BAR); OSD_SetBitmapContent(&Bitmappr2, IM_PIC); break; case EVN_POST_OPEN: channel = sys_data_get_cur_group_cur_mode_channel(); if(get_prog_at(channel, &pnode) != SUCCESS) { return PROC_LEAVE; } /* if parent lock && no pwd, play it ,...just want to show pwd*/ /*if(pnode.lock_flag && GetChannelParrentLock()) { api_play_channel(channel,TRUE,TRUE,FALSE); } */ if (show_and_playchannel) { show_and_playchannel = 0; ret_enum = api_play_channel(channel,TRUE,TRUE,FALSE); #ifdef MIS_AD MIS_ShowEpgAdv(0); #endif } if (recall_channel != P_INVALID_ID) { ret_enum = api_play_channel(recall_channel, TRUE, TRUE, FALSE); OSD_TrackObject(pObj, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL); } #ifdef AD_SANZHOU if((recall_channel == P_INVALID_ID)||(get_prog_at(recall_channel, &pnode) == SUCCESS)) { szxc_ad_hide_txt(); szxc_ad_show_txt(pnode.prog_number); szxc_ad_hide_pic(AD_BANNER); szxc_ad_show_banner(pnode.prog_number,banner_pic_rt); } #endif progname_timer = api_start_timer(PROGNAME_TIMER_NAME, PROGNAME_TIMER_TIME, progname_timer_func); ShowMuteOnOff(); ShowPauseOnOff(); #ifdef MIS_AD Mis_Set_SameChan_AdvShowOnce(TRUE); Mis_Set_EnterAutoShow(FALSE); #endif break; case EVN_PRE_CLOSE: //ad_stop(AD_CHANNEL_BAR); #ifdef MIS_AD MIS_HideEpgAdv(); #endif break; case EVN_POST_CLOSE: api_stop_timer(&progname_timer); win_progname_stop_scroll(); #if ((SUBTITLE_ON==1)||(TTX_ON==1)) api_osd_mode_change(OSD_SUBTITLE); #endif #ifdef AD_SANZHOU szxc_ad_hide_pic(AD_BANNER); #endif break; case EVN_PRE_DRAW: if(0 != win_progname_set_info()) ret = PROC_LEAVE; break; case EVN_POST_DRAW: break; case EVN_UNKNOWNKEY_GOT: ap_hk_to_vk(0, param1, &vKey); if(check_exit_key_validate(vKey)) { ap_send_msg(CTRL_MSG_SUBTYPE_KEY, param1, FALSE); ret = PROC_LEAVE; } break; case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1 >> 16); ret = win_progname_unkown_act_proc(unact); break; case EVN_MSG_GOT: ret = win_progname_message_proc(param1, param2); break; default: break; } return ret; }