package com.kedzie.vbox.host; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentTransaction; import android.support.v4.app.NavUtils; import android.view.View; import android.widget.FrameLayout; import com.actionbarsherlock.view.MenuItem; import com.kedzie.vbox.R; import com.kedzie.vbox.api.IHost; import com.kedzie.vbox.app.BaseActivity; import com.kedzie.vbox.app.BundleBuilder; import com.kedzie.vbox.app.FragmentActivity; import com.kedzie.vbox.app.FragmentElement; import com.kedzie.vbox.app.Utils; import com.kedzie.vbox.host.HostSettingsListFragment.OnSelectHostCategoryListener; import com.kedzie.vbox.machine.MachineListActivity; import com.kedzie.vbox.task.ActionBarTask; /** * @apiviz.stereotype Activity */ public class HostSettingsActivity extends BaseActivity implements OnSelectHostCategoryListener { /** * update activity subtitle to show Host information */ private class UpdateIconTask extends ActionBarTask<IHost, IHost> { public UpdateIconTask() { super(HostSettingsActivity.this, _host.getAPI()); } @Override protected IHost work(IHost... params) throws Exception { params[0].getOperatingSystem(); params[0].getOSVersion(); params[0].getProcessorCount(); params[0].getProcessorSpeed(0); return params[0]; } @Override protected void onSuccess(IHost result) { super.onSuccess(result); getSupportActionBar().setSubtitle(result.getProcessorCount() + " core " + result.getProcessorSpeed(0) + " mHz - " + result.getOperatingSystem() + " v." + result.getOSVersion()); } } /** Is the dual Fragment Layout active? */ private boolean _dualPane; private IHost _host; private String currentCategory; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); _host = BundleBuilder.getProxy(getIntent(), IHost.BUNDLE, IHost.class); getSupportActionBar().setTitle(R.string.host_settings_title); getSupportActionBar().setDisplayShowTitleEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); new UpdateIconTask().execute(_host); setContentView(R.layout.fragment_list_layout); FrameLayout detailsFrame = (FrameLayout)findViewById(R.id.details); _dualPane = detailsFrame != null && detailsFrame.getVisibility()==View.VISIBLE; if(savedInstanceState==null) { HostSettingsListFragment fragment = new HostSettingsListFragment(); fragment.setArguments(new BundleBuilder().putParcelable(IHost.BUNDLE, _host).create()); getSupportFragmentManager().beginTransaction().add(R.id.list, fragment, "list").commit(); } } @Override protected void onStart() { super.onStart(); setSupportProgressBarIndeterminateVisibility(false); } @Override public void onSelectCategory(FragmentElement category) { if(_dualPane) { FragmentTransaction tx = getSupportFragmentManager().beginTransaction(); Utils.setCustomAnimations(tx); Utils.detachFragment(getSupportFragmentManager(), tx, currentCategory); Utils.addOrAttachFragment(this, getSupportFragmentManager(), tx, R.id.details, category); tx.commit(); } else { startActivity(new Intent(this, FragmentActivity.class).putExtra(FragmentElement.BUNDLE, category)); } currentCategory = category.name; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case android.R.id.home: NavUtils.navigateUpTo(this, new Intent(this, MachineListActivity.class).putExtras(getIntent())); return true; } return false; } @Override public void finish() { super.finish(); Utils.overrideBackTransition(this); } }