package com.kedzie.vbox.widget;
import android.appwidget.AppWidgetManager;
import android.content.Intent;
import android.os.Bundle;
import com.kedzie.vbox.R;
import com.kedzie.vbox.api.IMachine;
import com.kedzie.vbox.app.BaseActivity;
import com.kedzie.vbox.app.FragmentElement;
import com.kedzie.vbox.app.Utils;
import com.kedzie.vbox.machine.group.MachineGroupListBaseFragment;
import com.kedzie.vbox.machine.group.TreeNode;
import com.kedzie.vbox.machine.group.VMGroupListView.OnTreeNodeSelectListener;
import com.kedzie.vbox.soap.VBoxSvc;
import com.kedzie.vbox.task.DialogTask;
/**
*
* @author Marek Kędzierski
* @apiviz.stereotype activity
*/
public class MachineListPickActivity extends BaseActivity implements OnTreeNodeSelectListener {
/**
* Disconnect from VirtualBox webservice
*/
private class LogoffTask extends DialogTask<Void, Void> {
public LogoffTask(VBoxSvc vmgr) {
super(MachineListPickActivity.this, vmgr, R.string.progress_logging_off);
}
@Override
protected Void work(Void... params) throws Exception {
_vmgr.logoff();
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
finish();
}
}
/** VirtualBox API */
private VBoxSvc _vmgr;
/** ID of AppWidget */
private int mAppWidgetId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setResult(RESULT_CANCELED);
getSupportActionBar().setTitle(R.string.select_virtual_machine_widget_config);
_vmgr = (VBoxSvc)getIntent().getParcelableExtra(VBoxSvc.BUNDLE);
mAppWidgetId = getIntent().getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
if (savedInstanceState==null) {
Utils.replaceFragment(this, getSupportFragmentManager(), android.R.id.content,
new FragmentElement("list", MachineGroupListBaseFragment.class, getIntent().getExtras()));
}
}
@Override
public void onTreeNodeSelect(TreeNode node) {
if(node instanceof IMachine) {
Provider.savePrefs(this, _vmgr, (IMachine)node, mAppWidgetId);
setResult(RESULT_OK, new Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId));
finish();
}
}
@Override
public void onBackPressed() {
if(_vmgr.getVBox()!=null)
new LogoffTask(_vmgr). execute();
else
super.onBackPressed();
}
}