From 19ebc13c024defb13c68e4111673f963df01dfa5 Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Sun, 16 Aug 2015 22:18:49 +0000 Subject: [PATCH] Add SVG icon file --- app/src/main/java/net/jacekk/bridge/android/MainActivity.java | 245 +++++++++++++++++++++++++++--------------------- 1 files changed, 136 insertions(+), 109 deletions(-) diff --git a/app/src/main/java/net/jacekk/bridge/android/MainActivity.java b/app/src/main/java/net/jacekk/bridge/android/MainActivity.java index 744ecd6..15d2906 100644 --- a/app/src/main/java/net/jacekk/bridge/android/MainActivity.java +++ b/app/src/main/java/net/jacekk/bridge/android/MainActivity.java @@ -1,18 +1,23 @@ package net.jacekk.bridge.android; import android.app.Activity; +import android.content.Intent; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; -import android.view.View; +import android.view.Menu; +import android.view.MenuItem; +import android.widget.CompoundButton; 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.BridgeInput; +import net.jacekk.bridge.BridgeInputException; import net.jacekk.bridge.BridgeResult; +import net.jacekk.bridge.R; public class MainActivity extends Activity { private SeekBar BidSlider; @@ -34,7 +39,7 @@ private EditText PCInput; private EditText TricksInput; - private TextView resultText; + private TextView ResultsText; public BridgeCompute bridgeCompute; @@ -49,7 +54,36 @@ InitializeApp(); } - private void InitializeApp() { + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.main, menu); + return super.onCreateOptionsMenu(menu); + } + + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.main_action_about: + Intent about = new Intent(getApplicationContext(), AboutActivity.class); + startActivity(about); + return true; + case R.id.main_action_reset: + resetInputs(); + return true; + } + + return super.onOptionsItemSelected(item); + } + + private void resetInputs() { + BidSlider.setProgress(0); + MinorSuitsToggle.setChecked(true); + ContractToggle.setChecked(true); + NNToggle.setChecked(true); + PCInput.setText(""); + TricksInput.setText(""); + ResultsText.setText(getString(R.string.enter_data)); + } + + protected void InitializeApp() { bridgeCompute = new BridgeCompute(); BidSlider = (SeekBar) findViewById(R.id.BidSlider); @@ -71,7 +105,9 @@ PCInput = (EditText) findViewById(R.id.PCInput); TricksInput = (EditText) findViewById(R.id.TricksInput); - resultText = (TextView) findViewById(R.id.ResultsText); + ResultsText = (TextView) findViewById(R.id.ResultsText); + + CompoundButton.OnCheckedChangeListener changeListener; BidSlider.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override @@ -89,104 +125,128 @@ } }); - ToggleButton.OnClickListener colorClickListener = new ToggleButton.OnClickListener() { + changeListener = new CompoundButton.OnCheckedChangeListener() { @Override - public void onClick(View view) { - ToggleButton toggle = (ToggleButton) view; + public void onCheckedChanged(CompoundButton button, boolean isChecked) { + if (!isChecked) { + if (!MinorSuitsToggle.isChecked() && !MajorSuitsToggle.isChecked() + && !NoTrumpToggle.isChecked()) { + MinorSuitsToggle.setChecked(true); + } + return; + } - if (!toggle.equals(MinorSuitsToggle)) + if (!button.equals(MinorSuitsToggle)) MinorSuitsToggle.setChecked(false); - if (!toggle.equals(MajorSuitsToggle)) + if (!button.equals(MajorSuitsToggle)) MajorSuitsToggle.setChecked(false); - if (!toggle.equals(NoTrumpToggle)) + if (!button.equals(NoTrumpToggle)) NoTrumpToggle.setChecked(false); updateResults(); } }; - MinorSuitsToggle.setOnClickListener(colorClickListener); - MajorSuitsToggle.setOnClickListener(colorClickListener); - NoTrumpToggle.setOnClickListener(colorClickListener); + MinorSuitsToggle.setOnCheckedChangeListener(changeListener); + MajorSuitsToggle.setOnCheckedChangeListener(changeListener); + NoTrumpToggle.setOnCheckedChangeListener(changeListener); - ToggleButton.OnClickListener bidClickListener = new ToggleButton.OnClickListener() { + changeListener = new CompoundButton.OnCheckedChangeListener() { @Override - public void onClick(View view) { - ToggleButton toggle = (ToggleButton) view; + public void onCheckedChanged(CompoundButton button, boolean isChecked) { + if (!isChecked) { + if (!ContractToggle.isChecked() && !DoubleToggle.isChecked() + && !RedoubleToggle.isChecked()) { + ContractToggle.setChecked(true); + } + return; + } - if (!toggle.equals(ContractToggle)) + if (!button.equals(ContractToggle)) ContractToggle.setChecked(false); - if (!toggle.equals(DoubleToggle)) + if (!button.equals(DoubleToggle)) DoubleToggle.setChecked(false); - if (!toggle.equals(RedoubleToggle)) + if (!button.equals(RedoubleToggle)) RedoubleToggle.setChecked(false); updateResults(); } }; - ContractToggle.setOnClickListener(bidClickListener); - DoubleToggle.setOnClickListener(bidClickListener); - RedoubleToggle.setOnClickListener(bidClickListener); + ContractToggle.setOnCheckedChangeListener(changeListener); + DoubleToggle.setOnCheckedChangeListener(changeListener); + RedoubleToggle.setOnCheckedChangeListener(changeListener); - ToggleButton.OnClickListener baClickListener = new ToggleButton.OnClickListener() { - public void onClick(View view) { - ToggleButton toggle = (ToggleButton) view; + changeListener = new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton button, boolean isChecked) { + if (!isChecked) { + if (!VVToggle.isChecked() && !VNToggle.isChecked() + && !NVToggle.isChecked() && !NNToggle.isChecked()) { + NNToggle.setChecked(true); + } + return; + } - 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)) + if (!button.equals(NNToggle)) NNToggle.setChecked(false); + if (!button.equals(NVToggle)) + NVToggle.setChecked(false); + if (!button.equals(VNToggle)) + VNToggle.setChecked(false); + if (!button.equals(VVToggle)) + VVToggle.setChecked(false); updateResults(); } }; - VVToggle.setOnClickListener(baClickListener); - VNToggle.setOnClickListener(baClickListener); - NVToggle.setOnClickListener(baClickListener); - NNToggle.setOnClickListener(baClickListener); + VVToggle.setOnCheckedChangeListener(changeListener); + VNToggle.setOnCheckedChangeListener(changeListener); + NVToggle.setOnCheckedChangeListener(changeListener); + NNToggle.setOnCheckedChangeListener(changeListener); - PCInput.addTextChangedListener( - new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { - } + 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 onTextChanged(CharSequence charSequence, int i, int i2, int i3) { + } - @Override - public void afterTextChanged(Editable editable) { - updateResults(); - } - } - ); + @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(); - } - } - ); + PCInput.addTextChangedListener(textWatcher); + TricksInput.addTextChangedListener(textWatcher); } public void updateResults() { + BridgeInput input = getBridgeInput(); + + BridgeResult result; + try { + result = bridgeCompute.getResultForInput(input); + } catch (BridgeInputException e) { + int errorStringId = BridgeInputExceptionMapper.map(e); + ResultsText.setText(getString(errorStringId)); + return; + } + + ResultsText.setText( + (result.winners == BridgeResult.Side.We ? 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); + } + + private BridgeInput getBridgeInput() { int bid = BidSlider.getProgress(); int color = 0; @@ -221,47 +281,14 @@ } 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); + BridgeInput input = new BridgeInput(); + input.bid = bid; + input.suit = BridgeInput.Suit.values()[color]; + input.contract = BridgeInput.Contract.values()[dbl]; + input.weVulnerable = vulnerability / 2 >= 1; + input.theyVulnerable = vulnerability % 2 >= 1; + input.PC = PC; + input.tricks = tricks; + return input; } } -- Gitblit v1.9.1