From 2d8187935c8a6d1fca8d9dbd916b7143c3e41c9c Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Sun, 18 Jan 2015 19:16:23 +0000
Subject: [PATCH] Allow to reset application state using "back" button & fix toggles state detection.

---
 app/src/main/java/net/jacekk/bridge/android/MainActivity.java |   98 ++++++++++++++++++++++++++++++++----------------
 1 files changed, 65 insertions(+), 33 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..9c60f4e 100644
--- a/app/src/main/java/net/jacekk/bridge/android/MainActivity.java
+++ b/app/src/main/java/net/jacekk/bridge/android/MainActivity.java
@@ -4,7 +4,7 @@
 import android.os.Bundle;
 import android.text.Editable;
 import android.text.TextWatcher;
-import android.view.View;
+import android.widget.CompoundButton;
 import android.widget.EditText;
 import android.widget.SeekBar;
 import android.widget.TextView;
@@ -49,6 +49,17 @@
         InitializeApp();
     }
 
+    @Override
+    public void onBackPressed() {
+        // Reset
+        BidSlider.setProgress(0);
+        MinorSuitsToggle.setChecked(true);
+        ContractToggle.setChecked(true);
+        NNToggle.setChecked(true);
+        PCInput.setText("");
+        TricksInput.setText("");
+    }
+
     private void InitializeApp() {
         bridgeCompute = new BridgeCompute();
 
@@ -73,6 +84,8 @@
 
         resultText = (TextView) findViewById(R.id.ResultsText);
 
+        CompoundButton.OnCheckedChangeListener changeListener;
+
         BidSlider.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
             @Override
             public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
@@ -89,67 +102,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

--
Gitblit v1.9.1