package com.evancharlton.mileage; import android.app.Activity; import android.app.TabActivity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.Window; import android.widget.TabHost; import android.widget.TabHost.TabSpec; public class Mileage extends TabActivity { public static final String EXTRA_IGNORE_STATE = "ignore-state"; public static final String PACKAGE = "com.evancharlton.mileage"; private TabHost m_tabHost; private static final int MENU_SETTINGS = Menu.FIRST; private static final int MENU_IMPORT_EXPORT = Menu.FIRST + 1; private static final int MENU_VEHICLES = Menu.FIRST + 2; private static final String CURRENT_TAB = "current_tab"; private static final String CURRENT_VIEW = "current_view"; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.tabs); m_tabHost = getTabHost(); addFillUpTab(); addHistoryTab(); addStatisticsTab(); if (savedInstanceState != null) { m_tabHost.setCurrentTab(savedInstanceState.getInt(CURRENT_TAB, 0)); int id = savedInstanceState.getInt(CURRENT_VIEW, -1); if (id != -1) { View current = m_tabHost.getCurrentView(); if (current != null) { View focus = current.findViewById(id); if (focus != null) { focus.requestFocus(); } } } } } public void onResume() { super.onResume(); setRequestedOrientation(PreferencesProvider.getInstance(this).getOrientation()); } private void addFillUpTab() { Intent i = new Intent(); i.setClass(Mileage.this, AddFillUpView.class); TabSpec spec = m_tabHost.newTabSpec("fillup"); spec.setIndicator(getString(R.string.fillup), getResources().getDrawable(R.drawable.gaspump_i)); spec.setContent(i); m_tabHost.addTab(spec); } private void addHistoryTab() { Intent i = new Intent(); i.setClass(Mileage.this, HistoryView.class); TabSpec spec = m_tabHost.newTabSpec("fillup"); spec.setIndicator(getString(R.string.fillup_history), getResources().getDrawable(R.drawable.history_i)); spec.setContent(i); m_tabHost.addTab(spec); } private void addStatisticsTab() { Intent i = new Intent(); i.setClass(Mileage.this, StatisticsView.class); TabSpec spec = m_tabHost.newTabSpec("fillup"); spec.setIndicator(getString(R.string.statistics), getResources().getDrawable(R.drawable.statistics_i)); spec.setContent(i); m_tabHost.addTab(spec); } public static void createMenu(Menu menu) { menu.add(Menu.NONE, MENU_VEHICLES, Menu.NONE, R.string.vehicles).setShortcut('1', 'v').setIcon(R.drawable.vehicles_i); menu.add(Menu.NONE, MENU_SETTINGS, Menu.NONE, R.string.settings).setShortcut('2', 'e').setIcon(R.drawable.ic_menu_preferences); menu.add(Menu.NONE, MENU_IMPORT_EXPORT, Menu.NONE, R.string.import_export).setShortcut('3', 'i').setIcon(R.drawable.importexport_i); } public static boolean parseMenuItem(MenuItem item, Activity base) { Intent i = new Intent(); switch (item.getItemId()) { case MENU_VEHICLES: i.setClass(base, VehiclesView.class); base.startActivity(i); return true; case MENU_SETTINGS: i.setClass(base, SettingsView.class); base.startActivity(i); return true; case MENU_IMPORT_EXPORT: i.setClass(base, ImportExportView.class); base.startActivity(i); return true; } return false; } protected void onSaveInstanceState(Bundle outState) { outState.putInt(CURRENT_TAB, m_tabHost.getCurrentTab()); View focused = getCurrentFocus(); outState.putInt(CURRENT_VIEW, focused.getId()); } }