package com.letv.watchball.ui.impl; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import com.letv.http.bean.LetvDataHull; import com.letv.http.parse.LetvGsonParser; import com.letv.watchball.R; import com.letv.watchball.async.LetvHttpAsyncTask; import com.letv.watchball.bean.AlbumNew; import com.letv.watchball.bean.Comments; import com.letv.watchball.bean.LocalCacheBean; import com.letv.watchball.http.api.LetvHttpApi; import com.letv.watchball.parser.AlbumNewParse; import com.letv.watchball.ui.IntroductionBuilder; import com.letv.watchball.ui.LetvBaseFragment; import com.letv.watchball.ui.PlayAlbumController; import com.letv.watchball.ui.PlayLiveController; import com.letv.watchball.ui.PlayAlbumController.PlayAlbumControllerCallBack; import com.letv.watchball.ui.PlayController; import com.letv.watchball.utils.LetvCacheDataHandler; import com.letv.watchball.utils.LogInfo; import com.letv.watchball.utils.UIs; import com.letv.watchball.view.PublicLoadLayout; public class HalfPlayIntroductionFragment extends LetvBaseFragment implements PlayAlbumControllerCallBack, OnItemClickListener { private PlayController playController; private PublicLoadLayout root; /** * 直播 */ public static final int LAUNCH_MODE_LIVE = 4; /** * 直播 全屏直播 */ public static final int LAUNCH_MODE_LIVE_FULL = 5; private PlayAlbumController playAlbumController; private PlayLiveController PlayLiveController; @Override public void onAttach(Activity activity) { super.onAttach(activity); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { root = UIs.createPage(getActivity(), R.layout.detailplay_half_introduction); root.setPadding(1, 0, 1, 0); root.setBackgroundResource(R.color.letv_color_ffdfdfdf); return root; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (((BasePlayActivity) getActivity()).mPlayController.getLaunchMode() == LAUNCH_MODE_LIVE || ((BasePlayActivity) getActivity()).mPlayController .getLaunchMode() == LAUNCH_MODE_LIVE_FULL) { PlayLiveController = (PlayLiveController) ((BasePlayActivity) getActivity()).mPlayController; playController = PlayLiveController; } else { playAlbumController = (PlayAlbumController) ((BasePlayActivity) getActivity()).mPlayController; playController = playAlbumController; } playController.introductionCallBack = this; handlerData(); } @Override public void onResume() { // TODO Auto-generated method stub super.onResume(); } @Override public void onDestroyView() { // Log.d("lhz", "HalfPlayIntroductionFragment.onDestroyView"); super.onDestroyView(); cancel(); this.root = null; this.playController.introductionCallBack = null; this.playController = null; } /** * 根据状态完成数据载入 * */ private void handlerData() { switch (playController.introductionCallBackState) { case PlayAlbumControllerCallBack.STATE_RUNNING: if (root != null) { root.loading(true); } break; case PlayAlbumControllerCallBack.STATE_FINISH: if (root != null) { root.finish(); if (((BasePlayActivity) getActivity()).mPlayController .getLaunchMode() == LAUNCH_MODE_LIVE || ((BasePlayActivity) getActivity()).mPlayController .getLaunchMode() == LAUNCH_MODE_LIVE_FULL) { IntroductionBuilder.build(playController.getAlbum(), root, PlayLiveController.game); } else { IntroductionBuilder.build(playController.getAlbum(), root, null); } if (null != playController.getVideo()) { request(playController.getVideo().getCid(), playController.vid + ""); } } break; case PlayAlbumControllerCallBack.STATE_NET_NULL: if (root != null) { root.error(R.string.get_data_error); } break; case PlayAlbumControllerCallBack.STATE_NET_ERR: if (root != null) { root.error(R.string.get_data_error); } break; case PlayAlbumControllerCallBack.STATE_DATA_NULL: if (root != null) { root.error(R.string.get_data_error); } break; } } @Override public void notify(int state) { handlerData(); } @Override public void requestDetails(long cid, String vid) { request(cid, vid); } @Override public void setCurPage(int curPage) { } private RequestVideosDetailTask requestTask; public void request(long cid, String vid) { LogInfo.log("main", "cid = " + cid + " vid =" + vid); if (cid == AlbumNew.Channel.TYPE_JOY || cid == AlbumNew.Channel.TYPE_PE) {// 娱乐跟体育频道才去请求视频详情 cancel(); requestTask = new RequestVideosDetailTask(getActivity(), vid); requestTask.start(); } } public void cancel() { if (requestTask != null) { requestTask.cancel(); requestTask = null; } } /** * 请求数据 * */ private class RequestVideosDetailTask extends LetvHttpAsyncTask<AlbumNew> { private String vid; private String markId = null; public RequestVideosDetailTask(Context context, String vid) { super(context); this.vid = vid; if (root != null) { root.loading(false); } } @Override public AlbumNew loadLocalData() { try { LocalCacheBean bean = LetvCacheDataHandler.readDetailData(vid); if (bean != null) { AlbumNew album = null; AlbumNewParse albumNewParse = new AlbumNewParse(); album = albumNewParse.initialParse(bean.getCacheData()); markId = bean.getMarkId(); return album; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override public boolean loadLocalDataComplete(AlbumNew result) { if (result != null) { if (((BasePlayActivity) getActivity()).mPlayController .getLaunchMode() == LAUNCH_MODE_LIVE || ((BasePlayActivity) getActivity()).mPlayController .getLaunchMode() == LAUNCH_MODE_LIVE_FULL) { IntroductionBuilder.build(playController.getAlbum(), root, PlayLiveController.game); } else { IntroductionBuilder.build(playController.getAlbum(), root, null); } return true; } return false; } @Override public LetvDataHull<AlbumNew> doInBackground() { LetvDataHull<AlbumNew> dataHull; if (!isLocalSucceed()) { markId = null; } AlbumNewParse parser = new AlbumNewParse(); int aid = (int) playController.aid; if (((BasePlayActivity) getActivity()).mPlayController .getLaunchMode() == LAUNCH_MODE_LIVE || ((BasePlayActivity) getActivity()).mPlayController .getLaunchMode() == LAUNCH_MODE_LIVE_FULL) { dataHull = LetvHttpApi.requestAlbumVideoInfo(0, aid + "", "album", null, parser); } else { dataHull = LetvHttpApi.requestAlbumVideoInfo(0, vid, "video", null, parser); } if (dataHull.getDataType() == LetvDataHull.DataType.DATA_IS_INTEGRITY) { LetvCacheDataHandler.saveDetailData(parser.getMarkId(), dataHull.getSourceData(), vid); } return dataHull; } @Override public void onPostExecute(int updateId, AlbumNew result) { if (result != null) { if (((BasePlayActivity) getActivity()).mPlayController .getLaunchMode() == LAUNCH_MODE_LIVE || ((BasePlayActivity) getActivity()).mPlayController .getLaunchMode() == LAUNCH_MODE_LIVE_FULL) { IntroductionBuilder.build(playController.getAlbum(), root, PlayLiveController.game); } else { IntroductionBuilder.build(playController.getAlbum(), root, null); } } if (root != null) { root.finish(); } } @Override public void netNull() { if (root != null) { root.error(R.string.get_data_error); } } @Override public void netErr(int updateId, String errMsg) { if (root != null) { root.error(R.string.get_data_error); } } @Override public void dataNull(int updateId, String errMsg) { if (root != null) { root.error(R.string.get_data_error); } } } @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub } }