package com.hyrt.cei.ui.phonestudy; import java.io.File; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.view.Gravity; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.EditText; import android.widget.ImageView; import android.widget.PopupWindow; import android.widget.RelativeLayout.LayoutParams; import android.widget.TextView; import com.hyrt.cei.application.CeiApplication; import com.hyrt.cei.db.DataHelper; import com.hyrt.cei.ui.phonestudy.view.GGridView; import com.hyrt.cei.util.AsyncImageLoader; import com.hyrt.cei.util.ImageUtil; import com.hyrt.cei.util.MyTools; import com.hyrt.cei.util.XmlUtil; import com.hyrt.cei.vo.ColumnEntry; import com.hyrt.cei.vo.Courseware; import com.hyrt.cei.vo.Forum; import com.hyrt.cei.vo.ImageResourse; import com.hyrt.cei.vo.Preload; import com.hyrt.cei.webservice.service.Service; import com.hyrt.ceiphone.R; import com.hyrt.ceiphone.adapter.CourseDetailAboutAdapter; import com.hyrt.ceiphone.common.WebViewUtil; import com.hyrt.ceiphone.phonestudy.FoundationActivity; import com.hyrt.ceiphone.phonestudy.PreloadActivity; //import com.weibo.sdk.android.demo.MainActivity; public class CourseDetailActivity extends FoundationActivity { private Courseware courseware; private AsyncImageLoader asyncImageLoader; private ColumnEntry columnEntry; private static final int NO_NET = 1; private static final int SAY_SUCCESS = 2; private static final int ADD_SUCCESS = 3; private static final int CANCEL_SUCCESS = 4; private static final int ABOUT_CLASS = 5; private ImageView controSelClass; private DataHelper dataHelper; private Handler handler = new Handler() { @Override public void dispatchMessage(Message msg) { AlertDialog.Builder builder = new Builder(CourseDetailActivity.this); switch (msg.arg1) { case NO_NET: builder.setMessage("网络有问题 !"); builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); break; case SAY_SUCCESS: findViewById(R.id.phone_study_submit).setVisibility( View.VISIBLE); findViewById(R.id.phone_study_submit_progress).setVisibility( View.GONE); builder.setMessage("评论成功 !"); builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); ((EditText) findViewById(R.id.phone_study_detail_say_inputEdit)) .setText(""); builder.create().show(); break; case ADD_SUCCESS: controSelClass .setImageResource(R.drawable.phone_study_canclecourse_btn); builder.setMessage("加入自选课成功 !"); builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); // builder.create().show(); controSelClass.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { alertIsSurePop(new OnClickListener() { @Override public void onClick(View arg0) { new Thread(new Runnable() { @Override public void run() { String rs = Service.cancelCourse( courseware.getClassId(), columnEntry.getUserId()); if (XmlUtil.parseReturnCode(rs).equals( "1")) { Message message = handler .obtainMessage(); message.arg1 = CANCEL_SUCCESS; handler.sendMessage(message); } else { Message message = handler .obtainMessage(); message.arg1 = NO_NET; handler.sendMessage(message); } } }).start(); } }, true); } }); break; case CANCEL_SUCCESS: controSelClass .setImageResource(R.drawable.phone_study_addcourse_btn); builder.setMessage("取消自选课成功 !"); builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); // builder.create().show(); controSelClass.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { alertIsSurePop(new OnClickListener() { @Override public void onClick(View arg0) { new Thread(new Runnable() { @Override public void run() { String rs = Service.saveCourse( courseware.getClassId(), columnEntry.getUserId()); if (XmlUtil.parseReturnCode(rs) .length() > 5) { Message message = handler .obtainMessage(); message.arg1 = ADD_SUCCESS; handler.sendMessage(message); } else { Message message = handler .obtainMessage(); message.arg1 = NO_NET; handler.sendMessage(message); } } }).start(); } }, true); } }); break; case ABOUT_CLASS: for(int i=0;i<aboutCourseware.size();i++){ if(aboutCourseware.get(i).getClassLevel().equals(courseware.getClassLevel())){ aboutCourseware.remove(i); }else{ int isrepeat = 0; for(int j=0;j<aboutCourseware.size();j++){ if(aboutCourseware.get(j).getClassLevel().equals(aboutCourseware.get(i).getClassLevel())){ isrepeat++; if(isrepeat == 2) aboutCourseware.remove(j); } } } } CourseDetailAboutAdapter aboutAdapter = new CourseDetailAboutAdapter( CourseDetailActivity.this, aboutCourseware, gridView); gridView.setAdapter(aboutAdapter, 3); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.phone_study_detail); this.CURRENT_KEY = FoundationActivity.DETAIL_DATA_KEY; //getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); asyncImageLoader = ((CeiApplication) (getApplication())).asyncImageLoader; columnEntry = ((CeiApplication) getApplication()).columnEntry; dataHelper = ((CeiApplication) getApplication()).dataHelper; loadDataForView(); loadAboutClass(); registEvent(); } // 相关课程列表 private List<Courseware> aboutCourseware = new ArrayList<Courseware>(); // 相关课程横向列表控件 private GGridView gridView; /** * 加载课件相关课程列表 */ private void loadAboutClass() { gridView = (GGridView) findViewById(R.id.phone_study_gridview); gridView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { // 点击相关课程进入详细信息 CourseDetailActivity.this.finish(); Intent intent = new Intent(CourseDetailActivity.this, CourseDetailActivity.class); intent.putExtra("coursewareInfo", aboutCourseware.get(position)); startActivity(intent); } }); new Thread(new Runnable() { private StringBuilder functionIds; // 初始化请求数据 private void initSendData() { ColumnEntry columnEntry = ((CeiApplication) (CourseDetailActivity.this .getApplication())).columnEntry; ColumnEntry phoneStudyCol = columnEntry .getColByName(FoundationActivity.MODEL_NAME); functionIds = new StringBuilder(phoneStudyCol.getId()); for (int i = 0; i < columnEntry.getColumnEntryChilds().size(); i++) { ColumnEntry entryChild = columnEntry.getColumnEntryChilds() .get(i); if (entryChild.getPath() != null && entryChild.getPath().contains( phoneStudyCol.getId())) { functionIds.append("," + entryChild.getId()); } } } @Override public void run() { // 获取该课程相关课程 initSendData(); if (courseware.getFullName() != null && !courseware.getFullName().contains("[")) return; String name = courseware.getFullName().substring(0, courseware.getFullName().lastIndexOf("[")); if (((CeiApplication) getApplication()).isNet()) { String result = Service.queryClassName(name, functionIds.toString()); XmlUtil.parseCoursewares(result, aboutCourseware); for (int i = 0; i < aboutCourseware.size(); i++) { if (aboutCourseware.get(i).getClassId() .equals(courseware.getClassId())) { aboutCourseware.remove(i); } else { ((CeiApplication) getApplication()).dataHelper .saveCourseware(aboutCourseware.get(i)); } } } else { Courseware courseware = new Courseware(); courseware.setName(courseware.getName()); aboutCourseware = ((CeiApplication) getApplication()).dataHelper .getCoursewares(courseware); for (int i = 0; i < aboutCourseware.size(); i++) { if (aboutCourseware.get(i).getClassId() .equals(courseware.getClassId())) aboutCourseware.remove(i); } } Message message = handler.obtainMessage(); message.arg1 = ABOUT_CLASS; handler.sendMessage(message); } }).start(); } private void loadDataForView() { // 检查sd卡是否存在不存在的话,则退出 if (!Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { MyTools.exitShow(this, ((Activity) this).getWindow().getDecorView(), "sd卡不存在!"); this.finish(); return; } courseware = (Courseware) getIntent().getSerializableExtra( "coursewareInfo"); TextView courseDetailTv = (TextView) findViewById(R.id.phone_study_detail_content); ((TextView) findViewById(R.id.phone_study_detail_title)) .setText(courseware.getFullName()); ((TextView) findViewById(R.id.phone_study_detail_author)) .setText("讲师姓名 : " + courseware.getTeacherName()); ((TextView) findViewById(R.id.phone_study_detail_protime)) .setText("发布时间 : " + courseware.getProTime()); ((TextView) findViewById(R.id.phone_study_detail_timelength)) .setText("课件时长 : " + courseware.getClassLength()); if (courseware.getIntro() != null) courseDetailTv.setText(" " + courseware.getIntro().replace("\n", "")); ImageResourse imageResource = new ImageResourse(); imageResource.setIconUrl(courseware.getSmallPath()); imageResource.setIconId(courseware.getClassId()); asyncImageLoader.loadDrawable(imageResource, new AsyncImageLoader.ImageCallback() { @Override public void imageLoaded(Drawable drawable, String path) { ImageView imageView = (ImageView) CourseDetailActivity.this .findViewById(R.id.phone_study_detail_icon); if (drawable != null) { imageView.setImageDrawable(drawable); File file = Environment .getExternalStorageDirectory(); String sdPath = file.getAbsolutePath(); // 请保证SD卡根目录下有这张图片文件 String imagePath = sdPath + "/" + "abc.png"; try { ImageUtil.saveBytesByFile(ImageUtil .Bitmap2Bytes(ImageUtil .drawableToBitmap(drawable)), imagePath); } catch (Exception e) { e.printStackTrace(); } } } }); } private void registEvent() { findViewById(R.id.phone_study_give).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { /*Intent intent = new Intent(CourseDetailActivity.this, MainActivity.class); startActivity(intent);*/ } }); findViewById(R.id.phone_study_submit).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { final Forum forum = new Forum(); forum.setClassId(courseware.getClassId()); forum.setFunctionid(columnEntry.getColumnEntryChilds() .get(0).getId()); forum.setUserid(columnEntry.getUserId()); forum.setContent(((EditText) findViewById(R.id.phone_study_detail_say_inputEdit)) .getText().toString()); if (forum.getContent() != null && forum.getContent().trim().length() == 0) { MyTools.exitShow(CourseDetailActivity.this, CourseDetailActivity.this.getWindow() .getDecorView(), "请输入评论内容!"); return; } findViewById(R.id.phone_study_submit).setVisibility( View.GONE); findViewById(R.id.phone_study_submit_progress) .setVisibility(View.VISIBLE); forum.setSerial("1"); // 加到自己评论的课件列表中 new Thread(new Runnable() { @Override public void run() { String ret = Service.saveBBS(forum); if (XmlUtil.parseReturnCode(ret).equals("-1")) { Message message = handler.obtainMessage(); message.arg1 = NO_NET; handler.sendMessage(message); } else { Message message = handler.obtainMessage(); message.arg1 = SAY_SUCCESS; handler.sendMessage(message); } } }).start(); } }); loadSelfCourseData(); findViewById(R.id.phone_study_detail_play).setOnClickListener( new OnClickListener() { // 没有购买的 private static final int NO_BUY = 0; // 已经购买的 private static final int AL_BUY = 1; /** * 检查是否有买了这个课件 */ private void checkBuy() { if (courseware.isFree()) { Message message = handler.obtainMessage(); message.arg1 = AL_BUY; handler.sendMessage(message); } else { new Thread(new Runnable() { @Override public void run() { String result = Service.queryBuyClass( columnEntry.getUserId(), courseware.getClassId()); List<Courseware> coursewares = new ArrayList<Courseware>(); XmlUtil.parseCoursewares(result, coursewares); Message message = handler.obtainMessage(); if (coursewares.size() > 0) { message.arg1 = AL_BUY; } else { message.arg1 = NO_BUY; } handler.sendMessage(message); } }).start(); } } // 提示是否有权限 private Handler handler = new Handler() { @Override public void dispatchMessage(Message msg) { switch (msg.arg1) { case NO_BUY: if (((CeiApplication) CourseDetailActivity.this .getApplication()).isNet()) MyTools.exitShow( CourseDetailActivity.this, CourseDetailActivity.this .getWindow().getDecorView(), "未购买该课件!"); else MyTools.exitShow( CourseDetailActivity.this, CourseDetailActivity.this .getWindow().getDecorView(), "请联网查看!"); break; case AL_BUY: Intent intent = new Intent( CourseDetailActivity.this, WebViewUtil.class); if (courseware.getLookPath() == null) courseware.setLookPath("file:///" + dataHelper.getPreload(courseware.getClassId()).getLoadLocalPath() .replace( FLASH_POSTFIX, FLASH_GATE)); if (courseware.getLookPath() != null) { intent.putExtra( "path", courseware.getLookPath() .replace("/i2/", "/an2/") .replace("an1", "an2")); intent.putExtra("class", courseware); intent.putExtra("isRecord", getIntent() .getBooleanExtra("isRecord", false)); startActivity(intent); } break; } } }; @Override public void onClick(View arg0) { checkBuy(); } }); findViewById(R.id.phone_study_detail_preload).setOnClickListener( new OnClickListener() { // 没有购买的 private static final int NO_BUY = 0; // 已经购买的 private static final int AL_BUY = 1; /** * 检查是否有买了这个课件 */ private void checkBuy() { if (courseware.isFree()) { Message message = handler.obtainMessage(); message.arg1 = AL_BUY; handler.sendMessage(message); } else { new Thread(new Runnable() { @Override public void run() { String result = Service.queryBuyClass( columnEntry.getUserId(), courseware.getClassId()); List<Courseware> coursewares = new ArrayList<Courseware>(); XmlUtil.parseCoursewares(result, coursewares); Message message = handler.obtainMessage(); if (coursewares.size() > 0) { message.arg1 = AL_BUY; } else { message.arg1 = NO_BUY; } handler.sendMessage(message); } }).start(); } } // 提示是否有权限 private Handler handler = new Handler() { @Override public void dispatchMessage(Message msg) { switch (msg.arg1) { case NO_BUY: if (((CeiApplication) CourseDetailActivity.this .getApplication()).isNet()) MyTools.exitShow( CourseDetailActivity.this, CourseDetailActivity.this .getWindow().getDecorView(), "未购买该课件!"); else MyTools.exitShow( CourseDetailActivity.this, CourseDetailActivity.this .getWindow().getDecorView(), "请联网查看!"); break; case AL_BUY: downloadThisCourse(courseware); break; } } }; @Override public void onClick(View arg0) { checkBuy(); } }); changeDownBtn(findViewById(R.id.phone_study_detail_preload), courseware.getClassId()); } private void loadSelfCourseData() { final Handler selfCoursehandler = new Handler() { @Override public void dispatchMessage(Message msg) { controSelClass = (ImageView) findViewById(R.id.phone_study_detail_addcourse); // controSelClass.setVisibility(View.VISIBLE); if (courseware.isSelfCourse()) { controSelClass .setImageResource(R.drawable.phone_study_canclecourse_btn); controSelClass.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { alertIsSurePop(new OnClickListener() { @Override public void onClick(View arg0) { popWin.dismiss(); new Thread(new Runnable() { @Override public void run() { String rs = Service.cancelCourse( courseware.getClassId(), columnEntry.getUserId()); if (XmlUtil.parseReturnCode(rs) .equals("1")) { Message message = handler .obtainMessage(); message.arg1 = CANCEL_SUCCESS; handler.sendMessage(message); } else { Message message = handler .obtainMessage(); message.arg1 = NO_NET; handler.sendMessage(message); } } }).start(); } }, true); } }); } else { controSelClass.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { alertIsSurePop(new OnClickListener() { @Override public void onClick(View arg0) { popWin.dismiss(); new Thread(new Runnable() { @Override public void run() { String rs = Service.saveCourse( courseware.getClassId(), columnEntry.getUserId()); if (XmlUtil.parseReturnCode(rs) .length() > 5) { Message message = handler .obtainMessage(); message.arg1 = ADD_SUCCESS; handler.sendMessage(message); } else { Message message = handler .obtainMessage(); message.arg1 = NO_NET; handler.sendMessage(message); } } }).start(); } }, true); } }); } } }; new Thread(new Runnable() { @Override public void run() { List<Courseware> selfselCourseware = new ArrayList<Courseware>(); String result = Service .queryCourse(((CeiApplication) (getApplication())).columnEntry .getUserId()); XmlUtil.parseCoursewares(result, selfselCourseware); for (int i = 0; i < selfselCourseware.size(); i++) { if (selfselCourseware.get(i).getClassId() .equals(courseware.getClassId())) { courseware.setSelfCourse(true); } } selfCoursehandler.sendMessage(selfCoursehandler.obtainMessage()); } }).start(); } private PopupWindow popWin; private void alertIsSurePop(OnClickListener clickListener, boolean isCheckLogin) { View popView = this.getLayoutInflater().inflate( R.layout.phone_study_issure, null); if (isCheckLogin && !((CeiApplication) this.getApplication()).isNet()) { ((TextView) popView.findViewById(R.id.issure_title)) .setText("请联网操作!"); clickListener = new OnClickListener() { @Override public void onClick(View v) { popWin.dismiss(); } }; } else if (isCheckLogin && columnEntry.getUserId() == null) { ((TextView) popView.findViewById(R.id.issure_title)) .setText("请登录操作!"); } popView.findViewById(R.id.phone_study_issure_sure_btn) .setOnClickListener(clickListener); popView.findViewById(R.id.phone_study_issure_cancel_btn) .setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { popWin.dismiss(); } }); popWin = new PopupWindow(popView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); popWin.setFocusable(true); popWin.showAtLocation(findViewById(R.id.full_view), Gravity.CENTER, 0, 0); } /** * 下载课件 * * @param courseware */ private void downloadThisCourse(final Courseware courseware) { alertIsSurePop(new OnClickListener() { @Override public void onClick(View v) { popWin.dismiss(); DataHelper dataHelper = ((CeiApplication) (CourseDetailActivity.this.getApplication())).dataHelper; Preload preload = new Preload(); preload.setLoadPlayId(courseware.getClassId()); preload.setLoadCurrentByte(0); preload.setLoading(1); preload.setLoadFinish(0); if (courseware.getDownPath() != null) preload.setLoadUrl(courseware.getDownPath().replace("an1", "an2")); try { preload.setLoadLocalPath(MyTools.RESOURCE_PATH + MyTools.KJ_PARTPATH + courseware .getDownPath() .substring( courseware .getDownPath() .lastIndexOf( "/", (courseware .getDownPath() .length() - 10)) + 1, courseware.getDownPath() .lastIndexOf("/")) + ".zip"); } catch (Exception e) { e.printStackTrace(); } preload.setLoadPlayTitle(courseware.getFullName()); preload.setLoadPlayTitleBelow("讲师姓名 : " + courseware.getTeacherName() + " 发布时间 : " + courseware.getProTime()); preload.setPassKey(courseware.getKey()); preload.setClassLength(courseware.getClassLength()); if (!dataHelper.hasPreload(preload.getLoadPlayId())) { dataHelper.savePreload(preload); AlertDialog.Builder builder = new Builder( CourseDetailActivity.this); builder.setMessage("成功加入下载队列 !"); builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); Intent intent = new Intent( CourseDetailActivity.this, PreloadActivity.class); CourseDetailActivity.this .startActivity(intent); } }); builder.create().show(); } else { AlertDialog.Builder builder = new Builder( CourseDetailActivity.this); builder.setMessage("下载队列已存在该剧集 !"); builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); Intent intent = new Intent( CourseDetailActivity.this, PreloadActivity.class); CourseDetailActivity.this .startActivity(intent); } }); builder.create().show(); } } }, false); } private void changeDownBtn(View view, String classId) { DataHelper dataHelper = ((CeiApplication) (this.getApplication())).dataHelper; ImageView downBtn = (ImageView) view; Preload preload = dataHelper.getPreload(classId); if (preload != null && preload.getLoadFinish() == 1) { downBtn.setOnClickListener(null); downBtn.setImageResource(R.drawable.phone_study_nodown_btn); } } }