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); } }
void BackToFullScrPlay() { OSD_RECT rect; UINT16 cur_channel; UINT8 no_channel = 0, back_saved; ap_clear_all_menus(); menu_stack_pop_all(); cur_channel = sys_data_get_cur_group_cur_mode_channel(); recreate_prog_view(VIEW_ALL | PROG_TVRADIO_MODE , 0); if (get_prog_num(VIEW_ALL | PROG_TV_MODE, 0) == 0) { no_channel = 1; } if (get_prog_num(VIEW_ALL | PROG_RADIO_MODE, 0) > 0) { if (no_channel) sys_data_set_cur_chan_mode(RADIO_CHAN); no_channel = 0; } if (no_channel) { if (OSD_ObjOpen((POBJECT_HEAD) &g_win_mainmenu, MENU_OPEN_TYPE_STACK) != PROC_LEAVE) menu_stack_push((POBJECT_HEAD) &g_win_mainmenu); } else { hde_set_mode(VIEW_MODE_FULL); vpo_ioctl(g_vpo_dev, VPO_IO_DIRECT_ZOOM, 0); /* Clear OSD */ OSD_GetRectOnScreen(&rect); OSDDrv_RegionFill((HANDLE)g_osd_dev, 0, &rect, OSD_TRANSPARENT_COLOR); /* show mute & pause status*/ ShowMuteOnOff(); ShowPauseOnOff(); // ap_cas_message_show(); /* show channel index */ key_pan_display_channel(cur_channel); if(GetChannelParrentLock()) { api_play_channel(cur_channel,TRUE,TRUE,FALSE); } //--{{{退到全屏播放的时候,弹出INFO BAR ap_send_msg(CTRL_MSG_SUBTYPE_CMD_ENTER_ROOT, (UINT32)CHANNEL_BAR_HANDLE, TRUE); } }
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; sys_data = sys_data_get(); switch(event) { case EVN_PRE_OPEN: if(screen_back_state == SCREEN_BACK_MENU) { ap_clear_all_menus(); } b_popdetail = FALSE; 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) { if( (param2 & MENU_OPEN_PARAM_MASK ) == V_KEY_RECALL) { recall_channel = recall_play_channel(0); if(recall_channel == P_INVALID_ID) return PROC_LEAVE; } } api_inc_wnd_count(); break; case EVN_POST_OPEN: if(show_and_playchannel) { UINT16 channel; show_and_playchannel = 0; channel = sys_data_get_cur_group_cur_mode_channel(); api_play_channel(channel, TRUE, TRUE,FALSE); } if(recall_channel != P_INVALID_ID) { api_play_channel(recall_channel, TRUE, TRUE,FALSE); OSD_TrackObject(pObj, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL); } progname_timer = api_start_timer(PROGNAME_TIMER_NAME,PROGNAME_TIMER_TIME,progname_timer_func); ShowMuteOnOff(); ShowPauseOnOff(); #ifdef DVR_PVR_SUPPORT ShowRecHintOSDOnOff(GetRecHintState()); #endif break; case EVN_PRE_CLOSE: break; case EVN_POST_CLOSE: api_stop_timer(&progname_timer); sys_data_save(1); api_dec_wnd_count(); if(b_popdetail) { #if 0//def DVR_PVR_SUPPORT if(pvr_info.hdd_valid && (ap_pvr_set_state() != PVR_STATE_IDEL)) ap_send_msg(CTRL_MSG_SUBTYPE_CMD_ENTER_ROOT, (UINT32)&g_win_pvr_ctrl, TRUE); else ap_send_msg(CTRL_MSG_SUBTYPE_CMD_ENTER_ROOT, (UINT32)&g_win_progdetail, TRUE); #else ap_send_msg(CTRL_MSG_SUBTYPE_CMD_ENTER_ROOT, (UINT32)&g_win_progdetail, TRUE); #endif } break; case EVN_PRE_DRAW: break; case EVN_POST_DRAW: #ifdef MODIFY_FOR_EGYPT_CUSTOMER win_progname_draw_bmp(); #endif win_progname_draw_infor(); break; case EVN_UNKNOWNKEY_GOT: 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; }
static PRESULT info_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; CONTAINER* cont = (CONTAINER*)pObj; UINT8 id = OSD_GetObjID(pObj); POBJECT_HEAD submenu; switch(event) { case EVN_PRE_OPEN: wincom_open_title((POBJECT_HEAD)&win_info_con,RS_TOOLS_INFORMATION, 0); break; case EVN_POST_OPEN: display_sys_infomation(0); 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: param1 &= 0xff; if (factorytest_check_magic_key(param1)) { #ifdef FACTORY_TEST_MENU submenu = (POBJECT_HEAD)&g_win_factory_test; if(OSD_ObjOpen(submenu, MENU_OPEN_TYPE_OTHER) != PROC_LEAVE) menu_stack_push(submenu); #endif } else if (factorytest_check_magic_key_diag(param1)) { UINT16 channel = sys_data_get_cur_group_cur_mode_channel(); UINT16 group_idx = sys_data_get_cur_group_index(); sys_data_change_group(group_idx); api_stop_play(0); //to call si_monitor_off for fixing bug 13806 --Michael 2008/2/18 api_play_channel(channel, TRUE, FALSE, FALSE); ap_clear_all_menus(); extern CONTAINER win_diag; ap_send_msg(CTRL_MSG_SUBTYPE_CMD_ENTER_ROOT, (UINT32)&win_diag, TRUE); } else if(factorytest_check_hdmi_hdcp_key(param1)) { extern CONTAINER g_win_hdmi_factory_test; submenu = (POBJECT_HEAD)&g_win_hdmi_factory_test; if(OSD_ObjOpen(submenu,MENU_OPEN_TYPE_OTHER) != PROC_LEAVE) { menu_stack_push(submenu); } } else if(factorytest_check_epg_show_logo_key(param1)) { UINT8 back_saved; win_epg_set_show_state(); win_compopup_init(WIN_POPUP_TYPE_SMSG); if(win_epg_is_show_logo()) { win_compopup_set_msg("EPG Show Logo", NULL, 0); } else { win_compopup_set_msg("EPG Normal", NULL, 0); } win_compopup_open_ext(&back_saved); osal_task_sleep(2000); win_compopup_smsg_restoreback(); } break; } return ret; }