package com.youplayer.player.fullplayer; import android.app.AlertDialog; import android.content.Context; import android.content.res.Resources.NotFoundException; import android.graphics.Color; import android.text.TextPaint; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.PopupWindow; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.TextView; import com.youplayer.core.You_Core; import com.youplayer.core.struct.You_full_screen_player_data_to_ui; import com.youplayer.player.YouPlayerFullScreenPlayer; import com.youplayer.player.R; import com.youplayer.player.frame.YouPlayerEventControler; public class YouPlayerAudioSubtitle { public View mView; private int phone_width = 800; private int phone_height = 480; public You_full_screen_player_data_to_ui.Cls_fn_full_screen_audio_and_subtitle mTrack; public RadioGroup mAudioSubTrackGroup; public RadioGroup mAudioSubSubtitleGroup; public Context mContext; AlertDialog mDialog; public int mAudioSubTrackSelectIndex = 0; public int mAudioSubSuttitleSelectIndex = 0; private Button submit; private Button cancel; public static int AUDIO_SUB_TYPE_AUDIO = 0; public static int AUDIO_SUB_TYPE_SUB = 1; public YouPlayerAudioSubtitle(Context context, You_full_screen_player_data_to_ui.Cls_fn_full_screen_audio_and_subtitle data){ mContext = context; mView = LayoutInflater.from(context).inflate(R.layout.youplayer_audio_sub_layout, null); mTrack = data; initView(); } private String getVideoSize(){ String sizeText = ""; if(YouPlayerFullScreenPlayer.instance != null && YouPlayerFullScreenPlayer.instance.mPlayerAdapter != null){ sizeText = " " + YouPlayerFullScreenPlayer.instance.mPlayerAdapter.getMediaInfoWidth() + " X " + YouPlayerFullScreenPlayer.instance.mPlayerAdapter.getMediaInfoHeight(); } return sizeText; } private void initView() { mAudioSubTrackGroup = (RadioGroup)mView.findViewById(R.id.audio_sub_track_group); mAudioSubTrackGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { mAudioSubTrackSelectIndex = checkedId; } }); mAudioSubSubtitleGroup = (RadioGroup)mView.findViewById(R.id.audio_sub_subtitle_group); mAudioSubSubtitleGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { mAudioSubSuttitleSelectIndex = checkedId; } }); TextView video = (TextView)mView.findViewById(R.id.audio_sub_video_text); TextPaint videoTP = video.getPaint(); videoTP.setFakeBoldText(true); video.setText(video.getText().toString() + getVideoSize()); TextView track = (TextView)mView.findViewById(R.id.audio_sub_track_text); TextPaint trackTP = track.getPaint(); trackTP.setFakeBoldText(true); TextView subtitle = (TextView)mView.findViewById(R.id.audio_sub_subtitle_text); TextPaint subtitleTP = subtitle.getPaint(); subtitleTP.setFakeBoldText(true); loadAudioData(); loadSubData(); } public void setRadioButton(RadioGroup rootGroup, int radioId, String radioText, boolean enable, int type){ RadioButton audioNoneRB = new RadioButton(mContext); LinearLayout.LayoutParams subLP = new RadioGroup.LayoutParams(RadioGroup.LayoutParams.FILL_PARENT, RadioGroup.LayoutParams.WRAP_CONTENT); audioNoneRB.setPadding(10, 0, 10, 0); subLP.rightMargin = 0; subLP.leftMargin = 0; subLP.topMargin = 1; subLP.bottomMargin = 1; subLP.gravity = Gravity.RIGHT; // subLP.height = 43; audioNoneRB.setBackgroundColor(Color.WHITE); audioNoneRB.setButtonDrawable(android.R.color.transparent); audioNoneRB.setCompoundDrawablesWithIntrinsicBounds(null, null, mContext.getResources().getDrawable(R.drawable.youplayer_audio_sub_btn_radio), null); audioNoneRB.setText(audio_sub_desc_convert(radioText, radioId, type)); audioNoneRB.setId(radioId); audioNoneRB.setTextColor(Color.BLACK); audioNoneRB.setTextSize(18); audioNoneRB.setEnabled(enable); rootGroup.addView(audioNoneRB, subLP); } public void loadAudioData(){ if(mTrack.audio_cnt == 0){ String text = mContext.getString(R.string.audio_sub_audio_none); setRadioButton(mAudioSubTrackGroup, 0, text, false, AUDIO_SUB_TYPE_AUDIO); return; } for(int i = 0; i < mTrack.audio_cnt; i++){ setRadioButton(mAudioSubTrackGroup, i, mTrack.audio_cell[i], true, AUDIO_SUB_TYPE_AUDIO); } if(0 <= mTrack.cur_audio && mTrack.cur_audio < mTrack.audio_cnt){ mAudioSubTrackGroup.check(mTrack.cur_audio); }else{ mAudioSubTrackGroup.check(0); } } public void loadSubData(){ if(mTrack.sub_cnt == 0){ String text = mContext.getString(R.string.audio_sub_audio_none); setRadioButton(mAudioSubSubtitleGroup, 0, text, false, AUDIO_SUB_TYPE_SUB); return; } for(int j = 0; j < mTrack.sub_cnt; j++){ setRadioButton(mAudioSubSubtitleGroup, j, mTrack.sub_cell[j], true, AUDIO_SUB_TYPE_SUB); } if(0 <= mTrack.cur_sub && mTrack.cur_sub < mTrack.sub_cnt){ mAudioSubSubtitleGroup.check(mTrack.cur_sub); }else{ mAudioSubSubtitleGroup.check(0); } } private PopupWindow mPopupWindow; public void showDialog(View parent){ if(isShowing()){ return; } if (mPopupWindow == null && parent != null) { try { submit = (Button) mView.findViewById(R.id.submit); submit.setOnClickListener(submitListener); cancel = (Button) mView.findViewById(R.id.cancel); cancel.setOnClickListener(cancelListener); mPopupWindow = new PopupWindow(mView, getWindowWidth(),getWindowHeight(), true); } catch (NotFoundException e) { e.printStackTrace(); } } mPopupWindow.setBackgroundDrawable(mContext.getResources().getDrawable(R.drawable.youplayer_rounded_corners_pop)); mPopupWindow.showAtLocation(parent, Gravity.BOTTOM, 0, parent.getHeight()); } private void setSelectResult() { mTrack.cur_audio = mAudioSubTrackSelectIndex; mTrack.cur_sub = mAudioSubSuttitleSelectIndex; YouPlayerEventControler.fn_core_service_request(You_Core.FN_FULL_SCREEN_BTN_AUDIO_CHANNEL_CONFIM, You_Core.FN_UI_EVT_TOUCH_UP, null, mTrack); } OnClickListener submitListener = new OnClickListener() { @Override public void onClick(View v) { setSelectResult(); closeWindow(); } }; OnClickListener cancelListener=new OnClickListener(){ @Override public void onClick(View v){ closeWindow(); } }; public void closeWindow(){ if (mPopupWindow != null) { mPopupWindow.dismiss(); } } public int getWindowWidth(){ if(YouPlayerFullScreenPlayer.instance != null){ return (YouPlayerFullScreenPlayer.instance.mPlayerAdapter.extGetScreenWidth() - 220); }else{ return phone_width - 220; } } public int getWindowHeight(){ if(YouPlayerFullScreenPlayer.instance != null){ // int tmp = 180; int height = YouPlayerFullScreenPlayer.instance.mPlayerAdapter.extGetScreenHeight(); int tmp = height * 180 / 480; // height = height > 480 ? 480 : height; // if(height < 480){ // tmp = 120; // } return (height - tmp); }else{ return phone_height - 180; } } public boolean isShowing(){ if(mPopupWindow != null){ return mPopupWindow.isShowing(); } return false; } public String audio_sub_desc_convert(String desc, int radioId, int type){ if(desc == null || mContext == null){ return desc; } String dest = ""; int len = desc.length(); if(len >= 3){ len = 3; } String src = desc.substring(0, len); if("chi".equalsIgnoreCase(src)){ dest = mContext.getString(R.string.audio_sub_desc_chi); }else if("cht".equalsIgnoreCase(src)){ dest = mContext.getString(R.string.audio_sub_desc_cht); }else if("eng".equalsIgnoreCase(src)){ dest = mContext.getString(R.string.audio_sub_desc_eng); }else if("unk".equalsIgnoreCase(src) || "und".equalsIgnoreCase(src)){ if(type == AUDIO_SUB_TYPE_AUDIO){ dest = mContext.getString(R.string.audio_sub_audio_desc_unkown) +String.valueOf(radioId); }else if(type == AUDIO_SUB_TYPE_SUB){ dest = mContext.getString(R.string.audio_sub_sub_desc_unkown)+ String.valueOf(radioId); } }else{ dest = desc; } return dest; } }