package com.boardgamegeek.ui; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.Menu; import android.view.MenuItem; import com.boardgamegeek.R; import com.boardgamegeek.events.PlayerSelectedEvent; import com.boardgamegeek.events.PlayersCountChangedEvent; import com.boardgamegeek.sorter.PlayersSorterFactory; import com.boardgamegeek.util.ActivityUtils; import com.boardgamegeek.util.ToolbarUtils; import com.boardgamegeek.util.UIUtils; import com.crashlytics.android.answers.Answers; import com.crashlytics.android.answers.ContentViewEvent; import org.greenrobot.eventbus.Subscribe; import icepick.Icepick; import icepick.State; public class PlayersActivity extends SimpleSinglePaneActivity { @State int playerCount = -1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Icepick.restoreInstanceState(this, savedInstanceState); if (savedInstanceState == null) { Answers.getInstance().logContentView(new ContentViewEvent().putContentType("Players")); } } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Icepick.saveInstanceState(this, outState); } @Override protected Fragment onCreatePane(Intent intent) { return new PlayersFragment(); } @Override protected int getOptionsMenuId() { return R.menu.players; } @Override public boolean onPrepareOptionsMenu(Menu menu) { menu.findItem(R.id.menu_sort).setVisible(true); PlayersFragment fragment = (PlayersFragment) getFragment(); if (fragment != null) { switch (fragment.getSort()) { case PlayersSorterFactory.TYPE_QUANTITY: UIUtils.checkMenuItem(menu, R.id.menu_sort_quantity); break; case PlayersSorterFactory.TYPE_WINS: UIUtils.checkMenuItem(menu, R.id.menu_sort_wins); break; case PlayersSorterFactory.TYPE_NAME: default: UIUtils.checkMenuItem(menu, R.id.menu_sort_name); break; } } ToolbarUtils.setActionBarText(menu, R.id.menu_list_count, playerCount <= 0 ? "" : String.format("%,d", playerCount)); return super.onPrepareOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { int itemId = item.getItemId(); switch (itemId) { case R.id.menu_sort_name: ((PlayersFragment) getFragment()).setSort(PlayersSorterFactory.TYPE_NAME); return true; case R.id.menu_sort_quantity: ((PlayersFragment) getFragment()).setSort(PlayersSorterFactory.TYPE_QUANTITY); return true; case R.id.menu_sort_wins: ((PlayersFragment) getFragment()).setSort(PlayersSorterFactory.TYPE_WINS); return true; } return super.onOptionsItemSelected(item); } @Override protected int getDrawerResId() { return R.string.title_players; } @Subscribe public void onEvent(PlayerSelectedEvent event) { ActivityUtils.startBuddyActivity(this, event.getUsername(), event.getName()); } @Subscribe(sticky = true) public void onEvent(PlayersCountChangedEvent event) { playerCount = event.getCount(); supportInvalidateOptionsMenu(); } }