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; import com.evancharlton.mileage.views.ChartsView; import com.evancharlton.mileage.views.intervals.ServiceIntervalsView; public class Mileage extends TabActivity { public static final String EXTRA_IGNORE_STATE = "ignore-state"; //$NON-NLS-1$ public static final String PACKAGE = "com.evancharlton.mileage"; //$NON-NLS-1$ 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 int MENU_SERVICE_INTERVALS = Menu.FIRST + 3; private static final String CURRENT_TAB = "current_tab"; //$NON-NLS-1$ private static final String CURRENT_VIEW = "current_view"; //$NON-NLS-1$ private int m_selectedVehicleIndex = -1; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.tabs); m_tabHost = getTabHost(); addFillUpTab(); addHistoryTab(); addStatisticsTab(); addChartsTab(); if (savedInstanceState != null) { int c = savedInstanceState.getInt(CURRENT_TAB, 0); if (c == 0) { Activity a = getCurrentActivity(); Persistent p = (Persistent) a; p.restoreState(savedInstanceState); } m_tabHost.setCurrentTab(c); 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(); } } } } FillUpsProvider.upgradeDatabase(); } public void onResume() { super.onResume(); } private void addFillUpTab() { Intent i = new Intent(); i.setClass(Mileage.this, AddFillUpView.class); TabSpec spec = m_tabHost.newTabSpec("fillup"); //$NON-NLS-1$ spec.setIndicator(getString(R.string.fillup), getResources().getDrawable(R.drawable.gas_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"); //$NON-NLS-1$ 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"); //$NON-NLS-1$ spec.setIndicator(getString(R.string.statistics), getResources().getDrawable(R.drawable.statistics_i)); spec.setContent(i); m_tabHost.addTab(spec); } private void addChartsTab() { Intent i = new Intent(); i.setClass(Mileage.this, ChartsView.class); TabSpec spec = m_tabHost.newTabSpec("fillup"); //$NON-NLS-1$ spec.setIndicator(getString(R.string.charts), getResources().getDrawable(R.drawable.charts_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); menu.add(Menu.NONE, MENU_SERVICE_INTERVALS, Menu.NONE, R.string.service_intervals).setShortcut('4', 's').setIcon(R.drawable.wrench); } 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; case MENU_SERVICE_INTERVALS: i.setClass(base, ServiceIntervalsView.class); base.startActivity(i); return true; } return false; } protected void onSaveInstanceState(Bundle outState) { int current = m_tabHost.getCurrentTab(); outState.putInt(CURRENT_TAB, current); if (current == 0) { Activity a = getCurrentActivity(); Persistent p = (Persistent) a; p.saveState(outState); } View focused = getCurrentFocus(); if (focused != null) { outState.putInt(CURRENT_VIEW, focused.getId()); } } /** * Returns the index of the last selected vehicle. This is used so that the * vehicle selection list (for history, stats, charts, etc) isn't constantly * resetting to the default vehicle. Note that this shouldn't be used to set * selections when recording (or editing) fill-ups or anything * * @return index of last selected vehicle */ public int getSelectedVehicleIndex() { return m_selectedVehicleIndex; } public void setSelectedVehicleIndex(int pos) { m_selectedVehicleIndex = pos; } }