package com.transitwidget;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.ActionBar.TabListener;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import com.transitwidget.fragments.tab.BrowseFragment;
import com.transitwidget.fragments.tab.FavoritesFragment;
public class MainActivity extends SherlockFragmentActivity {
private static final String TAG = MainActivity.class.getName();
public static final String PREFS = "prefs";
private static final String STATE_TAG = "tag";
private static final String TAG_ROUTES = "routes";
private static final String TAG_FAVORITES = "favorites";
private static final int PAGER_ROUTE_POSITION = 0;
private static final int PAGER_FAVORITE_POSITION = 1;
/**
* The tab/fragment currently active (one of TAG_ROUTES/etc...)
*/
private String mTag = null;
/**
* Selected transit agency.
*/
private String mAgency = null;
private ActionBar mActionBar;
private ViewPager mViewPager;
private PagerAdapter mAdapter;
/**
* Favorites tab.
*/
private Tab mFavoriteTab;
/**
* Route/Direction/Stop tab.
*/
private Tab mRouteTab;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mViewPager = (ViewPager)findViewById(R.id.main_view_pager);
mAdapter = new MyAdapter(getSupportFragmentManager());
mAgency = getSharedPreferences(PREFS, MODE_PRIVATE).getString("agencyTag", null);
// Check if anything has been saved...
if (savedInstanceState != null) {
mTag = savedInstanceState.getString(STATE_TAG);
}
if (mTag == null) {
mTag = TAG_ROUTES; // default to routes
}
mActionBar = getSupportActionBar();
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mRouteTab = mActionBar.newTab().setText("Routes")
.setIcon(R.drawable.notepad)
.setTabListener(new TabListener() {
public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {}
public void onTabReselected(Tab arg0, FragmentTransaction arg1) {}
public void onTabSelected(Tab arg0, FragmentTransaction arg1) {
Log.i(TAG, "Selecting tab routes");
mTag = TAG_ROUTES;
if (mViewPager.getCurrentItem() != 0) {
mViewPager.setCurrentItem(PAGER_ROUTE_POSITION);
}
}
});
mFavoriteTab = mActionBar.newTab().setText("Favorites")
.setIcon(R.drawable.heart)
.setTabListener(new TabListener() {
public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {}
public void onTabReselected(Tab arg0, FragmentTransaction arg1) {}
public void onTabSelected(Tab arg0, FragmentTransaction arg1) {
Log.i(TAG, "Selecting tab favorites");
mTag = TAG_FAVORITES;
if (mViewPager.getCurrentItem() != 1) {
mViewPager.setCurrentItem(PAGER_FAVORITE_POSITION);
}
}
});
mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
public void onPageScrolled(int i, float f, int i1) {}
public void onPageSelected(int i) {
switch (i) {
case 0:
if (!mActionBar.getSelectedTab().equals(mRouteTab)) {
mActionBar.selectTab(mRouteTab);
}
break;
case 1:
if (!mActionBar.getSelectedTab().equals(mFavoriteTab)) {
mActionBar.selectTab(mFavoriteTab);
}
break;
}
}
public void onPageScrollStateChanged(int i) {}
});
mActionBar.addTab(mRouteTab);
mActionBar.addTab(mFavoriteTab);
}
@Override
protected void onResume() {
super.onResume();
mAgency = getSharedPreferences(PREFS, MODE_PRIVATE).getString("agencyTag", null);
Log.i(TAG, "onResume with agency " + mAgency);
if (mAgency != null) {
mViewPager.setAdapter(mAdapter);
if (mTag.equals(TAG_FAVORITES)) {
mViewPager.setCurrentItem(PAGER_FAVORITE_POSITION);
mActionBar.selectTab(mFavoriteTab);
} else {
mViewPager.setCurrentItem(PAGER_ROUTE_POSITION);
mActionBar.selectTab(mRouteTab);
}
} else {
selectAgency();
}
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// Check if anything has been saved...
if (savedInstanceState != null) {
mTag = savedInstanceState.getString(STATE_TAG);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_agency:
selectAgency();
return true;
case R.id.menu_oss:
Intent intent = new Intent(this, OSSActivity.class);
startActivity(intent);
return true;
}
return super.onMenuItemSelected(featureId, item);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(STATE_TAG, mTag);
}
/**
* Load agency selection fragment.
*/
public void selectAgency() {
// load agency activity
Intent intent = new Intent(this, AgencySelectActivity.class);
startActivity(intent);
}
public class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return 2;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new BrowseFragment();
default: // case 1
return new FavoritesFragment();
}
}
}
}