package com.radicaldynamic.groupinform.tasks;
import android.os.AsyncTask;
import android.os.Bundle;
import com.radicaldynamic.groupinform.application.Collect;
import com.radicaldynamic.groupinform.listeners.ToggleOnlineStateListener;
// Go online or offline accordingly; folders should be synchronized by SynchronizeFoldersTask
public class ToggleOnlineStateTask extends AsyncTask<Void, Void, Void>
{
private ToggleOnlineStateListener mStateListener;
private int mOutcome = ToggleOnlineStateListener.SUCCESSFUL;
private boolean mPostExecuteSwitch = false;
@Override
protected Void doInBackground(Void... nothing)
{
if (Collect.getInstance().getIoService().isSignedIn()) {
if (!Collect.getInstance().getIoService().goOffline())
mOutcome = ToggleOnlineStateListener.CANNOT_SIGNOUT;
} else {
if (!Collect.getInstance().getIoService().goOnline())
mOutcome = ToggleOnlineStateListener.CANNOT_SIGNIN;
}
return null;
}
@Override
protected void onPreExecute()
{
// Trigger display of dialog and adjust other visual aspects
synchronized (this) {
if (mStateListener != null) {
mStateListener.toggleOnlineStateHandler();
}
}
}
@Override
protected void onPostExecute(Void nothing)
{
synchronized (this) {
if (mStateListener != null) {
Bundle b = new Bundle();
b.putInt(ToggleOnlineStateListener.OUTCOME, mOutcome);
b.putBoolean(ToggleOnlineStateListener.POS, mPostExecuteSwitch);
mStateListener.toggleOnlineStateTaskFinished(b);
}
}
}
public void setListener(ToggleOnlineStateListener sl)
{
synchronized (this) {
mStateListener = sl;
}
}
// Return with result; use for alternate workflow in activity post-task handling
public void setPostExecuteSwitch(boolean s)
{
mPostExecuteSwitch = s;
}
}