package net.jacekk.brydz.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.brydz.BridgeCompute; import net.jacekk.brydz.BridgeResult; public class MainActivity extends Activity { private SeekBar BidSlider; private TextView BidText; private ToggleButton CDToggle; private ToggleButton HSToggle; private ToggleButton NTToggle; private ToggleButton NormToggle; private ToggleButton DblToggle; private ToggleButton ReDblToggle; private ToggleButton BBToggle; private ToggleButton BAToggle; private ToggleButton ABToggle; private ToggleButton AAToggle; 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); CDToggle = (ToggleButton) findViewById(R.id.CDToggle); HSToggle = (ToggleButton) findViewById(R.id.HSToggle); NTToggle = (ToggleButton) findViewById(R.id.NTToggle); NormToggle = (ToggleButton) findViewById(R.id.NormToggle); DblToggle = (ToggleButton) findViewById(R.id.DblToggle); ReDblToggle = (ToggleButton) findViewById(R.id.ReDblToggle); BBToggle = (ToggleButton) findViewById(R.id.BBToggle); BAToggle = (ToggleButton) findViewById(R.id.BAToggle); ABToggle = (ToggleButton) findViewById(R.id.ABToggle); AAToggle = (ToggleButton) findViewById(R.id.AAToggle); PCInput = (EditText) findViewById(R.id.PCInput); TricksInput = (EditText) findViewById(R.id.TricksInput); resultText = (TextView) findViewById(R.id.resultText); 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(CDToggle)) CDToggle.setChecked(false); if (!toggle.equals(HSToggle)) HSToggle.setChecked(false); if (!toggle.equals(NTToggle)) NTToggle.setChecked(false); updateResults(); } }; CDToggle.setOnClickListener(colorClickListener); HSToggle.setOnClickListener(colorClickListener); NTToggle.setOnClickListener(colorClickListener); ToggleButton.OnClickListener bidClickListener = new ToggleButton.OnClickListener() { @Override public void onClick(View view) { ToggleButton toggle = (ToggleButton) view; if (!toggle.equals(NormToggle)) NormToggle.setChecked(false); if (!toggle.equals(DblToggle)) DblToggle.setChecked(false); if (!toggle.equals(ReDblToggle)) ReDblToggle.setChecked(false); updateResults(); } }; NormToggle.setOnClickListener(bidClickListener); DblToggle.setOnClickListener(bidClickListener); ReDblToggle.setOnClickListener(bidClickListener); ToggleButton.OnClickListener baClickListener = new ToggleButton.OnClickListener() { public void onClick(View view) { ToggleButton toggle = (ToggleButton) view; if (!toggle.equals(AAToggle)) AAToggle.setChecked(false); if (!toggle.equals(ABToggle)) ABToggle.setChecked(false); if (!toggle.equals(BAToggle)) BAToggle.setChecked(false); if (!toggle.equals(BBToggle)) BBToggle.setChecked(false); updateResults(); } }; AAToggle.setOnClickListener(baClickListener); ABToggle.setOnClickListener(baClickListener); BAToggle.setOnClickListener(baClickListener); BBToggle.setOnClickListener(baClickListener); PCInput.addTextChangedListener( 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(); } } ); TricksInput.addTextChangedListener( 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(); } } ); } public void updateResults() { int bid = BidSlider.getProgress(); int color = 0; if (HSToggle.isChecked()) color = 1; if (NTToggle.isChecked()) color = 2; int dbl = 0; if (DblToggle.isChecked()) dbl = 1; if (ReDblToggle.isChecked()) dbl = 2; int baba = 0; if (BAToggle.isChecked()) baba = 1; if (ABToggle.isChecked()) baba = 2; if (AAToggle.isChecked()) baba = 3; int PC = -1; try { PC = Integer.parseInt(PCInput.getText().toString()); } catch (NumberFormatException e) { } int tricks = -1; try { tricks = Integer.parseInt(TricksInput.getText().toString()); } catch (NumberFormatException e) { } 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 (baba < 0 || baba > 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, baba, 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); } }