Commit da7093bf authored by 陈赛康's avatar 陈赛康

ocr导出+分享功能及业务完;搜索功能导出与分享待分离;

parent 0fdb8fa8
...@@ -10,8 +10,8 @@ android { ...@@ -10,8 +10,8 @@ android {
applicationId "cn.com.bril.androidocr.studio" applicationId "cn.com.bril.androidocr.studio"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 25 targetSdkVersion 25
versionCode 7 versionCode 14
versionName "2.7.0" versionName "3.4.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
} }
buildTypes { buildTypes {
......
...@@ -39,6 +39,9 @@ ...@@ -39,6 +39,9 @@
android:name=".ui.activity.OcrRecordActivity" android:name=".ui.activity.OcrRecordActivity"
android:launchMode="singleTask" /> android:launchMode="singleTask" />
<activity android:name=".ui.activity.SearchActivity"></activity> <activity android:name=".ui.activity.SearchActivity"></activity>
</application> </application>
</manifest> </manifest>
\ No newline at end of file
...@@ -8,8 +8,8 @@ import android.os.Environment; ...@@ -8,8 +8,8 @@ import android.os.Environment;
public class Configs { public class Configs {
public static String USER_NAME="部门负责人"; public static String USER_NAME="科员";
public static String USER_ID="12"; public static String USER_ID="11";
public final static String IMAGE_BASE= Environment public final static String IMAGE_BASE= Environment
.getExternalStorageDirectory().getPath() + "/documentocr/images"; .getExternalStorageDirectory().getPath() + "/documentocr/images";
...@@ -17,6 +17,7 @@ public class Configs { ...@@ -17,6 +17,7 @@ public class Configs {
.getExternalStorageDirectory().getPath() + "/documentocr/pdfs"; .getExternalStorageDirectory().getPath() + "/documentocr/pdfs";
public final static String TXT_BASE= Environment public final static String TXT_BASE= Environment
.getExternalStorageDirectory().getPath() + "/documentocr/txts"; .getExternalStorageDirectory().getPath() + "/documentocr/txts";
// public final static String TXT_BASE= "sdcard/documentocr/txts";
public final static String WORD_BASE= Environment public final static String WORD_BASE= Environment
.getExternalStorageDirectory().getPath() + "/documentocr/docs"; .getExternalStorageDirectory().getPath() + "/documentocr/docs";
} }
...@@ -22,14 +22,22 @@ public class RequestConfig { ...@@ -22,14 +22,22 @@ public class RequestConfig {
//分享记录 //分享记录
public static String SHARE_RECORD_URL=BASE_URL+"cc_sharing_records"; public static String SHARE_RECORD_URL=BASE_URL+"cc_sharing_records";
//批量导出 //批量导出
public static String BATCH_EXPORT_URL=BASE_URL+"cc_ocr_files/create/batch"; public static String BATCH_EXPORT_URL=BASE_URL+"cc_export_records/create/batch";
//批量删除 //批量删除
public static String BATCH_DELETE_URL=BASE_URL+"cc_export_records/delete/batch"; public static String BATCH_DELETE_URL=BASE_URL+"cc_export_records/delete/batch";
//文件下载 //文件下载
public static String DOWN_LOAD_URL=BASE_URL+"file_down"; public static String DOWN_LOAD_URL=BASE_URL+"file_down";
//分享单个文件
public final static String SHARE_ALONE_URL=BASE_URL+"cc_sharing_records/new";
//分享列表
public final static String SHARE_LIST_URL=BASE_URL+"cc_sharing_records";
//批量分享
public final static String BATCH_SHARE_URL=BASE_URL+"cc_sharing_records/create/batch";
//批量删除分享记录
public final static String BATCH_DELETE_SHARE_URL=BASE_URL+"cc_sharing_records/delete/batch";
//批量创建文件
public final static String BATCH_CREATE_FILE_URL=BASE_URL+"cc_files/create/batch";
//创建文件
public final static String CREATE_FILE_URL=BASE_URL+"cc_files/new";
} }
...@@ -13,12 +13,18 @@ import java.util.Iterator; ...@@ -13,12 +13,18 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import cn.com.bril.androidocr.studio.beans.OcrInfo;
import cn.com.bril.androidocr.studio.beans.OcrRootBean; import cn.com.bril.androidocr.studio.beans.OcrRootBean;
import cn.com.bril.androidocr.studio.beans.ShareInfo;
import cn.com.bril.androidocr.studio.configs.Configs;
import cn.com.bril.androidocr.studio.configs.RequestConfig; import cn.com.bril.androidocr.studio.configs.RequestConfig;
import cn.com.bril.androidocr.studio.interf.HttpFileCallBack;
import cn.com.bril.androidocr.studio.interf.OnHttpListener; import cn.com.bril.androidocr.studio.interf.OnHttpListener;
import cn.com.bril.androidocr.studio.ui.activity.VertifyActivity; import cn.com.bril.androidocr.studio.ui.activity.VertifyActivity;
import cn.com.bril.androidocr.studio.utils.GsonUtil; import cn.com.bril.androidocr.studio.utils.GsonUtil;
import static cn.com.bril.androidocr.studio.configs.RequestConfig.CREATE_FILE_URL;
/** /**
* Created by sunny on 2018-3-12. * Created by sunny on 2018-3-12.
*/ */
...@@ -38,7 +44,7 @@ public class HttpHolder { ...@@ -38,7 +44,7 @@ public class HttpHolder {
} }
x.http().post(params,callBack); x.http().post(params,callBack);
} }
//上传文件
public static void upLoadFile(String path, VertifyActivity.HttpCallBack callBack){ public static void upLoadFile(String path, VertifyActivity.HttpCallBack callBack){
RequestParams params=new RequestParams(RequestConfig.UP_FILE); RequestParams params=new RequestParams(RequestConfig.UP_FILE);
List<KeyValue> list = new ArrayList<>(); List<KeyValue> list = new ArrayList<>();
...@@ -49,7 +55,6 @@ public class HttpHolder { ...@@ -49,7 +55,6 @@ public class HttpHolder {
params.setRequestBody(body); params.setRequestBody(body);
x.http().post(params,callBack); x.http().post(params,callBack);
}; };
//创建记录 //创建记录
public static void createFileRecord(String url,Map<String,Object> map,Callback.CommonCallback<String> listener){ public static void createFileRecord(String url,Map<String,Object> map,Callback.CommonCallback<String> listener){
RequestParams params=new RequestParams(url); RequestParams params=new RequestParams(url);
...@@ -65,18 +70,12 @@ public class HttpHolder { ...@@ -65,18 +70,12 @@ public class HttpHolder {
} }
//批量导出 //批量导出
/**
*
* @param infos
* @param http
*/
public static void volumeExport(List<OcrRootBean.Superior> infos, final OnHttpListener http){ public static void volumeExport(List<OcrRootBean.Superior> infos, final OnHttpListener http){
RequestParams params=new RequestParams(RequestConfig.BATCH_EXPORT_URL); RequestParams params=new RequestParams(RequestConfig.BATCH_EXPORT_URL);
params.addHeader("X-Auth-Token","ocr"); params.addHeader("X-Auth-Token","ocr");
String json= GsonUtil.getInstance().toJson(infos); String json= GsonUtil.getInstance().toJson(infos);
params.addBodyParameter("params",json); params.addBodyParameter("params",json);
x.http().get(params, new Callback.CommonCallback<String>() { x.http().post(params, new Callback.CommonCallback<String>() {
@Override @Override
public void onSuccess(String result) { public void onSuccess(String result) {
http.success("",result); http.success("",result);
...@@ -93,7 +92,7 @@ public class HttpHolder { ...@@ -93,7 +92,7 @@ public class HttpHolder {
} }
}); });
} }
//批量删除 //批量删除导出记录
public static void volumeDelete(final List<OcrRootBean.Superior> list, final OnHttpListener listener){ public static void volumeDelete(final List<OcrRootBean.Superior> list, final OnHttpListener listener){
JSONArray array= new JSONArray(); JSONArray array= new JSONArray();
for(int i=0;i<list.size();i++) for(int i=0;i<list.size();i++)
...@@ -118,15 +117,79 @@ public class HttpHolder { ...@@ -118,15 +117,79 @@ public class HttpHolder {
} }
}); });
} }
//单个下载 //单个下载
public static void downLoad(Map<String,String> map,MainHttpCallBack callBack){ public static void downLoad(Map<String,String> map, HttpFileCallBack callBack){
RequestParams params=new RequestParams(RequestConfig.DOWN_LOAD_URL); RequestParams params=new RequestParams(RequestConfig.DOWN_LOAD_URL);
Iterator<Map.Entry<String,String>> it = map.entrySet().iterator(); Iterator<Map.Entry<String,String>> it = map.entrySet().iterator();
while (it.hasNext()){ while (it.hasNext()){
Map.Entry<String,String> entry = it.next(); Map.Entry<String,String> entry = it.next();
if(entry.getKey().equals("downloadName")){
if(entry.getValue().contains("doc"))
params.setSaveFilePath(Configs.WORD_BASE+"/"+entry.getValue().substring(entry.getValue().lastIndexOf("/")+1));
}
params.addBodyParameter(entry.getKey(),String.valueOf(entry.getValue())); params.addBodyParameter(entry.getKey(),String.valueOf(entry.getValue()));
} }
x.http().get(params,callBack); x.http().get(params,callBack);
} }
//分享单个文件
public static void shareCcFile(OcrInfo info, VertifyActivity.HttpCallBack callBack){
RequestParams params=new RequestParams(RequestConfig.SHARE_ALONE_URL);
params.addHeader("X-Auth-Token","share");
params.addBodyParameter("sharingPeple", Configs.USER_NAME+"_"+Configs.USER_ID);
params.addBodyParameter("type","0");
params.addBodyParameter("fileId",info.getId());
params.addBodyParameter("fileName",info.getFileName());
params.addBodyParameter("filePath",info.getFilePath());
x.http().post(params,callBack);
}
//批量分享
public static void batchShareCcFile(List<ShareInfo> infos, MainHttpCallBack callBack) {
RequestParams params = new RequestParams(RequestConfig.BATCH_SHARE_URL);
params.addHeader("X-Auth-Token", "share");
params.addBodyParameter("params", GsonUtil.getInstance().toJson(infos));
x.http().post(params, callBack);
}
//批量删除分享记录
public static void batchDeleteShareRecord(List<ShareInfo> list,MainHttpCallBack callBack){
RequestParams params=new RequestParams(RequestConfig.BATCH_DELETE_SHARE_URL);
JSONArray array= new JSONArray();
for(int i=0;i<list.size();i++)
array.put(list.get(i).getId());
params.addBodyParameter("ids",array.toString());
x.http().post(params,callBack);
}
//批量创建文件
public static void batchCreateFiles(List<OcrRootBean.Cc_file> files,MainHttpCallBack callBack){
List<OcrRootBean.Cc_file> newFiles=new ArrayList<>();
OcrRootBean.Cc_file cc_file;
for(OcrRootBean.Cc_file file:files){
cc_file=new OcrRootBean.Cc_file(file.getFileName(),file.getFilePath(),file.getFileSuffix(),file.getUploadPeple(),file.getFileType());
newFiles.add(cc_file);
}
RequestParams params=new RequestParams(RequestConfig.BATCH_CREATE_FILE_URL);
params.addHeader("X-Auth-Token","batch_create");
params.addBodyParameter("params",GsonUtil.getInstance().toJson(newFiles));
x.http().post(params,callBack);
}
//创建文件
public static void newFileCreate(OcrRootBean.Cc_file cc_file,MainHttpCallBack callBack){
RequestParams params=new RequestParams(CREATE_FILE_URL);
params.addHeader("X-Auth-Token","new");
params.addBodyParameter("fileName",cc_file.getFileName());
params.addBodyParameter("filePath",cc_file.getFilePath());
params.addBodyParameter("fileSuffix",cc_file.getFileSuffix());
params.addBodyParameter("uploadPeple",Configs.USER_NAME+"_"+Configs.USER_ID);
params.addBodyParameter("fileType",cc_file.getFileType());
x.http().post(params,callBack);
}
//编辑分享记录
public static void editShareRecord(String id,String name,MainHttpCallBack callBack){
String url=RequestConfig.SHARE_LIST_URL+"/"+id+"/edit";
RequestParams params=new RequestParams(url);
params.addHeader("X-Auth-Token","edit");
params.addBodyParameter("fileName",name);
x.http().post(params,callBack);
}
} }
package cn.com.bril.androidocr.studio.ui.activity; package cn.com.bril.androidocr.studio.ui.activity;
import android.Manifest;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.ServiceConnection; import android.content.ServiceConnection;
import android.content.pm.PackageManager;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder; import android.os.IBinder;
import android.os.Message;
import android.os.RemoteException; import android.os.RemoteException;
import android.support.annotation.IdRes; import android.support.annotation.IdRes;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.design.widget.FloatingActionButton; import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.Gravity; import android.view.Gravity;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.EditText;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.PopupWindow; import android.widget.PopupWindow;
...@@ -34,39 +35,26 @@ import android.widget.Toast; ...@@ -34,39 +35,26 @@ import android.widget.Toast;
import com.bril.baoding.studio.aidl.GetUserid; import com.bril.baoding.studio.aidl.GetUserid;
import com.scanlibrary.ScanConstants; import com.scanlibrary.ScanConstants;
import org.json.JSONException;
import org.json.JSONObject;
import org.xutils.http.RequestParams;
import org.xutils.x;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.OnClick; import butterknife.OnClick;
import cn.com.bril.androidocr.studio.OcrApplication; import cn.com.bril.androidocr.studio.OcrApplication;
import cn.com.bril.androidocr.studio.R; import cn.com.bril.androidocr.studio.R;
import cn.com.bril.androidocr.studio.beans.OcrRootBean;
import cn.com.bril.androidocr.studio.configs.Configs; import cn.com.bril.androidocr.studio.configs.Configs;
import cn.com.bril.androidocr.studio.configs.RequestConfig;
import cn.com.bril.androidocr.studio.http.HttpHolder;
import cn.com.bril.androidocr.studio.http.MainHttpCallBack;
import cn.com.bril.androidocr.studio.interf.HandleMenuListener; import cn.com.bril.androidocr.studio.interf.HandleMenuListener;
import cn.com.bril.androidocr.studio.interf.OnHttpListener;
import cn.com.bril.androidocr.studio.ui.adapter.FragmentListAdapter;
import cn.com.bril.androidocr.studio.ui.adapter.TabFragmentPagerAdapter; import cn.com.bril.androidocr.studio.ui.adapter.TabFragmentPagerAdapter;
import cn.com.bril.androidocr.studio.ui.fragment.ExportFragment; import cn.com.bril.androidocr.studio.ui.fragment.ExportFragment;
import cn.com.bril.androidocr.studio.ui.fragment.ShareFragment; import cn.com.bril.androidocr.studio.ui.fragment.ShareFragment;
import cn.com.bril.androidocr.studio.ui.widget.NoScrollViewPager; import cn.com.bril.androidocr.studio.ui.widget.NoScrollViewPager;
import cn.com.bril.androidocr.studio.utils.CustomDialogUtils;
import cn.com.bril.androidocr.studio.utils.FileUtil;
import cn.com.bril.androidocr.studio.utils.ScreenUtil; import cn.com.bril.androidocr.studio.utils.ScreenUtil;
import cn.com.bril.androidocr.studio.utils.ViewUtil; import cn.com.bril.androidocr.studio.utils.ViewUtil;
public class MainActivity extends BaseActivity implements FragmentListAdapter.ListTextClickListener, View.OnClickListener, HandleMenuListener, ExportFragment.NoticeMessageToMain, OnHttpListener { import static cn.com.bril.androidocr.studio.configs.RequestConfig.PERMISSION_REQUEST_CODE;
public class MainActivity extends BaseActivity implements View.OnClickListener, HandleMenuListener, ExportFragment.NoticeMessageToMain {
@BindView(R.id.layout_1) @BindView(R.id.layout_1)
...@@ -124,21 +112,19 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li ...@@ -124,21 +112,19 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li
private int type;//获取图片类型 private int type;//获取图片类型
private GetUserid mService; private GetUserid mService;
private boolean isTabMenuShow = false;
private List<Fragment> fragmentList; private List<Fragment> fragmentList;
private ServiceConnection mServiceConnection = new ServiceConnection() { private ServiceConnection mServiceConnection = new ServiceConnection() {
@Override @Override
public void onServiceDisconnected(ComponentName arg0) { public void onServiceDisconnected(ComponentName arg0) {
mService = null; mService = null;
} }
@Override @Override
public void onServiceConnected(ComponentName arg0, IBinder arg1) { public void onServiceConnected(ComponentName arg0, IBinder arg1) {
mService = GetUserid.Stub.asInterface(arg1); mService = GetUserid.Stub.asInterface(arg1);
try { try {
Configs.USER_ID = mService.getUserid() + ""; Configs.USER_ID = mService.getUserid() + "";
Configs.USER_NAME = mService.getUsername(); Configs.USER_NAME = mService.getUsername();
Log.e("TAG", Configs.USER_ID+";"+ Configs.USER_NAME );
} catch (RemoteException e) { } catch (RemoteException e) {
e.printStackTrace(); e.printStackTrace();
...@@ -148,13 +134,10 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li ...@@ -148,13 +134,10 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li
private AlertDialog dialog; private AlertDialog dialog;
private ExportFragment exportFragment; private ExportFragment exportFragment;
private ShareFragment shareFragment; private ShareFragment shareFragment;
private List<OcrRootBean> selectedInfos;
private OcrRootBean clickedBean;
private EditText reNameEdit;//更改文件名
private TabFragmentPagerAdapter adapter; private TabFragmentPagerAdapter adapter;
private boolean isAllSelected = false; private boolean isAllSelected = false;
private ArrayList<Uri> shareFileUris;
private PopupWindow rightMenuWindow; private PopupWindow rightMenuWindow;
int selectedCount=0;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
...@@ -171,6 +154,8 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li ...@@ -171,6 +154,8 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li
initEvents(); initEvents();
checkPermission();
dialog = new ProgressDialog(this); dialog = new ProgressDialog(this);
} }
...@@ -179,7 +164,20 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li ...@@ -179,7 +164,20 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li
intent.setPackage("com.bril.baoding.studio"); intent.setPackage("com.bril.baoding.studio");
bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE); bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE);
} }
public void checkPermission() {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
//权限还没有授予,需要在这里写申请权限的代码
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE},
PERMISSION_REQUEST_CODE);
} else {
//权限已经被授予,在这里直接写要执行的相应方法即可
// creatDir(Configs.IMAGE_CACHE);
// getIntentData();
}
}
private void initViews() { private void initViews() {
rightIv.setVisibility(View.VISIBLE); rightIv.setVisibility(View.VISIBLE);
rightTv.setVisibility(View.GONE); rightTv.setVisibility(View.GONE);
...@@ -196,10 +194,6 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li ...@@ -196,10 +194,6 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li
} }
public void setIconSize() { public void setIconSize() {
//设置bottom icon 大小 //设置bottom icon 大小
...@@ -260,6 +254,17 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li ...@@ -260,6 +254,17 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li
}); });
} }
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode==PERMISSION_REQUEST_CODE){
for(int grant: grantResults){
if(grant!=PackageManager.PERMISSION_GRANTED)
Toast.makeText(this,"请开启读取与写入权限",Toast.LENGTH_SHORT).show();
}
}
}
@Override @Override
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
...@@ -332,8 +337,6 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li ...@@ -332,8 +337,6 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li
// rightMenuWindow.showAsDropDown(rightIv); // rightMenuWindow.showAsDropDown(rightIv);
} }
@Override @Override
public void onBackPressed() { public void onBackPressed() {
if (tabBottom.getVisibility() == View.VISIBLE) { if (tabBottom.getVisibility() == View.VISIBLE) {
...@@ -348,46 +351,27 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li ...@@ -348,46 +351,27 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li
} }
} }
@Override
public void onListTextCallBack(OcrRootBean info) {
clickedBean = info;
View view = LayoutInflater.from(this).inflate(R.layout.rename_dialog_layout, null);
view.findViewById(R.id.normal_name).setOnClickListener(this);
view.findViewById(R.id.positive).setOnClickListener(this);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(view);
reNameEdit = (EditText) view.findViewById(R.id.edit);
reNameEdit.setHint(info.getIncludes().getCc_file().getFileName());
dialog = builder.create();
dialog.show();
CustomDialogUtils.setDialogSize(this, dialog);
}
@Override @Override
public void onClick(View v) { public void onClick(View v) {
switch (v.getId()) { switch (v.getId()) {
case R.id.positive:
reNameFile();
dialog.dismiss();
break;
case R.id.normal_name:
dialog.dismiss();
break;
case R.id.export:
HttpHolder.volumeExport(reStatusList(0), this);
break;
case R.id.share: case R.id.share:
if (selectedInfos != null && selectedInfos.size() > 0) { if (selectedCount> 0) {
// Toast.makeText(this,"正在检测需下载文件,请稍等...",Toast.LENGTH_SHORT).show(); setHandleMenu(View.GONE);
if(viewPager.getCurrentItem()==0)
getNotLoadFilesAndLoad(selectedInfos); exportFragment.handleShareAction();
else
shareFragment.handleShareAction();
} else } else
Toast.makeText(this, "请选择要分享的数据", Toast.LENGTH_SHORT).show(); Toast.makeText(this, "请选择要分享的数据", Toast.LENGTH_SHORT).show();
break; break;
case R.id.delete: case R.id.delete:
if (selectedInfos != null && selectedInfos.size() > 0) { if (selectedCount > 0) {
setHandleMenu(View.GONE); setHandleMenu(View.GONE);
HttpHolder.volumeDelete(reStatusList(-1), this); if(viewPager.getCurrentItem()==0)
exportFragment.handleDeleteAction();
else
shareFragment.handleDeletAction();
} else } else
Toast.makeText(this, "请选择要删除的数据", Toast.LENGTH_SHORT).show(); Toast.makeText(this, "请选择要删除的数据", Toast.LENGTH_SHORT).show();
break; break;
...@@ -405,26 +389,6 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li ...@@ -405,26 +389,6 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li
} }
} }
public List<OcrRootBean.Superior> reStatusList(int type) {
List<OcrRootBean.Superior> list = new ArrayList<>();
for (OcrRootBean info : selectedInfos) {
if (type != -1)
info.getSuperior().setType(type);
list.add(info.getSuperior());
}
return list;
}
private void reNameFile() {
String url = RequestConfig.EDIT_FILE_URL + clickedBean.getSuperior().getFileId() + "/edit";
RequestParams params = new RequestParams(url);
params.addHeader("X-Auth-Token", "1");
String lastName=clickedBean.getIncludes().getCc_file().getFileName();
params.addBodyParameter("fileName", reNameEdit.getText().toString()+lastName.substring(lastName.indexOf(".")));
//缺少修改人
x.http().post(params, new MainHttpCallBack("edit", this));
}
@Override @Override
public void setHandleMenu(int v) { public void setHandleMenu(int v) {
if (View.GONE == v) { if (View.GONE == v) {
...@@ -433,7 +397,7 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li ...@@ -433,7 +397,7 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li
topBarLayout.setVisibility(View.VISIBLE); topBarLayout.setVisibility(View.VISIBLE);
mainBottomMenu.setVisibility(View.VISIBLE); mainBottomMenu.setVisibility(View.VISIBLE);
viewPager.setScanScroll(true); viewPager.setScanScroll(true);
adapter.notifyDataSetChanged(); // adapter.notifyDataSetChanged();
} else { } else {
tabHead.setVisibility(View.VISIBLE); tabHead.setVisibility(View.VISIBLE);
tabBottom.setVisibility(View.VISIBLE); tabBottom.setVisibility(View.VISIBLE);
...@@ -444,122 +408,10 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li ...@@ -444,122 +408,10 @@ public class MainActivity extends BaseActivity implements FragmentListAdapter.Li
} }
} }
private void getNotLoadFilesAndLoad(List<OcrRootBean> list) {
List<OcrRootBean> loadBeans = new ArrayList<>();
shareFileUris = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
OcrRootBean.Cc_file cc_file = list.get(i).getIncludes().getCc_file();
String type = cc_file.getFileName().substring(cc_file.getFileName().indexOf(".") + 1);
String filePath = "";
if ("doc".equals(type) || "docs".equals(type))
filePath = Configs.WORD_BASE + "/" + cc_file.getFileName();
else if ("txt".equals(type))
filePath = Configs.TXT_BASE + "/" + cc_file.getFileName();
else if ("pdf".equals(type))
filePath = Configs.PDF_BASE + "/" + cc_file.getFileName();
shareFileUris.add(Uri.parse(filePath));
if (!FileUtil.isFileExist(filePath))
loadBeans.add(selectedInfos.get(i));
}
if (loadBeans.size() != 0) {
dialog.setMessage("正在下载,请稍后");
dialog.show();
loadFile(loadBeans.get(0));
handler = new LoadFileHandler(loadBeans);
}
}
private void loadFile(OcrRootBean bean) {
Map<String, String> map = new HashMap<>();
map.put("fileName", bean.getIncludes().getCc_file().getFilePath());
map.put("downloadName", bean.getIncludes().getCc_file().getFileName());
HttpHolder.downLoad(map, new MainHttpCallBack("batch_load", this));
}
private LoadFileHandler handler;
private int loadIndex = 0;
public class LoadFileHandler extends Handler {
List<OcrRootBean> loadList;
public LoadFileHandler(List<OcrRootBean> list) {
loadList = list;
}
@Override
public void handleMessage(Message msg) {
int position = msg.arg1;
switch (msg.what) {
case 0:
Toast.makeText(MainActivity.this, loadList.get(position).getIncludes().getCc_file().getFileName() + "下载失败,请稍后重试", Toast.LENGTH_SHORT).show();
break;
case 1:
loadIndex++;
if (loadIndex < loadList.size())
loadFile(loadList.get(loadIndex));
else {
dialog.dismiss();
handleShareAction(selectedInfos);
}
break;
}
}
}
private void handleShareAction(List<OcrRootBean> rootBeen) {
//分享文件
Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);//发送多个文件
intent.setType("*/*");//多个文件格式
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, shareFileUris);//Intent.EXTRA_STREAM同于传输文件流
startActivity(Intent.createChooser(intent, "多文件分享"));
setHandleMenu(View.GONE);
}
@Override @Override
public void noticeMessage(List<OcrRootBean> list) { public void noticeMessage(int size) {
selectedInfos = list; selectedCount=size;
num.setText("已选择" + list.size() + "个"); num.setText("已选择" + size + "个");
} }
//xutils的接口回调
@Override
public void success(String type, String result) {
if ("edit".equals(type)) {
Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show();
adapter.notifyDataSetChanged();
} else if ("delete".equals(type)) {
try {
JSONObject object = new JSONObject(result);
String data = object.getString("message");
if (data.contains("success")) {
Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();
adapter.notifyDataSetChanged();
}
} catch (JSONException e) {
e.printStackTrace();
}
} else if ("download".equals(type)) {
Toast.makeText(this, "下载成功,再次点击可进行查看", Toast.LENGTH_SHORT).show();
} else if ("batch_load".equals(type)) {
Message message = Message.obtain();
message.arg1 = loadIndex;
message.what = 1;
handler.sendMessage(message);
}
}
@Override
public void error(String type, Throwable t) {
if ("batch_load".equals(type)) {
Message message = Message.obtain();
message.arg1 = loadIndex;
handler.sendMessage(message);
} else
Toast.makeText(this, "网络连接异常,请调试=" + t.getMessage(), Toast.LENGTH_SHORT).show();
}
} }
...@@ -44,6 +44,7 @@ import cn.com.bril.androidocr.studio.R; ...@@ -44,6 +44,7 @@ import cn.com.bril.androidocr.studio.R;
import cn.com.bril.androidocr.studio.beans.ExportInfo; import cn.com.bril.androidocr.studio.beans.ExportInfo;
import cn.com.bril.androidocr.studio.beans.Image; import cn.com.bril.androidocr.studio.beans.Image;
import cn.com.bril.androidocr.studio.beans.OcrInfo; import cn.com.bril.androidocr.studio.beans.OcrInfo;
import cn.com.bril.androidocr.studio.beans.ShareInfo;
import cn.com.bril.androidocr.studio.configs.Configs; import cn.com.bril.androidocr.studio.configs.Configs;
import cn.com.bril.androidocr.studio.configs.RequestConfig; import cn.com.bril.androidocr.studio.configs.RequestConfig;
import cn.com.bril.androidocr.studio.http.HttpHolder; import cn.com.bril.androidocr.studio.http.HttpHolder;
...@@ -85,7 +86,7 @@ public class VertifyActivity extends AppCompatActivity { ...@@ -85,7 +86,7 @@ public class VertifyActivity extends AppCompatActivity {
private String statusType; private String statusType;
private OcrInfo ocrInfo; private OcrInfo ocrInfo;
File shareFile;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
...@@ -236,7 +237,6 @@ public class VertifyActivity extends AppCompatActivity { ...@@ -236,7 +237,6 @@ public class VertifyActivity extends AppCompatActivity {
// handler.sendEmptyMessageDelayed(1,500); // handler.sendEmptyMessageDelayed(1,500);
statusType="0"; statusType="0";
exportPdf(); exportPdf();
break; break;
case R.id.radio1: case R.id.radio1:
img.setTextColor(getResources().getColor(R.color.yellow)); img.setTextColor(getResources().getColor(R.color.yellow));
...@@ -292,34 +292,35 @@ public class VertifyActivity extends AppCompatActivity { ...@@ -292,34 +292,35 @@ public class VertifyActivity extends AppCompatActivity {
} }
private void exportDoc(String type) { private void exportDoc(String type) {
if(null==ocrInfo) if (null == ocrInfo){
try { try {
String filename = image.getName().replace("jpg", "doc"); String filename = image.getName().replace("jpg", "doc");
String path = Configs.WORD_BASE + "/" + filename; String path = Configs.WORD_BASE + "/" + filename;
String content = "检务通识别文档\n " + recogniztion; String content = "检务通识别文档\n " + recogniztion;
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(recogniztion.getBytes("GB2312")); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(content.getBytes("GB2312"));
POIFSFileSystem fileSystem = new POIFSFileSystem(); POIFSFileSystem fileSystem = new POIFSFileSystem();
DirectoryEntry directory = fileSystem.getRoot(); DirectoryEntry directory = fileSystem.getRoot();
directory.createDocument("WordDocument", byteArrayInputStream); directory.createDocument("WordDocument", byteArrayInputStream);
FileOutputStream fileOutputStream = new FileOutputStream(path); FileOutputStream fileOutputStream = new FileOutputStream(path);
fileSystem.writeFilesystem(fileOutputStream); fileSystem.writeFilesystem(fileOutputStream);
byteArrayInputStream.close(); byteArrayInputStream.close();
fileOutputStream.close(); fileOutputStream.close();
if("share".equals(type)) shareFile = new File(path);
ShareUtil.shareFile(this,new File(path)); // if("share".equals(type))
// ShareUtil.shareFile(this,new File(path));
HttpHolder.upLoadFile(path, new HttpCallBack("upload")); HttpHolder.upLoadFile(path, new HttpCallBack("upload"));
} catch (IOException e) {
} catch (IOException e) { Log.e("TAG", e.getMessage());
}
}else{ }else{
Map<String,Object> map=new HashMap<>(); Map<String,Object> map=new HashMap<>();
map.put("header","X-Auth-Token"); map.put("header","X-Auth-Token");
map.put("fileId",ocrInfo.getId()); map.put("fileId",ocrInfo.getId());
map.put("exportUser",Configs.USER_NAME + "_" + Configs.USER_ID); map.put("exportUser",Configs.USER_NAME + "_" + Configs.USER_ID);
map.put("type",statusType);//0导出;2分享 map.put("type",statusType);//0导出;2分享
HttpHolder.createFileRecord(RequestConfig.EXPORT_CREATE_URL,map,new HttpCallBack(statusType)); HttpHolder.createFileRecord(RequestConfig.EXPORT_CREATE_URL,map,new HttpCallBack(statusType));
}
} }
}
public class HttpCallBack implements Callback.CommonCallback<String>{ public class HttpCallBack implements Callback.CommonCallback<String>{
String httpType; String httpType;
...@@ -333,12 +334,17 @@ public class VertifyActivity extends AppCompatActivity { ...@@ -333,12 +334,17 @@ public class VertifyActivity extends AppCompatActivity {
JSONObject object = new JSONObject(result); JSONObject object = new JSONObject(result);
String filePath = object.getString("message"); String filePath = object.getString("message");
String fileName = filePath.substring(4); String fileName = filePath.substring(4);
String suffix="";
if(fileName.contains("txt"))
suffix="txt";
else if(fileName.contains("doc") || fileName.contains("docs"))
suffix="doc";
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("header", filePath); map.put("header", filePath);
map.put("filePath", filePath); map.put("filePath", filePath);
map.put("fileName", fileName); map.put("fileName", fileName);
map.put("fileSuffix",fileName.substring(fileName.indexOf(".")+1)); map.put("fileSuffix",suffix);
map.put("status","ocr"); map.put("fileType","ocr");
map.put("uploadPeple", Configs.USER_NAME + "_" + Configs.USER_ID); map.put("uploadPeple", Configs.USER_NAME + "_" + Configs.USER_ID);
HttpHolder.exportFile(RequestConfig.ADD_URL, map, new HttpCallBack("create_file")); HttpHolder.exportFile(RequestConfig.ADD_URL, map, new HttpCallBack("create_file"));
} catch (JSONException e) { } catch (JSONException e) {
...@@ -347,14 +353,17 @@ public class VertifyActivity extends AppCompatActivity { ...@@ -347,14 +353,17 @@ public class VertifyActivity extends AppCompatActivity {
}else if("create_file".equals(httpType)){ }else if("create_file".equals(httpType)){
ocrInfo = GsonUtil.getInstance().fromJson(result, new TypeToken<OcrInfo>() { ocrInfo = GsonUtil.getInstance().fromJson(result, new TypeToken<OcrInfo>() {
}.getType()); }.getType());
if(statusType.equals("0")){
Map<String,Object> map=new HashMap<>(); Map<String,Object> map=new HashMap<>();
map.put("header","X-Auth-Token"); map.put("header","X-Auth-Token");
map.put("fileId",ocrInfo.getId()); map.put("fileId",ocrInfo.getId());
map.put("exportUser",Configs.USER_NAME + "_" + Configs.USER_ID); map.put("exportUser",Configs.USER_NAME + "_" + Configs.USER_ID);
map.put("type",statusType);//0导出;1分享 map.put("type",statusType);//0导出;2分享
HttpHolder.createFileRecord(RequestConfig.EXPORT_CREATE_URL,map,new HttpCallBack(statusType)); HttpHolder.createFileRecord(RequestConfig.EXPORT_CREATE_URL,map,new HttpCallBack(statusType));
}else if("0".equals(httpType)){ }else{
HttpHolder.shareCcFile(ocrInfo,new HttpCallBack("share"));
}
}else if("0".equals(httpType)){
if(dialog!=null && dialog.isShowing()) if(dialog!=null && dialog.isShowing())
dialog.dismiss(); dialog.dismiss();
ExportInfo exportInfo= GsonUtil.getInstance().fromJson(result, new TypeToken<ExportInfo>() { ExportInfo exportInfo= GsonUtil.getInstance().fromJson(result, new TypeToken<ExportInfo>() {
...@@ -362,12 +371,14 @@ public class VertifyActivity extends AppCompatActivity { ...@@ -362,12 +371,14 @@ public class VertifyActivity extends AppCompatActivity {
if(null!=exportInfo){ if(null!=exportInfo){
Toast.makeText(VertifyActivity.this,"导出成功,请在文件管理/documentocr下查看",Toast.LENGTH_SHORT).show(); Toast.makeText(VertifyActivity.this,"导出成功,请在文件管理/documentocr下查看",Toast.LENGTH_SHORT).show();
} }
}else if ("1".equals(httpType)){ }else if ("share".equals(httpType)){
ExportInfo exportInfo= GsonUtil.getInstance().fromJson(result, new TypeToken<ExportInfo>() { ShareInfo shareInfo= GsonUtil.getInstance().fromJson(result, new TypeToken<ShareInfo>() {
}.getType()); }.getType());
if(null==exportInfo){
if(null==shareInfo){
Toast.makeText(VertifyActivity.this,"分享记录提交失败,请重新尝试",Toast.LENGTH_SHORT).show(); Toast.makeText(VertifyActivity.this,"分享记录提交失败,请重新尝试",Toast.LENGTH_SHORT).show();
} }else
ShareUtil.shareFile(VertifyActivity.this,shareFile);
} }
} }
......
...@@ -7,6 +7,7 @@ import android.view.ViewGroup; ...@@ -7,6 +7,7 @@ import android.view.ViewGroup;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.CompoundButton; import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -51,6 +52,7 @@ public class FragmentListAdapter extends BaseAdapter { ...@@ -51,6 +52,7 @@ public class FragmentListAdapter extends BaseAdapter {
} }
return newInfos; return newInfos;
} }
@Override @Override
public int getCount() { public int getCount() {
return infos.size(); return infos.size();
...@@ -75,6 +77,7 @@ public class FragmentListAdapter extends BaseAdapter { ...@@ -75,6 +77,7 @@ public class FragmentListAdapter extends BaseAdapter {
holder.title= (TextView)convertView .findViewById(R.id.title); holder.title= (TextView)convertView .findViewById(R.id.title);
holder.time= (TextView) convertView.findViewById(R.id.time); holder.time= (TextView) convertView.findViewById(R.id.time);
holder.radioButton= (CheckBox) convertView.findViewById(R.id.radio); holder.radioButton= (CheckBox) convertView.findViewById(R.id.radio);
holder.iv= (ImageView) convertView.findViewById(R.id.icon);
convertView.setTag(holder); convertView.setTag(holder);
}else }else
holder= (ViewHolder) convertView.getTag(); holder= (ViewHolder) convertView.getTag();
...@@ -88,6 +91,17 @@ public class FragmentListAdapter extends BaseAdapter { ...@@ -88,6 +91,17 @@ public class FragmentListAdapter extends BaseAdapter {
else else
fileName=s; fileName=s;
holder.title.setText(fileName); holder.title.setText(fileName);
String suffix=info.getIncludes().getCc_file().getFileSuffix();
if(suffix!=null){
if(suffix.contains("txt"))
holder.iv.setImageDrawable(context.getResources().getDrawable(R.drawable.txt));
else if(suffix.contains("doc"))
holder.iv.setImageDrawable(context.getResources().getDrawable(R.drawable.word));
else if(suffix.contains("pdf"))
holder.iv.setImageDrawable(context.getResources().getDrawable(R.drawable.word));
}else
holder.iv.setImageDrawable(context.getResources().getDrawable(R.drawable.word));
holder.title.setOnClickListener(new ListTextOnClickListener(position)); holder.title.setOnClickListener(new ListTextOnClickListener(position));
holder.radioButton.setVisibility(show); holder.radioButton.setVisibility(show);
holder.radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { holder.radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
...@@ -109,7 +123,7 @@ public class FragmentListAdapter extends BaseAdapter { ...@@ -109,7 +123,7 @@ public class FragmentListAdapter extends BaseAdapter {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
listTextClickListener.onListTextCallBack(infos.get(position)); listTextClickListener.onListTextCallBack(position);
} }
} }
...@@ -118,10 +132,11 @@ public class FragmentListAdapter extends BaseAdapter { ...@@ -118,10 +132,11 @@ public class FragmentListAdapter extends BaseAdapter {
} }
public interface ListTextClickListener{ public interface ListTextClickListener{
void onListTextCallBack(OcrRootBean info); void onListTextCallBack(int postion);
} }
class ViewHolder{ class ViewHolder{
TextView title,time; TextView title,time;
ImageView iv;
CheckBox radioButton; CheckBox radioButton;
} }
} }
package cn.com.bril.androidocr.studio.ui.fragment; package cn.com.bril.androidocr.studio.ui.fragment;
import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ListView; import android.widget.ListView;
import android.widget.Toast; import android.widget.Toast;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import org.json.JSONException;
import org.json.JSONObject;
import org.xutils.common.Callback; import org.xutils.common.Callback;
import org.xutils.http.RequestParams; import org.xutils.http.RequestParams;
import org.xutils.x; import org.xutils.x;
...@@ -27,22 +33,28 @@ import java.util.List; ...@@ -27,22 +33,28 @@ import java.util.List;
import cn.com.bril.androidocr.studio.R; import cn.com.bril.androidocr.studio.R;
import cn.com.bril.androidocr.studio.beans.OcrRootBean; import cn.com.bril.androidocr.studio.beans.OcrRootBean;
import cn.com.bril.androidocr.studio.beans.ShareInfo;
import cn.com.bril.androidocr.studio.configs.Configs; import cn.com.bril.androidocr.studio.configs.Configs;
import cn.com.bril.androidocr.studio.configs.RequestConfig; import cn.com.bril.androidocr.studio.configs.RequestConfig;
import cn.com.bril.androidocr.studio.http.HttpHolder;
import cn.com.bril.androidocr.studio.http.MainHttpCallBack;
import cn.com.bril.androidocr.studio.interf.HandleMenuListener; import cn.com.bril.androidocr.studio.interf.HandleMenuListener;
import cn.com.bril.androidocr.studio.interf.OnHttpListener;
import cn.com.bril.androidocr.studio.ui.adapter.FragmentListAdapter; import cn.com.bril.androidocr.studio.ui.adapter.FragmentListAdapter;
import cn.com.bril.androidocr.studio.ui.pulltorefresh.PullToRefreshBase; import cn.com.bril.androidocr.studio.ui.pulltorefresh.PullToRefreshBase;
import cn.com.bril.androidocr.studio.ui.pulltorefresh.PullToRefreshListView; import cn.com.bril.androidocr.studio.ui.pulltorefresh.PullToRefreshListView;
import cn.com.bril.androidocr.studio.utils.CustomDialogUtils;
import cn.com.bril.androidocr.studio.utils.FileType;
import cn.com.bril.androidocr.studio.utils.FileUtil; import cn.com.bril.androidocr.studio.utils.FileUtil;
import cn.com.bril.androidocr.studio.utils.GsonUtil; import cn.com.bril.androidocr.studio.utils.GsonUtil;
import cn.com.bril.androidocr.studio.utils.HttpUtil; import cn.com.bril.androidocr.studio.utils.HttpUtil;
import cn.com.bril.androidocr.studio.utils.IntentUtil; import cn.com.bril.androidocr.studio.utils.ShareUtil;
/** /**
* Created by sunny on 2018-3-12. * Created by sunny on 2018-3-12.
*/ */
public class ExportFragment extends Fragment { public class ExportFragment extends Fragment implements OnHttpListener,FragmentListAdapter.ListTextClickListener,View.OnClickListener {
private PullToRefreshListView pullToRefreshListView; private PullToRefreshListView pullToRefreshListView;
...@@ -58,13 +70,36 @@ public class ExportFragment extends Fragment { ...@@ -58,13 +70,36 @@ public class ExportFragment extends Fragment {
private HandleMenuListener handleMenuListener; private HandleMenuListener handleMenuListener;
private List<OcrRootBean> selectedInfos=new ArrayList<>(); private List<OcrRootBean> selectedInfos=new ArrayList<>();
private NoticeMessageToMain messageToMain; private NoticeMessageToMain messageToMain;
private ArrayList<OcrRootBean> loadBeans;//需下载项
private int curLoadIndex;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==1){
curLoadIndex++;
if (curLoadIndex < loadBeans.size())
downLoadFile(loadBeans.get(curLoadIndex).getIncludes().getCc_file().getFilePath(),loadBeans.get(curLoadIndex).getIncludes().getCc_file().getFileName(),"batch_load");
else {
progressDialog.dismiss();
batchShareAdd();
}
}else if(msg.what==0){
Toast.makeText(context, selectedInfos.get(curLoadIndex).getIncludes().getCc_file().getFileName() + "下载失败,请稍后重试", Toast.LENGTH_SHORT).show();
}else if(msg.what==2){
Toast.makeText(context, "下载已完成,再次点击可打开", Toast.LENGTH_SHORT).show();
}
}
};
private EditText reNameEdit;
private OcrRootBean.Cc_file clickedFileItem;
private int createCount;//分享时创建文件信息数量记录
// private List<OcrRootBean.Cc_file> shareFileInfos;
@Override @Override
public void onAttach(Context context) { public void onAttach(Context context) {
super.onAttach(context); super.onAttach(context);
this.context=context; this.context=context;
handleMenuListener= (HandleMenuListener) context; handleMenuListener= (HandleMenuListener) context;
listener= (FragmentListAdapter.ListTextClickListener) context;
messageToMain= (NoticeMessageToMain) context; messageToMain= (NoticeMessageToMain) context;
} }
...@@ -75,7 +110,18 @@ public class ExportFragment extends Fragment { ...@@ -75,7 +110,18 @@ public class ExportFragment extends Fragment {
public void setSelectedInfos(List<OcrRootBean> selectedInfos) { public void setSelectedInfos(List<OcrRootBean> selectedInfos) {
this.selectedInfos = selectedInfos; this.selectedInfos = selectedInfos;
} }
//批量删除
public void handleDeleteAction(){
List<OcrRootBean.Superior> superiors=new ArrayList<>();
for(OcrRootBean bean: selectedInfos){
superiors.add(bean.getSuperior());
}
HttpHolder.volumeDelete(superiors, this);
}
//批量分享响应
public void handleShareAction(){
getNotLoadFilesAndLoad(selectedInfos);
}
@Nullable @Nullable
@Override @Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
...@@ -93,12 +139,14 @@ public class ExportFragment extends Fragment { ...@@ -93,12 +139,14 @@ public class ExportFragment extends Fragment {
public void initViews(View view){ public void initViews(View view){
pullToRefreshListView= (PullToRefreshListView) view.findViewById(R.id.pullrefreshView); pullToRefreshListView= (PullToRefreshListView) view.findViewById(R.id.pullrefreshView);
pullToRefreshListView.setPullLoadEnabled(true);
pullToRefreshListView.setPullRefreshEnabled(true);
listView=pullToRefreshListView.getRefreshableView(); listView=pullToRefreshListView.getRefreshableView();
adaper=new FragmentListAdapter(context, exportInfos , listener, new FragmentListAdapter.AdapterRadioSelectedListener() { adaper=new FragmentListAdapter(context, exportInfos , this, new FragmentListAdapter.AdapterRadioSelectedListener() {
@Override @Override
public void adapterRadioSelectedCallBack() { public void adapterRadioSelectedCallBack() {
setSelectedInfos(adaper.getSelectedInfo()); setSelectedInfos(adaper.getSelectedInfo());
messageToMain.noticeMessage(adaper.getSelectedInfo()); messageToMain.noticeMessage(adaper.getSelectedInfo().size());
} }
}); });
listView.setAdapter(adaper); listView.setAdapter(adaper);
...@@ -133,7 +181,6 @@ public class ExportFragment extends Fragment { ...@@ -133,7 +181,6 @@ public class ExportFragment extends Fragment {
Toast.makeText(context,"暂无网络连接",Toast.LENGTH_LONG).show(); Toast.makeText(context,"暂无网络连接",Toast.LENGTH_LONG).show();
refreshView.onPullDownRefreshComplete(); refreshView.onPullDownRefreshComplete();
} }
} }
}); });
...@@ -152,40 +199,83 @@ public class ExportFragment extends Fragment { ...@@ -152,40 +199,83 @@ public class ExportFragment extends Fragment {
String fileName=exportInfos.get(position).getIncludes().getCc_file().getFileName(); String fileName=exportInfos.get(position).getIncludes().getCc_file().getFileName();
if(fileName.contains(".pdf")){ if(fileName.contains(".pdf")){
if(FileUtil.isFileExist(Configs.PDF_BASE+"/"+fileName)) if(FileUtil.isFileExist(Configs.PDF_BASE+"/"+fileName))
startFileIntent("pdf",fileName); FileType.openFile(context,new File(Configs.PDF_BASE+"/"+fileName));
else{ else{
progressDialog.setMessage("正在下载..."); progressDialog.setMessage("正在下载...");
progressDialog.show(); progressDialog.show();
downLoadFile(path, fileName); downLoadFile(path, fileName,"single");
} }
}else if(fileName.contains(".doc")|| fileName.contains(".docs")){ }else if(fileName.contains(".doc")|| fileName.contains(".docs")){
if(FileUtil.isFileExist(Configs.WORD_BASE+"/"+fileName)) if(FileUtil.isFileExist(Configs.WORD_BASE+"/"+fileName))
startFileIntent("word",fileName); FileType.openFile(context,new File(Configs.WORD_BASE+"/"+fileName));
else else
downLoadFile(path, fileName); downLoadFile(path, fileName,"single");
}else if(fileName.contains(".txt")){ }else if(fileName.contains(".txt")){
if(FileUtil.isFileExist(Configs.TXT_BASE+"/"+fileName)) if(FileUtil.isFileExist(Configs.TXT_BASE+"/"+fileName)){
startFileIntent("txt",fileName); FileType.openFile(context,new File(Configs.TXT_BASE+"/"+fileName));
}
else else
downLoadFile(path, fileName); downLoadFile(path, fileName,"single");
} }
} }
}); });
} }
private void downLoadFile(String path, String fileName) { private ArrayList<Uri> shareFileUris;
//获取待下载项&&分享
private void getNotLoadFilesAndLoad(List<OcrRootBean> list) {
loadBeans = new ArrayList<>();
shareFileUris = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
OcrRootBean.Cc_file cc_file = list.get(i).getIncludes().getCc_file();
String type = cc_file.getFileName().substring(cc_file.getFileName().indexOf(".") + 1);
String filePath = "";
if ("doc".equals(type) || "docs".equals(type))
filePath = Configs.WORD_BASE + "/" + cc_file.getFileName();
else if ("txt".equals(type))
filePath = Configs.TXT_BASE + "/" + cc_file.getFileName();
else if ("pdf".equals(type))
filePath = Configs.PDF_BASE + "/" + cc_file.getFileName();
shareFileUris.add(FileUtil.getFileUri(context,new File(filePath)));
if (!FileUtil.isFileExist(filePath))
loadBeans.add(selectedInfos.get(i));
}
if (loadBeans.size() != 0) {
progressDialog.setMessage("正在下载,请稍后");
progressDialog.show();
curLoadIndex=0;
downLoadFile(loadBeans.get(curLoadIndex).getIncludes().getCc_file().getFilePath(),loadBeans.get(0).getIncludes().getCc_file().getFileName(),"batch_load");
}else{
// batchCreateFiles();
batchShareAdd();
}
}
private void downLoadFile(String path, String fileName, final String type) {
RequestParams params=new RequestParams(RequestConfig.DOWN_LOAD_URL); RequestParams params=new RequestParams(RequestConfig.DOWN_LOAD_URL);
params.addBodyParameter("fileName",path); params.addBodyParameter("fileName",path);
params.addBodyParameter("downloadName",fileName); params.addBodyParameter("downloadName",fileName);
params.setSaveFilePath(Configs.WORD_BASE+"/"+fileName); String url="";
if(fileName.contains("txt"))
url=Configs.TXT_BASE+"/"+fileName;
else if(fileName.contains("doc"))
url=Configs.WORD_BASE+"/"+fileName;
params.setSaveFilePath(url);
x.http().get(params, new Callback.CommonCallback<File>() { x.http().get(params, new Callback.CommonCallback<File>() {
@Override @Override
public void onSuccess(File result) { public void onSuccess(File result) {
progressDialog.dismiss(); if(type.equals("batch_load")){
Toast.makeText(context,"下载成功", Toast.LENGTH_SHORT).show();
handler.sendEmptyMessage(1);
}else{
handler.sendEmptyMessage(2);
}
} }
@Override @Override
public void onError(Throwable ex, boolean isOnCallback) { public void onError(Throwable ex, boolean isOnCallback) {
Log.e("TAG", "onError: "+ex.getMessage());
handler.sendEmptyMessage(0);
} }
@Override @Override
public void onCancelled(CancelledException cex) { public void onCancelled(CancelledException cex) {
...@@ -195,35 +285,10 @@ public class ExportFragment extends Fragment { ...@@ -195,35 +285,10 @@ public class ExportFragment extends Fragment {
} }
}); });
} }
private void startFileIntent(String type,String path){ //获取列表
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
File file;
Uri uri;
if("word".equals(type)){
file= new File(Configs.WORD_BASE+"/"+path);
uri= Uri.fromFile(file);
intent.setDataAndType(uri, "application/msword");
}else if("pdf".equals(type)){
file= new File(Configs.PDF_BASE+"/"+path);
uri= Uri.fromFile(file);
intent.setDataAndType(uri, "application/pdf");
}else if("txt".equals(type)){
file= new File(Configs.TXT_BASE+"/"+path);
uri= Uri.fromFile(file);
intent.setDataAndType(uri, "text/plain");
}
if(IntentUtil.isIntentAvailable(context,intent))
startActivity(intent);
else
Toast.makeText(context,"请检测是否已安装相应的文件打开工具",Toast.LENGTH_SHORT).show();
}
private void getExportRecord(){ private void getExportRecord(){
RequestParams params=new RequestParams(RequestConfig.EXPORT_RECORD_URL); RequestParams params=new RequestParams(RequestConfig.EXPORT_RECORD_URL);
params.addBodyParameter("page",page+""); params.addBodyParameter("pageNo",page+"");
params.addBodyParameter("sortItem","create_time"); params.addBodyParameter("sortItem","create_time");
params.addBodyParameter("sortOrder","desc"); params.addBodyParameter("sortOrder","desc");
String userInfo= Configs.USER_NAME+"_"+Configs.USER_ID; String userInfo= Configs.USER_NAME+"_"+Configs.USER_ID;
...@@ -231,55 +296,141 @@ public class ExportFragment extends Fragment { ...@@ -231,55 +296,141 @@ public class ExportFragment extends Fragment {
params.addBodyParameter("filters",json); params.addBodyParameter("filters",json);
String json2="{\"cc_file\":{\"includes\":[\"file_id\"]}}"; String json2="{\"cc_file\":{\"includes\":[\"file_id\"]}}";
params.addBodyParameter("includes",json2); params.addBodyParameter("includes",json2);
x.http().post(params, new Callback.CommonCallback<String>() { x.http().post(params,new MainHttpCallBack("list",this));
@Override }
public void onSuccess(String result) {
List<OcrRootBean> been=GsonUtil.getInstance().fromJson(result,new TypeToken<List<OcrRootBean>>(){}.getType());
if(isUpdate){
exportInfos.clear();
}
exportInfos.addAll(been);
if(been.size()==0){
Toast.makeText(context,"暂无数据",Toast.LENGTH_SHORT).show();
}
else if(been.size()<10&& been.size()>0){
hasMoreData=false;
// Toast.makeText(context,"无更多数据",Toast.LENGTH_SHORT).show();
}
else
hasMoreData=true;
adaper.notifyDataSetChanged(); //批量分享
private void batchShareAdd() {
List<ShareInfo> list=new ArrayList<>();
ShareInfo superior;
for(OcrRootBean bean: selectedInfos){
superior=new ShareInfo();
superior.setFileName(bean.getIncludes().getCc_file().getFileName());
superior.setFilePath(bean.getIncludes().getCc_file().getFilePath());
// superior.setFileId(bean.getId());
superior.setType("0");
superior.setSharingPeple(bean.getSuperior().getExportUser());
list.add(superior);
}
HttpHolder.batchShareCcFile(list,new MainHttpCallBack("batch_share",this));
}
pullToRefreshListView.onPullUpRefreshComplete(); public void setAllItemChecked(boolean flg){
pullToRefreshListView.onPullDownRefreshComplete(); adaper.setRadioAllSelected(flg);
pullToRefreshListView.setHasMoreData(hasMoreData); }
}
@Override public void setCheckBoxShow(int v){
public void onError(Throwable ex, boolean isOnCallback) { adaper.setRadioShow(v);
Toast.makeText(context,"网络异常,请检测...",Toast.LENGTH_SHORT).show(); }
pullToRefreshListView.onPullUpRefreshComplete();
pullToRefreshListView.onPullDownRefreshComplete(); private void reNameFile() {
String url = RequestConfig.EDIT_FILE_URL + clickedFileItem.getId() + "/edit";
RequestParams params = new RequestParams(url);
params.addHeader("X-Auth-Token", "1");
String lastName=clickedFileItem.getFileName();
params.addBodyParameter("fileName", reNameEdit.getText().toString()+lastName.substring(lastName.indexOf(".")));
//缺少修改人
x.http().post(params, new MainHttpCallBack("edit", this));
}
@Override
public void success(String type, String result) {
if(type.equals("list")){
List<OcrRootBean> been=GsonUtil.getInstance().fromJson(result,new TypeToken<List<OcrRootBean>>(){}.getType());
if(isUpdate){
exportInfos.clear();
} }
@Override exportInfos.addAll(been);
public void onCancelled(CancelledException cex) { if(been.size()==0){
Toast.makeText(context,"暂无数据",Toast.LENGTH_SHORT).show();
} }
@Override else if(been.size()<10&& been.size()>0){
public void onFinished() { hasMoreData=false;
} }
}); else
hasMoreData=true;
adaper.notifyDataSetChanged();
pullToRefreshListView.onPullUpRefreshComplete();
pullToRefreshListView.onPullDownRefreshComplete();
pullToRefreshListView.setHasMoreData(hasMoreData);
}else if ("edit".equals(type)) {
OcrRootBean.Cc_file file=GsonUtil.getInstance().fromJson(result,new TypeToken<OcrRootBean.Cc_file>(){}.getType());
if(null!=file){
Toast.makeText(context, "修改成功", Toast.LENGTH_SHORT).show();
pullToRefreshListView.doPullRefreshing(true,100);
}else
Toast.makeText(context, "修改失败,请重试", Toast.LENGTH_SHORT).show();
}else if("batch_share".equals(type)){
List<ShareInfo> info=GsonUtil.getInstance().fromJson(result,new TypeToken<List<ShareInfo>>(){}.getType());
if(info!=null ) {
adaper.setRadioShow(View.GONE);
handleMenuListener.setHandleMenu(View.GONE);
ShareUtil.batchShareFile(context,shareFileUris);
}
}else if("delete".equals(type)){
try {
JSONObject object = new JSONObject(result);
String data = object.getString("message");
if (data.contains("success")) {
Toast.makeText(context, "删除成功", Toast.LENGTH_SHORT).show();
handleMenuListener.setHandleMenu(View.GONE);
adaper.setRadioShow(View.GONE);
pullToRefreshListView.doPullRefreshing(true,100);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
else if("single_create".equals(type)){
OcrRootBean.Cc_file cc_file=GsonUtil.getInstance().fromJson(result,new TypeToken<OcrRootBean.Cc_file>(){}.getType());
if(cc_file!=null){
createCount++;
// shareFileInfos.add(cc_file);
if(createCount==selectedInfos.size())
batchShareAdd();
}
}
} }
public void setAllItemChecked(boolean flg){ @Override
adaper.setRadioAllSelected(flg); public void error(String type, Throwable t) {
if(type.equals("list")){
pullToRefreshListView.onPullUpRefreshComplete();
pullToRefreshListView.onPullDownRefreshComplete();
}
} }
public void setCheckBoxShow(int v){
adaper.setRadioShow(v); @Override
public void onListTextCallBack(int postion) {
clickedFileItem=exportInfos.get(postion).getIncludes().getCc_file();
View view = LayoutInflater.from(context).inflate(R.layout.rename_dialog_layout, null);
view.findViewById(R.id.normal_name).setOnClickListener(this);
view.findViewById(R.id.positive).setOnClickListener(this);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setView(view);
reNameEdit = (EditText) view.findViewById(R.id.edit);
reNameEdit.setHint(clickedFileItem.getFileName());
dialog = builder.create();
dialog.show();
CustomDialogUtils.setDialogSize((Activity) context, dialog);
} }
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.positive:
reNameFile();
dialog.dismiss();
break;
case R.id.normal_name:
dialog.dismiss();
break;
}
}
public interface NoticeMessageToMain{ public interface NoticeMessageToMain{
void noticeMessage(List<OcrRootBean> list); void noticeMessage(int size);
} }
} }
package cn.com.bril.androidocr.studio.ui.fragment; package cn.com.bril.androidocr.studio.ui.fragment;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ListView; import android.widget.ListView;
import android.widget.Toast; import android.widget.Toast;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import org.json.JSONException;
import org.json.JSONObject;
import org.xutils.common.Callback; import org.xutils.common.Callback;
import org.xutils.http.RequestParams; import org.xutils.http.RequestParams;
import org.xutils.x; import org.xutils.x;
...@@ -26,55 +33,104 @@ import java.util.List; ...@@ -26,55 +33,104 @@ import java.util.List;
import cn.com.bril.androidocr.studio.R; import cn.com.bril.androidocr.studio.R;
import cn.com.bril.androidocr.studio.beans.OcrRootBean; import cn.com.bril.androidocr.studio.beans.OcrRootBean;
import cn.com.bril.androidocr.studio.beans.ShareInfo;
import cn.com.bril.androidocr.studio.beans.ShareRootBean;
import cn.com.bril.androidocr.studio.configs.Configs; import cn.com.bril.androidocr.studio.configs.Configs;
import cn.com.bril.androidocr.studio.configs.RequestConfig; import cn.com.bril.androidocr.studio.configs.RequestConfig;
import cn.com.bril.androidocr.studio.http.HttpHolder;
import cn.com.bril.androidocr.studio.http.MainHttpCallBack;
import cn.com.bril.androidocr.studio.interf.HandleMenuListener; import cn.com.bril.androidocr.studio.interf.HandleMenuListener;
import cn.com.bril.androidocr.studio.interf.OnHttpListener;
import cn.com.bril.androidocr.studio.ui.adapter.FragmentListAdapter; import cn.com.bril.androidocr.studio.ui.adapter.FragmentListAdapter;
import cn.com.bril.androidocr.studio.ui.adapter.ShareFragmentAdapter;
import cn.com.bril.androidocr.studio.ui.pulltorefresh.PullToRefreshBase; import cn.com.bril.androidocr.studio.ui.pulltorefresh.PullToRefreshBase;
import cn.com.bril.androidocr.studio.ui.pulltorefresh.PullToRefreshListView; import cn.com.bril.androidocr.studio.ui.pulltorefresh.PullToRefreshListView;
import cn.com.bril.androidocr.studio.utils.CustomDialogUtils;
import cn.com.bril.androidocr.studio.utils.FileType;
import cn.com.bril.androidocr.studio.utils.FileUtil; import cn.com.bril.androidocr.studio.utils.FileUtil;
import cn.com.bril.androidocr.studio.utils.GsonUtil; import cn.com.bril.androidocr.studio.utils.GsonUtil;
import cn.com.bril.androidocr.studio.utils.HttpUtil; import cn.com.bril.androidocr.studio.utils.HttpUtil;
import cn.com.bril.androidocr.studio.utils.IntentUtil; import cn.com.bril.androidocr.studio.utils.ShareUtil;
/** /**
* Created by sunny on 2018-3-12. * Created by sunny on 2018-3-12.
*/ */
public class ShareFragment extends Fragment { public class ShareFragment extends Fragment implements OnHttpListener, FragmentListAdapter.ListTextClickListener, View.OnClickListener {
private PullToRefreshListView pullToRefreshListView; private PullToRefreshListView pullToRefreshListView;
private ListView listView; private ListView listView;
private Context context; private Context context;
private FragmentListAdapter adaper; private ShareFragmentAdapter adaper;
private List<OcrRootBean> beanList=new ArrayList<>(); private List<ShareRootBean> beanList=new ArrayList<>();
private boolean isUpdate=false,hasMoreData=false; private boolean isUpdate=false,hasMoreData=false;
private int page=1,pageSize=10; private int page=1,pageSize=10;
private FragmentListAdapter.ListTextClickListener listTextClickListener; private FragmentListAdapter.ListTextClickListener listTextClickListener;
private List<OcrRootBean> selectedInfos=new ArrayList<>(); private List<ShareRootBean> selectedInfos=new ArrayList<>();
private ExportFragment.NoticeMessageToMain messageToMain; private ExportFragment.NoticeMessageToMain messageToMain;
private HandleMenuListener handleMenuListener; private HandleMenuListener handleMenuListener;
private ProgressDialog dialog; private ProgressDialog dialog;
private int curLoadIndex;
List<ShareRootBean> loadBeans;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==1){
curLoadIndex++;
if (curLoadIndex < loadBeans.size())
downLoadFile(loadBeans.get(curLoadIndex).getIncludes().getCc_file().getFilePath(),loadBeans.get(curLoadIndex).getIncludes().getCc_file().getFileName(),"batch");
else {
dialog.dismiss();
// batchCreateFiles();
batchShareAdd();
}
}else if(msg.what==0){
Toast.makeText(context, selectedInfos.get(curLoadIndex).getIncludes().getCc_file().getFileName() + "下载失败,请稍后重试", Toast.LENGTH_SHORT).show();
}else if(msg.what==2){
Toast.makeText(context, "下载已完成,再次点击可打开", Toast.LENGTH_SHORT).show();
}else if(msg.what==2){
Toast.makeText(context, "下载失败,请稍后重试", Toast.LENGTH_SHORT).show();
}
}
};
private ArrayList<Uri> shareFileUris;
private EditText reNameEdit;
private AlertDialog reNameDialog;
private ShareRootBean clickedFileItem;
private int createCount;//创建文件信息个数
@Override @Override
public void onAttach(Context context) { public void onAttach(Context context) {
super.onAttach(context); super.onAttach(context);
this.context=context; this.context=context;
listTextClickListener=(FragmentListAdapter.ListTextClickListener)context;
handleMenuListener= (HandleMenuListener) context; handleMenuListener= (HandleMenuListener) context;
messageToMain= (ExportFragment.NoticeMessageToMain) context; messageToMain= (ExportFragment.NoticeMessageToMain) context;
} }
public List<OcrRootBean> getSelectedInfos() { public List<ShareRootBean> getSelectedInfos() {
return selectedInfos; return selectedInfos;
} }
public void setSelectedInfos(List<OcrRootBean> selectedInfos) { public void setSelectedInfos(List<ShareRootBean> selectedInfos) {
this.selectedInfos = selectedInfos; this.selectedInfos = selectedInfos;
} }
public void handleDeletAction(){
List<ShareInfo> infos=new ArrayList<>();
for(ShareRootBean bean:selectedInfos)
infos.add(bean.getSuperior());
HttpHolder.batchDeleteShareRecord(infos,new MainHttpCallBack("delete",this));
}
public void handleShareAction(){
getNotLoadFilesAndLoad(selectedInfos);
}
@Nullable @Nullable
@Override @Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
...@@ -93,13 +149,16 @@ public class ShareFragment extends Fragment { ...@@ -93,13 +149,16 @@ public class ShareFragment extends Fragment {
public void initViews(View view){ public void initViews(View view){
pullToRefreshListView= (PullToRefreshListView) view.findViewById(R.id.pullrefreshView); pullToRefreshListView= (PullToRefreshListView) view.findViewById(R.id.pullrefreshView);
pullToRefreshListView.setPullLoadEnabled(true);
pullToRefreshListView.setPullRefreshEnabled(true);
listView=pullToRefreshListView.getRefreshableView(); listView=pullToRefreshListView.getRefreshableView();
pullToRefreshListView.doPullRefreshing(true,500); pullToRefreshListView.doPullRefreshing(true,500);
adaper=new FragmentListAdapter(context, beanList, listTextClickListener, new FragmentListAdapter.AdapterRadioSelectedListener() { adaper=new ShareFragmentAdapter(context, beanList, this, new ShareFragmentAdapter.AdapterRadioSelectedListener() {
@Override @Override
public void adapterRadioSelectedCallBack() { public void adapterRadioSelectedCallBack() {
setSelectedInfos(adaper.getSelectedInfo()); setSelectedInfos(adaper.getSelectedInfo());
messageToMain.noticeMessage(adaper.getSelectedInfo()); messageToMain.noticeMessage(adaper.getSelectedInfo().size());
} }
}); });
listView.setAdapter(adaper); listView.setAdapter(adaper);
...@@ -146,21 +205,24 @@ public class ShareFragment extends Fragment { ...@@ -146,21 +205,24 @@ public class ShareFragment extends Fragment {
String path=beanList.get(position).getIncludes().getCc_file().getFilePath(); String path=beanList.get(position).getIncludes().getCc_file().getFilePath();
String fileName=beanList.get(position).getIncludes().getCc_file().getFileName(); String fileName=beanList.get(position).getIncludes().getCc_file().getFileName();
if(fileName.contains(".pdf")){ if(fileName.contains(".pdf")){
if(FileUtil.isFileExist(Configs.PDF_BASE+"/"+fileName)) if(FileUtil.isFileExist(Configs.PDF_BASE+"/"+fileName)){
startFileIntent("pdf",fileName); FileType.openFile(context,new File(Configs.PDF_BASE+"/"+fileName));
}
else{ else{
downLoadFile(path, fileName); downLoadFile(path, fileName,"single");
} }
}else if(fileName.contains(".doc")|| fileName.contains(".docs")){ }else if(fileName.contains(".doc")|| fileName.contains(".docs")){
if(FileUtil.isFileExist(Configs.WORD_BASE+"/"+fileName)) if(FileUtil.isFileExist(Configs.WORD_BASE+"/"+fileName)){
startFileIntent("word",fileName); FileType.openFile(context,new File(Configs.WORD_BASE+"/"+fileName));
}
else else
downLoadFile(path, fileName); downLoadFile(path, fileName,"single");
}else if(fileName.contains(".txt")){ }else if(fileName.contains(".txt")){
if(FileUtil.isFileExist(Configs.TXT_BASE+"/"+fileName)) if(FileUtil.isFileExist(Configs.TXT_BASE+"/"+fileName)){
startFileIntent("txt",fileName); FileType.openFile(context,new File(Configs.TXT_BASE+"/"+fileName));
}
else else
downLoadFile(path, fileName); downLoadFile(path, fileName,"single");
} }
} }
}); });
...@@ -169,59 +231,25 @@ public class ShareFragment extends Fragment { ...@@ -169,59 +231,25 @@ public class ShareFragment extends Fragment {
public void setAllItemChecked(boolean flg){ public void setAllItemChecked(boolean flg){
adaper.setRadioAllSelected(flg); adaper.setRadioAllSelected(flg);
} }
public void setCheckBoxShow(int v){ public void setCheckBoxShow(int v){
adaper.setRadioShow(v); adaper.setRadioShow(v);
} }
//获取分享列表
private void getShareRecord(){ private void getShareRecord(){
RequestParams params=new RequestParams(RequestConfig.SHARE_LIST_URL);
RequestParams params=new RequestParams(RequestConfig.EXPORT_RECORD_URL); params.addBodyParameter("pageNo",page+"");
params.addBodyParameter("page",page+"");
params.addBodyParameter("sortItem","create_time"); params.addBodyParameter("sortItem","create_time");
params.addBodyParameter("sortOrder","desc"); params.addBodyParameter("sortOrder","desc");
String userInfo= Configs.USER_NAME+"_"+Configs.USER_ID; String userInfo= Configs.USER_NAME+"_"+Configs.USER_ID;
String json="{\"cc_export_record\":{\"export_user\":{\"equalTo\":\""+userInfo+"\"},\"type\":{\"equalTo\":2}}}"; String json="{\"cc_sharing_record\":{\"sharing_peple\":{\"equalTo\":\""+userInfo+"\"},\"type\":{\"equalTo\":0}}}";
params.addBodyParameter("filters",json); params.addBodyParameter("filters",json);
String json2="{\"cc_file\":{\"includes\":[\"file_id\"]}}"; String json2="{\"cc_file\":{\"includes\":[\"file_id\"]}}";
params.addBodyParameter("includes",json2); params.addBodyParameter("includes",json2);
x.http().post(params, new Callback.CommonCallback<String>() { x.http().post(params,new MainHttpCallBack("list",this));
@Override
public void onSuccess(String result) {
List<OcrRootBean> been=GsonUtil.getInstance().fromJson(result,new TypeToken<List<OcrRootBean>>(){}.getType());
if(isUpdate){
beanList.clear();
}
beanList.addAll(been);
if(been.size()==0){
Toast.makeText(context,"暂无数据",Toast.LENGTH_SHORT).show();
}
else if(been.size()<10&& been.size()>0){
hasMoreData=false;
// Toast.makeText(context,"无更多数据",Toast.LENGTH_SHORT).show();
}
else
hasMoreData=true;
adaper.notifyDataSetChanged();
pullToRefreshListView.onPullUpRefreshComplete();
pullToRefreshListView.onPullDownRefreshComplete();
pullToRefreshListView.setHasMoreData(hasMoreData);
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
pullToRefreshListView.onPullUpRefreshComplete();
pullToRefreshListView.onPullDownRefreshComplete();
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
} }
//下载文件
private void downLoadFile(String path, String fileName) { private void downLoadFile(String path, String fileName, final String type) {
dialog.setMessage("正在下載..."); dialog.setMessage("正在下載...");
dialog.show(); dialog.show();
RequestParams params=new RequestParams(RequestConfig.DOWN_LOAD_URL); RequestParams params=new RequestParams(RequestConfig.DOWN_LOAD_URL);
...@@ -231,10 +259,18 @@ public class ShareFragment extends Fragment { ...@@ -231,10 +259,18 @@ public class ShareFragment extends Fragment {
x.http().get(params, new Callback.CommonCallback<File>() { x.http().get(params, new Callback.CommonCallback<File>() {
@Override @Override
public void onSuccess(File result) { public void onSuccess(File result) {
Toast.makeText(context,"下载成功", Toast.LENGTH_SHORT).show(); if(type.equals("batch")){
dialog.dismiss();
handler.sendEmptyMessage(1);
}else{
handler.sendEmptyMessage(2);
}
} }
@Override @Override
public void onError(Throwable ex, boolean isOnCallback) { public void onError(Throwable ex, boolean isOnCallback) {
dialog.dismiss();
handler.sendEmptyMessage(0);
Toast.makeText(context,"下载失败", Toast.LENGTH_SHORT).show();
} }
@Override @Override
public void onCancelled(CancelledException cex) { public void onCancelled(CancelledException cex) {
...@@ -244,29 +280,151 @@ public class ShareFragment extends Fragment { ...@@ -244,29 +280,151 @@ public class ShareFragment extends Fragment {
} }
}); });
} }
private void startFileIntent(String type,String path){ //添加分享记录
private void batchShareAdd() {
Intent intent = new Intent("android.intent.action.VIEW"); List<ShareInfo> list=new ArrayList<>();
intent.addCategory("android.intent.category.DEFAULT"); ShareInfo superior;
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); for(ShareRootBean bean: selectedInfos){
File file; superior=new ShareInfo();
Uri uri; superior.setFileName(bean.getIncludes().getCc_file().getFileName());
if("word".equals(type)){ superior.setFilePath(bean.getIncludes().getCc_file().getFilePath());
file= new File(Configs.WORD_BASE+"/"+path); superior.setType("0");
uri= Uri.fromFile(file); superior.setSharingPeple(bean.getSuperior().getSharingPeple());
intent.setDataAndType(uri, "application/msword"); list.add(superior);
}else if("pdf".equals(type)){ }
file= new File(Configs.PDF_BASE+"/"+path); HttpHolder.batchShareCcFile(list,new MainHttpCallBack("batch_share",this));
uri= Uri.fromFile(file); }
intent.setDataAndType(uri, "application/pdf"); //获取待下载项&&分享
}else if("txt".equals(type)){ private void getNotLoadFilesAndLoad(List<ShareRootBean> list) {
file= new File(Configs.TXT_BASE+"/"+path); loadBeans = new ArrayList<>();
uri= Uri.fromFile(file); shareFileUris = new ArrayList<>();
intent.setDataAndType(uri, "text/plain"); for (int i = 0; i < list.size(); i++) {
OcrRootBean.Cc_file cc_file = list.get(i).getIncludes().getCc_file();
String type = cc_file.getFileName().substring(cc_file.getFileName().indexOf(".") + 1);
String filePath = "";
if ("doc".equals(type) || "docs".equals(type))
filePath = Configs.WORD_BASE + "/" + cc_file.getFileName();
else if ("txt".equals(type))
filePath = Configs.TXT_BASE + "/" + cc_file.getFileName();
else if ("pdf".equals(type))
filePath = Configs.PDF_BASE + "/" + cc_file.getFileName();
shareFileUris.add(FileUtil.getFileUri(context,new File(filePath)));
if (!FileUtil.isFileExist(filePath))
loadBeans.add(selectedInfos.get(i));
}
if (loadBeans.size() != 0) {
dialog.setMessage("正在下载,请稍后");
dialog.show();
curLoadIndex=0;
downLoadFile(loadBeans.get(curLoadIndex).getIncludes().getCc_file().getFilePath(),loadBeans.get(0).getIncludes().getCc_file().getFileName(),"batch");
}else{
batchShareAdd();
}
}
private void reNameFile() {
String newName=reNameEdit.getText().toString().trim();
if(!newName.equals(clickedFileItem.getSuperior().getFileName())){
if(!newName.contains("."))
newName=newName+clickedFileItem.getSuperior().getFileName().substring(clickedFileItem.getSuperior().getFileName().indexOf("."));
HttpHolder.editShareRecord(clickedFileItem.getSuperior().getId(),newName,new MainHttpCallBack("edit",this));
}
}
@Override
public void success(String type, String result) {
if(type.equals("list")){
List<ShareRootBean> been=GsonUtil.getInstance().fromJson(result,new TypeToken<List<ShareRootBean>>(){}.getType());
if(isUpdate){
beanList.clear();
}
beanList.addAll(been);
if(been.size()==0){
Toast.makeText(context,"暂无数据",Toast.LENGTH_SHORT).show();
}
else if(been.size()<10&& been.size()>0){
hasMoreData=false;
}
else
hasMoreData=true;
adaper.notifyDataSetChanged();
pullToRefreshListView.onPullUpRefreshComplete();
pullToRefreshListView.onPullDownRefreshComplete();
pullToRefreshListView.setHasMoreData(hasMoreData);
}else if(type.equals("batch_share")){
List<ShareInfo> info=GsonUtil.getInstance().fromJson(result,new TypeToken<List<ShareInfo>>(){}.getType());
if(info!=null ){
handleMenuListener.setHandleMenu(View.GONE);
ShareUtil.batchShareFile(context,shareFileUris);
adaper.setRadioShow(View.GONE);
}
}else if(type.equals("delete")){
try {
JSONObject object = new JSONObject(result);
String data = object.getString("message");
if (data.contains("success")) {
Toast.makeText(context, "删除成功", Toast.LENGTH_SHORT).show();
handleMenuListener.setHandleMenu(View.GONE);
adaper.setRadioShow(View.GONE);
pullToRefreshListView.doPullRefreshing(true,100);
}
} catch (JSONException e) {
e.printStackTrace();
}
}else if ("edit".equals(type)) {
OcrRootBean.Cc_file file=GsonUtil.getInstance().fromJson(result,new TypeToken<OcrRootBean.Cc_file>(){}.getType());
if(null!=file){
Toast.makeText(context, "修改成功", Toast.LENGTH_SHORT).show();
pullToRefreshListView.doPullRefreshing(true,100);
}else
Toast.makeText(context, "修改失败,请重试", Toast.LENGTH_SHORT).show();
}
else if("single_create".equals(type)){
OcrRootBean.Cc_file cc_file=GsonUtil.getInstance().fromJson(result,new TypeToken<OcrRootBean.Cc_file>(){}.getType());
if(cc_file!=null){
createCount++;
if(createCount==selectedInfos.size())
batchShareAdd();
}
}
}
@Override
public void error(String type, Throwable t) {
Log.e("TAG",t.getMessage());
if(type.equals("list")){
pullToRefreshListView.onPullUpRefreshComplete();
pullToRefreshListView.onPullDownRefreshComplete();
}
}
@Override
public void onListTextCallBack(int position) {
clickedFileItem=beanList.get(position);
View view = LayoutInflater.from(context).inflate(R.layout.rename_dialog_layout, null);
view.findViewById(R.id.normal_name).setOnClickListener(this);
view.findViewById(R.id.positive).setOnClickListener(this);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setView(view);
reNameEdit = (EditText) view.findViewById(R.id.edit);
reNameEdit.setHint(clickedFileItem.getSuperior().getFileName());
reNameDialog = builder.create();
reNameDialog.show();
CustomDialogUtils.setDialogSize((Activity) context, dialog);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.positive:
reNameFile();
reNameDialog.dismiss();
break;
case R.id.normal_name:
reNameDialog.dismiss();
break;
} }
if(IntentUtil.isIntentAvailable(context,intent))
startActivity(intent);
else
Toast.makeText(context,"请检测是否已安装相应的文件打开工具",Toast.LENGTH_SHORT).show();
} }
} }
...@@ -2,6 +2,9 @@ package cn.com.bril.androidocr.studio.utils; ...@@ -2,6 +2,9 @@ package cn.com.bril.androidocr.studio.utils;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.support.v4.content.FileProvider;
import com.scanlibrary.ScanConstants; import com.scanlibrary.ScanConstants;
...@@ -60,4 +63,16 @@ public class FileUtil { ...@@ -60,4 +63,16 @@ public class FileUtil {
return true; return true;
} }
public static Uri getFileUri(Context context,File file){
Uri tempFileUri=null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
tempFileUri = FileProvider.getUriForFile(context.getApplicationContext(),
"com.scanlibrary.provider", // As defined in Manifest
file);
} else {
tempFileUri = Uri.fromFile(file);
}
return tempFileUri;
}
} }
package cn.com.bril.androidocr.studio.utils; package cn.com.bril.androidocr.studio.utils;
import android.app.Activity; import android.app.Activity;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.media.MediaMetadataRetriever; import android.media.MediaMetadataRetriever;
import android.net.Uri; import android.net.Uri;
import android.widget.Toast; import android.widget.Toast;
import java.io.File; import java.io.File;
import java.util.ArrayList;
/** /**
* Created by sunny on 2018-3-19. * Created by sunny on 2018-3-19.
...@@ -18,7 +20,7 @@ public class ShareUtil { ...@@ -18,7 +20,7 @@ public class ShareUtil {
public static void shareFile(Activity activity, File file) { public static void shareFile(Activity activity, File file) {
if (null != file && file.exists()) { if (null != file && file.exists()) {
Intent share = new Intent(Intent.ACTION_SEND); Intent share = new Intent(Intent.ACTION_SEND);
share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); share.putExtra(Intent.EXTRA_STREAM, FileUtil.getFileUri(activity,file));
share.setType(getMimeType(file.getAbsolutePath()));//此处可发送多种文件 share.setType(getMimeType(file.getAbsolutePath()));//此处可发送多种文件
share.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); share.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
...@@ -47,4 +49,12 @@ public class ShareUtil { ...@@ -47,4 +49,12 @@ public class ShareUtil {
} }
return mime; return mime;
} }
public static void batchShareFile(Context activity, ArrayList<Uri> uris){
//分享文件
Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);//发送多个文件
intent.setType("*/*");//多个文件格式
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);//Intent.EXTRA_STREAM同于传输文件流
activity.startActivity(Intent.createChooser(intent, "多文件分享"));
}
} }
app/src/main/res/drawable/word.png

792 Bytes | W: | H:

app/src/main/res/drawable/word.png

3.43 KB | W: | H:

app/src/main/res/drawable/word.png
app/src/main/res/drawable/word.png
app/src/main/res/drawable/word.png
app/src/main/res/drawable/word.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -22,7 +22,8 @@ ...@@ -22,7 +22,8 @@
android:id="@+id/pdfLayout" android:id="@+id/pdfLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="10dp"> android:padding="10dp"
android:visibility="gone">
<TextView <TextView
android:id="@+id/pdf" android:id="@+id/pdf"
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="5dp" android:padding="5dp"
android:src="@drawable/word"/> />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -55,16 +55,15 @@ ...@@ -55,16 +55,15 @@
<CheckBox <CheckBox
android:id="@+id/radio" android:id="@+id/radio"
android:layout_width="18dp" android:layout_width="wrap_content"
android:layout_height="18dp" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:layout_marginRight="15dp" android:layout_marginRight="15dp"
android:button="@null"
android:focusable="false" android:focusable="false"
android:visibility="gone" android:visibility="gone"
android:background="@drawable/radio_selector"/> />
<!--android:background="@drawable/radio_selector"-->
</RelativeLayout> </RelativeLayout>
...@@ -5,9 +5,9 @@ ...@@ -5,9 +5,9 @@
<!-- Customize your theme here. --> <!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/normal</item> <item name="colorPrimaryDark">@color/normal</item>
<item name="colorAccent">@color/yellow</item> <item name="colorAccent">@color/normal</item>
<!--Button按钮正常状态颜色--> <!--Button按钮正常状态颜色-->
<item name="colorButtonNormal">@color/yellow</item> <item name="colorButtonNormal">@color/normal</item>
<!--//colorAccent--> <!--//colorAccent-->
</style> </style>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment