package com.integralblue.callerid; import javax.inject.Inject; import com.integralblue.callerid.inject.VersionInformationHelper; import roboguice.activity.RoboFragmentActivity; import roboguice.inject.InjectResource; import roboguice.inject.InjectView; import android.app.Dialog; import android.content.Intent; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.view.Menu; import android.view.MenuItem; import android.widget.TabHost; public class MainActivity extends RoboFragmentActivity { private static final int NEWER_VERSION_AVAILABLE_DIALOG = 1; @InjectView(android.R.id.tabhost) TabHost tabHost; @InjectView(R.id.pager) ViewPager viewPager; @InjectResource(R.drawable.ic_tab_dialer) Drawable drawableTabDialer; @InjectResource(R.drawable.ic_tab_recent) Drawable drawableTabRecent; @InjectResource(R.drawable.ic_tab_settings) Drawable drawableTabSettings; @Inject VersionInformationHelper versionInformationHelper; TabsAdapter tabsAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_tabs_pager); tabHost.setup(); tabsAdapter = new TabsAdapter(this, tabHost, viewPager); tabsAdapter.addTab(tabHost.newTabSpec("lookup").setIndicator("Lookup",drawableTabDialer), LookupFragment.class, getIntent().getExtras()); tabsAdapter.addTab(tabHost.newTabSpec("recentCalls").setIndicator("Recent Calls",drawableTabRecent), RecentCallsFragment.class, null); if (savedInstanceState != null) { tabHost.setCurrentTabByTag(savedInstanceState.getString("tab")); } } @Override protected void onResume() { super.onResume(); if(versionInformationHelper.shouldPromptForNewVersion()){ showDialog(NEWER_VERSION_AVAILABLE_DIALOG); } } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString("tab", tabHost.getCurrentTabTag()); } @Override protected void onNewIntent(Intent intent){ super.onNewIntent(intent); tabHost.setCurrentTabByTag("lookup"); // TODO I don't like how the fragment is retrieved - but I don't know of a better way. LookupFragment lookupFragment = (LookupFragment) getSupportFragmentManager().findFragmentByTag("android:switcher:" + viewPager.getId() + ":" + 0); lookupFragment.lookup(intent.getStringExtra("phoneNumber")); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_menu, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.help: Intent viewIntent = new Intent("android.intent.action.VIEW", Uri.parse("http://www.integralblue.com/callerid-for-android")); startActivity(viewIntent); return true; case R.id.settings: startActivity(new Intent(this, PreferencesActivity.class)); return true; default: return super.onOptionsItemSelected(item); } } @Override protected Dialog onCreateDialog(int id) { switch (id) { case NEWER_VERSION_AVAILABLE_DIALOG: return versionInformationHelper.createNewVersionDialog(this); default: return super.onCreateDialog(id); } } }