Commit 0fdb8fa8 authored by 陈赛康's avatar 陈赛康

搜索功能添加;

parent 18f2e07c
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'com.jakewharton.butterknife'
configurations.all { configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:23.1.0' resolutionStrategy.force 'com.android.support:support-annotations:23.1.0'
} }
...@@ -57,6 +57,8 @@ dependencies { ...@@ -57,6 +57,8 @@ dependencies {
compile files('libs/poi/poi-3.17.jar') compile files('libs/poi/poi-3.17.jar')
compile files('libs/poi/poi-scratchpad-3.17.jar') compile files('libs/poi/poi-scratchpad-3.17.jar')
compile project(':scanlibrary') compile project(':scanlibrary')
compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1' compile 'com.android.support:design:25.3.1'
compile 'com.github.bumptech.glide:glide:4.3.1' compile 'com.github.bumptech.glide:glide:4.3.1'
...@@ -64,8 +66,8 @@ dependencies { ...@@ -64,8 +66,8 @@ dependencies {
compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'org.xutils:xutils:3.5.0' compile 'org.xutils:xutils:3.5.0'
compile 'com.android.support:support-v4:25.3.1' compile 'com.android.support:support-v4:25.3.1'
compile 'com.google.code.gson:gson:2.8.1'
testCompile 'junit:junit:4.12' testCompile 'junit:junit:4.12'
annotationProcessor 'com.github.bumptech.glide:compiler:4.3.1' annotationProcessor 'com.github.bumptech.glide:compiler:4.3.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
compile 'com.google.code.gson:gson:2.8.1'
} }
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<!--<category android:name="android.intent.category.LAUNCHER" />--> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name=".ui.activity.RecognizeActivity" /> <activity android:name=".ui.activity.RecognizeActivity" />
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
<activity <activity
android:name=".ui.activity.OcrRecordActivity" android:name=".ui.activity.OcrRecordActivity"
android:launchMode="singleTask" /> android:launchMode="singleTask" />
<activity android:name=".ui.activity.SearchActivity"></activity>
</application> </application>
</manifest> </manifest>
\ No newline at end of file
...@@ -99,12 +99,6 @@ public class OcrApplication extends Application { ...@@ -99,12 +99,6 @@ public class OcrApplication extends Application {
} }
} }
public void exit(){ public void exit(){
// for (Activity activity : activities) {
// if (activity!=null) {
// activity.finish();
// }
// }
// System.exit(1);
ActivityManager manager = (ActivityManager)getApplicationContext().getSystemService(ACTIVITY_SERVICE); //获取应用程序管理器 ActivityManager manager = (ActivityManager)getApplicationContext().getSystemService(ACTIVITY_SERVICE); //获取应用程序管理器
manager.killBackgroundProcesses(getPackageName()); //强制结束当前应用程序 manager.killBackgroundProcesses(getPackageName()); //强制结束当前应用程序
} }
......
...@@ -2,19 +2,42 @@ package cn.com.bril.androidocr.studio.beans; ...@@ -2,19 +2,42 @@ package cn.com.bril.androidocr.studio.beans;
/** /**
* Created by sunny on 2018-3-16. * Created by sunny on 2018-3-16.
* status 0导出;1分享 * 主文件
* status 为文件归属
*/ */
public class OcrInfo { public class OcrInfo {
private String id; private String id;
private String fileName; private String fileName;
private String filePath; private String filePath;
private String uploadUser;
private String lastUpdateTime; private String fileSuffix;
private String uploadPeple;
private String createTime; private String createTime;
private String lastUpdateTime;
private String fileType;
private String status; private String status;
private String remark;
private boolean isChecked;
public boolean isChecked() {
return isChecked;
}
public void setChecked(boolean checked) {
isChecked = checked;
}
public String getId() { public String getId() {
return id; return id;
} }
...@@ -39,20 +62,20 @@ public class OcrInfo { ...@@ -39,20 +62,20 @@ public class OcrInfo {
this.filePath = filePath; this.filePath = filePath;
} }
public String getUploadUser() { public String getFileSuffix() {
return uploadUser; return fileSuffix;
} }
public void setUploadUser(String uploadUser) { public void setFileSuffix(String fileSuffix) {
this.uploadUser = uploadUser; this.fileSuffix = fileSuffix;
} }
public String getLastUpdateTime() { public String getUploadPeple() {
return lastUpdateTime; return uploadPeple;
} }
public void setLastUpdateTime(String lastUpdateTime) { public void setUploadPeple(String uploadPeple) {
this.lastUpdateTime = lastUpdateTime; this.uploadPeple = uploadPeple;
} }
public String getCreateTime() { public String getCreateTime() {
...@@ -63,6 +86,22 @@ public class OcrInfo { ...@@ -63,6 +86,22 @@ public class OcrInfo {
this.createTime = createTime; this.createTime = createTime;
} }
public String getLastUpdateTime() {
return lastUpdateTime;
}
public void setLastUpdateTime(String lastUpdateTime) {
this.lastUpdateTime = lastUpdateTime;
}
public String getFileType() {
return fileType;
}
public void setFileType(String fileType) {
this.fileType = fileType;
}
public String getStatus() { public String getStatus() {
return status; return status;
} }
...@@ -70,4 +109,12 @@ public class OcrInfo { ...@@ -70,4 +109,12 @@ public class OcrInfo {
public void setStatus(String status) { public void setStatus(String status) {
this.status = status; this.status = status;
} }
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
} }
...@@ -7,14 +7,27 @@ package cn.com.bril.androidocr.studio.configs; ...@@ -7,14 +7,27 @@ package cn.com.bril.androidocr.studio.configs;
public class RequestConfig { public class RequestConfig {
public static int TAKE_PHOTO_REQUEST=1; public static int TAKE_PHOTO_REQUEST=1;
public static int PERMISSION_REQUEST_CODE=99; public static int PERMISSION_REQUEST_CODE=99;
// public static String BASE_URL="http://zjk.haomo-studio.com/zhangjiakouOA/"; public static String BASE_URL="http://zjk.haomo-studio.com/zhangjiakouOA/";
public static String BASE_URL="http://192.168.1.72:8050/zhangjiakouOA/"; // public static String BASE_URL="http://192.168.1.72:8050/zhangjiakouOA/";
//添加 //添加
public static String ADD_URL=BASE_URL+"cc_ocr_files/new?"; public static String ADD_URL=BASE_URL+"cc_files/new";
//上传文件 //上传文件
public static String UP_FILE=BASE_URL+"upload_ocr_file"; public static String UP_FILE=BASE_URL+"upload_ocr_file";
//编辑文件
public static String EDIT_FILE_URL=BASE_URL+"cc_files/";
//创建导出记录
public static String EXPORT_CREATE_URL=BASE_URL+"cc_export_records/new";
//导出记录 //导出记录
public static String EXPORT_LIST_URL=BASE_URL+"cc_ocr_files?"; public static String EXPORT_RECORD_URL=BASE_URL+"cc_export_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_DELETE_URL=BASE_URL+"cc_export_records/delete/batch";
//文件下载
public static String DOWN_LOAD_URL=BASE_URL+"file_down";
......
package cn.com.bril.androidocr.studio.http; package cn.com.bril.androidocr.studio.http;
import android.util.Log; import org.json.JSONArray;
import org.xutils.common.Callback; import org.xutils.common.Callback;
import org.xutils.common.util.KeyValue; import org.xutils.common.util.KeyValue;
import org.xutils.http.RequestParams; import org.xutils.http.RequestParams;
...@@ -14,10 +13,11 @@ import java.util.Iterator; ...@@ -14,10 +13,11 @@ 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.OcrRootBean;
import cn.com.bril.androidocr.studio.configs.RequestConfig; import cn.com.bril.androidocr.studio.configs.RequestConfig;
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 static com.bumptech.glide.gifdecoder.GifHeaderParser.TAG; import cn.com.bril.androidocr.studio.utils.GsonUtil;
/** /**
* Created by sunny on 2018-3-12. * Created by sunny on 2018-3-12.
...@@ -26,7 +26,7 @@ import static com.bumptech.glide.gifdecoder.GifHeaderParser.TAG; ...@@ -26,7 +26,7 @@ import static com.bumptech.glide.gifdecoder.GifHeaderParser.TAG;
public class HttpHolder { public class HttpHolder {
//add //add
public static void exportFile(String url,Map<String,Object> map,Callback.CommonCallback<String> callback){ public static void exportFile(String url, Map<String,Object> map, VertifyActivity.HttpCallBack callBack){
RequestParams params=new RequestParams(url); RequestParams params=new RequestParams(url);
Iterator<Map.Entry<String,Object>> it = map.entrySet().iterator(); Iterator<Map.Entry<String,Object>> it = map.entrySet().iterator();
while (it.hasNext()){ while (it.hasNext()){
...@@ -36,56 +36,97 @@ public class HttpHolder { ...@@ -36,56 +36,97 @@ public class HttpHolder {
else else
params.addHeader("X-Auth-Token",String.valueOf(entry.getValue())); params.addHeader("X-Auth-Token",String.valueOf(entry.getValue()));
} }
x.http().post(params,callback); x.http().post(params,callBack);
} }
public static String upLoadFile(String path, final OnHttpListener listener){ public static void upLoadFile(String path, VertifyActivity.HttpCallBack callBack){
String flg="";
RequestParams params=new RequestParams(RequestConfig.UP_FILE); RequestParams params=new RequestParams(RequestConfig.UP_FILE);
params.setConnectTimeout(10000);
params.setReadTimeout(5000);
//创建List<KeyValue>对象
List<KeyValue> list = new ArrayList<>(); List<KeyValue> list = new ArrayList<>();
//给list中添加数据,filePah是上传的文件路径,比如sd卡中图片
list.add(new KeyValue("file", new File(path)));//文件流数据 list.add(new KeyValue("file", new File(path)));//文件流数据
// //其它参数,根据项目而定,比如我的项目中要传入的参数是json格式的
// list.add(new KeyValue("parameters", json.toString())); // list.add(new KeyValue("parameters", json.toString()));
//创建MultipartBody
MultipartBody body = new MultipartBody(list, "UTF-8"); MultipartBody body = new MultipartBody(list, "UTF-8");
//添加请求参数 //添加请求参数
params.setRequestBody(body); params.setRequestBody(body);
// x.http().post(params,callBack);
File file=new File(path); };
boolean flag=file.exists();
// params.addBodyParameter("file",file);
x.http().post(params, new Callback.CommonCallback<String>() { //创建记录
public static void createFileRecord(String url,Map<String,Object> map,Callback.CommonCallback<String> listener){
RequestParams params=new RequestParams(url);
Iterator<Map.Entry<String,Object>> it = map.entrySet().iterator();
while (it.hasNext()){
Map.Entry<String,Object> entry = it.next();
if(!"header".equals(entry.getKey()))
params.addBodyParameter(entry.getKey(),String.valueOf(entry.getValue()));
else
params.addHeader("X-Auth-Token",String.valueOf(entry.getValue()));
}
x.http().post(params,listener);
}
//批量导出
/**
*
* @param infos
* @param http
*/
public static void volumeExport(List<OcrRootBean.Superior> infos, final OnHttpListener http){
RequestParams params=new RequestParams(RequestConfig.BATCH_EXPORT_URL);
params.addHeader("X-Auth-Token","ocr");
String json= GsonUtil.getInstance().toJson(infos);
params.addBodyParameter("params",json);
x.http().get(params, new Callback.CommonCallback<String>() {
@Override @Override
public void onSuccess(String result) { public void onSuccess(String result) {
String data=result; http.success("",result);
listener.success(data);
} }
@Override @Override
public void onError(Throwable ex, boolean isOnCallback) { public void onError(Throwable ex, boolean isOnCallback) {
Log.e(TAG, "onError: "+ex.getMessage(),ex ); http.error("",ex);
listener.error(ex);
} }
@Override @Override
public void onCancelled(CancelledException cex) { public void onCancelled(CancelledException cex) {
} }
@Override @Override
public void onFinished() { public void onFinished() {
} }
}); });
}
//批量删除
public static void volumeDelete(final List<OcrRootBean.Superior> list, final OnHttpListener listener){
JSONArray array= new JSONArray();
for(int i=0;i<list.size();i++)
array.put(list.get(i).getId());
RequestParams params=new RequestParams(RequestConfig.BATCH_DELETE_URL);
params.addBodyParameter("ids",array.toString());
return flg; x.http().post(params, new Callback.CommonCallback<String>() {
}; @Override
public void onSuccess(String result) {
listener.success("delete",result);
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
listener.error("",ex);
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
}
//单个下载
public static void downLoad(Map<String,String> map,MainHttpCallBack callBack){
RequestParams params=new RequestParams(RequestConfig.DOWN_LOAD_URL);
Iterator<Map.Entry<String,String>> it = map.entrySet().iterator();
while (it.hasNext()){
Map.Entry<String,String> entry = it.next();
params.addBodyParameter(entry.getKey(),String.valueOf(entry.getValue()));
}
x.http().get(params,callBack);
}
} }
...@@ -6,7 +6,7 @@ package cn.com.bril.androidocr.studio.interf; ...@@ -6,7 +6,7 @@ package cn.com.bril.androidocr.studio.interf;
public interface OnHttpListener { public interface OnHttpListener {
void success(String result); void success(String type,String result);
void error(Throwable t); void error(String type,Throwable t);
} }
...@@ -59,4 +59,6 @@ public class BaseActivity extends AppCompatActivity { ...@@ -59,4 +59,6 @@ public class BaseActivity extends AppCompatActivity {
private void dispatchBadLicense() { private void dispatchBadLicense() {
showDialog( BaseActivity.DIALOG_BAD_LICENSE ); showDialog( BaseActivity.DIALOG_BAD_LICENSE );
} }
} }
package cn.com.bril.androidocr.studio.ui.activity; package cn.com.bril.androidocr.studio.ui.activity;
import android.app.AlertDialog;
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.graphics.Bitmap;
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.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.RadioGroup; import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
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.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.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.ViewUtil;
public class MainActivity extends BaseActivity { public class MainActivity extends BaseActivity implements FragmentListAdapter.ListTextClickListener, View.OnClickListener, HandleMenuListener, ExportFragment.NoticeMessageToMain, OnHttpListener {
@BindView(R.id.layout_1) @BindView(R.id.layout_1)
...@@ -43,7 +76,39 @@ public class MainActivity extends BaseActivity { ...@@ -43,7 +76,39 @@ public class MainActivity extends BaseActivity {
@BindView(R.id.layout_3) @BindView(R.id.layout_3)
LinearLayout layout3; LinearLayout layout3;
@BindView(R.id.viewPager) @BindView(R.id.viewPager)
ViewPager viewPager; NoScrollViewPager viewPager;
@BindView(R.id.num)
TextView num;
@BindView(R.id.tab_select)
TextView tabSelect;
@BindView(R.id.export)
TextView export;
@BindView(R.id.share)
TextView share;
@BindView(R.id.rename)
TextView rename;
@BindView(R.id.delete)
TextView delete;
@BindView(R.id.bottom_menu)
RelativeLayout bottomMenu;
@BindView(R.id.left_iv)
ImageView leftIv;
@BindView(R.id.tab_back)
ImageView tabBack;
// @BindView(R.id.tab_head)
// RelativeLayout tabHeader;
@BindView(R.id.topBarLayout)
RelativeLayout topBarLayout;
@BindView(R.id.tab_head)
RelativeLayout tabHead;
@BindView(R.id.head_content)
RelativeLayout headContent;
@BindView(R.id.main_bottom_menu)
LinearLayout mainBottomMenu;
@BindView(R.id.tab_bottom)
LinearLayout tabBottom;
@BindView(R.id.right_iv)
ImageView rightIv;
private String picPath; private String picPath;
@NonNull @NonNull
@BindView(R.id.rightTv) @BindView(R.id.rightTv)
...@@ -59,6 +124,7 @@ public class MainActivity extends BaseActivity { ...@@ -59,6 +124,7 @@ public class MainActivity extends BaseActivity {
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() {
...@@ -79,7 +145,16 @@ public class MainActivity extends BaseActivity { ...@@ -79,7 +145,16 @@ public class MainActivity extends BaseActivity {
} }
} }
}; };
private AlertDialog dialog;
private ExportFragment exportFragment;
private ShareFragment shareFragment;
private List<OcrRootBean> selectedInfos;
private OcrRootBean clickedBean;
private EditText reNameEdit;//更改文件名
private TabFragmentPagerAdapter adapter;
private boolean isAllSelected = false;
private ArrayList<Uri> shareFileUris;
private PopupWindow rightMenuWindow;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
...@@ -92,8 +167,11 @@ public class MainActivity extends BaseActivity { ...@@ -92,8 +167,11 @@ public class MainActivity extends BaseActivity {
initViews(); initViews();
setIconSize();
initEvents(); initEvents();
dialog = new ProgressDialog(this);
} }
private void bindService() { private void bindService() {
...@@ -103,18 +181,37 @@ public class MainActivity extends BaseActivity { ...@@ -103,18 +181,37 @@ public class MainActivity extends BaseActivity {
} }
private void initViews() { private void initViews() {
rightTv.setText("导入"); rightIv.setVisibility(View.VISIBLE);
rightTv.setVisibility(View.GONE);
topTitle.setText("OCR识别"); topTitle.setText("OCR识别");
fragmentList = new ArrayList<>();
fragmentList=new ArrayList<>(); if (exportFragment == null)
fragmentList.add(new ExportFragment()); exportFragment = new ExportFragment();
fragmentList.add(new ShareFragment()); if (shareFragment == null)
TabFragmentPagerAdapter adapter=new TabFragmentPagerAdapter(getSupportFragmentManager(),fragmentList); shareFragment = new ShareFragment();
fragmentList.add(exportFragment);
fragmentList.add(shareFragment);
adapter = new TabFragmentPagerAdapter(getSupportFragmentManager(), fragmentList);
viewPager.setAdapter(adapter); viewPager.setAdapter(adapter);
} }
public void setIconSize() {
//设置bottom icon 大小
// ViewUtil.setNavImageSize(this, export, R.drawable.export, 55, 55);//40
ViewUtil.setNavImageSize(this, share, R.drawable.share_focused, 40, 45);//40
// ViewUtil.setNavImageSize(this, rename, R.drawable.rename, 50, 50);//40
ViewUtil.setNavImageSize(this, delete, R.drawable.delete_normal, 35, 45);//32
}
private void setImageGone() { private void setImageGone() {
layout1.setVisibility(View.GONE); layout1.setVisibility(View.GONE);
layout2.setVisibility(View.INVISIBLE); layout2.setVisibility(View.INVISIBLE);
layout3.setVisibility(View.INVISIBLE); layout3.setVisibility(View.INVISIBLE);
...@@ -142,7 +239,9 @@ public class MainActivity extends BaseActivity { ...@@ -142,7 +239,9 @@ public class MainActivity extends BaseActivity {
topTitle.setText(tag); topTitle.setText(tag);
} }
}); });
export.setOnClickListener(this);
share.setOnClickListener(this);
delete.setOnClickListener(this);
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override @Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
...@@ -166,9 +265,9 @@ public class MainActivity extends BaseActivity { ...@@ -166,9 +265,9 @@ public class MainActivity extends BaseActivity {
super.onResume(); super.onResume();
} }
public void setViewShow(int position){ public void setViewShow(int position) {
setImageGone(); setImageGone();
switch (position){ switch (position) {
case 0: case 0:
layout2.setVisibility(View.VISIBLE); layout2.setVisibility(View.VISIBLE);
break; break;
...@@ -179,25 +278,288 @@ public class MainActivity extends BaseActivity { ...@@ -179,25 +278,288 @@ public class MainActivity extends BaseActivity {
viewPager.setCurrentItem(position); viewPager.setCurrentItem(position);
} }
@OnClick({R.id.rightTv, R.id.fabbtn}) @OnClick({R.id.right_iv, R.id.fabbtn, R.id.tab_select, R.id.tab_back})
public void onViewClicked(View view) { public void onViewClicked(View view) {
switch (view.getId()) { switch (view.getId()) {
case R.id.rightTv: case R.id.rightTv:
type = ScanConstants.OPEN_MEDIA; type = ScanConstants.OPEN_MEDIA;
Intent intent = new Intent(this, RecognizeActivity.class);
intent.putExtra("type", type);
startActivity(intent);
break;
case R.id.right_iv:
if(null== rightMenuWindow)
showHandleMenu();
else if(rightMenuWindow !=null&&!rightMenuWindow.isShowing())
showHandleMenu();
break; break;
case R.id.fabbtn: case R.id.fabbtn:
type = ScanConstants.OPEN_CAMERA; type = ScanConstants.OPEN_CAMERA;
Intent intent2 = new Intent(this, RecognizeActivity.class);
intent2.putExtra("type", type);
startActivity(intent2);
break; break;
case R.id.tab_back:
setHandleMenu(View.GONE);
adapter.notifyDataSetChanged();
break;
case R.id.tab_select://全选
isAllSelected = !isAllSelected;
if (isAllSelected)
tabSelect.setText("全不选");
else
tabSelect.setText("全选");
if (viewPager.getCurrentItem() == 0)
exportFragment.setAllItemChecked(isAllSelected);
else
shareFragment.setAllItemChecked(isAllSelected);
break;
}
}
//展示工具栏
public void showHandleMenu() {
View popupWindow = LayoutInflater.from(this).inflate(R.layout.main_menu_layout, null);
rightMenuWindow = new PopupWindow(popupWindow, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
popupWindow.findViewById(R.id.main_import).setOnClickListener(this);
popupWindow.findViewById(R.id.main_search).setOnClickListener(this);
rightMenuWindow.setTouchable(true);
rightMenuWindow.setOutsideTouchable(true);
rightMenuWindow.setBackgroundDrawable(new BitmapDrawable(getResources(), (Bitmap) null));
int windowPos[] = ScreenUtil.calculatePopWindowPos(this, rightIv, popupWindow);
int xoff=windowPos[0]-60;
int wid=rightIv.getMeasuredWidth()-30;
rightMenuWindow.showAtLocation(rightIv, Gravity.TOP|Gravity.LEFT,xoff,windowPos[1]);
// rightMenuWindow.showAsDropDown(rightIv);
}
@Override
public void onBackPressed() {
if (tabBottom.getVisibility() == View.VISIBLE) {
if (viewPager.getCurrentItem() == 0)
exportFragment.setCheckBoxShow(View.GONE);
else
shareFragment.setCheckBoxShow(View.GONE);
setHandleMenu(View.GONE);
} else {
OcrApplication.getInstance().exit();
super.onBackPressed();
} }
}
@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
public void onClick(View v) {
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:
if (selectedInfos != null && selectedInfos.size() > 0) {
// Toast.makeText(this,"正在检测需下载文件,请稍等...",Toast.LENGTH_SHORT).show();
getNotLoadFilesAndLoad(selectedInfos);
} else
Toast.makeText(this, "请选择要分享的数据", Toast.LENGTH_SHORT).show();
break;
case R.id.delete:
if (selectedInfos != null && selectedInfos.size() > 0) {
setHandleMenu(View.GONE);
HttpHolder.volumeDelete(reStatusList(-1), this);
} else
Toast.makeText(this, "请选择要删除的数据", Toast.LENGTH_SHORT).show();
break;
case R.id.main_import:
type = ScanConstants.OPEN_MEDIA;
Intent intent = new Intent(this, RecognizeActivity.class); Intent intent = new Intent(this, RecognizeActivity.class);
intent.putExtra("type", type); intent.putExtra("type", type);
startActivity(intent); startActivity(intent);
rightMenuWindow.dismiss();
break;
case R.id.main_search:
startActivity(new Intent(this, SearchActivity.class));
rightMenuWindow.dismiss();
break;
}
}
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 onBackPressed() { public void setHandleMenu(int v) {
if (View.GONE == v) {
tabHead.setVisibility(v);
tabBottom.setVisibility(v);
topBarLayout.setVisibility(View.VISIBLE);
mainBottomMenu.setVisibility(View.VISIBLE);
viewPager.setScanScroll(true);
adapter.notifyDataSetChanged();
} else {
tabHead.setVisibility(View.VISIBLE);
tabBottom.setVisibility(View.VISIBLE);
topBarLayout.setVisibility(View.GONE);
mainBottomMenu.setVisibility(View.GONE);
num.setText("已选择");
viewPager.setScanScroll(false);
}
}
OcrApplication.getInstance().exit(); private void getNotLoadFilesAndLoad(List<OcrRootBean> list) {
super.onBackPressed(); 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
public void noticeMessage(List<OcrRootBean> list) {
selectedInfos = list;
num.setText("已选择" + list.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();
}
} }
...@@ -6,10 +6,9 @@ import android.content.Intent; ...@@ -6,10 +6,9 @@ import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
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.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.CompoundButton; import android.widget.CompoundButton;
...@@ -42,19 +41,19 @@ import butterknife.ButterKnife; ...@@ -42,19 +41,19 @@ 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.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.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;
import cn.com.bril.androidocr.studio.interf.OnHttpListener;
import cn.com.bril.androidocr.studio.utils.GsonUtil; import cn.com.bril.androidocr.studio.utils.GsonUtil;
import cn.com.bril.androidocr.studio.utils.ItextUtils; import cn.com.bril.androidocr.studio.utils.ItextUtils;
import cn.com.bril.androidocr.studio.utils.ScreenUtil; import cn.com.bril.androidocr.studio.utils.ScreenUtil;
import cn.com.bril.androidocr.studio.utils.ShareUtil; import cn.com.bril.androidocr.studio.utils.ShareUtil;
public class VertifyActivity extends AppCompatActivity implements OnHttpListener { public class VertifyActivity extends AppCompatActivity {
@BindView(R.id.left_iv) @BindView(R.id.left_iv)
ImageView lefIv; ImageView lefIv;
...@@ -85,6 +84,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener ...@@ -85,6 +84,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
private PopupWindow mPopupWindow; private PopupWindow mPopupWindow;
private String statusType; private String statusType;
private OcrInfo ocrInfo;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
...@@ -108,7 +108,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener ...@@ -108,7 +108,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
return (Image) getIntent().getSerializableExtra("image"); return (Image) getIntent().getSerializableExtra("image");
} }
@OnClick({R.id.rephoto, R.id.verrify, R.id.left_iv}) @OnClick({R.id.rephoto, R.id.verrify, R.id.left_iv,R.id.right_iv})
public void onViewClicked(View view) { public void onViewClicked(View view) {
switch (view.getId()) { switch (view.getId()) {
case R.id.left_iv: case R.id.left_iv:
...@@ -122,9 +122,14 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener ...@@ -122,9 +122,14 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
case R.id.verrify: case R.id.verrify:
Intent proofread = new Intent(this, ProofreadActivity.class); Intent proofread = new Intent(this, ProofreadActivity.class);
proofread.putExtra("image", getIntentData()); proofread.putExtra("image", getIntentData());
// startActivity(proofread);
startActivityForResult(proofread, 10); startActivityForResult(proofread, 10);
break; break;
case R.id.right_iv:
if(null== mPopupWindow )
showHandleMenu();
else if(mPopupWindow!=null&&!mPopupWindow.isShowing())
showHandleMenu();
break;
} }
} }
...@@ -137,11 +142,6 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener ...@@ -137,11 +142,6 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
mPopupWindow.setTouchable(true); mPopupWindow.setTouchable(true);
mPopupWindow.setOutsideTouchable(true); mPopupWindow.setOutsideTouchable(true);
mPopupWindow.setBackgroundDrawable(new BitmapDrawable(getResources(), (Bitmap) null)); mPopupWindow.setBackgroundDrawable(new BitmapDrawable(getResources(), (Bitmap) null));
// mPopupWindow.showAtLocation(toolbarTitle,Gravity.TOP|Gravity.LEFT,16,-64);
int windowPos[] = ScreenUtil.calculatePopWindowPos(this, rightIv, popupWindow);
// int xOff = 40;// 可以自己调整偏移
// windowPos[0] += xOff;
// mPopupWindow.showAtLocation(topBarLayout, Gravity.TOP | Gravity.RIGHT, 10, windowPos[1]);//windowPos[0], windowPos[1]
mPopupWindow.showAsDropDown(rightIv); mPopupWindow.showAsDropDown(rightIv);
// backgroundAlpha(0.5f); // backgroundAlpha(0.5f);
} }
...@@ -156,11 +156,6 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener ...@@ -156,11 +156,6 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
} }
} }
@OnClick(R.id.right_iv)
public void onViewClicked() {
showHandleMenu();
}
//导出选择视图 //导出选择视图
private void showExportDialog() { private void showExportDialog() {
mPopupWindow.dismiss(); mPopupWindow.dismiss();
...@@ -189,6 +184,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener ...@@ -189,6 +184,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
view.findViewById(R.id.txtLayout).setOnClickListener(clickListener); view.findViewById(R.id.txtLayout).setOnClickListener(clickListener);
} }
private View.OnClickListener clickListener = new View.OnClickListener() { private View.OnClickListener clickListener = new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
...@@ -212,11 +208,13 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener ...@@ -212,11 +208,13 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
radio2.setEnabled(false); radio2.setEnabled(false);
break; break;
case R.id.export: case R.id.export:
mPopupWindow.dismiss();
statusType="0"; statusType="0";
showExportDialog(); showExportDialog();
break; break;
case R.id.share: case R.id.share:
statusType="1"; mPopupWindow.dismiss();
statusType="2";
exportDoc("share"); exportDoc("share");
break; break;
} }
...@@ -232,19 +230,22 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener ...@@ -232,19 +230,22 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
if (isChecked) { if (isChecked) {
//设置只点击一次,其余均不可点击 //设置只点击一次,其余均不可点击
switch (buttonView.getId()) { switch (buttonView.getId()) {
case R.id.radio: case R.id.radio:
pdf.setTextColor(getResources().getColor(R.color.yellow)); pdf.setTextColor(getResources().getColor(R.color.yellow));
// handler.sendEmptyMessageDelayed(1,500); // handler.sendEmptyMessageDelayed(1,500);
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));
// handler.sendEmptyMessageDelayed(2,500); // handler.sendEmptyMessageDelayed(2,500);
statusType="0";
exportDoc("export"); exportDoc("export");
break; break;
case R.id.radio2: case R.id.radio2:
statusType="0";
txt.setTextColor(getResources().getColor(R.color.yellow)); txt.setTextColor(getResources().getColor(R.color.yellow));
exportTxt(); exportTxt();
break; break;
...@@ -262,17 +263,15 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener ...@@ -262,17 +263,15 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
super.run(); super.run();
boolean flg = ItextUtils.StringToPdf(recogniztion, pdfPath); boolean flg = ItextUtils.StringToPdf(recogniztion, pdfPath);
if (flg) { if (flg) {
handler.sendEmptyMessage(1); HttpHolder.upLoadFile(pdfPath,new HttpCallBack("upload"));
HttpHolder.upLoadFile(pdfPath,VertifyActivity.this);
} }
} }
}.start(); }.start();
} }
private void exportTxt() { private void exportTxt() {
String filename = image.getName().replace("png", "txt"); String filename = image.getName().replace("jpg", "txt");
String path = Configs.TXT_BASE + "/" + filename; String path = Configs.TXT_BASE + "/" + filename;
File file; File file;
try { try {
...@@ -285,8 +284,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener ...@@ -285,8 +284,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
FileOutputStream outStream = new FileOutputStream(file); FileOutputStream outStream = new FileOutputStream(file);
outStream.write(recogniztion.getBytes()); outStream.write(recogniztion.getBytes());
outStream.close(); outStream.close();
HttpHolder.upLoadFile(path, VertifyActivity.this); HttpHolder.upLoadFile(path,new HttpCallBack("upload"));
handler.sendEmptyMessageDelayed(3, 500);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -294,6 +292,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener ...@@ -294,6 +292,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
} }
private void exportDoc(String type) { private void exportDoc(String type) {
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;
...@@ -309,45 +308,27 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener ...@@ -309,45 +308,27 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
if("share".equals(type)) if("share".equals(type))
ShareUtil.shareFile(this,new File(path)); ShareUtil.shareFile(this,new File(path));
HttpHolder.upLoadFile(path, this); HttpHolder.upLoadFile(path, new HttpCallBack("upload"));
} catch (IOException e) { } catch (IOException e) {
handler.sendEmptyMessage(5); }else{
Map<String,Object> map=new HashMap<>();
map.put("header","X-Auth-Token");
map.put("fileId",ocrInfo.getId());
map.put("exportUser",Configs.USER_NAME + "_" + Configs.USER_ID);
map.put("type",statusType);//0导出;2分享
HttpHolder.createFileRecord(RequestConfig.EXPORT_CREATE_URL,map,new HttpCallBack(statusType));
} }
} }
private Handler handler = new Handler() { public class HttpCallBack implements Callback.CommonCallback<String>{
@Override String httpType;
public void handleMessage(Message msg) { public HttpCallBack(String type) {
switch (msg.what) { httpType=type;
case 0:
break;
case 1:
dialog.dismiss();
Toast.makeText(VertifyActivity.this, "pdf已导出,请在documentocr/pdfs下查看", Toast.LENGTH_SHORT).show();
break;
case 2:
dialog.dismiss();
Toast.makeText(VertifyActivity.this, "图片已导出,请在documentocr/images下查看", Toast.LENGTH_SHORT).show();
break;
case 3:
dialog.dismiss();
Toast.makeText(VertifyActivity.this, "txt文本已导出,请在documentocr/txts文件夹下查看", Toast.LENGTH_SHORT).show();
break;
case 4:
// dialog.dismiss();
// Toast.makeText(VertifyActivity.this, "word已导出,请在documentocr/docs文件夹下查看", Toast.LENGTH_SHORT).show();
break;
case 5:
dialog.dismiss();
Toast.makeText(VertifyActivity.this, "word导出异常,请重试", Toast.LENGTH_SHORT).show();
break;
}
} }
};
@Override @Override
public void success(String result) { public void onSuccess(String result) {
if("upload".equals(httpType)){
try { try {
JSONObject object = new JSONObject(result); JSONObject object = new JSONObject(result);
String filePath = object.getString("message"); String filePath = object.getString("message");
...@@ -356,34 +337,44 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener ...@@ -356,34 +337,44 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
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("status", statusType); map.put("fileSuffix",fileName.substring(fileName.indexOf(".")+1));
map.put("uploadUser", Configs.USER_NAME + "_" + Configs.USER_ID); map.put("status","ocr");
HttpHolder.exportFile(RequestConfig.ADD_URL, map, creatListener); map.put("uploadPeple", Configs.USER_NAME + "_" + Configs.USER_ID);
HttpHolder.exportFile(RequestConfig.ADD_URL, map, new HttpCallBack("create_file"));
} catch (JSONException e) { } catch (JSONException e) {
e.printStackTrace(); e.printStackTrace();
} }
}else if("create_file".equals(httpType)){
ocrInfo = GsonUtil.getInstance().fromJson(result, new TypeToken<OcrInfo>() {
}.getType());
} Map<String,Object> map=new HashMap<>();
map.put("header","X-Auth-Token");
@Override map.put("fileId",ocrInfo.getId());
public void error(Throwable t) { map.put("exportUser",Configs.USER_NAME + "_" + Configs.USER_ID);
map.put("type",statusType);//0导出;1分享
} HttpHolder.createFileRecord(RequestConfig.EXPORT_CREATE_URL,map,new HttpCallBack(statusType));
}else if("0".equals(httpType)){
private Callback.CommonCallback<String> creatListener = new Callback.CommonCallback<String>() { if(dialog!=null && dialog.isShowing())
@Override
public void onSuccess(String result) {
if(null!=dialog || dialog.isShowing())
dialog.dismiss(); dialog.dismiss();
OcrInfo ocrInfo = GsonUtil.getInstance().fromJson(result, new TypeToken<OcrInfo>() { ExportInfo exportInfo= GsonUtil.getInstance().fromJson(result, new TypeToken<ExportInfo>() {
}.getType()); }.getType());
if (null != ocrInfo.getId() || "" != ocrInfo.getId()) if(null!=exportInfo){
Toast.makeText(VertifyActivity.this, "导出成功", Toast.LENGTH_SHORT).show(); Toast.makeText(VertifyActivity.this,"导出成功,请在文件管理/documentocr下查看",Toast.LENGTH_SHORT).show();
}
}else if ("1".equals(httpType)){
ExportInfo exportInfo= GsonUtil.getInstance().fromJson(result, new TypeToken<ExportInfo>() {
}.getType());
if(null==exportInfo){
Toast.makeText(VertifyActivity.this,"分享记录提交失败,请重新尝试",Toast.LENGTH_SHORT).show();
}
}
} }
@Override @Override
public void onError(Throwable ex, boolean isOnCallback) { public void onError(Throwable ex, boolean isOnCallback) {
Log.e("TAG",ex.toString());
Toast.makeText(VertifyActivity.this, "连接异常,请调试", Toast.LENGTH_SHORT).show();
} }
@Override @Override
...@@ -395,5 +386,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener ...@@ -395,5 +386,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
public void onFinished() { public void onFinished() {
} }
}; }
} }
...@@ -5,12 +5,15 @@ import android.view.LayoutInflater; ...@@ -5,12 +5,15 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView; import android.widget.TextView;
import java.util.ArrayList;
import java.util.List; 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.OcrInfo; import cn.com.bril.androidocr.studio.beans.OcrRootBean;
/** /**
* Created by sunny on 2018-3-19. * Created by sunny on 2018-3-19.
...@@ -19,13 +22,35 @@ import cn.com.bril.androidocr.studio.beans.OcrInfo; ...@@ -19,13 +22,35 @@ import cn.com.bril.androidocr.studio.beans.OcrInfo;
public class FragmentListAdapter extends BaseAdapter { public class FragmentListAdapter extends BaseAdapter {
private Context context; private Context context;
private List<OcrInfo> infos; private List<OcrRootBean> infos;
private ListTextClickListener listTextClickListener;
public FragmentListAdapter(Context context, List<OcrInfo> list) { private int show=View.GONE;
AdapterRadioSelectedListener radioSelectedListener;
public FragmentListAdapter(Context context, List<OcrRootBean> list, ListTextClickListener listTextClickListener, AdapterRadioSelectedListener radioSelectedListener) {
this.context=context; this.context=context;
this.infos=list; this.infos=list;
this.listTextClickListener=listTextClickListener;
this.radioSelectedListener=radioSelectedListener;
} }
public void setRadioShow(int show){
this.show=show;
notifyDataSetChanged();
}
public void setRadioAllSelected(boolean flg){
for(OcrRootBean info:infos)
info.getSuperior().setChecked(flg);
notifyDataSetChanged();
}
public List<OcrRootBean> getSelectedInfo(){
List<OcrRootBean> newInfos=new ArrayList<>();
for(OcrRootBean info:infos){
if(info.getSuperior().isChecked())
newInfos.add(info);
}
return newInfos;
}
@Override @Override
public int getCount() { public int getCount() {
return infos.size(); return infos.size();
...@@ -43,24 +68,60 @@ public class FragmentListAdapter extends BaseAdapter { ...@@ -43,24 +68,60 @@ public class FragmentListAdapter extends BaseAdapter {
@Override @Override
public View getView(int position, View convertView, ViewGroup parent) { public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder; final ViewHolder holder;
if(convertView==null){ if(convertView==null){
holder=new ViewHolder(); holder=new ViewHolder();
convertView= LayoutInflater.from(context).inflate(R.layout.listview_item_layout,null); convertView= LayoutInflater.from(context).inflate(R.layout.listview_item_layout,null);
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);
convertView.setTag(holder); convertView.setTag(holder);
}else }else
holder= (ViewHolder) convertView.getTag(); holder= (ViewHolder) convertView.getTag();
OcrInfo info=infos.get(position); final OcrRootBean info=infos.get(position);
holder.time.setText(info.getLastUpdateTime()); holder.time.setText(info.getSuperior().getCreateTime());
String fileName=info.getFileName().substring(0,info.getFileName().indexOf(".")); String s=info.getIncludes().getCc_file().getFileName();
String fileName;
if(s.contains("."))
fileName=s.substring(0,s.indexOf("."));
else
fileName=s;
holder.title.setText(fileName); holder.title.setText(fileName);
holder.title.setOnClickListener(new ListTextOnClickListener(position));
holder.radioButton.setVisibility(show);
holder.radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
info.getSuperior().setChecked(isChecked);
radioSelectedListener.adapterRadioSelectedCallBack();
notifyDataSetChanged();
}
});
holder.radioButton.setChecked(info.getSuperior().isChecked());
return convertView; return convertView;
}
class ListTextOnClickListener implements View.OnClickListener{
int position;
public ListTextOnClickListener(int index) {
position=index;
}
@Override
public void onClick(View v) {
listTextClickListener.onListTextCallBack(infos.get(position));
}
}
public interface AdapterRadioSelectedListener{
void adapterRadioSelectedCallBack();
}
public interface ListTextClickListener{
void onListTextCallBack(OcrRootBean info);
} }
class ViewHolder{ class ViewHolder{
TextView title,time; TextView title,time;
CheckBox radioButton;
} }
} }
...@@ -3,6 +3,7 @@ package cn.com.bril.androidocr.studio.ui.adapter; ...@@ -3,6 +3,7 @@ package cn.com.bril.androidocr.studio.ui.adapter;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.app.FragmentPagerAdapter;
import android.view.ViewGroup;
import java.util.List; import java.util.List;
...@@ -13,12 +14,19 @@ import java.util.List; ...@@ -13,12 +14,19 @@ import java.util.List;
public class TabFragmentPagerAdapter extends FragmentPagerAdapter { public class TabFragmentPagerAdapter extends FragmentPagerAdapter {
List<Fragment> fragments; List<Fragment> fragments;
List<String> tagList;
FragmentManager manager;
public TabFragmentPagerAdapter(FragmentManager fm, List<Fragment> fragments) { public TabFragmentPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm); super(fm);
manager=fm;
this.fragments=fragments; this.fragments=fragments;
} }
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override @Override
public Fragment getItem(int position) { public Fragment getItem(int position) {
return fragments.get(position); return fragments.get(position);
...@@ -28,4 +36,12 @@ public class TabFragmentPagerAdapter extends FragmentPagerAdapter { ...@@ -28,4 +36,12 @@ public class TabFragmentPagerAdapter extends FragmentPagerAdapter {
public int getCount() { public int getCount() {
return fragments.size(); return fragments.size();
} }
@Override
public Object instantiateItem(ViewGroup container, int position) {
return super.instantiateItem(container, position);
}
} }
package cn.com.bril.androidocr.studio.ui.fragment; package cn.com.bril.androidocr.studio.ui.fragment;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
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.ListView; import android.widget.ListView;
import android.widget.Toast; import android.widget.Toast;
...@@ -16,18 +21,22 @@ import org.xutils.common.Callback; ...@@ -16,18 +21,22 @@ import org.xutils.common.Callback;
import org.xutils.http.RequestParams; import org.xutils.http.RequestParams;
import org.xutils.x; import org.xutils.x;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; 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.OcrInfo; 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.configs.RequestConfig;
import cn.com.bril.androidocr.studio.interf.HandleMenuListener;
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.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;
/** /**
* Created by sunny on 2018-3-12. * Created by sunny on 2018-3-12.
...@@ -40,14 +49,31 @@ public class ExportFragment extends Fragment { ...@@ -40,14 +49,31 @@ public class ExportFragment extends Fragment {
private ListView listView; private ListView listView;
private Context context; private Context context;
private FragmentListAdapter adaper; private FragmentListAdapter adaper;
private List<OcrInfo> infos; private List<OcrRootBean> exportInfos= 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 AlertDialog dialog;//renameDialog
private ProgressDialog progressDialog;
private FragmentListAdapter.ListTextClickListener listener;
private HandleMenuListener handleMenuListener;
private List<OcrRootBean> selectedInfos=new ArrayList<>();
private NoticeMessageToMain messageToMain;
@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;
listener= (FragmentListAdapter.ListTextClickListener) context;
messageToMain= (NoticeMessageToMain) context;
}
public List<OcrRootBean> getSelectedInfos() {
return selectedInfos;
}
public void setSelectedInfos(List<OcrRootBean> selectedInfos) {
this.selectedInfos = selectedInfos;
} }
@Nullable @Nullable
...@@ -60,6 +86,7 @@ public class ExportFragment extends Fragment { ...@@ -60,6 +86,7 @@ public class ExportFragment extends Fragment {
initEvents(); initEvents();
progressDialog=new ProgressDialog(context);
return view; return view;
} }
...@@ -67,11 +94,16 @@ public class ExportFragment extends Fragment { ...@@ -67,11 +94,16 @@ public class ExportFragment extends Fragment {
pullToRefreshListView= (PullToRefreshListView) view.findViewById(R.id.pullrefreshView); pullToRefreshListView= (PullToRefreshListView) view.findViewById(R.id.pullrefreshView);
listView=pullToRefreshListView.getRefreshableView(); listView=pullToRefreshListView.getRefreshableView();
pullToRefreshListView.doPullRefreshing(true,500); adaper=new FragmentListAdapter(context, exportInfos , listener, new FragmentListAdapter.AdapterRadioSelectedListener() {
adaper=new FragmentListAdapter(context,infos=new ArrayList<>()); @Override
public void adapterRadioSelectedCallBack() {
setSelectedInfos(adaper.getSelectedInfo());
messageToMain.noticeMessage(adaper.getSelectedInfo());
}
});
listView.setAdapter(adaper); listView.setAdapter(adaper);
pullToRefreshListView.doPullRefreshing(true,500);
} }
public void initEvents(){ public void initEvents(){
...@@ -96,6 +128,7 @@ public class ExportFragment extends Fragment { ...@@ -96,6 +128,7 @@ public class ExportFragment extends Fragment {
page++; page++;
if(HttpUtil.isNetworkConnected(context)) if(HttpUtil.isNetworkConnected(context))
getExportRecord(); getExportRecord();
else{ else{
Toast.makeText(context,"暂无网络连接",Toast.LENGTH_LONG).show(); Toast.makeText(context,"暂无网络连接",Toast.LENGTH_LONG).show();
refreshView.onPullDownRefreshComplete(); refreshView.onPullDownRefreshComplete();
...@@ -103,33 +136,121 @@ public class ExportFragment extends Fragment { ...@@ -103,33 +136,121 @@ public class ExportFragment extends Fragment {
} }
}); });
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
handleMenuListener.setHandleMenu(View.VISIBLE);
adaper.setRadioShow(View.VISIBLE);
return true;
}
});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String path=exportInfos.get(position).getIncludes().getCc_file().getFilePath();
String fileName=exportInfos.get(position).getIncludes().getCc_file().getFileName();
if(fileName.contains(".pdf")){
if(FileUtil.isFileExist(Configs.PDF_BASE+"/"+fileName))
startFileIntent("pdf",fileName);
else{
progressDialog.setMessage("正在下载...");
progressDialog.show();
downLoadFile(path, fileName);
}
}else if(fileName.contains(".doc")|| fileName.contains(".docs")){
if(FileUtil.isFileExist(Configs.WORD_BASE+"/"+fileName))
startFileIntent("word",fileName);
else
downLoadFile(path, fileName);
}else if(fileName.contains(".txt")){
if(FileUtil.isFileExist(Configs.TXT_BASE+"/"+fileName))
startFileIntent("txt",fileName);
else
downLoadFile(path, fileName);
}
}
});
}
private void downLoadFile(String path, String fileName) {
RequestParams params=new RequestParams(RequestConfig.DOWN_LOAD_URL);
params.addBodyParameter("fileName",path);
params.addBodyParameter("downloadName",fileName);
params.setSaveFilePath(Configs.WORD_BASE+"/"+fileName);
x.http().get(params, new Callback.CommonCallback<File>() {
@Override
public void onSuccess(File result) {
progressDialog.dismiss();
Toast.makeText(context,"下载成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
}
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_LIST_URL); RequestParams params=new RequestParams(RequestConfig.EXPORT_RECORD_URL);
params.addBodyParameter("page",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_ocr_file\":{\"upload_user\":{\"equalTo\":\""+userInfo+"\"},\"status\":{\"equalTo\":\"0\"}}}"; String json="{\"cc_export_record\":{\"export_user\":{\"equalTo\":\""+userInfo+"\"},\"type\":{\"equalTo\":0}}}";
params.addBodyParameter("filters",json); params.addBodyParameter("filters",json);
String json2="{\"cc_file\":{\"includes\":[\"file_id\"]}}";
params.addBodyParameter("includes",json2);
x.http().post(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) {
String data=result; List<OcrRootBean> been=GsonUtil.getInstance().fromJson(result,new TypeToken<List<OcrRootBean>>(){}.getType());
List<OcrInfo> list = GsonUtil.getInstance().fromJson(data, new TypeToken<List<OcrInfo>>() {}.getType()); if(isUpdate){
if(isUpdate) exportInfos.clear();
infos.clear(); }
infos.addAll(list); exportInfos.addAll(been);
if(list.size()<10){ if(been.size()==0){
Toast.makeText(context,"暂无数据",Toast.LENGTH_SHORT).show();
}
else if(been.size()<10&& been.size()>0){
hasMoreData=false; hasMoreData=false;
Toast.makeText(context,"无更多数据",Toast.LENGTH_SHORT).show(); // Toast.makeText(context,"无更多数据",Toast.LENGTH_SHORT).show();
} }
else else
hasMoreData=true; hasMoreData=true;
adaper.notifyDataSetChanged(); adaper.notifyDataSetChanged();
// List<OcrInfo> list=result;
pullToRefreshListView.onPullUpRefreshComplete(); pullToRefreshListView.onPullUpRefreshComplete();
pullToRefreshListView.onPullDownRefreshComplete(); pullToRefreshListView.onPullDownRefreshComplete();
pullToRefreshListView.setHasMoreData(hasMoreData); pullToRefreshListView.setHasMoreData(hasMoreData);
...@@ -137,23 +258,28 @@ public class ExportFragment extends Fragment { ...@@ -137,23 +258,28 @@ public class ExportFragment extends Fragment {
@Override @Override
public void onError(Throwable ex, boolean isOnCallback) { public void onError(Throwable ex, boolean isOnCallback) {
Toast.makeText(context,"网络异常,请检测...",Toast.LENGTH_SHORT).show();
pullToRefreshListView.onPullUpRefreshComplete(); pullToRefreshListView.onPullUpRefreshComplete();
pullToRefreshListView.onPullDownRefreshComplete(); pullToRefreshListView.onPullDownRefreshComplete();
} }
@Override @Override
public void onCancelled(CancelledException cex) { public void onCancelled(CancelledException cex) {
} }
@Override @Override
public void onFinished() { public void onFinished() {
} }
}); });
}
public void setAllItemChecked(boolean flg){
adaper.setRadioAllSelected(flg);
}
public void setCheckBoxShow(int v){
adaper.setRadioShow(v);
}
public interface NoticeMessageToMain{
void noticeMessage(List<OcrRootBean> list);
} }
} }
package cn.com.bril.androidocr.studio.ui.fragment; package cn.com.bril.androidocr.studio.ui.fragment;
import android.app.ProgressDialog;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
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.ListView; import android.widget.ListView;
import android.widget.Toast; import android.widget.Toast;
...@@ -16,18 +20,22 @@ import org.xutils.common.Callback; ...@@ -16,18 +20,22 @@ import org.xutils.common.Callback;
import org.xutils.http.RequestParams; import org.xutils.http.RequestParams;
import org.xutils.x; import org.xutils.x;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; 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.OcrInfo; 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.configs.RequestConfig;
import cn.com.bril.androidocr.studio.interf.HandleMenuListener;
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.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;
/** /**
* Created by sunny on 2018-3-12. * Created by sunny on 2018-3-12.
...@@ -40,14 +48,31 @@ public class ShareFragment extends Fragment { ...@@ -40,14 +48,31 @@ public class ShareFragment extends Fragment {
private ListView listView; private ListView listView;
private Context context; private Context context;
private FragmentListAdapter adaper; private FragmentListAdapter adaper;
private List<OcrInfo> infos; private List<OcrRootBean> 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 List<OcrRootBean> selectedInfos=new ArrayList<>();
private ExportFragment.NoticeMessageToMain messageToMain;
private HandleMenuListener handleMenuListener;
private ProgressDialog dialog;
@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;
messageToMain= (ExportFragment.NoticeMessageToMain) context;
}
public List<OcrRootBean> getSelectedInfos() {
return selectedInfos;
}
public void setSelectedInfos(List<OcrRootBean> selectedInfos) {
this.selectedInfos = selectedInfos;
} }
@Nullable @Nullable
...@@ -60,6 +85,8 @@ public class ShareFragment extends Fragment { ...@@ -60,6 +85,8 @@ public class ShareFragment extends Fragment {
initEvents(); initEvents();
dialog=new ProgressDialog(context);
return view; return view;
} }
...@@ -68,12 +95,15 @@ public class ShareFragment extends Fragment { ...@@ -68,12 +95,15 @@ public class ShareFragment extends Fragment {
pullToRefreshListView= (PullToRefreshListView) view.findViewById(R.id.pullrefreshView); pullToRefreshListView= (PullToRefreshListView) view.findViewById(R.id.pullrefreshView);
listView=pullToRefreshListView.getRefreshableView(); listView=pullToRefreshListView.getRefreshableView();
pullToRefreshListView.doPullRefreshing(true,500); pullToRefreshListView.doPullRefreshing(true,500);
adaper=new FragmentListAdapter(context,infos=new ArrayList<>()); adaper=new FragmentListAdapter(context, beanList, listTextClickListener, new FragmentListAdapter.AdapterRadioSelectedListener() {
@Override
public void adapterRadioSelectedCallBack() {
setSelectedInfos(adaper.getSelectedInfo());
messageToMain.noticeMessage(adaper.getSelectedInfo());
}
});
listView.setAdapter(adaper); listView.setAdapter(adaper);
} }
public void initEvents(){ public void initEvents(){
pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() { pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() {
...@@ -100,65 +130,143 @@ public class ShareFragment extends Fragment { ...@@ -100,65 +130,143 @@ public class ShareFragment extends Fragment {
Toast.makeText(context,"暂无网络连接",Toast.LENGTH_LONG).show(); Toast.makeText(context,"暂无网络连接",Toast.LENGTH_LONG).show();
refreshView.onPullDownRefreshComplete(); refreshView.onPullDownRefreshComplete();
} }
} }
}); });
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
handleMenuListener.setHandleMenu(View.VISIBLE);
adaper.setRadioShow(View.VISIBLE);
return true;
}
});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String path=beanList.get(position).getIncludes().getCc_file().getFilePath();
String fileName=beanList.get(position).getIncludes().getCc_file().getFileName();
if(fileName.contains(".pdf")){
if(FileUtil.isFileExist(Configs.PDF_BASE+"/"+fileName))
startFileIntent("pdf",fileName);
else{
downLoadFile(path, fileName);
}
}else if(fileName.contains(".doc")|| fileName.contains(".docs")){
if(FileUtil.isFileExist(Configs.WORD_BASE+"/"+fileName))
startFileIntent("word",fileName);
else
downLoadFile(path, fileName);
}else if(fileName.contains(".txt")){
if(FileUtil.isFileExist(Configs.TXT_BASE+"/"+fileName))
startFileIntent("txt",fileName);
else
downLoadFile(path, fileName);
} }
}
});
}
public void setAllItemChecked(boolean flg){
adaper.setRadioAllSelected(flg);
}
public void setCheckBoxShow(int v){
adaper.setRadioShow(v);
}
private void getShareRecord(){ private void getShareRecord(){
RequestParams params=new RequestParams(RequestConfig.EXPORT_LIST_URL); RequestParams params=new RequestParams(RequestConfig.EXPORT_RECORD_URL);
params.addBodyParameter("page",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_ocr_file\":{\"upload_user\":{\"equalTo\":\""+userInfo+"\"},\"status\":{\"equalTo\":\"1\"}}}"; String json="{\"cc_export_record\":{\"export_user\":{\"equalTo\":\""+userInfo+"\"},\"type\":{\"equalTo\":2}}}";
params.addBodyParameter("filters",json); params.addBodyParameter("filters",json);
String json2="{\"cc_file\":{\"includes\":[\"file_id\"]}}";
params.addBodyParameter("includes",json2);
x.http().post(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) {
String data=result; List<OcrRootBean> been=GsonUtil.getInstance().fromJson(result,new TypeToken<List<OcrRootBean>>(){}.getType());
List<OcrInfo> list = GsonUtil.getInstance().fromJson(data, new TypeToken<List<OcrInfo>>() {}.getType()); if(isUpdate){
if(isUpdate) beanList.clear();
infos.clear(); }
infos.addAll(list); beanList.addAll(been);
if(list.size()<10){ if(been.size()==0){
if (list.size()==0)
Toast.makeText(context,"暂无数据",Toast.LENGTH_SHORT).show(); Toast.makeText(context,"暂无数据",Toast.LENGTH_SHORT).show();
else{
hasMoreData=false;
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 else
hasMoreData=true; hasMoreData=true;
adaper.notifyDataSetChanged(); adaper.notifyDataSetChanged();
// List<OcrInfo> list=result;
pullToRefreshListView.onPullUpRefreshComplete(); pullToRefreshListView.onPullUpRefreshComplete();
pullToRefreshListView.onPullDownRefreshComplete(); pullToRefreshListView.onPullDownRefreshComplete();
pullToRefreshListView.setHasMoreData(hasMoreData); pullToRefreshListView.setHasMoreData(hasMoreData);
} }
@Override @Override
public void onError(Throwable ex, boolean isOnCallback) { public void onError(Throwable ex, boolean isOnCallback) {
pullToRefreshListView.onPullUpRefreshComplete(); pullToRefreshListView.onPullUpRefreshComplete();
pullToRefreshListView.onPullDownRefreshComplete(); pullToRefreshListView.onPullDownRefreshComplete();
} }
@Override @Override
public void onCancelled(CancelledException cex) { public void onCancelled(CancelledException cex) {
} }
@Override @Override
public void onFinished() { public void onFinished() {
} }
}); });
} }
private void downLoadFile(String path, String fileName) {
dialog.setMessage("正在下載...");
dialog.show();
RequestParams params=new RequestParams(RequestConfig.DOWN_LOAD_URL);
params.addBodyParameter("fileName",path);
params.addBodyParameter("downloadName",fileName);
params.setSaveFilePath(Configs.WORD_BASE+"/"+fileName);
x.http().get(params, new Callback.CommonCallback<File>() {
@Override
public void onSuccess(File result) {
Toast.makeText(context,"下载成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
}
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();
}
} }
...@@ -42,4 +42,22 @@ public class FileUtil { ...@@ -42,4 +42,22 @@ public class FileUtil {
return filePic.getAbsolutePath(); return filePic.getAbsolutePath();
} }
//判断文件是否存在
public static boolean isFileExist(String path){
try
{
File f=new File(path);
if(!f.exists())
{
return false;
}
}
catch (Exception e)
{
return false;
}
return true;
}
} }
...@@ -66,4 +66,12 @@ public class ScreenUtil { ...@@ -66,4 +66,12 @@ public class ScreenUtil {
} }
return windowPos; return windowPos;
} }
//清晰度设置
public static void setBackgroundAlpha(Activity context, float bgAlpha)
{
WindowManager.LayoutParams lp = context.getWindow().getAttributes();
lp.alpha = bgAlpha; //0.0-1.0
context.getWindow().setAttributes(lp);
}
} }
package cn.com.bril.androidocr.studio.utils; package cn.com.bril.androidocr.studio.utils;
import android.content.Context; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.media.MediaMetadataRetriever; import android.media.MediaMetadataRetriever;
import android.net.Uri; import android.net.Uri;
...@@ -15,16 +15,17 @@ import java.io.File; ...@@ -15,16 +15,17 @@ import java.io.File;
public class ShareUtil { public class ShareUtil {
// 調用系統方法分享文件 // 調用系統方法分享文件
public static void shareFile(Context context, 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, Uri.fromFile(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);
context.startActivity(Intent.createChooser(share, "分享文件")); activity.startActivity(Intent.createChooser(share, "分享文件"));
// activity.startActivityForResult(share,0x00);
} else { } else {
Toast.makeText(context,"分享文件不存在",Toast.LENGTH_SHORT).show(); Toast.makeText(activity,"分享文件不存在",Toast.LENGTH_SHORT).show();
} }
} }
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/normal" android:state_checked="true"/> <item android:color="@color/white" android:state_pressed="true"/>
<item android:color="@color/tab_grey" android:state_checked="false"/> <item android:color="@color/tab_grey" android:state_pressed="false"/>
</selector> </selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/bg_normal"> android:background="@color/bg_normal">
<RelativeLayout
android:id="@+id/head_content"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include <include
android:id="@+id/header"
layout="@layout/top_title_layout"/> layout="@layout/top_title_layout"/>
<include
layout="@layout/bottom_tab_head_layout"
/>
</RelativeLayout>
<android.support.design.widget.FloatingActionButton <android.support.design.widget.FloatingActionButton
android:id="@+id/fabbtn" android:id="@+id/fabbtn"
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -22,18 +28,18 @@ ...@@ -22,18 +28,18 @@
android:src="@drawable/camera_icon" android:src="@drawable/camera_icon"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:layout_marginBottom="40dp" android:layout_marginBottom="50dp"
android:layout_marginRight="20dp" /> android:layout_marginRight="20dp" />
<android.support.v4.view.ViewPager <cn.com.bril.androidocr.studio.ui.widget.NoScrollViewPager
android:id="@+id/viewPager" android:id="@+id/viewPager"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_above="@+id/bottom_menu" android:layout_above="@+id/bottom_menu"
android:layout_below="@+id/header"/> android:layout_below="@+id/head_content"/>
<LinearLayout <RelativeLayout
android:id="@+id/bottom_menu" android:id="@+id/bottom_menu"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
...@@ -42,7 +48,10 @@ ...@@ -42,7 +48,10 @@
<include <include
layout="@layout/main_bottom_layout" layout="@layout/main_bottom_layout"
/> />
</LinearLayout> <include
layout="@layout/bottom_tab_layout"
/>
</RelativeLayout>
......
...@@ -77,7 +77,6 @@ ...@@ -77,7 +77,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:visibility="gone"
android:padding="10dp"> android:padding="10dp">
<TextView <TextView
......
...@@ -22,11 +22,12 @@ ...@@ -22,11 +22,12 @@
android:layout_toRightOf="@+id/icon"> android:layout_toRightOf="@+id/icon">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1" android:layout_weight="1"
android:id="@+id/title" android:id="@+id/title"
android:textSize="@dimen/txt16sp" android:textSize="@dimen/txt16sp"
android:focusable="false"
android:textColor="@color/txtcolor33" android:textColor="@color/txtcolor33"
android:text="新文档"/> android:text="新文档"/>
...@@ -38,8 +39,8 @@ ...@@ -38,8 +39,8 @@
android:gravity="center_vertical"> android:gravity="center_vertical">
<ImageView <ImageView
android:layout_width="30dp" android:layout_width="15dp"
android:layout_height="20dp" android:layout_height="10dp"
android:src="@drawable/date"/> android:src="@drawable/date"/>
<TextView <TextView
android:id="@+id/time" android:id="@+id/time"
...@@ -52,6 +53,18 @@ ...@@ -52,6 +53,18 @@
</LinearLayout> </LinearLayout>
<CheckBox
android:id="@+id/radio"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_marginRight="15dp"
android:button="@null"
android:focusable="false"
android:visibility="gone"
android:background="@drawable/radio_selector"/>
</RelativeLayout> </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="49dp"
android:id="@+id/main_bottom_menu"
android:orientation="vertical" android:orientation="vertical"
android:background="@color/white" android:background="@color/white"
android:layout_gravity="bottom" android:layout_gravity="bottom"
......
...@@ -48,8 +48,9 @@ ...@@ -48,8 +48,9 @@
/> />
<ImageView <ImageView
android:id="@+id/right_iv" android:id="@+id/right_iv"
android:layout_width="5dp" android:layout_width="30dp"
android:layout_height="20dp" android:layout_height="20dp"
android:scaleType="centerInside"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_marginRight="20dp" android:layout_marginRight="20dp"
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
<dimen name="txt18sp">18sp</dimen> <dimen name="txt18sp">18sp</dimen>
<dimen name="txt16sp">16sp</dimen> <dimen name="txt16sp">16sp</dimen>
<dimen name="txt14sp">14sp</dimen> <dimen name="txt14sp">14sp</dimen>
<dimen name="txt12sp">12sp</dimen>
<!-- 下拉刷新字体 --> <!-- 下拉刷新字体 -->
<dimen name="picture_pull_to_refresh_loading_text_size">14dp</dimen> <dimen name="picture_pull_to_refresh_loading_text_size">14dp</dimen>
......
...@@ -4,8 +4,12 @@ ...@@ -4,8 +4,12 @@
<string name="back">返回</string> <string name="back">返回</string>
<string name="export">导出</string> <string name="export">导出</string>
<string name="recoginize">识别</string> <string name="recoginize">识别</string>
<string name="share">分享</string>
<string name="rename">重命名</string>
<string name="delete">删除</string>
<string name="rerecoginize">重新拍摄</string> <string name="rerecoginize">重新拍摄</string>
<string name="vertify">校对</string> <string name="vertify">校对</string>
<string name="search_content">请输入要查询的内容</string>
<string name="vertify_content"> <string name="vertify_content">
贵阳际会峰云会议服务有限公司倾力打造中国会议策划第一品牌; 贵阳际会峰云会议服务有限公司倾力打造中国会议策划第一品牌;
专业提供会议整体策划、场地预定、场地搭建、印刷、礼品、会议接待、专车接待、视频会议等一系列会议服务。经过10年的历练,拥有非常专业的会议策划团队; 专业提供会议整体策划、场地预定、场地搭建、印刷、礼品、会议接待、专车接待、视频会议等一系列会议服务。经过10年的历练,拥有非常专业的会议策划团队;
......
...@@ -20,4 +20,16 @@ ...@@ -20,4 +20,16 @@
<!--引入定义的menu主题--> <!--引入定义的menu主题-->
</style> </style>
<style name="action_item">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">1</item>
<item name="android:gravity">center</item>
<item name="android:textSize">14sp</item>
<item name="android:drawablePadding">2dp</item>
<!--<item name="android:background">@drawable/bottom_nav_selector</item>-->
<item name="android:textColor">@color/white</item>
</style>
</resources> </resources>
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