package com.kedzie.vbox.machine.settings; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.TextView; import com.actionbarsherlock.app.SherlockFragment; import com.kedzie.vbox.R; import com.kedzie.vbox.api.IHost; import com.kedzie.vbox.api.IMachine; import com.kedzie.vbox.api.jaxb.HWVirtExPropertyType; import com.kedzie.vbox.api.jaxb.ProcessorFeature; import com.kedzie.vbox.app.BundleBuilder; import com.kedzie.vbox.task.DialogTask; /** * @apiviz.stereotype fragment */ public class SystemAccelerationFragment extends SherlockFragment { class LoadInfoTask extends DialogTask<IMachine, IMachine> { public LoadInfoTask() { super(getSherlockActivity(), _machine.getAPI(), R.string.progress_loading_data_generic); } @Override protected IMachine work(IMachine... m) throws Exception { _host = _vmgr.getVBox().getHost(); _host.getProcessorFeature(ProcessorFeature.HW_VIRT_EX); _host.getProcessorFeature(ProcessorFeature.NESTED_PAGING); _machine.getHWVirtExProperty(HWVirtExPropertyType.ENABLED); _machine.getHWVirtExProperty(HWVirtExPropertyType.NESTED_PAGING); return _machine; } @Override protected void onSuccess(IMachine result) { super.onSuccess(result); _machine=result; populateViews(_machine); } } private IMachine _machine; private IHost _host; private View _view; private TextView _errorText; private CheckBox _vtxCheckbox; private CheckBox _nestedPagingCheckbox; private ErrorSupport _errorHandler = new ErrorSupport(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); _machine = BundleBuilder.getProxy(savedInstanceState!=null ? savedInstanceState : getArguments(), IMachine.BUNDLE, IMachine.class); if(savedInstanceState!=null) { _errorHandler = savedInstanceState.getParcelable("errors"); } } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putParcelable(IMachine.BUNDLE, _machine); outState.putParcelable("errors", _errorHandler); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { _view = inflater.inflate(R.layout.settings_system_acceleration, null); _vtxCheckbox = (CheckBox) _view.findViewById(R.id.vtx_amdv); _nestedPagingCheckbox = (CheckBox) _view.findViewById(R.id.nested_paging); _errorText = (TextView)_view.findViewById(R.id.error_message); _errorHandler.setTextView(_errorText); _errorHandler.showErrors(); return _view; } @Override public void onStart() { super.onStart(); new LoadInfoTask().execute(_machine); } private void populateViews(IMachine m) { _vtxCheckbox.setEnabled(_host.getProcessorFeature(ProcessorFeature.HW_VIRT_EX)); _vtxCheckbox.setChecked(_machine.getHWVirtExProperty(HWVirtExPropertyType.ENABLED)); _vtxCheckbox.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { _machine.setHWVirtExProperty(HWVirtExPropertyType.ENABLED, isChecked); } }); _nestedPagingCheckbox.setEnabled(_host.getProcessorFeature(ProcessorFeature.NESTED_PAGING)); _nestedPagingCheckbox.setChecked(_machine.getHWVirtExProperty(HWVirtExPropertyType.NESTED_PAGING)); _nestedPagingCheckbox.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { _machine.setHWVirtExProperty(HWVirtExPropertyType.NESTED_PAGING, isChecked); } }); } }