package com.beacon.crawlers;
import java.io.File;
import com.holo.actions.AbortionFlag;
import com.holo.actions.FileActions;
import com.holo.actions.MD5Checksum;
import com.holo.fileexplorer.R;
import com.holo.fileexplorer.FileView;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.Toast;
public class CheckSummer extends AsyncTask<File, Integer, String> {
private static final String TAG = Mover.class.getName();
private AbortionFlag flag;
private FileView caller;
private ProgressDialog sumProgressDialog;
public CheckSummer(FileView context) {
caller = context;
flag = new AbortionFlag();
}
@Override
protected void onPreExecute() {
caller.runOnUiThread(new Runnable() {
@Override
public void run() {
sumProgressDialog = new ProgressDialog(caller);
sumProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
sumProgressDialog.setMessage("Summing file. Be back in a sec.");
sumProgressDialog.setButton(caller.getString(R.string.run_in_background), new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
sumProgressDialog.setButton2(caller.getString(R.string.cancel), new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
CheckSummer.this.flag.abort();
}
});
sumProgressDialog.show();
}
});
}
@Override
protected String doInBackground(File... params) {
Log.v(TAG, "Started doInBackground");
File f = params[0];
try {
return MD5Checksum.getMD5Checksum(f);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
@Override
protected void onPostExecute(String result) {
Log.v(TAG, "Inside post execute. Result of MD5 operation is - " + result);
if (result.length() > 0) {
caller.setFileMD5(result);
caller.runOnUiThread(new Runnable() {
@Override
public void run() {
if (sumProgressDialog.isShowing()) {
sumProgressDialog.dismiss();
}
Toast.makeText(caller.getApplicationContext(), caller.getString(R.string.md5_complete), Toast.LENGTH_LONG);
}
});
} else {
caller.runOnUiThread(new Runnable() {
@Override
public void run() {
if (sumProgressDialog.isShowing()) {
sumProgressDialog.dismiss();
}
Toast.makeText(caller.getApplicationContext(), caller.getString(R.string.generic_operation_failed), Toast.LENGTH_LONG);
}
});
}
}
}