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,¶m); 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; }
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,¶m); 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; }