package com.easysocket.callback; import android.app.Dialog; import android.content.DialogInterface; import com.easysocket.entity.OriginReadData; import com.easysocket.exception.RequestCancelException; import com.easysocket.interfaces.callback.IProgressDialog; import com.easysocket.interfaces.callback.ProgressCancelListener; /** * 自定义带有加载进度框的回调 */ public abstract class ProgressDialogCallBack extends SuperCallBack implements ProgressCancelListener { private IProgressDialog progressDialog; private Dialog mDialog; private boolean isShowProgress = true; /** * @param */ public ProgressDialogCallBack(IProgressDialog progressDialog, String callbackId) { super(callbackId); this.progressDialog = progressDialog; init(false); onStart(); } /** * 自定义加载进度框,可以设置是否显示弹出框,是否可以取消 * * @param progressDialog dialog * @param isShowProgress 是否显示进度 * @param isCancel 对话框是否可以取消 * @param */ public ProgressDialogCallBack(IProgressDialog progressDialog, boolean isShowProgress, boolean isCancel, String callbackId) { super(callbackId); this.progressDialog = progressDialog; this.isShowProgress = isShowProgress; init(isCancel); onStart(); } /** * 初始化 * * @param isCancel */ private void init(boolean isCancel) { if (progressDialog == null) return; mDialog = progressDialog.getDialog(); if (mDialog == null) return; mDialog.setCancelable(isCancel); if (isCancel) { mDialog.setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialogInterface) { ProgressDialogCallBack.this.onCancelProgress(); } }); } } /** * 展示进度框 */ private void showProgress() { if (!isShowProgress) { return; } if (mDialog != null && !mDialog.isShowing()) { mDialog.show(); } } /** * 取消进度框 */ private void dismissProgress() { if (!isShowProgress) { return; } if (mDialog != null && mDialog.isShowing()) { mDialog.dismiss(); } } @Override public void onStart() { showProgress(); } @Override public void onCompleted() { dismissProgress(); } public abstract void onResponse(OriginReadData data); @Override public void onError(Exception e) { onCompleted(); } @Override public void onCancelProgress() { onCompleted(); onError(new RequestCancelException("网络请求被取消")); } }