package org.softeg.slartus.forpdaplus.common;
import android.content.Context;
import android.os.AsyncTask;
import android.widget.Toast;
import com.afollestad.materialdialogs.MaterialDialog;
import org.softeg.slartus.forpdaplus.App;
import org.softeg.slartus.forpdaplus.R;
import java.io.IOException;
import java.net.URISyntaxException;
import java.text.ParseException;
/**
* User: slinkin
* Date: 10.10.11
* Time: 9:09
*/
public class HelpTask extends AsyncTask<HelpTask.OnMethodListener, String, Boolean> {
public interface OnMethodListener {
Object onMethod(Object param) throws IOException, ParseException, URISyntaxException;
}
private final MaterialDialog dialog;
private String m_ProcessMessage = App.getInstance().getString(R.string.Loading_);
private Context mContext;
public HelpTask(Context context, String processMessage) {
mContext = context;
m_ProcessMessage = processMessage;
dialog = new MaterialDialog.Builder(context)
.progress(true,0)
.cancelable(false)
.content(m_ProcessMessage)
.build();
}
@Override
protected void onProgressUpdate(String... progress) {
this.dialog.setMessage(progress[0]);
}
public void progressUpdate(String... progress) {
publishProgress(progress);
}
private OnMethodListener m_OnPostMethod;
public void setOnPostMethod(OnMethodListener onPostMethod) {
m_OnPostMethod = onPostMethod;
}
public Boolean Success;
public Object Result;
@Override
protected Boolean doInBackground(HelpTask.OnMethodListener... params) {
try {
Result = params[0].onMethod(null);
return true;
} catch (Exception e) {
AppLog.e(App.getInstance(), e);
ex = e;
return false;
}
}
protected void onPreExecute() {
this.dialog.show();
}
protected void onCancelled() {
Toast.makeText(mContext, mContext.getString(R.string.Canceled),
Toast.LENGTH_SHORT).show();
mContext = null;
}
public Exception ex;
protected void onPostExecute(final Boolean success) {
if (this.dialog.isShowing()) {
this.dialog.dismiss();
}
Success = success;
try {
m_OnPostMethod.onMethod(Result);
} catch (Exception ex) {
AppLog.e(mContext, ex);
}
mContext = null;
}
}