package com.victorvieux.livedroid.activities; import android.app.SearchManager; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.app.ActionBar.Tab; import com.actionbarsherlock.app.SherlockFragmentActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; import com.victorvieux.livedroid.LiveDroidApp; import com.victorvieux.livedroid.R; import com.victorvieux.livedroid.api.endpoints.Games; import com.victorvieux.livedroid.fragments.CarouselFragment; import com.victorvieux.livedroid.fragments.ListFragment; import com.victorvieux.livedroid.fragments.OnTapListener; import com.victorvieux.livedroid.fragments.TrophiesFragment; import com.victorvieux.livedroid.fragments.WallFragment; public class MainActivity extends SherlockFragmentActivity implements OnRefreshListener { private MenuItem mMenuRefresh; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Games root = (Games) getIntent().getExtras().getSerializable("root"); ((LiveDroidApp) getApplication()).setRoot(root); setContentView(R.layout.activity_main); ActionBar bar = getSupportActionBar(); getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); ActionBar.Tab tabA = bar.newTab().setIcon(R.drawable.ic_memory).setText(R.string.List); ActionBar.Tab tabB = bar.newTab().setIcon(R.drawable.ic_apps).setText(R.string.wall); ActionBar.Tab tabC = bar.newTab().setIcon(R.drawable.ic_action_achievement).setText(R.string.Trophies); tabA.setTabListener(new MyTabsListener(new ListFragment())); tabB.setTabListener(new MyTabsListener(new WallFragment())); tabC.setTabListener(new MyTabsListener(new TrophiesFragment())); bar.addTab(tabA); bar.addTab(tabB); bar.addTab(tabC); if (Build.VERSION.SDK_INT >= 11) { ActionBar.Tab tabD = bar.newTab().setIcon(R.drawable.ic_action_carousel).setText(R.string.carousel); tabD.setTabListener(new MyTabsListener(new CarouselFragment())); bar.addTab(tabD); } } @Override protected void onNewIntent(Intent intent) { setIntent(intent); handleIntent(intent); } private void handleIntent(Intent intent) { if (Intent.ACTION_SEARCH.equals(intent.getAction())) { String query = intent.getStringExtra(SearchManager.QUERY); } } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getSupportMenuInflater(); inflater.inflate(R.menu.menu, menu); mMenuRefresh = menu.findItem(R.id.itemRefresh); return true; } @Override public boolean onPrepareOptionsMenu (Menu menu) { mMenuRefresh = menu.findItem(R.id.itemRefresh); if (mMenuRefresh != null) menu.findItem(R.id.itemRefresh).setVisible( getSupportActionBar().getSelectedTab().getPosition() == 0); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.settings: startActivity(new Intent(this, SettingsActivity.class)); return true; //case R.id.search: // onSearchRequested(); default: return super.onOptionsItemSelected(item); } } protected class MyTabsListener implements ActionBar.TabListener { private Fragment fragment; public MyTabsListener(Fragment fragment) { this.fragment = fragment; } public void onTabReselected(Tab tab, FragmentTransaction ft) { if (fragment instanceof OnTapListener) ((OnTapListener) fragment).onTap(); } public void onTabSelected(Tab tab, FragmentTransaction ft) { ft.replace(R.id.fragment_container, fragment); invalidateOptionsMenu(); } public void onTabUnselected(Tab tab, FragmentTransaction ft) { ft.remove(fragment); } } @Override public void setRefresh(boolean refresh) { try { if (mMenuRefresh != null) mMenuRefresh.setActionView(refresh ? R.layout.refresh_menuitem : null); }catch (NullPointerException ex) {invalidateOptionsMenu();}; } }