package com.kedzie.vbox.machine; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.NavUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.actionbarsherlock.app.SherlockFragment; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; import com.kedzie.vbox.R; import com.kedzie.vbox.SettingsActivity; import com.kedzie.vbox.app.BundleBuilder; import com.kedzie.vbox.app.FragmentElement; import com.kedzie.vbox.app.PagerTabHost; import com.kedzie.vbox.app.Utils; import com.kedzie.vbox.soap.VBoxSvc; import com.kedzie.vbox.task.ConfigureMetricsTask; public class MachineFragment extends SherlockFragment { private static final int REQUEST_CODE_PREFERENCES = 6; private PagerTabHost mTabHost; private VBoxSvc _vmgr; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); _vmgr = BundleBuilder.getVBoxSvc(getArguments()); setHasOptionsMenu(true); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mTabHost = new PagerTabHost(getActivity()); mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent); Bundle args = getArguments(); args.putBoolean("dualPane", false); mTabHost.addTab(new FragmentElement("Details", InfoFragment.class, args)); mTabHost.addTab(new FragmentElement("Actions", ActionsFragment.class, args)); mTabHost.addTab(new FragmentElement("Log", LogFragment.class, args)); mTabHost.addTab(new FragmentElement("Snapshots", SnapshotFragment.class, args)); if(savedInstanceState!=null) mTabHost.setCurrentTab(savedInstanceState.getInt("tab", 0)); return mTabHost; } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt("tab", mTabHost.getCurrentTab()); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.machine_actions, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case android.R.id.home: NavUtils.navigateUpTo(getActivity(), new Intent(getActivity(), MachineListActivity.class).putExtras(getArguments())); return true; case R.id.option_menu_preferences: Utils.startActivityForResult(getActivity(), new Intent(getActivity(), SettingsActivity.class), REQUEST_CODE_PREFERENCES); return true; } return false; } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode==REQUEST_CODE_PREFERENCES) { new ConfigureMetricsTask(getSherlockActivity(), _vmgr).execute( Utils.getIntPreference(getActivity(), SettingsActivity.PREF_PERIOD), Utils.getIntPreference(getActivity(), SettingsActivity.PREF_COUNT) ); } } @Override public void onDestroyView() { super.onDestroyView(); mTabHost = null; } }