Files
expert-app/app/src/main/java/cn/shangyu/gdxzExpert/activity/MyDownLoadCourseActivity.java
T
2025-11-18 15:12:24 +08:00

445 lines
14 KiB
Java

package cn.shangyu.gdxzExpert.activity;
import android.app.Dialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import com.gyf.immersionbar.ImmersionBar;
import java.io.File;
import java.util.ArrayList;
import cn.shangyu.gdxzExpert.R;
import cn.shangyu.gdxzExpert.base.BaseActivity;
import cn.shangyu.gdxzExpert.ecdemo.storage.CoursewareBookDownloadSqlManager;
import cn.shangyu.gdxzExpert.ecdemo.ui.chatting.model.DownloadModel;
import cn.shangyu.gdxzExpert.pulltorefreshview.PullToRefreshBase;
import cn.shangyu.gdxzExpert.pulltorefreshview.PullToRefreshBase.Mode;
import cn.shangyu.gdxzExpert.pulltorefreshview.PullToRefreshBase.OnRefreshListener;
import cn.shangyu.gdxzExpert.pulltorefreshview.PullToRefreshListView;
import cn.shangyu.gdxzExpert.utils.CommonUtil;
import cn.shangyu.gdxzExpert.utils.Constant;
import cn.shangyu.gdxzExpert.utils.SharePrefUtil;
import cn.shangyu.gdxzExpert.utils.TikaUtil;
import cn.shangyu.gdxzExpert.utils.ToastUtil;
import cn.shangyu.gdxzExpert.utils.UIUtils;
import cn.shangyu.gdxzExpert.widget.ECListDialog;
import cn.shangyu.gdxzExpert.widget.LoadingPage.ResultState;
public class MyDownLoadCourseActivity extends BaseActivity implements
OnItemClickListener, OnItemLongClickListener {
private PullToRefreshListView ptrLv;
private TextView load_empty;
private ArrayList<DownloadModel> list = new ArrayList<DownloadModel>();;
public final static int REQUESTCODE = 222;
private static MyDownLoadCourseActivity instance;
private CourseDownLoadAdapter mAdapter;
CoursewareBookDownloadSqlManager sq;
SQLiteDatabase db;
public static MyDownLoadCourseActivity getInstance() {
return instance;
}
@Override
public void setTitle() {
top_back_layout.setVisibility(View.VISIBLE);
top_title.setText("课件文档");
}
@Override
public View onCreateSuccessedView() {
ImmersionBar.with(this).keyboardEnable(true).statusBarDarkFont(true).titleBar(mToolbar).init();
View view = View.inflate(ct, R.layout.activity_my_download, null);
instance = this;
ptrLv = (PullToRefreshListView) view.findViewById(R.id.lv_item_down);// 下拉刷新的listview控件
// 处理正在加载,空,错误的布局
load_empty = (TextView) view.findViewById(R.id.load_empty);
ll_loading = (FrameLayout) view.findViewById(R.id.ll_loading);
ll_load_progress = (LinearLayout) view
.findViewById(R.id.ll_load_progress);
tv_load_fail = (TextView) view.findViewById(R.id.tv_load_fail);
// 设置只有下拉刷新
ptrLv.setMode(Mode.DISABLED);
// 得到实际的ListView 设置点击
ptrLv.getRefreshableView().setOnItemClickListener(this);
ptrLv.getRefreshableView().setOnItemLongClickListener(this);
ptrLv.setOnRefreshListener(new OnRefreshListener<ListView>() {
@Override
public void onRefresh(PullToRefreshBase<ListView> refreshView) {
// getDownLoadList(url);
}
});
db = openOrCreateDatabase("courseware.db", MODE_PRIVATE, null);
sq = new CoursewareBookDownloadSqlManager(db);
load_empty.setText("您暂未下载课件");
initData();
return view;
}
@Override
public ResultState onLoad() {
return ResultState.STATE_SUCCESSED;
}
/**
* 实例化数据
*/
private void initData() {
showProgressDialog("正在加载");
list.clear();
ArrayList<DownloadModel> downList;
ArrayList<DownloadModel> downListold;
downList = CoursewareBookDownloadSqlManager.getDownloadInfoByState(2);
downListold= CoursewareBookDownloadSqlManager.getDownloadInfoByState(4);
if (downListold != null &&!downListold.isEmpty())
{
if (downList == null || downList.isEmpty())
{
downList=new ArrayList<>();
}
downList.addAll(downListold);
}
if (downList == null || downList.isEmpty()) {
ptrLv.setEmptyView(load_empty);
} else {
for (int i = 0; i < downList.size(); i++) {
list.add(0, downList.get(i));
}
if (mAdapter == null) {
mAdapter = new CourseDownLoadAdapter();
ptrLv.getRefreshableView().setAdapter(mAdapter);
} else {
mAdapter.notifyDataSetChanged();
}
onLoaded();
}
closeProgressDialog();
}
public void notifyAdapter() {
if (mAdapter != null) {
mAdapter.notifyDataSetChanged();
}
}
/**
* 数据加载完成时,取消加载动画
*/
private void onLoaded() {
dismissLoadingProgress();
ptrLv.onRefreshComplete();
}
@Override
protected void processClick(View v) {
}
// android获取一个用于打开Word文件的intent
public void openWordFile(String Path, String uuid,int position) {
File file = new File(Path);
SharedPreferences sp = getSharedPreferences(SharePrefUtil.SP_DOWN, Context.MODE_PRIVATE);
String fileMD5_ = sp.getString(uuid+"fileMD5","");
String fileMD5 = TikaUtil.getFileMD5(file);
if (TextUtils.isEmpty(fileMD5_)){
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(file);
intent.setDataAndType(uri, "application/msword");
try {
ct.startActivity(intent);
} catch (ActivityNotFoundException e) {
ToastUtil.showToast("打开失败, 请安装相应应用!");
}
}else if (file.exists()&&fileMD5_.contains(fileMD5)) {
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(file);
intent.setDataAndType(uri, "application/msword");
try {
ct.startActivity(intent);
} catch (ActivityNotFoundException e) {
ToastUtil.showToast("打开失败, 请安装相应应用!");
}
} else {
list.remove(position);
CoursewareBookDownloadSqlManager.delDownladInfo(uuid);
mAdapter.notifyDataSetChanged();
if (list.isEmpty()) {
ptrLv.setEmptyView(load_empty);
}
CoursewareBookDownloadSqlManager.delDownladInfo(uuid);
ToastUtil.showToast("打开失败,已经删除,请重新下载!");
}
}
public void openPPTFile(String Path, String uuid,int position) {
File file = new File(Path);
SharedPreferences sp = getSharedPreferences(SharePrefUtil.SP_DOWN, Context.MODE_PRIVATE);
String fileMD5_ = sp.getString(uuid+"fileMD5","");
String fileMD5 = TikaUtil.getFileMD5(file);
if (TextUtils.isEmpty(fileMD5_)){
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(file);
intent.setDataAndType(uri, "application/vnd.ms-powerpoint");
try {
ct.startActivity(intent);
} catch (ActivityNotFoundException e) {
ToastUtil.showToast("打开失败, 请安装相应应用!");
}
}else if (file.exists()&&fileMD5_.contains(fileMD5)) {
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(file);
intent.setDataAndType(uri, "application/vnd.ms-powerpoint");
try {
ct.startActivity(intent);
} catch (ActivityNotFoundException e) {
ToastUtil.showToast("打开失败, 请安装相应应用!");
}
} else {
list.remove(position);
CoursewareBookDownloadSqlManager.delDownladInfo(uuid);
mAdapter.notifyDataSetChanged();
if (list.isEmpty()) {
ptrLv.setEmptyView(load_empty);
}
CoursewareBookDownloadSqlManager.delDownladInfo(uuid);
ToastUtil.showToast("打开失败,已经删除,请重新下载!");
}
}
public void openPDFFile(final String path, String uuid,int position) {
File file = new File(path);
SharedPreferences sp = getSharedPreferences(SharePrefUtil.SP_DOWN, Context.MODE_PRIVATE);
String fileMD5_ = sp.getString(uuid+"fileMD5","");
String fileMD5 = TikaUtil.getFileMD5(file);
if (TextUtils.isEmpty(fileMD5_)){
Intent intent1 = new Intent(MyDownLoadCourseActivity.this,PdfViewActivity.class);
intent1.putExtra("path",path);
intent1.putExtra("title","文献详情");
startActivity(intent1);
}else if (file.exists()&&fileMD5_.contains(fileMD5)) {
Intent intent1 = new Intent(MyDownLoadCourseActivity.this,PdfViewActivity.class);
intent1.putExtra("path",path);
intent1.putExtra("title","文献详情");
startActivity(intent1);
} else {
list.remove(position);
CoursewareBookDownloadSqlManager.delDownladInfo(uuid);
mAdapter.notifyDataSetChanged();
if (list.isEmpty()) {
ptrLv.setEmptyView(load_empty);
}
CoursewareBookDownloadSqlManager.delDownladInfo(uuid);
ToastUtil.showToast("打开失败,已经删除,请重新下载!");
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
int p = 0;
if (ptrLv.getRefreshableView().getHeaderViewsCount() > 0) {
p = position - ptrLv.getRefreshableView().getHeaderViewsCount();
}
String filePath = list.get(p).getFilePath();
String listUuid = list.get(p).getUuid();
if (!TextUtils.isEmpty(filePath)) {
if(filePath.contains(Constant.OldfilePath)||list.get(p).getState()==4)
{
Intent intent = new Intent(MyDownLoadCourseActivity.getInstance(), CourseUrlDetailActivity.class);
intent.putExtra("url", list.get(p).getPath());
intent.putExtra("title", list.get(p).getTitle());
intent.putExtra("uuid", list.get(p).getUuid());
// intent.putExtra("again_download",true);
// intent.putExtra("type", list.get(p).getType());
startActivity(intent);
return;
}
if (list.get(position - 1).getFileFormat() != null
&& list.get(position - 1).getFileFormat().contains("pdf")) {
openPDFFile(filePath, listUuid,p);
} else if (list.get(position - 1).getFileFormat() != null
&& list.get(position - 1).getFileFormat().contains("ppt")) {
openPPTFile(filePath, listUuid,p);
} else if (list.get(position - 1).getFileFormat() != null
&& list.get(position - 1).getFileFormat().contains("doc")) {
openWordFile(filePath, listUuid,p);
}
} else {
// 从数据库清除此下载记录
// list移除相应位置
list.remove(p);
CoursewareBookDownloadSqlManager.delDownladInfo(listUuid);
mAdapter.notifyDataSetChanged();
if (list.isEmpty()) {
ptrLv.setEmptyView(load_empty);
}
Intent intent = getIntent();
setResult(RESULT_OK, intent);
ToastUtil.showToast("文件不存在,请重新下载!");
}
}
/**
* 打开文件 openFile
*
* @param
* @param
*
* @param position
*/
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
int p = 0;
if (ptrLv.getRefreshableView().getHeaderViewsCount() > 0) {
p = position - ptrLv.getRefreshableView().getHeaderViewsCount();
}
String filePath = list.get(p).getFilePath();
String listUuid = list.get(p).getUuid();
if (!TextUtils.isEmpty(filePath)) {
delVisit(p, filePath, listUuid);
} else {
// 从数据库清除此下载记录
// list移除相应位置
list.remove(p);
CoursewareBookDownloadSqlManager.delDownladInfo(listUuid);
mAdapter.notifyDataSetChanged();
if (list.isEmpty()) {
ptrLv.setEmptyView(load_empty);
}
ToastUtil.showToast("文件不存在!");
}
return true;
}
public void delVisit(final int positions, final String path,
final String uuid) {
final ECListDialog dialog = new ECListDialog(instance,new String[] { "删除文章" });
dialog.setOnDialogItemClickListener(new ECListDialog.OnDialogItemClickListener() {
@Override
public void onDialogItemClick(Dialog d, int position) {
// canclePatient(CanclePatientUrl, patientUuid, uuid, p);
File file = new File(path);
if (file.exists()) {
file.delete();
}
// list移除相应位置
list.remove(positions);
CoursewareBookDownloadSqlManager.delDownladInfo(uuid);
mAdapter.notifyDataSetChanged();
if (list.isEmpty()) {
ptrLv.setEmptyView(load_empty);
}
dialog.dismiss();
}
});
dialog.setTitle("删除此文章");
dialog.show();
}
public class CourseDownLoadAdapter extends BaseAdapter {
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder vh = null;
if (convertView == null) {
if(CommonUtil.BigModule())
{
convertView = UIUtils.inflate(R.layout.activity_download_course_big);
}
else
{
convertView = UIUtils.inflate(R.layout.activity_download_course);
}
vh = new ViewHolder();
vh.mTv = (TextView) convertView
.findViewById(R.id.tv_download_course);
convertView.setTag(vh);
} else {
vh = (ViewHolder) convertView.getTag();
}
vh.mTv.setText(list.get(position).getTitle());
return convertView;
}
public class ViewHolder {
TextView mTv;
}
}
}