package org.xbmc.android.remote.presentation.wizard.setupwizard;
import org.xbmc.android.remote.R;
import org.xbmc.android.remote.business.Command;
import org.xbmc.android.remote.business.ManagerFactory;
import org.xbmc.android.remote.presentation.wizard.Wizard;
import org.xbmc.android.remote.presentation.wizard.WizardPage;
import org.xbmc.android.util.ClientFactory;
import org.xbmc.api.business.DataResponse;
import org.xbmc.api.business.IControlManager;
import org.xbmc.api.business.IInfoManager;
import org.xbmc.api.business.INotifiableManager;
import org.xbmc.api.info.GuiSettings;
import org.xbmc.api.object.Host;
import org.xbmc.api.presentation.INotifiableController;
import android.content.Context;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
public class SetupWizardPage2 extends WizardPage<Host> {
private IInfoManager info;
private Handler mHandler;
private TextView port;
private CheckBox enableES;
private boolean esEnabled = false;
private boolean esAllEnabled = false;
private IControlManager control;
public SetupWizardPage2(Context context, AttributeSet attrs, int defStyle, Wizard<Host> wizard) {
super(context, attrs, defStyle, wizard);
}
public SetupWizardPage2(Context context, AttributeSet attrs, Wizard<Host> wizard) {
super(context, attrs, wizard);
}
public SetupWizardPage2(Context context, Wizard<Host> wizard) {
super(context, wizard);
}
protected void onInit() {
mHandler = new Handler();
port = (TextView) findViewById(R.id.setup_wizard_es_port);
enableES = (CheckBox) findViewById(R.id.setup_wizard_enable_es);
}
@Override
public void show() {
super.show();
showBusyMessage(getContext().getString(R.string.setup_wizard_checking_es_wait));
ClientFactory.resetClient(getInput());
info = ManagerFactory.getInfoManager(new INotifiableController() {
public void runOnUI(Runnable action) {
mHandler.post(action);
}
public void onWrongConnectionState(int state,
INotifiableManager manager, Command<?> source) {
}
public void onMessage(String message) {
}
public void onError(Exception e) {
}
});
control = ManagerFactory.getControlManager(new INotifiableController() {
public void runOnUI(Runnable action) {
mHandler.post(action);
}
public void onWrongConnectionState(int state,
INotifiableManager manager, Command<?> source) {
}
public void onMessage(String message) {
}
public void onError(Exception e) {
}
});
info.getGuiSettingBool(new DataResponse<Boolean>() {
@Override
public void run() {
esEnabled = value.booleanValue();
checkEnabledAll();
}
}, GuiSettings.Services.EVENTSERVER_ENABLED, getContext());
}
private void checkEnabledAll() {
info.getGuiSettingBool(new DataResponse<Boolean>() {
public void run() {
esAllEnabled = value.booleanValue();
getPort();
}
}, GuiSettings.Services.EVENTSERVER_ENABLED_ALL, getContext());
}
private void getPort() {
info.getGuiSettingInt(new DataResponse<Integer>() {
@Override
public void run() {
mHandler.post(new Runnable() {
public void run() {
if(value > 0)
port.setText(Integer.toString(value));
removeBusyMessage();
enableES.setChecked(esAllEnabled);
enableES.setEnabled(!esAllEnabled);
port.setEnabled(!esAllEnabled);
getInput().esPort = Integer.valueOf(port.getText().toString());
setCanFinish(esEnabled && esAllEnabled);
enableES.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
enableES.setEnabled(false);
showBusyMessage(getContext().getString(
R.string.setup_wizard_enable_es_wait));
enableES();
}
});
}
});
}
}, GuiSettings.Services.EVENTSERVER_PORT, getContext());
}
private void enableES() {
if (!esEnabled)
control.setGuiSetting(new DataResponse<Boolean>() {
@Override
public void run() {
enableEsAll();
}
}, GuiSettings.Services.EVENTSERVER_ENABLED, "true", getContext());
else
enableEsAll();
}
private void enableEsAll() {
control.setGuiSetting(new DataResponse<Boolean>() {
@Override
public void run() {
enableES.setChecked(value);
enableES.setEnabled(!value);
port.setEnabled(!value);
setCanFinish(value);
removeBusyMessage();
}
}, GuiSettings.Services.EVENTSERVER_ENABLED_ALL, "true", getContext());
}
@Override
public WizardPage<Host> getNextPage() {
return null;
}
@Override
public int getLayoutId() {
return R.layout.setup_page_2;
}
}