package com.boardgamegeek.ui; 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.view.MenuItem; import com.boardgamegeek.R; import com.boardgamegeek.provider.BggContract; import com.boardgamegeek.util.ActivityUtils; import com.boardgamegeek.util.ImageUtils; import com.boardgamegeek.util.ScrimUtils; import com.boardgamegeek.util.UIUtils; import com.crashlytics.android.answers.Answers; import com.crashlytics.android.answers.ContentViewEvent; public class GeekListItemActivity extends HeroTabActivity { private int geekListId; private String geekListTitle; private int objectId; private String objectName; private String url; private boolean isBoardGame; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Intent intent = getIntent(); geekListTitle = intent.getStringExtra(ActivityUtils.KEY_TITLE); geekListId = intent.getIntExtra(ActivityUtils.KEY_ID, BggContract.INVALID_ID); objectId = intent.getIntExtra(ActivityUtils.KEY_OBJECT_ID, BggContract.INVALID_ID); objectName = intent.getStringExtra(ActivityUtils.KEY_NAME); url = intent.getStringExtra(ActivityUtils.KEY_OBJECT_URL); isBoardGame = intent.getBooleanExtra(ActivityUtils.KEY_IS_BOARD_GAME, false); int imageId = intent.getIntExtra(ActivityUtils.KEY_IMAGE_ID, BggContract.INVALID_ID); safelySetTitle(objectName); if (savedInstanceState == null) { Answers.getInstance().logContentView(new ContentViewEvent() .putContentType("GeekListItem") .putContentId(String.valueOf(objectId)) .putContentName(objectName)); } ScrimUtils.applyInvertedScrim(scrimView); ImageUtils.safelyLoadImage(toolbarImage, imageId, null); } @Override protected int getOptionsMenuId() { return R.menu.view; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: if (geekListId != BggContract.INVALID_ID) { Intent intent = new Intent(this, GeekListActivity.class); intent.putExtra(ActivityUtils.KEY_ID, geekListId); intent.putExtra(ActivityUtils.KEY_TITLE, geekListTitle); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); finish(); } else { onBackPressed(); } return true; case R.id.menu_view: if (isBoardGame) { ActivityUtils.launchGame(this, objectId, objectName); } else { ActivityUtils.link(this, url); } return true; } return super.onOptionsItemSelected(item); } @Override protected void setUpViewPager() { GeekListItemPagerAdapter adapter = new GeekListItemPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(adapter); } private final class GeekListItemPagerAdapter extends FragmentPagerAdapter { public GeekListItemPagerAdapter(FragmentManager fragmentManager) { super(fragmentManager); } @Override public CharSequence getPageTitle(int position) { if (position == 0) return getString(R.string.title_description); if (position == 1) return getString(R.string.title_comments); return ""; } @Override public Fragment getItem(int position) { if (position == 0) { return Fragment.instantiate( GeekListItemActivity.this, GeekListItemFragment.class.getName(), UIUtils.intentToFragmentArguments(getIntent())); } if (position == 1) { return Fragment.instantiate( GeekListItemActivity.this, GeekListCommentsFragment.class.getName(), UIUtils.intentToFragmentArguments(getIntent())); } return null; } @Override public int getCount() { return 2; } } }