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 |  201 ++++++++++++++++++++++++++++++-------------------
 1 files changed, 122 insertions(+), 79 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 e7fe4cd..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,67 +125,86 @@
             }
         });
 
-        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);
 
         TextWatcher textWatcher = new TextWatcher() {
             @Override
@@ -171,6 +226,27 @@
     }
 
     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;
@@ -205,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