package by.fksis.schedule.async.base;
import android.app.ProgressDialog;
import android.content.Context;
import android.view.View;
import android.widget.RelativeLayout;
import by.fksis.schedule.R;
import by.fksis.schedule.ui.LoaderView;
public abstract class ProgressTask<I, Result> extends AsyncTaskEx<I, String, Result> {
protected Context context;
protected ProgressDialog dialog;
protected LoaderView loader;
private double progress = 0;
public ProgressTask(Context ctx) {
context = ctx;
}
public ProgressTask<I, Result> useLoader(View parent) {
return useLoader((RelativeLayout) parent, true);
}
public ProgressTask<I, Result> useLoader(View parent, boolean bg) {
if (parent != null)
loader = LoaderView.createOn((RelativeLayout) parent, bg);
return this;
}
public ProgressTask<I, Result> useProgressDialog() {
dialog = new ProgressDialog(context);
dialog.setMessage(context.getString(R.string.please_wait));
dialog.show();
return this;
}
public ProgressTask<I, Result> useHorizontalProgressDialog() {
dialog = new ProgressDialog(context);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.show();
return this;
}
@Override
protected void onProgressUpdate(String... values) {
if (dialog != null) {
if (values == null) {
dialog.setProgress((int) (progress * 100));
} else {
dialog.setMessage(values[0]);
}
}
}
protected void publishProgress(int resid) {
publishProgress(context.getString(resid));
}
protected void onPostExecute(Result result) {
if (dialog != null)
dialog.dismiss();
if (loader != null)
loader.finish();
}
public void setProgress(double progress) {
this.progress = progress;
}
}