From c153ec73350d2bcbc350162b93bfe1fce7a05b14 Mon Sep 17 00:00:00 2001
From: Brandon Rodriguez <brodriguez8774@mail.kvcc.edu>
Date: Sat, 10 Oct 2015 14:50:36 -0400
Subject: [PATCH] Adds horizontal layout.

Specifies horizontal layout.
Adds commenting.
Still can't figure out the savedInstanceState logic. Oh well. Everything else should be functional.
---
 README.md                                     |   3 +-
 .../cis298/cis298assignment2/Conversion.java  |   8 +
 .../TemperatureConverter.java                 | 137 ++++++++-------
 .../activity_temperature_converter.xml        | 163 ++++++++++++++++++
 .../layout/activity_temperature_converter.xml |   3 +-
 app/src/main/res/values/strings.xml           |   2 +-
 6 files changed, 248 insertions(+), 68 deletions(-)
 create mode 100644 app/src/main/res/layout-land/activity_temperature_converter.xml

diff --git a/README.md b/README.md
index c1c983d..7fa7c34 100644
--- a/README.md
+++ b/README.md
@@ -23,6 +23,7 @@ Solution Requirements:
 
 ![alt text](http://barnesbrothers.homeserver.com/cis298/assignmentImages/assignment2a.jpg "Application Portrait Layout")
 ![alt text](http://barnesbrothers.homeserver.com/cis298/assignmentImages/assignment2b.jpg "Application Landscape Layout")
+
 ### Notes
 
 The book does not cover how to do work with Radio Buttons. I will talk about it as needed in class. If you are stuck or have questions about it, ask.
@@ -46,6 +47,6 @@ http://stackoverflow.com/questions/4885254/string-format-to-format-double-in-jav
 
 * I can't seem to figure out how to properly use savedInstanceState to keep program status through rotations. I'm pretty sure it's because I'm trying to pass an array of booleans.
 
-* To elaborate, my initial problem is this: the only thing (seemingly) not saved on rotate are the conversion display strings, which are only generated if all booleans come back true true and a button is pressed. I COULD potentially just force the string to display on rotate, but that just delays the issue. IE: to display another, seperate equation, the user will have to click every single group again to trigger the 3 booleans anyways. Therefore it's best to either 1) carry over all three booleans or 2) reset the entire program (including button selections) on rotate.
+* To elaborate, my initial problem is this: the only thing (seemingly) not saved on rotate are the conversion display strings, which are only generated if all booleans come back true true and a button is pressed. I COULD potentially just force the string to display on rotate, but that just delays the issue. IE: to display another, seperate equation, the user will have to click every single group again to trigger the 3 booleans anyways (...at least I think they will? This savedInstanceState logic is confusing). Therefore it's best to either 1) carry over all three booleans or 2) reset the entire program (including button selections) on rotate.
 
 * In an attempt to carry over these three booleans, an array seemed like the only solution. Via debugging, it appears that the array does infact seem to save all appropriate values just before rotate, as intended. However, the problem seems to be in calling them back up in the onCreate method. Getting a saved instance state requires passing the Key_Index string (which points to the value you want to use), and then the "default to if no value" parameter, right? So then to call a specific index of the savedBooleanStateArray, I would need to somehow modify Key_Index to point at a particular index? I think? I don't know...this was confusing enough when passing a single variable, but I can't think of a reasonable way to make this program work with only passing 1.
\ No newline at end of file
diff --git a/app/src/main/java/edu/kvcc/cis298/cis298assignment2/Conversion.java b/app/src/main/java/edu/kvcc/cis298/cis298assignment2/Conversion.java
index 7eed780..0ac71fd 100644
--- a/app/src/main/java/edu/kvcc/cis298/cis298assignment2/Conversion.java
+++ b/app/src/main/java/edu/kvcc/cis298/cis298assignment2/Conversion.java
@@ -72,6 +72,14 @@ public class Conversion {
 
     //region Private Methods
 
+    /**
+     * Converts user's input to a "base" which in this case is Celsius.
+     * Then converts the base to whatever the desired end-result is.
+     * <p>
+     * Doing it this way helps ensure that all conversions are correct.
+     * IE: if single equation involving celsius is correct, then all celsius equations should be correct.
+     * Same goes for the other three conversion types.
+     */
     private void CalculateTemperature()
     {
         CalculateBase();
diff --git a/app/src/main/java/edu/kvcc/cis298/cis298assignment2/TemperatureConverter.java b/app/src/main/java/edu/kvcc/cis298/cis298assignment2/TemperatureConverter.java
index 25a374d..a79a703 100644
--- a/app/src/main/java/edu/kvcc/cis298/cis298assignment2/TemperatureConverter.java
+++ b/app/src/main/java/edu/kvcc/cis298/cis298assignment2/TemperatureConverter.java
@@ -123,6 +123,9 @@ public class TemperatureConverter extends AppCompatActivity {
         DisplayConversion();
     }
 
+    /**
+     * Creates strings for UI display and sends them over to appropriate xml properties.
+     */
     private void DisplayConversion()
     {
         String initialTemp = String.format("%.2f", conversion.getInitialValueDouble());
@@ -138,30 +141,30 @@ public class TemperatureConverter extends AppCompatActivity {
         // Combinations for FromCelsius selected.
         if (mSelectedInitialId == mInitial1Radio.getId()) {
             if (mSelectedConvertId == mConvert1Radio.getId()) {
-                conversion1String = initialTemp + " C";
-                conversion2String = convertTemp + " C";
-                equation1String = "[C]";
-                equation2String = "[C]";
+                conversion1String = initialTemp + " °C";
+                conversion2String = convertTemp + " °C";
+                equation1String = "[°C]";
+                equation2String = "[°C]";
             }
             else {
                 if (mSelectedConvertId == mConvert2Radio.getId()) {
-                    conversion1String = initialTemp + " C";
-                    conversion2String = convertTemp + " F";
-                    equation1String = "[F]";
-                    equation2String = "([C] x 9/5) + 32";
+                    conversion1String = initialTemp + " °C";
+                    conversion2String = convertTemp + " °F";
+                    equation1String = "[°F]";
+                    equation2String = "([°C] x 9/5) + 32";
                 }
                 else {
                     if (mSelectedConvertId == mConvert3Radio.getId()) {
-                        conversion1String = initialTemp + " C";
-                        conversion2String = convertTemp + " K";
-                        equation1String = "[K]";
-                        equation2String = "[C] + 273.15";
+                        conversion1String = initialTemp + " °C";
+                        conversion2String = convertTemp + " °K";
+                        equation1String = "[°K]";
+                        equation2String = "[°C] + 273.15";
                     }
                     else {
-                        conversion1String = initialTemp + " C";
-                        conversion2String = convertTemp + " R";
-                        equation1String = "[R]";
-                        equation2String = "([C] + 273.15) * 9 / 5";
+                        conversion1String = initialTemp + " °C";
+                        conversion2String = convertTemp + " °R";
+                        equation1String = "[°R]";
+                        equation2String = "([°C] + 273.15) * 9 / 5";
                     }
                 }
             }
@@ -170,30 +173,30 @@ public class TemperatureConverter extends AppCompatActivity {
             // Combinations for FromFahrenheit selected.
             if (mSelectedInitialId == mInitial2Radio.getId()) {
                 if (mSelectedConvertId == mConvert1Radio.getId()) {
-                    conversion1String = initialTemp + " F";
-                    conversion2String = convertTemp + " C";
-                    equation1String = "[C]";
-                    equation2String = "([F] - 32) * 5 / 9";
+                    conversion1String = initialTemp + " °F";
+                    conversion2String = convertTemp + " °C";
+                    equation1String = "[°C]";
+                    equation2String = "([°F] - 32) * 5 / 9";
                 }
                 else {
                     if (mSelectedConvertId == mConvert2Radio.getId()) {
-                        conversion1String = initialTemp + " F";
-                        conversion2String = convertTemp + " F";
-                        equation1String = "[F]";
-                        equation2String = "[F]";
+                        conversion1String = initialTemp + " °F";
+                        conversion2String = convertTemp + " °F";
+                        equation1String = "[°F]";
+                        equation2String = "[°F]";
                     }
                     else {
                         if (mSelectedConvertId == mConvert3Radio.getId()) {
-                            conversion1String = initialTemp + " F";
-                            conversion2String = convertTemp + " K";
-                            equation1String = "[K]";
-                            equation2String = "([F] + 459.67) * 5 / 9";
+                            conversion1String = initialTemp + " °F";
+                            conversion2String = convertTemp + " °K";
+                            equation1String = "[°K]";
+                            equation2String = "([°F] + 459.67) * 5 / 9";
                         }
                         else {
-                            conversion1String = initialTemp + " F";
-                            conversion2String = convertTemp + " R";
-                            equation1String = "[R]";
-                            equation2String = "[F] + 459.67";
+                            conversion1String = initialTemp + " °F";
+                            conversion2String = convertTemp + " °R";
+                            equation1String = "[°R]";
+                            equation2String = "[°F] + 459.67";
                         }
                     }
                 }
@@ -202,30 +205,30 @@ public class TemperatureConverter extends AppCompatActivity {
                 // Combinations for FromKelvin selected.
                 if (mSelectedInitialId == mInitial3Radio.getId()) {
                     if (mSelectedConvertId == mConvert1Radio.getId()) {
-                        conversion1String = initialTemp + " K";
-                        conversion2String = convertTemp + " C";
-                        equation1String = "[C]";
-                        equation2String = "[K] - 273.15";
+                        conversion1String = initialTemp + " °K";
+                        conversion2String = convertTemp + " °C";
+                        equation1String = "[°C]";
+                        equation2String = "[°K] - 273.15";
                     }
                     else {
                         if (mSelectedConvertId == mConvert2Radio.getId()) {
-                            conversion1String = initialTemp + " K";
-                            conversion2String = convertTemp + " F";
-                            equation1String = "[F]";
-                            equation2String = "([K] * 9 / 5) - 459.67";
+                            conversion1String = initialTemp + " °K";
+                            conversion2String = convertTemp + " °F";
+                            equation1String = "[°F]";
+                            equation2String = "([°K] * 9 / 5) - 459.67";
                         }
                         else {
                             if (mSelectedConvertId == mConvert3Radio.getId()) {
-                                conversion1String = initialTemp + " K";
-                                conversion2String = convertTemp + " K";
-                                equation1String = "[K]";
-                                equation2String = "[K]";
+                                conversion1String = initialTemp + " °K";
+                                conversion2String = convertTemp + " °K";
+                                equation1String = "[°K]";
+                                equation2String = "[°K]";
                             }
                             else {
-                                conversion1String = initialTemp + " K";
-                                conversion2String = convertTemp + " R";
-                                equation1String = "[R]";
-                                equation2String = "[K] * 9 / 5";
+                                conversion1String = initialTemp + " °K";
+                                conversion2String = convertTemp + " °R";
+                                equation1String = "[°R]";
+                                equation2String = "[°K] * 9 / 5";
                             }
                         }
                     }
@@ -233,30 +236,30 @@ public class TemperatureConverter extends AppCompatActivity {
                 else {
                     // Combinations for FromRankine selected
                     if (mSelectedConvertId == mConvert1Radio.getId()) {
-                        conversion1String = initialTemp + " R";
-                        conversion2String = convertTemp + " C";
-                        equation1String = "[C]";
-                        equation2String = "([R] - 491.67) * 5 / 9";
+                        conversion1String = initialTemp + " °R";
+                        conversion2String = convertTemp + " °C";
+                        equation1String = "[°C]";
+                        equation2String = "([°R] - 491.67) * 5 / 9";
                     }
                     else {
                         if (mSelectedConvertId == mConvert2Radio.getId()) {
-                            conversion1String = initialTemp + " R";
-                            conversion2String = convertTemp + " F";
-                            equation1String = "[F]";
-                            equation2String = "[R] - 459.67";
+                            conversion1String = initialTemp + " °R";
+                            conversion2String = convertTemp + " °F";
+                            equation1String = "[°F]";
+                            equation2String = "[°R] - 459.67";
                         }
                         else {
                             if (mSelectedConvertId == mConvert3Radio.getId()) {
-                                conversion1String = initialTemp + " R";
-                                conversion2String = convertTemp + " K";
-                                equation1String = "[K]";
-                                equation2String = "[R] * 5 / 9";
+                                conversion1String = initialTemp + " °R";
+                                conversion2String = convertTemp + " °K";
+                                equation1String = "[°K]";
+                                equation2String = "[°R] * 5 / 9";
                             }
                             else {
-                                conversion1String = initialTemp + " R";
-                                conversion2String = convertTemp + " R";
-                                equation1String = "[R]";
-                                equation2String = "[R]";
+                                conversion1String = initialTemp + " °R";
+                                conversion2String = convertTemp + " °R";
+                                equation1String = "[°R]";
+                                equation2String = "[°R]";
                             }
                         }
                     }
@@ -264,6 +267,7 @@ public class TemperatureConverter extends AppCompatActivity {
             }
         }
 
+        // Combines above strings into one string, then sends to appropriate single string to textview.
         String fullConversionString = conversion1String + " = " + conversion2String;
         String fullEquationString = equation1String + " = " + equation2String;
 
@@ -277,6 +281,7 @@ public class TemperatureConverter extends AppCompatActivity {
 
     //region Override Methods
 
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -411,12 +416,14 @@ public class TemperatureConverter extends AppCompatActivity {
 
     }
 
+    // Attempted saveInstanceState. Saving part works but can't figure out loading section.
     @Override
     protected void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
         Log.d(TAG, "onSaveInstanceState");
 
-        // Saves current state booleans.
+        // Saves current state booleans since all user input stays on rotation.
+        // Keeping the booleans SHOULD make the conversions keep showing even on rotation.
         mCurrentStatus[0] = mConvertButtonIsClicked;
         mCurrentStatus[1] = mInitialGroupChecked;
         mCurrentStatus[2] = mConvertGroupChecked;
diff --git a/app/src/main/res/layout-land/activity_temperature_converter.xml b/app/src/main/res/layout-land/activity_temperature_converter.xml
new file mode 100644
index 0000000..80b684d
--- /dev/null
+++ b/app/src/main/res/layout-land/activity_temperature_converter.xml
@@ -0,0 +1,163 @@
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="start"
+    android:padding="20dp"
+    android:orientation="vertical" >
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center_vertical"
+        android:padding="10dp"
+        android:orientation="vertical" >
+
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal" >
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="start"
+            android:paddingRight="10dp"
+            android:text="@string/convert_string" />
+
+        <EditText
+            android:id="@+id/user_input_edit_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:inputType="numberDecimal|numberSigned" />
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center_horizontal"
+        android:orientation="vertical" >
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:paddingTop="10dp"
+            android:orientation="vertical" >
+
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="center_horizontal"
+                android:orientation="horizontal" >
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/from_string"/>
+
+                <RadioGroup
+                    android:id="@+id/initial_value_group"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal" >
+
+                    <RadioButton
+                        android:id="@+id/initial_1_radio"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/celsius_string" />
+
+                    <RadioButton
+                        android:id="@+id/initial_2_radio"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/fahrenheit_string" />
+
+                    <RadioButton
+                        android:id="@+id/initial_3_radio"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/kelvin_string" />
+
+                    <RadioButton
+                        android:id="@+id/initial_4_radio"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/rankine_string" />
+
+                </RadioGroup>
+
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:paddingRight="16dp"
+                    android:text="@string/to_string"/>
+
+                <RadioGroup
+                    android:id="@+id/convert_to_group"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal">
+
+                    <RadioButton
+                        android:id="@+id/convert_1_radio"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/celsius_string" />
+
+                    <RadioButton
+                        android:id="@+id/convert_2_radio"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/fahrenheit_string" />
+
+                    <RadioButton
+                        android:id="@+id/convert_3_radio"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/kelvin_string" />
+
+                    <RadioButton
+                        android:id="@+id/convert_4_radio"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/rankine_string" />
+                </RadioGroup>
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+        <Button
+            android:id="@+id/convert_button"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/convert_button_string"/>
+
+        <TextView
+            android:id="@+id/converstion_text_view"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textSize="18dp" />
+
+        <TextView
+            android:id="@+id/equation_text_view"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
+
+    </LinearLayout>
+
+    </LinearLayout>
+
+</FrameLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_temperature_converter.xml b/app/src/main/res/layout/activity_temperature_converter.xml
index f540009..cc644c2 100644
--- a/app/src/main/res/layout/activity_temperature_converter.xml
+++ b/app/src/main/res/layout/activity_temperature_converter.xml
@@ -141,7 +141,8 @@
         <TextView
             android:id="@+id/converstion_text_view"
             android:layout_width="wrap_content"
-            android:layout_height="wrap_content" />
+            android:layout_height="wrap_content"
+            android:textSize="18dp" />
 
         <TextView
             android:id="@+id/equation_text_view"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 29292b7..9f78203 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -7,7 +7,7 @@
     <!--Static Text-->
     <string name="convert_string">Convert:</string>
     <string name="from_string">From:</string>
-    <string name="to_string">To:</string>
+    <string name="to_string">To:  </string>
     <string name="celsius_string">Celsius</string>
     <string name="fahrenheit_string">Fahrenheit</string>
     <string name="kelvin_string">Kelvin</string>
-- 
GitLab