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.IEventClientManager;
import org.xbmc.api.business.INotifiableManager;
import org.xbmc.api.object.Host;
import org.xbmc.api.presentation.INotifiableController;
import org.xbmc.eventclient.ButtonCodes;
import android.content.Context;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class SetupWizardPage3 extends WizardPage<Host> {
private Button retry;
private TextView msg;
private Handler mHandler;
private IControlManager control;
private int initialVolume = -1;
private IEventClientManager event;
public SetupWizardPage3(Context context, AttributeSet attrs, int defStyle,
Wizard<Host> wizard) {
super(context, attrs, defStyle, wizard);
}
public SetupWizardPage3(Context context, AttributeSet attrs,
Wizard<Host> wizard) {
super(context, attrs, wizard);
}
public SetupWizardPage3(Context context, Wizard<Host> wizard) {
super(context, wizard);
}
@Override
public WizardPage<Host> getNextPage() {
return null;
}
@Override
public int getLayoutId() {
return R.layout.setup_page_3;
}
@Override
protected void onInit() {
retry = (Button) findViewById(R.id.setup_page3_retry);
msg = (TextView) findViewById(R.id.setup_page3_msg);
}
private void testEventServer() {
showBusyMessage(getContext().getString(R.string.setup_wizard_trying_mute));
control.getVolume(new DataResponse<Integer>() {
@Override
public void run() {
initialVolume = value;
mute();
}
}, getContext());
}
@Override
public void show() {
super.show();
ClientFactory.resetClient(getInput());
mHandler = new Handler();
INotifiableController controller = 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) {
}
};
retry.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
msg.setText("");
retry.setVisibility(View.INVISIBLE);
testEventServer();
}
});
control = ManagerFactory.getControlManager(controller);
event = ManagerFactory.getEventClientManager(controller);
testEventServer();
}
private void mute() {
event.sendButton("R1", ButtonCodes.REMOTE_MUTE, false, true, true, (short) 0, (byte) 0);
control.getVolume(new DataResponse<Integer>() {
@Override
public void run() {
removeBusyMessage();
if(initialVolume != value) {
//it worked, we muted xbmc through the eventserver
msg.setText(R.string.setup_wizard_final_message);
event.sendButton("R1", ButtonCodes.REMOTE_MUTE, false, true, true, (short) 0, (byte) 0);
setCanFinish(true);
}else{
//we couldn't mute xbmc through the eventserver, so display some help.
retry.setVisibility(View.VISIBLE);
msg.setText(R.string.setup_wizard_muting_failed);
}
}
}, getContext());
}
}