package com.kedzie.vbox.task;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.kedzie.vbox.api.IProgress;
import com.kedzie.vbox.soap.VBoxSvc;
/**
* Shows progress on the {@link ActionBar}
* @param <Input> task input
* @param <Output> task output
* @author Marek Kędzierski
*/
public abstract class ActionBarTask<Input, Output> extends BaseTask<Input, Output> {
/** # of active tasks, use to enable/disable indeterminate progress */
private static int _numActiveTasks;
/**
* @param TAG LogCat tag
* @param ctx calling Activity
* @param vmgr VirtualBox API service
*/
public ActionBarTask(SherlockFragmentActivity context, VBoxSvc vmgr) {
super(context, vmgr);
}
@Override
protected void onPreExecute() {
_numActiveTasks++;
getContext().setSupportProgressBarIndeterminateVisibility(true);
}
@Override
protected final void onPostExecute(Output result) {
if(--_numActiveTasks==0)
getContext().setSupportProgressBarIndeterminateVisibility(false);
getContext().setSupportProgressBarVisibility(false);
super.onPostExecute(result);
}
@Override
protected void onProgressUpdate(IProgress... p) {
if(_indeterminate) {
_indeterminate=false;
getContext().setSupportProgressBarIndeterminateVisibility(false);
getContext().setSupportProgressBarIndeterminate(false);
getContext().setSupportProgressBarVisibility(true);
}
getContext().setSupportProgress(p[0].getPercent());
getContext().setSupportSecondaryProgress(p[0].getOperationPercent());
}
}