package com.idunnolol.sotm.activity; import android.app.Activity; import android.content.Intent; import android.database.ContentObserver; import android.net.Uri; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import com.danlew.utils.Log; import com.danlew.utils.Ui; import com.idunnolol.sotm.R; import com.idunnolol.sotm.data.Card; import com.idunnolol.sotm.data.Difficulty; import com.idunnolol.sotm.data.GameSetup; import com.idunnolol.sotm.data.Prefs; import com.idunnolol.sotm.fragment.AboutDialogFragment; import com.idunnolol.sotm.fragment.CardPickerDialogFragment.CardPickerDialogFragmentListener; import com.idunnolol.sotm.fragment.DifficultyDialogFragment.DifficultyDialogFragmentListener; import com.idunnolol.sotm.fragment.RandomizerListFragment; import com.idunnolol.sotm.fragment.RandomizerListFragment.RandomizerListFragmentListener; import com.idunnolol.sotm.fragment.SpecifyDifficultyDialogFragment.SpecifyDifficultyDialogFragmentListener; import com.idunnolol.sotm.fragment.StatsFragment; import com.idunnolol.sotm.fragment.StatsFragment.StatsFragmentListener; import com.idunnolol.sotm.sync.AccountUtils; public class RandomizerActivity extends Activity implements RandomizerListFragmentListener, CardPickerDialogFragmentListener, DifficultyDialogFragmentListener, SpecifyDifficultyDialogFragmentListener, StatsFragmentListener { private RandomizerListFragment mRandomizerListFragment; private StatsFragment mStatsFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle(R.string.title_randomizer); setContentView(R.layout.activity_randomizer); mRandomizerListFragment = Ui.findFragment(this, R.id.randomizer_list_fragment); mStatsFragment = Ui.findFragment(this, R.id.stats_fragment); if (savedInstanceState == null) { // Make sure we have a sync account setup and that it's set to sync AccountUtils.addSyncAccount(this); AccountUtils.startPeriodicSync(); } } @Override protected void onResume() { super.onResume(); getContentResolver().registerContentObserver(AccountUtils.SYNC_URI, false, mSyncObserver); mStatsFragment.bind(mRandomizerListFragment.getGameSetup()); } @Override protected void onPause() { super.onPause(); getContentResolver().unregisterContentObserver(mSyncObserver); } ////////////////////////////////////////////////////////////////////////// // Action bar @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_randomizer, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onPrepareOptionsMenu(Menu menu) { menu.findItem(R.id.action_advanced).setChecked(Prefs.isAdvancedAllowed()); return super.onPrepareOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_configure: startActivity(new Intent(this, CardConfigActivity.class)); return true; case R.id.action_advanced: Prefs.setAdvancedAllowed(!item.isChecked()); mRandomizerListFragment.validateGameSetup(); return true; case R.id.action_about: AboutDialogFragment df = new AboutDialogFragment(); df.show(getFragmentManager(), AboutDialogFragment.TAG); return true; } return super.onOptionsItemSelected(item); } ////////////////////////////////////////////////////////////////////////// // Syncing private ContentObserver mSyncObserver = new ContentObserver(null) { @Override public void onChange(boolean selfChange) { onChange(selfChange, null); } @Override public void onChange(boolean selfChange, Uri uri) { Log.i("Points info updated, re-binding data"); runOnUiThread(new Runnable() { @Override public void run() { mStatsFragment.bind(mRandomizerListFragment.getGameSetup()); } }); } }; ////////////////////////////////////////////////////////////////////////// // CardPickerDialogFragmentListener @Override public void onCardSelected(Card card) { mRandomizerListFragment.onCardSelected(card); } ////////////////////////////////////////////////////////////////////////// // DifficultyDialogFragmentListener @Override public void onDifficultyChosen(Difficulty difficulty) { mRandomizerListFragment.onDifficultyChosen(difficulty); } ////////////////////////////////////////////////////////////////////////// // SpecifyDifficultyDialogFragmentListener @Override public void onSpecificDifficultyChosen(int targetWinPercent) { mRandomizerListFragment.onSpecificDifficultyChosen(targetWinPercent); } ////////////////////////////////////////////////////////////////////////// // RandomizerListFragmentListener @Override public void onGameSetupChanged(GameSetup gameSetup) { mStatsFragment.bind(gameSetup); } ////////////////////////////////////////////////////////////////////////// // StatsFragmentListener @Override public void onStatsClick() { mRandomizerListFragment.launchRandomizerDialog(true); } }