package com.kedzie.vbox.harness;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.kedzie.vbox.R;
import com.kedzie.vbox.api.IMachine;
import com.kedzie.vbox.app.BaseActivity;
import com.kedzie.vbox.app.Utils;
import com.kedzie.vbox.machine.MachineListActivity;
import com.kedzie.vbox.machine.settings.VMSettingsActivity;
import com.kedzie.vbox.server.Server;
import com.kedzie.vbox.soap.VBoxSvc;
import com.kedzie.vbox.task.ActionBarTask;
/**
* Initializes & launches arbitrary activity from main launcher
*
* @author Marek Kedzierski
*/
public class HarnessActivity extends BaseActivity {
private class LogonTask extends ActionBarTask<Server, Void> {
public LogonTask(VBoxSvc vmgr) {
super(HarnessActivity.this, vmgr);
}
@Override
protected Void work(Server... server) throws Exception {
_vboxApi = new VBoxSvc(server[0]);
_vboxApi.logon();
_vboxApi.getVBox().getHost().getMemorySize();
return null;
}
}
private class LogoffTask extends ActionBarTask<Void, Void> {
public LogoffTask(VBoxSvc vmgr) {
super(HarnessActivity.this, vmgr);
}
@Override
protected Void work(Void... params) throws Exception {
_vmgr.logoff();
return null;
}
}
private class MachineSettingsTask extends ActionBarTask<String, IMachine> {
public MachineSettingsTask(VBoxSvc vmgr) {
super(HarnessActivity.this, vmgr);
}
@Override
protected IMachine work(String... params) throws Exception {
IMachine machine = _vmgr.getVBox().findMachine(params[0]);
Utils.cacheProperties(machine);
return machine;
}
@Override
protected void onSuccess(IMachine result) {
super.onSuccess(result);
startActivity(new Intent(HarnessActivity.this, VMSettingsActivity.class).putExtra(VBoxSvc.BUNDLE, (Parcelable)_vboxApi).putExtra(IMachine.BUNDLE, result));
}
}
private VBoxSvc _vboxApi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new LogonTask( _vboxApi).execute(new Server(null,"192.168.1.10", false, 18083, "kedzie", "Mk0204$$"));
}
@Override
protected void onDestroy() {
new LogoffTask(_vboxApi).execute();
super.onDestroy();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.harness_actions, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.harness_machineList:
startActivity(new Intent(this, MachineListActivity.class).putExtra(VBoxSvc.BUNDLE, (Parcelable)_vboxApi));
return true;
case R.id.harness_machineSettings:
new MachineSettingsTask(_vboxApi).execute("TEST");
return true;
}
return false;
}
}