package net.jacekk.bridge.android; import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.View; import android.widget.EditText; import android.widget.SeekBar; import android.widget.TextView; import android.widget.ToggleButton; import net.jacekk.bridge.R; import net.jacekk.bridge.BridgeCompute; import net.jacekk.bridge.BridgeResult; public class MainActivity extends Activity { private SeekBar BidSlider; private TextView BidText; private ToggleButton MinorSuitsToggle; private ToggleButton MajorSuitsToggle; private ToggleButton NoTrumpToggle; private ToggleButton ContractToggle; private ToggleButton DoubleToggle; private ToggleButton RedoubleToggle; private ToggleButton NNToggle; private ToggleButton NVToggle; private ToggleButton VNToggle; private ToggleButton VVToggle; private EditText PCInput; private EditText TricksInput; private TextView resultText; public BridgeCompute bridgeCompute; /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); InitializeApp(); } private void InitializeApp() { bridgeCompute = new BridgeCompute(); BidSlider = (SeekBar) findViewById(R.id.BidSlider); BidText = (TextView) findViewById(R.id.BidText); MinorSuitsToggle = (ToggleButton) findViewById(R.id.MinorSuitsToggle); MajorSuitsToggle = (ToggleButton) findViewById(R.id.MajorSuitsToggle); NoTrumpToggle = (ToggleButton) findViewById(R.id.NoTrumpToggle); ContractToggle = (ToggleButton) findViewById(R.id.ContractToggle); DoubleToggle = (ToggleButton) findViewById(R.id.DoubleToggle); RedoubleToggle = (ToggleButton) findViewById(R.id.RedoubleToggle); NNToggle = (ToggleButton) findViewById(R.id.NNToggle); NVToggle = (ToggleButton) findViewById(R.id.NVToggle); VNToggle = (ToggleButton) findViewById(R.id.VNToggle); VVToggle = (ToggleButton) findViewById(R.id.VVToggle); PCInput = (EditText) findViewById(R.id.PCInput); TricksInput = (EditText) findViewById(R.id.TricksInput); resultText = (TextView) findViewById(R.id.ResultsText); BidSlider.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { BidText.setText(Integer.toString(seekBar.getProgress())); updateResults(); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); ToggleButton.OnClickListener colorClickListener = new ToggleButton.OnClickListener() { @Override public void onClick(View view) { ToggleButton toggle = (ToggleButton) view; if (!toggle.equals(MinorSuitsToggle)) MinorSuitsToggle.setChecked(false); if (!toggle.equals(MajorSuitsToggle)) MajorSuitsToggle.setChecked(false); if (!toggle.equals(NoTrumpToggle)) NoTrumpToggle.setChecked(false); updateResults(); } }; MinorSuitsToggle.setOnClickListener(colorClickListener); MajorSuitsToggle.setOnClickListener(colorClickListener); NoTrumpToggle.setOnClickListener(colorClickListener); ToggleButton.OnClickListener bidClickListener = new ToggleButton.OnClickListener() { @Override public void onClick(View view) { ToggleButton toggle = (ToggleButton) view; if (!toggle.equals(ContractToggle)) ContractToggle.setChecked(false); if (!toggle.equals(DoubleToggle)) DoubleToggle.setChecked(false); if (!toggle.equals(RedoubleToggle)) RedoubleToggle.setChecked(false); updateResults(); } }; ContractToggle.setOnClickListener(bidClickListener); DoubleToggle.setOnClickListener(bidClickListener); RedoubleToggle.setOnClickListener(bidClickListener); ToggleButton.OnClickListener baClickListener = new ToggleButton.OnClickListener() { public void onClick(View view) { ToggleButton toggle = (ToggleButton) view; if (!toggle.equals(VVToggle)) VVToggle.setChecked(false); if (!toggle.equals(VNToggle)) VNToggle.setChecked(false); if (!toggle.equals(NVToggle)) NVToggle.setChecked(false); if (!toggle.equals(NNToggle)) NNToggle.setChecked(false); updateResults(); } }; VVToggle.setOnClickListener(baClickListener); VNToggle.setOnClickListener(baClickListener); NVToggle.setOnClickListener(baClickListener); NNToggle.setOnClickListener(baClickListener); TextWatcher textWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { } @Override public void afterTextChanged(Editable editable) { updateResults(); } }; PCInput.addTextChangedListener(textWatcher); TricksInput.addTextChangedListener(textWatcher); } public void updateResults() { int bid = BidSlider.getProgress(); int color = 0; if (MajorSuitsToggle.isChecked()) color = 1; if (NoTrumpToggle.isChecked()) color = 2; int dbl = 0; if (DoubleToggle.isChecked()) dbl = 1; if (RedoubleToggle.isChecked()) dbl = 2; int vulnerability = 0; if (NVToggle.isChecked()) vulnerability = 1; if (VNToggle.isChecked()) vulnerability = 2; if (VVToggle.isChecked()) vulnerability = 3; int PC = -1; try { PC = Integer.parseInt(PCInput.getText().toString()); } catch (NumberFormatException ignored) { } int tricks = -1; try { tricks = Integer.parseInt(TricksInput.getText().toString()); } catch (NumberFormatException ignored) { } if (bid < 0 || bid > 7) { resultText.setText(getString(R.string.invalid_bid)); return; } if (color != 0 && color != 1 && color != 2) { resultText.setText(getString(R.string.invalid_color)); return; } if (dbl < 0 || dbl > 2) { resultText.setText(getString(R.string.invalid_dbl)); return; } if (vulnerability < 0 || vulnerability > 3) { resultText.setText(getString(R.string.invalid_baba)); return; } if (PC < 0 || PC > 40) { resultText.setText(getString(R.string.invalid_pc)); return; } if (tricks < 0 || tricks > 13) { resultText.setText(getString(R.string.invalid_tricks)); return; } if (bid == 0 && PC < 20) { resultText.setText(getString(R.string.invalid_pass)); return; } BridgeResult result = bridgeCompute.compute(bid, color, dbl, vulnerability, PC, tricks); resultText.setText( (result.pointsFor == BridgeResult.PointsFor.Us ? getString(R.string.result_for_us) : getString(R.string.result_for_them)) + "\n" + getString(R.string.result_pts_wo_pc) + " " + result.pointsBefore + "\n" + getString(R.string.result_pts) + " " + result.points + "\n" + getString(R.string.result_imps) + " " + result.IMPs + "\n" + getString(R.string.result_percent) + " " + result.percent); } }