package com.joyplus; import android.content.Context; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.view.KeyEvent; import android.view.View; import android.view.ViewStub; import android.widget.LinearLayout; import com.joyplus.tvhelper.R; import com.joyplus.tvhelper.utils.Log; public class JoyplusMediaPlayerMiddleControl extends LinearLayout implements JoyplusMediaPlayerInterface{ private boolean Debug = true; private String TAG = "JoyplusMediaPlayerMiddleControl"; private JoyplusMediaPlayerInterface mView;//Current display layout; //private Context mContext; private final static int MSG_BASE = 200; public final static int MSG_HIDEVIEW = MSG_BASE+1; public final static int MSG_SHOWVIEW = MSG_BASE+2; public final static int MSG_REQUESTSHOWVIEW = MSG_BASE+3; public final static int MSG_REQUESTHIDEVIEW = MSG_BASE+4; public final static int MSG_REQUESTHOLDSHOWVIEW = MSG_BASE+5; public final static int LAYOUT_CONTROL_MIDDLE = MSG_BASE+6; //layout of loading public final static int LAYOUT_LOADING = MSG_BASE+30; public final static int LAYOUT_LOADING_UPDATEINFO = MSG_BASE+31; //layout of audio public final static int LAYOUT_AUDIO = MSG_BASE+50; //layout of minicontrol public final static int LAYOUT_MINI = MSG_BASE+70; public void Init(){ update(LAYOUT_LOADING); mHandler.removeCallbacksAndMessages(null); } private Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); switch(msg.what){ case MSG_HIDEVIEW: hideView(); break; case MSG_SHOWVIEW: update((Integer) msg.obj); if(mView != null && mView.JoyplusgetLayout()==LAYOUT_AUDIO){ setVisible(false,JoyplusMediaPlayerMiddleControlAudio.SHOWTIME,0); } break; case MSG_REQUESTSHOWVIEW: if(mView != null && ((View)mView).getVisibility()!=View.VISIBLE){ setVisible(true,0,mView.JoyplusgetLayout()); } mHandler.removeCallbacksAndMessages(null); if(mView != null && mView.JoyplusgetLayout()==LAYOUT_AUDIO){ setVisible(false,JoyplusMediaPlayerMiddleControlAudio.SHOWTIME,0); } break; case MSG_REQUESTHOLDSHOWVIEW: if(mView != null){ if(((View)mView).getVisibility() != View.VISIBLE) setVisible(true,0,mView.JoyplusgetLayout()); mHandler.removeCallbacksAndMessages(null); } break; case MSG_REQUESTHIDEVIEW: setVisible(false,0,mView.JoyplusgetLayout()); break; } } }; private void setVisible(boolean visible,int delay,int layout){ Message m ; mHandler.removeCallbacksAndMessages(null); if(visible) m=Message.obtain(mHandler,MSG_SHOWVIEW,"MSG_SHOWVIDE"); else m=Message.obtain(mHandler,MSG_HIDEVIEW,"MSG_HIDEVIDE"); m.obj = layout; mHandler.sendMessageDelayed(m,delay); } public JoyplusMediaPlayerMiddleControl(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub //mContext = context; hideView(); } public JoyplusMediaPlayerMiddleControl(Context context) { super(context); // TODO Auto-generated constructor stub //mContext = context; hideView(); } public void hideView(){ if(mView!=null){ mView.JoyplussetVisible(false, 0); ((View)mView).setVisibility(View.GONE); ((View)mView).startAnimation(JoyplusMediaPlayerActivity.mAlphaDispear); } mView = null; } public boolean update(int layout){ hideView(); mView = CreateView(layout); mView.JoyplussetVisible(true, mView.JoyplusgetLayout()); return true; } private View getStubView(int stubId,int viewId){ if(Debug)Log.d(TAG,"getStubView("+stubId+" , "+viewId+")"); View view = findViewById(viewId); if(view == null){ ViewStub stub = (ViewStub)findViewById(stubId); view = stub.inflate(); } return view; } private JoyplusMediaPlayerInterface CreateView(int layout){ if(Debug)Log.d(TAG,"CreateView("+layout+")"); if(layout == LAYOUT_LOADING){ return CreateLayoutView( R.id.joyplusvideoview_loading_stub, R.id.joyplusvideoview_loading); }else if(layout == LAYOUT_AUDIO){ return CreateLayoutView( R.id.joyplusvideoview_audio_stub, R.id.joyplusvideoview_audio); }else if(layout == LAYOUT_MINI){ return CreateLayoutView( R.id.joyplusvideoview_mini_stub, R.id.joyplusvideoview_mini); }else{ throw new IllegalArgumentException(); } } private JoyplusMediaPlayerInterface CreateLayoutView(int stubId,int viewId){ if(Debug)Log.d(TAG,"CreateLayoutView("+stubId+" , "+viewId+")"); LinearLayout view = (LinearLayout) getStubView(stubId,viewId); view.setVisibility(View.VISIBLE); return (JoyplusMediaPlayerInterface)view; } @Override public boolean JoyplusdispatchMessage(Message msg) { // TODO Auto-generated method stub return false; } @Override public boolean JoyplusonKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(mView!=null && (((View)mView).getVisibility() == View.VISIBLE)){ if(Debug)Log.d("KeyCode","Control JoyplusonKeyDown() keyCode="+keyCode); if( mView.JoyplusonKeyDown(keyCode, event)){ mHandler.sendEmptyMessage(MSG_REQUESTSHOWVIEW); return true; } } return false; } @Override public void JoyplussetVisible(boolean visible,int layout) { // TODO Auto-generated method stub setVisible(visible,0,layout); } @Override public int JoyplusgetLayout() { // TODO Auto-generated method stub return LAYOUT_CONTROL_MIDDLE; } @Override public boolean JoyplusonKeyLongPress(int keyCode, KeyEvent event) { // TODO Auto-generated method stub return false; } }