package com.zhan_dui.dictionary.listeners; import java.io.File; import org.holoeverywhere.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.widget.Toast; import com.zhan_dui.dictionary.R; import com.zhan_dui.dictionary.utils.AssetUtils; import com.zhan_dui.dictionary.utils.Constants; import com.zhan_dui.dictionary.utils.UnzipUtils; import com.zhan_dui.dictionary.utils.AssetUtils.AssetCopyInterface; import com.zhan_dui.dictionary.utils.UnzipUtils.UnzipInterface; /** * 第一次启动的时候用户要移动基础词典文件 * * @author xuanqinanhai * */ public class StartMovingBaseDictionaryListener implements OnClickListener { private Context mContext; private ProgressDialog mMovingProgressDialog; public StartMovingBaseDictionaryListener(Context mContext) { super(); this.mContext = mContext; } @Override public void onClick(DialogInterface dialog, int which) { mMovingProgressDialog = new ProgressDialog(mContext); mMovingProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); mMovingProgressDialog.setTitle(R.string.move_dialog_title); mMovingProgressDialog.setMessage(mContext .getString(R.string.start_init)); mMovingProgressDialog.setCancelable(true); mMovingProgressDialog.show(); AssetUtils.copyFromAsset(mContext, Constants.BASE_DICTIONARY_ASSET, Constants.getSaveDirectory(), Constants.BASE_DICTIONARY_ASSET, MovingHandler); } private AssetCopyInterface MovingHandler = new AssetCopyInterface() { @Override public void onCopyStart(String assetFilePath, String copyDirecotry, String newFileName) { mMovingProgressDialog.setTitle(R.string.first_step_copy); mMovingProgressDialog.setMessage("可能要花费一些时间..."); } @Override public void onUpdate(int current, int total) { mMovingProgressDialog.setMessage("可能还需要些时间..."); mMovingProgressDialog.setMax(total); mMovingProgressDialog.setProgress(current); } @Override public void onFinish(Boolean result, String assetFilePath, String copyDirecotry, String newFileName) { if (result == false) { File file = new File(copyDirecotry + File.separator + newFileName); if (file.exists()) { file.delete(); } } else { mMovingProgressDialog.setMessage("拷贝结束,准备开始处理,请稍后.."); // 开始解压文件 UnzipUtils.unzipFile(UnzipHandler, copyDirecotry + File.separator + newFileName, copyDirecotry, true); } } @Override public void onError(String assetFilePath, String copyDirecotry, String newFileName, String errorMsg) { Toast.makeText(mContext, errorMsg, Toast.LENGTH_SHORT).show(); } }; private UnzipInterface UnzipHandler = new UnzipInterface() { @Override public boolean beforeUnzip(String source, String outputDirectory) { mMovingProgressDialog.setTitle(R.string.second_step_unzip); mMovingProgressDialog.setMessage("正在处理,请稍后"); return true; } @Override public void afterUnzip(Boolean result, String source, String outputDirectory) { if (result) { Toast.makeText(mContext, "处理结束,快去字典管理中下载自己喜欢的词典吧~", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(mContext, "处理失败", Toast.LENGTH_SHORT).show(); } mMovingProgressDialog.dismiss(); } @Override public void beforeUnzipThread(String source, String outputDirectory) { } @Override public void afterUnzipThread(Boolean result, String source, String outputDirectory) { } @Override public void errorOccur(String errorMsg, String source, String outputDirectory) { Toast.makeText(mContext, "处理出现错误了", Toast.LENGTH_SHORT).show(); } }; }