From 0fdb8fa8fbe95f4fcac802c51001e9cec9b716dc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E8=B5=9B=E5=BA=B7?= <chensaikang@haomo-studio.com>
Date: Mon, 9 Apr 2018 14:38:18 +0800
Subject: [PATCH] =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=8A=9F=E8=83=BD=E6=B7=BB?=
 =?UTF-8?q?=E5=8A=A0=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/build.gradle                              |   6 +-
 app/src/main/AndroidManifest.xml              |   3 +-
 .../androidocr/studio/OcrApplication.java     |   6 -
 .../bril/androidocr/studio/beans/OcrInfo.java |  71 ++-
 .../studio/configs/RequestConfig.java         |  21 +-
 .../androidocr/studio/http/HttpHolder.java    | 103 +++--
 .../studio/interf/OnHttpListener.java         |   4 +-
 .../studio/ui/activity/BaseActivity.java      |   2 +
 .../studio/ui/activity/MainActivity.java      | 404 +++++++++++++++++-
 .../studio/ui/activity/VertifyActivity.java   | 169 ++++----
 .../ui/adapter/FragmentListAdapter.java       |  79 +++-
 .../ui/adapter/TabFragmentPagerAdapter.java   |  18 +-
 .../studio/ui/fragment/ExportFragment.java    | 166 ++++++-
 .../studio/ui/fragment/ShareFragment.java     | 172 ++++++--
 .../androidocr/studio/utils/FileUtil.java     |  18 +
 .../androidocr/studio/utils/ScreenUtil.java   |   8 +
 .../androidocr/studio/utils/ShareUtil.java    |   9 +-
 .../main/res/color/bottom_tab_selector.xml    |   4 +-
 app/src/main/res/layout/activity_main.xml     |  27 +-
 app/src/main/res/layout/export_layout.xml     |   1 -
 .../main/res/layout/listview_item_layout.xml  |  19 +-
 .../main/res/layout/main_bottom_layout.xml    |   3 +-
 app/src/main/res/layout/top_title_layout.xml  |   3 +-
 app/src/main/res/values/dimen.xml             |   1 +
 app/src/main/res/values/strings.xml           |   4 +
 app/src/main/res/values/styles.xml            |  12 +
 26 files changed, 1083 insertions(+), 250 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index 9dc49cc..7d390fa 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,5 +1,5 @@
 apply plugin: 'com.android.application'
-
+apply plugin: 'com.jakewharton.butterknife'
 configurations.all {
     resolutionStrategy.force 'com.android.support:support-annotations:23.1.0'
 }
@@ -57,6 +57,8 @@ dependencies {
     compile files('libs/poi/poi-3.17.jar')
     compile files('libs/poi/poi-scratchpad-3.17.jar')
     compile project(':scanlibrary')
+
+
     compile 'com.android.support:appcompat-v7:25.3.1'
     compile 'com.android.support:design:25.3.1'
     compile 'com.github.bumptech.glide:glide:4.3.1'
@@ -64,8 +66,8 @@ dependencies {
     compile 'com.android.support.constraint:constraint-layout:1.0.2'
     compile 'org.xutils:xutils:3.5.0'
     compile 'com.android.support:support-v4:25.3.1'
+    compile 'com.google.code.gson:gson:2.8.1'
     testCompile 'junit:junit:4.12'
     annotationProcessor 'com.github.bumptech.glide:compiler:4.3.1'
     annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
-    compile 'com.google.code.gson:gson:2.8.1'
 }
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 79358c1..c136ab7 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -22,7 +22,7 @@
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
-                <!--<category android:name="android.intent.category.LAUNCHER" />-->
+                <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
         <activity android:name=".ui.activity.RecognizeActivity" />
@@ -38,6 +38,7 @@
         <activity
             android:name=".ui.activity.OcrRecordActivity"
             android:launchMode="singleTask" />
+        <activity android:name=".ui.activity.SearchActivity"></activity>
     </application>
 
 </manifest>
\ No newline at end of file
diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/OcrApplication.java b/app/src/main/java/cn/com/bril/androidocr/studio/OcrApplication.java
index 53368c5..6800ad8 100644
--- a/app/src/main/java/cn/com/bril/androidocr/studio/OcrApplication.java
+++ b/app/src/main/java/cn/com/bril/androidocr/studio/OcrApplication.java
@@ -99,12 +99,6 @@ public class OcrApplication extends Application {
         }
     }
     public void exit(){
-//        for (Activity activity : activities) {
-//            if (activity!=null) {
-//                activity.finish();
-//            }
-//        }
-//        System.exit(1);
         ActivityManager manager = (ActivityManager)getApplicationContext().getSystemService(ACTIVITY_SERVICE); //获取应用程序管理器
         manager.killBackgroundProcesses(getPackageName()); //强制结束当前应用程序
     }
diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/beans/OcrInfo.java b/app/src/main/java/cn/com/bril/androidocr/studio/beans/OcrInfo.java
index 014b280..23badef 100644
--- a/app/src/main/java/cn/com/bril/androidocr/studio/beans/OcrInfo.java
+++ b/app/src/main/java/cn/com/bril/androidocr/studio/beans/OcrInfo.java
@@ -2,19 +2,42 @@ package cn.com.bril.androidocr.studio.beans;
 
 /**
  * Created by sunny on 2018-3-16.
-  *  status  0导出;1分享
+ * 主文件
+  *  status  为文件归属
  */
 
 public class OcrInfo {
 
-   private String id;
+    private String id;
+
     private String fileName;
+
     private String filePath;
-    private String uploadUser;
-    private String lastUpdateTime;
+
+    private String fileSuffix;
+
+    private String uploadPeple;
+
     private String createTime;
+
+    private String lastUpdateTime;
+
+    private String fileType;
+
     private String status;
 
+    private String remark;
+
+    private boolean isChecked;
+
+    public boolean isChecked() {
+        return isChecked;
+    }
+
+    public void setChecked(boolean checked) {
+        isChecked = checked;
+    }
+
     public String getId() {
         return id;
     }
@@ -39,20 +62,20 @@ public class OcrInfo {
         this.filePath = filePath;
     }
 
-    public String getUploadUser() {
-        return uploadUser;
+    public String getFileSuffix() {
+        return fileSuffix;
     }
 
-    public void setUploadUser(String uploadUser) {
-        this.uploadUser = uploadUser;
+    public void setFileSuffix(String fileSuffix) {
+        this.fileSuffix = fileSuffix;
     }
 
-    public String getLastUpdateTime() {
-        return lastUpdateTime;
+    public String getUploadPeple() {
+        return uploadPeple;
     }
 
-    public void setLastUpdateTime(String lastUpdateTime) {
-        this.lastUpdateTime = lastUpdateTime;
+    public void setUploadPeple(String uploadPeple) {
+        this.uploadPeple = uploadPeple;
     }
 
     public String getCreateTime() {
@@ -63,6 +86,22 @@ public class OcrInfo {
         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() {
         return status;
     }
@@ -70,4 +109,12 @@ public class OcrInfo {
     public void setStatus(String status) {
         this.status = status;
     }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
 }
diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/configs/RequestConfig.java b/app/src/main/java/cn/com/bril/androidocr/studio/configs/RequestConfig.java
index 5db6fc2..b865bb8 100644
--- a/app/src/main/java/cn/com/bril/androidocr/studio/configs/RequestConfig.java
+++ b/app/src/main/java/cn/com/bril/androidocr/studio/configs/RequestConfig.java
@@ -7,14 +7,27 @@ package cn.com.bril.androidocr.studio.configs;
 public class RequestConfig {
     public static int TAKE_PHOTO_REQUEST=1;
     public static int PERMISSION_REQUEST_CODE=99;
-//    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://zjk.haomo-studio.com/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 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";
+
 
 
 
diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/http/HttpHolder.java b/app/src/main/java/cn/com/bril/androidocr/studio/http/HttpHolder.java
index 4506a50..cda26e7 100644
--- a/app/src/main/java/cn/com/bril/androidocr/studio/http/HttpHolder.java
+++ b/app/src/main/java/cn/com/bril/androidocr/studio/http/HttpHolder.java
@@ -1,7 +1,6 @@
 package cn.com.bril.androidocr.studio.http;
 
-import android.util.Log;
-
+import org.json.JSONArray;
 import org.xutils.common.Callback;
 import org.xutils.common.util.KeyValue;
 import org.xutils.http.RequestParams;
@@ -14,10 +13,11 @@ import java.util.Iterator;
 import java.util.List;
 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.interf.OnHttpListener;
-
-import static com.bumptech.glide.gifdecoder.GifHeaderParser.TAG;
+import cn.com.bril.androidocr.studio.ui.activity.VertifyActivity;
+import cn.com.bril.androidocr.studio.utils.GsonUtil;
 
 /**
  * Created by sunny on 2018-3-12.
@@ -26,7 +26,7 @@ import static com.bumptech.glide.gifdecoder.GifHeaderParser.TAG;
 public class HttpHolder {
 
     //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);
         Iterator<Map.Entry<String,Object>> it = map.entrySet().iterator();
         while (it.hasNext()){
@@ -36,56 +36,97 @@ public class HttpHolder {
             else
                 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){
-
-        String flg="";
+    public static void upLoadFile(String path, VertifyActivity.HttpCallBack callBack){
         RequestParams params=new RequestParams(RequestConfig.UP_FILE);
-        params.setConnectTimeout(10000);
-        params.setReadTimeout(5000);
-        //创建List<KeyValue>对象
         List<KeyValue> list = new ArrayList<>();
-        //给list中添加数据,filePah是上传的文件路径,比如sd卡中图片
         list.add(new KeyValue("file", new File(path)));//文件流数据
-//        //其它参数,根据项目而定,比如我的项目中要传入的参数是json格式的
 //        list.add(new KeyValue("parameters", json.toString()));
-        //创建MultipartBody
         MultipartBody body = new MultipartBody(list, "UTF-8");
         //添加请求参数
         params.setRequestBody(body);
-//
-        File file=new File(path);
-        boolean flag=file.exists();
-//        params.addBodyParameter("file",file);
+        x.http().post(params,callBack);
+    };
 
-        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
             public void onSuccess(String result) {
-                String data=result;
-                listener.success(data);
+                http.success("",result);
             }
-
             @Override
             public void onError(Throwable ex, boolean isOnCallback) {
-                Log.e(TAG, "onError: "+ex.getMessage(),ex );
-                listener.error(ex);
+                http.error("",ex);
             }
-
             @Override
             public void onCancelled(CancelledException cex) {
-
             }
-
             @Override
             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);
+    }
 }
diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/interf/OnHttpListener.java b/app/src/main/java/cn/com/bril/androidocr/studio/interf/OnHttpListener.java
index 37c29c1..17ad42d 100644
--- a/app/src/main/java/cn/com/bril/androidocr/studio/interf/OnHttpListener.java
+++ b/app/src/main/java/cn/com/bril/androidocr/studio/interf/OnHttpListener.java
@@ -6,7 +6,7 @@ package cn.com.bril.androidocr.studio.interf;
 
 public interface OnHttpListener {
 
-    void success(String result);
+    void success(String type,String result);
 
-    void error(Throwable t);
+    void error(String type,Throwable t);
 }
diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/BaseActivity.java b/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/BaseActivity.java
index ef199cb..70508d8 100644
--- a/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/BaseActivity.java
+++ b/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/BaseActivity.java
@@ -59,4 +59,6 @@ public class BaseActivity extends AppCompatActivity {
     private void dispatchBadLicense() {
         showDialog( BaseActivity.DIALOG_BAD_LICENSE );
     }
+
+
 }
diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/MainActivity.java b/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/MainActivity.java
index e601a7d..72cedb6 100644
--- a/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/MainActivity.java
+++ b/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/MainActivity.java
@@ -1,39 +1,72 @@
 package cn.com.bril.androidocr.studio.ui.activity;
 
+import android.app.AlertDialog;
+import android.app.ProgressDialog;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.ServiceConnection;
+import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
+import android.net.Uri;
 import android.os.Bundle;
+import android.os.Handler;
 import android.os.IBinder;
+import android.os.Message;
 import android.os.RemoteException;
 import android.support.annotation.IdRes;
 import android.support.annotation.NonNull;
 import android.support.design.widget.FloatingActionButton;
 import android.support.v4.app.Fragment;
 import android.support.v4.view.ViewPager;
+import android.view.Gravity;
+import android.view.LayoutInflater;
 import android.view.View;
+import android.widget.EditText;
+import android.widget.ImageView;
 import android.widget.LinearLayout;
+import android.widget.PopupWindow;
 import android.widget.RadioGroup;
+import android.widget.RelativeLayout;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import com.bril.baoding.studio.aidl.GetUserid;
 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.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.OnClick;
 import cn.com.bril.androidocr.studio.OcrApplication;
 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.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.fragment.ExportFragment;
 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)
@@ -43,7 +76,39 @@ public class MainActivity extends BaseActivity {
     @BindView(R.id.layout_3)
     LinearLayout layout3;
     @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;
     @NonNull
     @BindView(R.id.rightTv)
@@ -59,6 +124,7 @@ public class MainActivity extends BaseActivity {
 
     private int type;//获取图片类型
     private GetUserid mService;
+    private boolean isTabMenuShow = false;
     private List<Fragment> fragmentList;
     private ServiceConnection mServiceConnection = new ServiceConnection() {
 
@@ -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
     protected void onCreate(Bundle savedInstanceState) {
@@ -92,8 +167,11 @@ public class MainActivity extends BaseActivity {
 
         initViews();
 
+        setIconSize();
+
         initEvents();
 
+        dialog = new ProgressDialog(this);
     }
 
     private void bindService() {
@@ -103,18 +181,37 @@ public class MainActivity extends BaseActivity {
     }
 
     private void initViews() {
-        rightTv.setText("导入");
+        rightIv.setVisibility(View.VISIBLE);
+        rightTv.setVisibility(View.GONE);
         topTitle.setText("OCR识别");
-
-        fragmentList=new ArrayList<>();
-        fragmentList.add(new ExportFragment());
-        fragmentList.add(new ShareFragment());
-        TabFragmentPagerAdapter adapter=new TabFragmentPagerAdapter(getSupportFragmentManager(),fragmentList);
+        fragmentList = new ArrayList<>();
+        if (exportFragment == null)
+            exportFragment = new ExportFragment();
+        if (shareFragment == null)
+            shareFragment = new ShareFragment();
+        fragmentList.add(exportFragment);
+        fragmentList.add(shareFragment);
+        adapter = new TabFragmentPagerAdapter(getSupportFragmentManager(), fragmentList);
         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() {
+
         layout1.setVisibility(View.GONE);
         layout2.setVisibility(View.INVISIBLE);
         layout3.setVisibility(View.INVISIBLE);
@@ -132,17 +229,19 @@ public class MainActivity extends BaseActivity {
                         break;
                     case R.id.radio_2:
                         tag = "导出记录";
-                      setViewShow(0);
+                        setViewShow(0);
                         break;
                     case R.id.radio_3:
                         tag = "分享记录";
-                      setViewShow(1);
+                        setViewShow(1);
                         break;
                 }
                 topTitle.setText(tag);
             }
         });
-
+        export.setOnClickListener(this);
+        share.setOnClickListener(this);
+        delete.setOnClickListener(this);
         viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
             @Override
             public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
@@ -151,7 +250,7 @@ public class MainActivity extends BaseActivity {
 
             @Override
             public void onPageSelected(int position) {
-               setViewShow(position);
+                setViewShow(position);
             }
 
             @Override
@@ -166,9 +265,9 @@ public class MainActivity extends BaseActivity {
         super.onResume();
     }
 
-    public void setViewShow(int position){
+    public void setViewShow(int position) {
         setImageGone();
-        switch (position){
+        switch (position) {
             case 0:
                 layout2.setVisibility(View.VISIBLE);
                 break;
@@ -179,25 +278,288 @@ public class MainActivity extends BaseActivity {
         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) {
         switch (view.getId()) {
             case R.id.rightTv:
                 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;
             case R.id.fabbtn:
                 type = ScanConstants.OPEN_CAMERA;
+                Intent intent2 = new Intent(this, RecognizeActivity.class);
+                intent2.putExtra("type", type);
+                startActivity(intent2);
+                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;
         }
-        Intent intent = new Intent(this, RecognizeActivity.class);
-        intent.putExtra("type", type);
-        startActivity(intent);
     }
+    //展示工具栏
+    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.putExtra("type", type);
+                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;
+    }
 
-        OcrApplication.getInstance().exit();
-        super.onBackPressed();
+    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
+    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);
+        }
+    }
+
+    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
+    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();
+    }
+
+
 }
diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/VertifyActivity.java b/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/VertifyActivity.java
index 10b214b..1ac7870 100644
--- a/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/VertifyActivity.java
+++ b/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/VertifyActivity.java
@@ -6,10 +6,9 @@ import android.content.Intent;
 import android.graphics.Bitmap;
 import android.graphics.drawable.BitmapDrawable;
 import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
 import android.support.annotation.Nullable;
 import android.support.v7.app.AppCompatActivity;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.CompoundButton;
@@ -42,19 +41,19 @@ import butterknife.ButterKnife;
 import butterknife.OnClick;
 import cn.com.bril.androidocr.studio.OcrApplication;
 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.OcrInfo;
 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.interf.OnHttpListener;
 import cn.com.bril.androidocr.studio.utils.GsonUtil;
 import cn.com.bril.androidocr.studio.utils.ItextUtils;
 import cn.com.bril.androidocr.studio.utils.ScreenUtil;
 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)
     ImageView lefIv;
@@ -85,6 +84,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
     private PopupWindow mPopupWindow;
 
     private String statusType;
+    private OcrInfo ocrInfo;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -108,7 +108,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
         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) {
         switch (view.getId()) {
             case R.id.left_iv:
@@ -122,9 +122,14 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
             case R.id.verrify:
                 Intent proofread = new Intent(this, ProofreadActivity.class);
                 proofread.putExtra("image", getIntentData());
-//                startActivity(proofread);
                 startActivityForResult(proofread, 10);
                 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
         mPopupWindow.setTouchable(true);
         mPopupWindow.setOutsideTouchable(true);
         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);
 //        backgroundAlpha(0.5f);
     }
@@ -156,11 +156,6 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
         }
     }
 
-    @OnClick(R.id.right_iv)
-    public void onViewClicked() {
-        showHandleMenu();
-    }
-
     //导出选择视图
     private void showExportDialog() {
         mPopupWindow.dismiss();
@@ -189,6 +184,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
         view.findViewById(R.id.txtLayout).setOnClickListener(clickListener);
     }
 
+
     private View.OnClickListener clickListener = new View.OnClickListener() {
         @Override
         public void onClick(View v) {
@@ -212,11 +208,13 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
                     radio2.setEnabled(false);
                     break;
                 case R.id.export:
+                    mPopupWindow.dismiss();
                     statusType="0";
                     showExportDialog();
                     break;
                 case R.id.share:
-                    statusType="1";
+                    mPopupWindow.dismiss();
+                    statusType="2";
                     exportDoc("share");
                     break;
             }
@@ -232,19 +230,22 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
 
             if (isChecked) {
                 //设置只点击一次,其余均不可点击
-
                 switch (buttonView.getId()) {
                     case R.id.radio:
                         pdf.setTextColor(getResources().getColor(R.color.yellow));
 //                            handler.sendEmptyMessageDelayed(1,500);
+                        statusType="0";
                         exportPdf();
+
                         break;
                     case R.id.radio1:
                         img.setTextColor(getResources().getColor(R.color.yellow));
 //                            handler.sendEmptyMessageDelayed(2,500);
+                        statusType="0";
                         exportDoc("export");
                         break;
                     case R.id.radio2:
+                        statusType="0";
                         txt.setTextColor(getResources().getColor(R.color.yellow));
                         exportTxt();
                         break;
@@ -262,17 +263,15 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
                 super.run();
                 boolean flg = ItextUtils.StringToPdf(recogniztion, pdfPath);
                 if (flg) {
-                    handler.sendEmptyMessage(1);
-                    HttpHolder.upLoadFile(pdfPath,VertifyActivity.this);
+                    HttpHolder.upLoadFile(pdfPath,new HttpCallBack("upload"));
                 }
-
             }
         }.start();
 
     }
 
     private void exportTxt() {
-        String filename = image.getName().replace("png", "txt");
+        String filename = image.getName().replace("jpg", "txt");
         String path = Configs.TXT_BASE + "/" + filename;
         File file;
         try {
@@ -285,8 +284,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
             FileOutputStream outStream = new FileOutputStream(file);
             outStream.write(recogniztion.getBytes());
             outStream.close();
-            HttpHolder.upLoadFile(path, VertifyActivity.this);
-            handler.sendEmptyMessageDelayed(3, 500);
+            HttpHolder.upLoadFile(path,new HttpCallBack("upload"));
         } catch (IOException e) {
             e.printStackTrace();
         }
@@ -294,6 +292,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
     }
 
     private void exportDoc(String type) {
+        if(null==ocrInfo)
         try {
             String filename = image.getName().replace("jpg", "doc");
             String path = Configs.WORD_BASE + "/" + filename;
@@ -309,81 +308,73 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
             if("share".equals(type))
                 ShareUtil.shareFile(this,new File(path));
 
-            HttpHolder.upLoadFile(path, this);
+            HttpHolder.upLoadFile(path, new HttpCallBack("upload"));
 
         } 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() {
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                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
-    public void success(String result) {
-        try {
-            JSONObject object = new JSONObject(result);
-            String filePath = object.getString("message");
-            String fileName = filePath.substring(4);
-            Map<String, Object> map = new HashMap<>();
-            map.put("header", filePath);
-            map.put("filePath", filePath);
-            map.put("fileName", fileName);
-            map.put("status", statusType);
-            map.put("uploadUser", Configs.USER_NAME + "_" + Configs.USER_ID);
-            HttpHolder.exportFile(RequestConfig.ADD_URL, map, creatListener);
-        } catch (JSONException e) {
-            e.printStackTrace();
+    public class HttpCallBack implements Callback.CommonCallback<String>{
+        String httpType;
+        public HttpCallBack(String type) {
+            httpType=type;
         }
-
-    }
-
-    @Override
-    public void error(Throwable t) {
-
-    }
-
-    private Callback.CommonCallback<String> creatListener = new Callback.CommonCallback<String>() {
         @Override
         public void onSuccess(String result) {
-            if(null!=dialog || dialog.isShowing())
-                dialog.dismiss();
-            OcrInfo ocrInfo = GsonUtil.getInstance().fromJson(result, new TypeToken<OcrInfo>() {
-            }.getType());
-            if (null != ocrInfo.getId() || "" != ocrInfo.getId())
-                Toast.makeText(VertifyActivity.this, "导出成功", Toast.LENGTH_SHORT).show();
+            if("upload".equals(httpType)){
+                try {
+                    JSONObject object = new JSONObject(result);
+                    String filePath = object.getString("message");
+                    String fileName = filePath.substring(4);
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("header", filePath);
+                    map.put("filePath", filePath);
+                    map.put("fileName", fileName);
+                    map.put("fileSuffix",fileName.substring(fileName.indexOf(".")+1));
+                    map.put("status","ocr");
+                    map.put("uploadPeple", Configs.USER_NAME + "_" + Configs.USER_ID);
+                    HttpHolder.exportFile(RequestConfig.ADD_URL, map, new HttpCallBack("create_file"));
+                } catch (JSONException e) {
+                    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");
+                map.put("fileId",ocrInfo.getId());
+                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)){
+                if(dialog!=null && dialog.isShowing())
+                    dialog.dismiss();
+                ExportInfo exportInfo= GsonUtil.getInstance().fromJson(result, new TypeToken<ExportInfo>() {
+                }.getType());
+                if(null!=exportInfo){
+                    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
         public void onError(Throwable ex, boolean isOnCallback) {
-
+            Log.e("TAG",ex.toString());
+            Toast.makeText(VertifyActivity.this, "连接异常,请调试", Toast.LENGTH_SHORT).show();
         }
 
         @Override
@@ -395,5 +386,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
         public void onFinished() {
 
         }
-    };
+    }
+
+
 }
diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/FragmentListAdapter.java b/app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/FragmentListAdapter.java
index c60aecc..322fb78 100644
--- a/app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/FragmentListAdapter.java
+++ b/app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/FragmentListAdapter.java
@@ -5,12 +5,15 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
 import android.widget.TextView;
 
+import java.util.ArrayList;
 import java.util.List;
 
 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.
@@ -19,13 +22,35 @@ import cn.com.bril.androidocr.studio.beans.OcrInfo;
 public class FragmentListAdapter extends BaseAdapter {
 
     private Context context;
-    private List<OcrInfo> infos;
-
-    public FragmentListAdapter(Context context, List<OcrInfo> list) {
+    private List<OcrRootBean> infos;
+    private ListTextClickListener listTextClickListener;
+    private int show=View.GONE;
+    AdapterRadioSelectedListener radioSelectedListener;
+    public FragmentListAdapter(Context context, List<OcrRootBean> list, ListTextClickListener listTextClickListener, AdapterRadioSelectedListener radioSelectedListener) {
         this.context=context;
         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
     public int getCount() {
         return infos.size();
@@ -43,24 +68,60 @@ public class FragmentListAdapter extends BaseAdapter {
 
     @Override
     public View getView(int position, View convertView, ViewGroup parent) {
-        ViewHolder holder;
+        final ViewHolder holder;
         if(convertView==null){
             holder=new ViewHolder();
             convertView= LayoutInflater.from(context).inflate(R.layout.listview_item_layout,null);
             holder.title= (TextView)convertView .findViewById(R.id.title);
             holder.time= (TextView) convertView.findViewById(R.id.time);
+            holder.radioButton= (CheckBox) convertView.findViewById(R.id.radio);
             convertView.setTag(holder);
         }else
             holder= (ViewHolder) convertView.getTag();
 
-        OcrInfo info=infos.get(position);
-        holder.time.setText(info.getLastUpdateTime());
-        String fileName=info.getFileName().substring(0,info.getFileName().indexOf("."));
+        final OcrRootBean info=infos.get(position);
+        holder.time.setText(info.getSuperior().getCreateTime());
+        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.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;
+    }
+     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{
         TextView title,time;
+        CheckBox radioButton;
     }
 }
diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/TabFragmentPagerAdapter.java b/app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/TabFragmentPagerAdapter.java
index cd73654..9a2dd1b 100644
--- a/app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/TabFragmentPagerAdapter.java
+++ b/app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/TabFragmentPagerAdapter.java
@@ -3,6 +3,7 @@ package cn.com.bril.androidocr.studio.ui.adapter;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentPagerAdapter;
+import android.view.ViewGroup;
 
 import java.util.List;
 
@@ -13,12 +14,19 @@ import java.util.List;
 public class TabFragmentPagerAdapter extends FragmentPagerAdapter {
 
     List<Fragment> fragments;
-
+    List<String> tagList;
+    FragmentManager manager;
     public TabFragmentPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
         super(fm);
+        manager=fm;
         this.fragments=fragments;
     }
 
+    @Override
+    public int getItemPosition(Object object) {
+        return POSITION_NONE;
+    }
+
     @Override
     public Fragment getItem(int position) {
         return fragments.get(position);
@@ -28,4 +36,12 @@ public class TabFragmentPagerAdapter extends FragmentPagerAdapter {
     public int getCount() {
         return fragments.size();
     }
+
+
+    @Override
+    public Object instantiateItem(ViewGroup container, int position) {
+        return super.instantiateItem(container, position);
+    }
+
+
 }
diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ExportFragment.java b/app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ExportFragment.java
index b4d8344..67d425d 100644
--- a/app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ExportFragment.java
+++ b/app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ExportFragment.java
@@ -1,12 +1,17 @@
 package cn.com.bril.androidocr.studio.ui.fragment;
 
+import android.app.AlertDialog;
+import android.app.ProgressDialog;
 import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.AdapterView;
 import android.widget.ListView;
 import android.widget.Toast;
 
@@ -16,18 +21,22 @@ import org.xutils.common.Callback;
 import org.xutils.http.RequestParams;
 import org.xutils.x;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 
 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.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.pulltorefresh.PullToRefreshBase;
 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.HttpUtil;
+import cn.com.bril.androidocr.studio.utils.IntentUtil;
 
 /**
  * Created by sunny on 2018-3-12.
@@ -40,14 +49,31 @@ public class ExportFragment extends Fragment {
     private ListView listView;
     private Context context;
     private FragmentListAdapter adaper;
-    private List<OcrInfo> infos;
+    private List<OcrRootBean> exportInfos= new ArrayList<>();
     private boolean isUpdate=false,hasMoreData=false;
     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
     public void onAttach(Context context) {
         super.onAttach(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
@@ -60,6 +86,7 @@ public class ExportFragment extends Fragment {
 
         initEvents();
 
+        progressDialog=new ProgressDialog(context);
         return view;
     }
 
@@ -67,11 +94,16 @@ public class ExportFragment extends Fragment {
 
         pullToRefreshListView= (PullToRefreshListView) view.findViewById(R.id.pullrefreshView);
         listView=pullToRefreshListView.getRefreshableView();
-        pullToRefreshListView.doPullRefreshing(true,500);
-        adaper=new FragmentListAdapter(context,infos=new ArrayList<>());
+        adaper=new FragmentListAdapter(context, exportInfos , listener, new FragmentListAdapter.AdapterRadioSelectedListener() {
+            @Override
+            public void adapterRadioSelectedCallBack() {
+                setSelectedInfos(adaper.getSelectedInfo());
+                messageToMain.noticeMessage(adaper.getSelectedInfo());
+            }
+        });
         listView.setAdapter(adaper);
 
-
+        pullToRefreshListView.doPullRefreshing(true,500);
     }
 
     public void initEvents(){
@@ -96,6 +128,7 @@ public class ExportFragment extends Fragment {
                 page++;
                 if(HttpUtil.isNetworkConnected(context))
                     getExportRecord();
+
                 else{
                     Toast.makeText(context,"暂无网络连接",Toast.LENGTH_LONG).show();
                     refreshView.onPullDownRefreshComplete();
@@ -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(){
 
-        RequestParams params=new RequestParams(RequestConfig.EXPORT_LIST_URL);
+        RequestParams params=new RequestParams(RequestConfig.EXPORT_RECORD_URL);
         params.addBodyParameter("page",page+"");
         params.addBodyParameter("sortItem","create_time");
         params.addBodyParameter("sortOrder","desc");
         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);
+        String json2="{\"cc_file\":{\"includes\":[\"file_id\"]}}";
+        params.addBodyParameter("includes",json2);
         x.http().post(params, new Callback.CommonCallback<String>() {
             @Override
             public void onSuccess(String result) {
-               String data=result;
-                List<OcrInfo> list = GsonUtil.getInstance().fromJson(data, new TypeToken<List<OcrInfo>>() {}.getType());
-                if(isUpdate)
-                    infos.clear();
-                infos.addAll(list);
-                if(list.size()<10){
+                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();
+//                    Toast.makeText(context,"无更多数据",Toast.LENGTH_SHORT).show();
                 }
                 else
                     hasMoreData=true;
 
                 adaper.notifyDataSetChanged();
-//                List<OcrInfo> list=result;
+
                 pullToRefreshListView.onPullUpRefreshComplete();
                 pullToRefreshListView.onPullDownRefreshComplete();
                 pullToRefreshListView.setHasMoreData(hasMoreData);
@@ -137,23 +258,28 @@ public class ExportFragment extends Fragment {
 
             @Override
             public void onError(Throwable ex, boolean isOnCallback) {
+                Toast.makeText(context,"网络异常,请检测...",Toast.LENGTH_SHORT).show();
                 pullToRefreshListView.onPullUpRefreshComplete();
                 pullToRefreshListView.onPullDownRefreshComplete();
 
             }
-
             @Override
             public void onCancelled(CancelledException cex) {
-
             }
-
             @Override
             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);
     }
 
 }
diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ShareFragment.java b/app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ShareFragment.java
index d2b77da..d4877b0 100644
--- a/app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ShareFragment.java
+++ b/app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ShareFragment.java
@@ -1,12 +1,16 @@
 package cn.com.bril.androidocr.studio.ui.fragment;
 
+import android.app.ProgressDialog;
 import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.AdapterView;
 import android.widget.ListView;
 import android.widget.Toast;
 
@@ -16,18 +20,22 @@ import org.xutils.common.Callback;
 import org.xutils.http.RequestParams;
 import org.xutils.x;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 
 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.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.pulltorefresh.PullToRefreshBase;
 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.HttpUtil;
+import cn.com.bril.androidocr.studio.utils.IntentUtil;
 
 /**
  * Created by sunny on 2018-3-12.
@@ -40,14 +48,31 @@ public class ShareFragment extends Fragment {
     private ListView listView;
     private Context context;
     private FragmentListAdapter adaper;
-    private List<OcrInfo> infos;
+    private List<OcrRootBean> beanList=new ArrayList<>();
     private boolean isUpdate=false,hasMoreData=false;
     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
     public void onAttach(Context context) {
         super.onAttach(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
@@ -60,6 +85,8 @@ public class ShareFragment extends Fragment {
 
         initEvents();
 
+        dialog=new ProgressDialog(context);
+
         return view;
     }
 
@@ -68,12 +95,15 @@ public class ShareFragment extends Fragment {
         pullToRefreshListView= (PullToRefreshListView) view.findViewById(R.id.pullrefreshView);
         listView=pullToRefreshListView.getRefreshableView();
         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);
-
-
     }
-
     public void initEvents(){
 
         pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() {
@@ -100,65 +130,143 @@ public class ShareFragment extends Fragment {
                     Toast.makeText(context,"暂无网络连接",Toast.LENGTH_LONG).show();
                     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(){
 
-        RequestParams params=new RequestParams(RequestConfig.EXPORT_LIST_URL);
+        RequestParams params=new RequestParams(RequestConfig.EXPORT_RECORD_URL);
         params.addBodyParameter("page",page+"");
         params.addBodyParameter("sortItem","create_time");
         params.addBodyParameter("sortOrder","desc");
         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);
+        String json2="{\"cc_file\":{\"includes\":[\"file_id\"]}}";
+        params.addBodyParameter("includes",json2);
         x.http().post(params, new Callback.CommonCallback<String>() {
             @Override
             public void onSuccess(String result) {
-               String data=result;
-                List<OcrInfo> list = GsonUtil.getInstance().fromJson(data, new TypeToken<List<OcrInfo>>() {}.getType());
-                if(isUpdate)
-                    infos.clear();
-                infos.addAll(list);
-                if(list.size()<10){
-                    if (list.size()==0)
-                        Toast.makeText(context,"暂无数据",Toast.LENGTH_SHORT).show();
-                    else{
-                        hasMoreData=false;
-                        Toast.makeText(context,"无更多数据",Toast.LENGTH_SHORT).show();
-                    }
-
+                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();
-//                List<OcrInfo> list=result;
+
                 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) {
+        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();
+    }
 }
diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/utils/FileUtil.java b/app/src/main/java/cn/com/bril/androidocr/studio/utils/FileUtil.java
index 8d18225..dcdf183 100644
--- a/app/src/main/java/cn/com/bril/androidocr/studio/utils/FileUtil.java
+++ b/app/src/main/java/cn/com/bril/androidocr/studio/utils/FileUtil.java
@@ -42,4 +42,22 @@ public class FileUtil {
 
         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;
+    }
 }
diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/utils/ScreenUtil.java b/app/src/main/java/cn/com/bril/androidocr/studio/utils/ScreenUtil.java
index 3ab00b1..db2e1d8 100644
--- a/app/src/main/java/cn/com/bril/androidocr/studio/utils/ScreenUtil.java
+++ b/app/src/main/java/cn/com/bril/androidocr/studio/utils/ScreenUtil.java
@@ -66,4 +66,12 @@ public class ScreenUtil {
         }
         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);
+    }
 }
diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/utils/ShareUtil.java b/app/src/main/java/cn/com/bril/androidocr/studio/utils/ShareUtil.java
index 161b476..09ff8be 100644
--- a/app/src/main/java/cn/com/bril/androidocr/studio/utils/ShareUtil.java
+++ b/app/src/main/java/cn/com/bril/androidocr/studio/utils/ShareUtil.java
@@ -1,6 +1,6 @@
 package cn.com.bril.androidocr.studio.utils;
 
-import android.content.Context;
+import android.app.Activity;
 import android.content.Intent;
 import android.media.MediaMetadataRetriever;
 import android.net.Uri;
@@ -15,16 +15,17 @@ import java.io.File;
 public class ShareUtil {
 
     // 調用系統方法分享文件
-    public static void shareFile(Context context, File file) {
+    public static void shareFile(Activity activity, File file) {
         if (null != file && file.exists()) {
             Intent share = new Intent(Intent.ACTION_SEND);
             share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
             share.setType(getMimeType(file.getAbsolutePath()));//此处可发送多种文件
             share.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
             share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
-            context.startActivity(Intent.createChooser(share, "分享文件"));
+            activity.startActivity(Intent.createChooser(share, "分享文件"));
+//            activity.startActivityForResult(share,0x00);
         } else {
-            Toast.makeText(context,"分享文件不存在",Toast.LENGTH_SHORT).show();
+            Toast.makeText(activity,"分享文件不存在",Toast.LENGTH_SHORT).show();
         }
     }
 
diff --git a/app/src/main/res/color/bottom_tab_selector.xml b/app/src/main/res/color/bottom_tab_selector.xml
index aab645b..9255f5e 100644
--- a/app/src/main/res/color/bottom_tab_selector.xml
+++ b/app/src/main/res/color/bottom_tab_selector.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <item android:color="@color/normal" android:state_checked="true"/>
-    <item android:color="@color/tab_grey" android:state_checked="false"/>
+    <item android:color="@color/white" android:state_pressed="true"/>
+    <item android:color="@color/tab_grey" android:state_pressed="false"/>
 </selector>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 1ab4a02..6da525e 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,15 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@color/bg_normal">
 
-    <include
-        android:id="@+id/header"
-        layout="@layout/top_title_layout"/>
+    <RelativeLayout
+        android:id="@+id/head_content"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+        <include
+            layout="@layout/top_title_layout"/>
 
+        <include
+            layout="@layout/bottom_tab_head_layout"
+             />
+    </RelativeLayout>
     <android.support.design.widget.FloatingActionButton
         android:id="@+id/fabbtn"
         android:layout_width="wrap_content"
@@ -22,18 +28,18 @@
         android:src="@drawable/camera_icon"
        android:layout_alignParentRight="true"
         android:layout_alignParentBottom="true"
-        android:layout_marginBottom="40dp"
+        android:layout_marginBottom="50dp"
         android:layout_marginRight="20dp" />
 
-    <android.support.v4.view.ViewPager
+    <cn.com.bril.androidocr.studio.ui.widget.NoScrollViewPager
         android:id="@+id/viewPager"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         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:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -42,7 +48,10 @@
         <include
             layout="@layout/main_bottom_layout"
             />
-    </LinearLayout>
+        <include
+            layout="@layout/bottom_tab_layout"
+            />
+    </RelativeLayout>
 
 
 
diff --git a/app/src/main/res/layout/export_layout.xml b/app/src/main/res/layout/export_layout.xml
index 8d024ae..15d9239 100644
--- a/app/src/main/res/layout/export_layout.xml
+++ b/app/src/main/res/layout/export_layout.xml
@@ -77,7 +77,6 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
-        android:visibility="gone"
         android:padding="10dp">
 
         <TextView
diff --git a/app/src/main/res/layout/listview_item_layout.xml b/app/src/main/res/layout/listview_item_layout.xml
index ef57775..1640fb5 100644
--- a/app/src/main/res/layout/listview_item_layout.xml
+++ b/app/src/main/res/layout/listview_item_layout.xml
@@ -22,11 +22,12 @@
         android:layout_toRightOf="@+id/icon">
 
         <TextView
-            android:layout_width="match_parent"
+            android:layout_width="wrap_content"
             android:layout_height="0dp"
             android:layout_weight="1"
             android:id="@+id/title"
             android:textSize="@dimen/txt16sp"
+            android:focusable="false"
             android:textColor="@color/txtcolor33"
             android:text="新文档"/>
 
@@ -38,8 +39,8 @@
             android:gravity="center_vertical">
 
             <ImageView
-                android:layout_width="30dp"
-                android:layout_height="20dp"
+                android:layout_width="15dp"
+                android:layout_height="10dp"
                 android:src="@drawable/date"/>
             <TextView
                 android:id="@+id/time"
@@ -52,6 +53,18 @@
 
     </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>
diff --git a/app/src/main/res/layout/main_bottom_layout.xml b/app/src/main/res/layout/main_bottom_layout.xml
index e38bedc..8cd94e0 100644
--- a/app/src/main/res/layout/main_bottom_layout.xml
+++ b/app/src/main/res/layout/main_bottom_layout.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
+    android:layout_height="49dp"
+    android:id="@+id/main_bottom_menu"
     android:orientation="vertical"
     android:background="@color/white"
     android:layout_gravity="bottom"
diff --git a/app/src/main/res/layout/top_title_layout.xml b/app/src/main/res/layout/top_title_layout.xml
index 6320de3..53d274b 100644
--- a/app/src/main/res/layout/top_title_layout.xml
+++ b/app/src/main/res/layout/top_title_layout.xml
@@ -48,8 +48,9 @@
          />
     <ImageView
         android:id="@+id/right_iv"
-        android:layout_width="5dp"
+        android:layout_width="30dp"
         android:layout_height="20dp"
+        android:scaleType="centerInside"
         android:layout_alignParentRight="true"
         android:layout_centerVertical="true"
         android:layout_marginRight="20dp"
diff --git a/app/src/main/res/values/dimen.xml b/app/src/main/res/values/dimen.xml
index ae28400..c353f18 100644
--- a/app/src/main/res/values/dimen.xml
+++ b/app/src/main/res/values/dimen.xml
@@ -4,6 +4,7 @@
     <dimen name="txt18sp">18sp</dimen>
     <dimen name="txt16sp">16sp</dimen>
     <dimen name="txt14sp">14sp</dimen>
+    <dimen name="txt12sp">12sp</dimen>
 
     <!-- 下拉刷新字体 -->
     <dimen name="picture_pull_to_refresh_loading_text_size">14dp</dimen>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 8a83e3d..d414c5d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -4,8 +4,12 @@
     <string name="back">返回</string>
     <string name="export">导出</string>
     <string name="recoginize">识别</string>
+    <string name="share">分享</string>
+    <string name="rename">重命名</string>
+    <string name="delete">删除</string>
     <string name="rerecoginize">重新拍摄</string>
     <string name="vertify">校对</string>
+    <string name="search_content">请输入要查询的内容</string>
     <string name="vertify_content">
         贵阳际会峰云会议服务有限公司倾力打造中国会议策划第一品牌;
         专业提供会议整体策划、场地预定、场地搭建、印刷、礼品、会议接待、专车接待、视频会议等一系列会议服务。经过10年的历练,拥有非常专业的会议策划团队;
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 5f36206..09dbe10 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -20,4 +20,16 @@
         <!--引入定义的menu主题-->
     </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>
-- 
2.21.0