package com.kedzie.vbox.machine; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.support.v4.app.NavUtils; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.kedzie.vbox.R; import com.kedzie.vbox.SettingsActivity; import com.kedzie.vbox.api.IMachine; import com.kedzie.vbox.app.BaseActivity; import com.kedzie.vbox.app.BundleBuilder; import com.kedzie.vbox.app.FragmentElement; import com.kedzie.vbox.app.TabSupport; import com.kedzie.vbox.app.TabSupportActionBarViewPager; import com.kedzie.vbox.app.Utils; import com.kedzie.vbox.task.ConfigureMetricsTask; /** * * @author Marek Kędzierski * @apiviz.stereotype activity */ public class MachineActivity extends BaseActivity { private static final int REQUEST_CODE_PREFERENCES = 6; private TabSupport _tabSupport; private IMachine _machine; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE && Utils.getScreenSize(getResources().getConfiguration())>=Configuration.SCREENLAYOUT_SIZE_LARGE) finish(); _machine = BundleBuilder.getProxy(getIntent(), IMachine.BUNDLE, IMachine.class); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowTitleEnabled(true); getSupportActionBar().setIcon(getApp().getOSDrawable(_machine.getOSTypeId())); _tabSupport = new TabSupportActionBarViewPager(this, android.R.id.content); _tabSupport.addTab(new FragmentElement("Details", InfoFragment.class,getIntent().getExtras())); _tabSupport.addTab(new FragmentElement("Actions", ActionsFragment.class, getIntent().putExtra("dualPane", false).getExtras())); _tabSupport.addTab(new FragmentElement("Log", LogFragment.class, getIntent().getExtras())); _tabSupport.addTab(new FragmentElement("Snapshots", SnapshotFragment.class, getIntent().getExtras())); if(savedInstanceState!=null) getSupportActionBar().setSelectedNavigationItem(savedInstanceState.getInt("tab", 0)); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt("tab", getSupportActionBar().getSelectedNavigationIndex()); } @Override public boolean onCreateOptionsMenu(Menu menu) { getSupportMenuInflater().inflate(R.menu.machine_actions, menu); return true; } @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; case R.id.option_menu_preferences: Utils.startActivityForResult(this, new Intent(this, 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(this, _machine.getAPI()).execute( Utils.getIntPreference(this, SettingsActivity.PREF_PERIOD), Utils.getIntPreference(this, SettingsActivity.PREF_COUNT) ); } } @Override public void finish() { super.finish(); Utils.overrideBackTransition(this); } }