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 2fb0a96f759b8be70246b4fbfdcf52215c269ac3..632d60b2ad6733e277d25266a4f800d44b8c8d2d 100644 --- a/app/src/main/java/edu/kvcc/cis298/cis298assignment2/Conversion.java +++ b/app/src/main/java/edu/kvcc/cis298/cis298assignment2/Conversion.java @@ -7,9 +7,9 @@ public class Conversion { //region Variables - private int initialValueInt; // Temperature user wants to convert. - private int convertedValueInt; // Temperature after conversion. - private int baseInt; // Temperature at default value, arbitrarily specified as + private double initialValueDouble; // Temperature user wants to convert. + private double convertedValueDouble; // Temperature after conversion. + private double baseDouble; // Temperature at default value, arbitrarily specified as // Celsius in this program. Used to help modularize program. private int initialGroupInt; // Holds temperature type of initial value. private int convertGroupInt; // Holds temperature type of converted value. @@ -20,9 +20,9 @@ public class Conversion { //region Constructor - public Conversion(int initialValue, int initialGroup, int convertGroup) + public Conversion(double initialValue, int initialGroup, int convertGroup) { - setInitialValueInt(initialValueInt); + setInitialValueDouble(initialValueDouble); setInitialGroupInt(initialGroupInt); setConvertGroupInt(convertGroupInt); @@ -35,16 +35,16 @@ public class Conversion { //region Properties - public int getInitialValueInt() { - return initialValueInt; + public double getInitialValueDouble() { + return initialValueDouble; } - public void setInitialValueInt(int initialValueInt) { - this.initialValueInt = initialValueInt; + public void setInitialValueDouble(double initialValueDouble) { + this.initialValueDouble = initialValueDouble; } - public int getConvertedValueInt() { - return convertedValueInt; + public double getConvertedValueDouble() { + return convertedValueDouble; } public int getInitialGroupInt() { @@ -75,21 +75,21 @@ public class Conversion { private void CalculateBase() { // If initial is Celsius, set base equal to user input. if (initialGroupInt == 1) { - baseInt = initialValueInt; + baseDouble = initialValueDouble; } else { // If initial is Fahrenheit, convert to Celsius then set as base. if (initialGroupInt == 2) { - baseInt = ((initialValueInt - 32) * 5 / 9); + baseDouble = ((initialValueDouble - 32) * 5 / 9); } else { // If initial is Kelvin, convert to Celsius then set as base. if (initialGroupInt == 3) { - baseInt = (initialValueInt - 273); // Should be 273.15 + baseDouble = (initialValueDouble - 273.15); } // If initial is Rankin, convert to Celsius then set as base. else { - baseInt = ((initialValueInt - 491) * 5 / 9); // Should be 491.67 + baseDouble = ((initialValueDouble - 491.67) * 5 / 9); } } } @@ -103,21 +103,21 @@ public class Conversion { { // If desired is Celsius, set convert equal to base. if (convertGroupInt == 1) { - convertedValueInt = baseInt; + convertedValueDouble = baseDouble; } else { // If desired is Fahrenheit, convert from base. if (convertGroupInt == 2) { - convertedValueInt = (baseInt * 9 / 5 + 32); + convertedValueDouble = (baseDouble * 9 / 5 + 32); } else { // If desired is Kelvin, convert from base. if (convertGroupInt == 3) { - convertedValueInt = (baseInt + 273); // Should be 273.15 + convertedValueDouble = (baseDouble + 273.15); } // If desired is Rankin, convert from base. else { - convertedValueInt = ((baseInt + 273) * 9 / 5); // Should be 273.15 + convertedValueDouble = ((baseDouble + 273.15) * 9 / 5); } } } 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 29c71b25a162fe4eb76d5c94e42b5115a5f59391..01150d7b845152de8808a0ae601eae7c6ec3399c 100644 --- a/app/src/main/java/edu/kvcc/cis298/cis298assignment2/TemperatureConverter.java +++ b/app/src/main/java/edu/kvcc/cis298/cis298assignment2/TemperatureConverter.java @@ -7,9 +7,11 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; +import android.widget.EditText; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; +import android.widget.Toast; public class TemperatureConverter extends AppCompatActivity { @@ -32,11 +34,19 @@ public class TemperatureConverter extends AppCompatActivity { private TextView mConversionTextView; private TextView mEquationTextView; + private EditText mUserInputEditText; + + // Pointer for strings.xml. + private int messageResId; + private int mSelectedInitialId; + private int mSelectedConvertId; + // Values to check if user input is present. private boolean mInitialGroupChecked; private boolean mConvertGroupChecked; - private boolean mInputTextPresent; + private boolean mConvertButtonIsClicked; + // Java's version of static constants. private static final String TAG = "TemperatureConverter"; private static final String KEY_INDEX = "index"; @@ -54,24 +64,72 @@ public class TemperatureConverter extends AppCompatActivity { private void Convert() { // Query to determine which radio buttons have been selected. Stores value as int. - int selectedInitialId = mInitialGroup.getCheckedRadioButtonId(); - int selectedConvertId = mConvertGroup.getCheckedRadioButtonId(); + mSelectedInitialId = mInitialGroup.getCheckedRadioButtonId(); + mSelectedConvertId = mConvertGroup.getCheckedRadioButtonId(); - Conversion conversion = new Conversion(0, selectedInitialId, selectedConvertId); + Conversion conversion = new Conversion(0, mSelectedInitialId, mSelectedConvertId); DisplayConversion(); } private void DisplayConversion() { + String initialDegree; + String convertDegree; + String initialEquation; String conversion1String; String conversion2String; - String fullConversionString = conversion1String + " = " + conversion2String; - mConversionTextView.setText(fullConversionString); - String equation1String; String equation2String; + + // Determines what types of strings should display. + if (mSelectedInitialId == mInitial1Radio.getId()) { + initialDegree = "C"; + initialEquation = "[C]"; + } + else { + if (mSelectedInitialId == mInitial2Radio.getId()) { + initialDegree = "F"; + initialEquation = "[F]"; + } + else { + if (mSelectedInitialId == mInitial3Radio.getId()) { + initialDegree = "K"; + initialEquation = "[K]"; + } + else { + initialDegree = "R"; + initialEquation = "[R]"; + } + } + } + + if (mSelectedConvertId == mConvert1Radio.getId()) { + convertDegree = "C"; + } + else { + if (mSelectedConvertId == mConvert2Radio.getId()) { + convertDegree = "F"; + } + else { + if (mSelectedConvertId == mConvert3Radio.getId()) { + convertDegree = "K"; + } + else { + convertDegree = "R"; + } + } + } + + conversion1String = initialDegree; + conversion2String = convertDegree; + equation1String = initialEquation; + equation2String = ""; + + String fullConversionString = conversion1String + " = " + conversion2String; String fullEquationString = equation1String + " = " + equation2String; + + mConversionTextView.setText(fullConversionString); mEquationTextView.setText(fullEquationString); } @@ -92,32 +150,48 @@ public class TemperatureConverter extends AppCompatActivity { // Assigns (casts) variable mConvertButton to an actual button in the xml file. mConvertButton = (Button) findViewById(R.id.convert_button); - // Assigns (casts) 'initial' radio group to an equivalent entities in the xml file. + + // Assigns (casts) 'initial' radio group to equivalent entities in the xml file. mInitialGroup = (RadioGroup) findViewById(R.id.initial_value_group); mInitial1Radio = (RadioButton) findViewById(R.id.initial_1_radio); mInitial2Radio = (RadioButton) findViewById(R.id.initial_2_radio); mInitial3Radio = (RadioButton) findViewById(R.id.initial_3_radio); mInitial4Radio = (RadioButton) findViewById(R.id.initial_4_radio); - // Assigns (casts) 'convert to' radio group to an equivalent entities in the xml file. + // Assigns (casts) 'convert to' radio group to equivalent entities in the xml file. mConvertGroup = (RadioGroup) findViewById(R.id.convert_to_group); mConvert1Radio = (RadioButton) findViewById(R.id.convert_1_radio); mConvert2Radio = (RadioButton) findViewById(R.id.convert_2_radio); mConvert3Radio = (RadioButton) findViewById(R.id.convert_3_radio); mConvert4Radio = (RadioButton) findViewById(R.id.convert_4_radio); - // Assigns (casts) text views to an equivalent entities in the xml file. + + // Assigns (casts) text views to equivalent entities in the xml file. mConversionTextView = (TextView) findViewById(R.id.converstion_text_view); mEquationTextView = (TextView) findViewById(R.id.equation_text_view); + // Assigns (casts) edit text to equivalent entities in the xml file. + mUserInputEditText = (EditText) findViewById(R.id.user_input_edit_text); + + // Initial variables to store user inputs. mInitialGroupChecked = false; mConvertGroupChecked = false; + mConvertButtonIsClicked = false; // Section which sets onClickListeners (watches for user action). // OnClickListener for Initial Radio Button Group. mInitialGroup.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view){ - // Checks to see if both groups have been checked. - if (mInitialGroupChecked && mConvertGroupChecked) { + + // Debugging to figure out what values are actually given for checked buttons. + int selectedInitialId = mInitialGroup.getCheckedRadioButtonId(); + int selectedConvertId = mConvertGroup.getCheckedRadioButtonId(); + Log.d(TAG, "Initial Checked ID: " + selectedInitialId); + Log.d(TAG, "Convert Checked ID: " + selectedConvertId); + + // Checks to see if both groups have been checked, if convert button has been + // clicked at least once, and user has input a number. + if (mInitialGroupChecked && mConvertGroupChecked && mUserInputEditText.length() > 0) { + double userInput = Double.parseDouble(mUserInputEditText.toString()); Convert(); } else { @@ -130,7 +204,19 @@ public class TemperatureConverter extends AppCompatActivity { mConvertGroup.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - if (mInitialGroupChecked && mConvertGroupChecked) { + + // Debugging to figure out what values are actually given for checked buttons. + int selectedInitialId = mInitialGroup.getCheckedRadioButtonId(); + int selectedConvertId = mConvertGroup.getCheckedRadioButtonId(); + Log.d(TAG, "Initial Checked ID: " + selectedInitialId); + Log.d(TAG, "Convert Checked ID: " + selectedConvertId); + + + // Checks to see if both groups have been checked, if convert button has been + // clicked at least once, and user has input a number. + if (mInitialGroupChecked && mConvertGroupChecked && mConvertButtonIsClicked + && mUserInputEditText.length() > 0) { + double userInput = Double.parseDouble(mUserInputEditText.toString()); Convert(); } else { @@ -143,11 +229,30 @@ public class TemperatureConverter extends AppCompatActivity { mConvertButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - if (mInitialGroupChecked && mConvertGroupChecked) { - Convert(); + + // Debugging to figure out what values are actually given for checked buttons. + int selectedInitialId = mInitialGroup.getCheckedRadioButtonId(); + int selectedConvertId = mConvertGroup.getCheckedRadioButtonId(); + Log.d(TAG, "Initial Checked ID: " + selectedInitialId); + Log.d(TAG, "Convert Checked ID: " + selectedConvertId); + + // Checks to see if user has input a number. + if (mUserInputEditText.length() > 0) { + + // Checks to see if both groups have been checked. + if (mInitialGroupChecked && mConvertGroupChecked) { + double userInput = Double.parseDouble(mUserInputEditText.toString()); + mConvertButtonIsClicked = true; + Convert(); + } + else { + messageResId = R.string.convert_error_2_toast; + Toast.makeText(TemperatureConverter.this, messageResId, Toast.LENGTH_SHORT); + } } else { - + messageResId = R.string.convert_error_1_toast; + Toast.makeText(TemperatureConverter.this, messageResId, Toast.LENGTH_SHORT); } } }); diff --git a/app/src/main/res/layout/activity_temperature_converter.xml b/app/src/main/res/layout/activity_temperature_converter.xml index a82240b27f08bd47ae70fbdf732ed02ca846db3f..a6c1bae90e8ef540b264f0516a5edad927c4b2cc 100644 --- a/app/src/main/res/layout/activity_temperature_converter.xml +++ b/app/src/main/res/layout/activity_temperature_converter.xml @@ -2,109 +2,145 @@ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" - android:gravity="center" + android:gravity="start" + android:padding="20dp" android:orientation="vertical" > - <LinearLayout + <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:orientation="horizontal" > + android:gravity="top" + android:text="@string/convert_string" /> + + <EditText + android:id="@+id/user_input_edit_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center" + android:orientation="vertical" > <LinearLayout - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_gravity="" - android:orientation="vertical" > + android:gravity="center" + android:paddingTop="10dp" + android:paddingBottom="10dp" + 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" + <LinearLayout android:layout_width="wrap_content" - android:layout_height="wrap_content" > + android:layout_height="wrap_content" + android:layout_gravity="start" + android:paddingRight="30dp" + android:orientation="vertical" > - <RadioButton - android:id="@+id/initial_1_radio" + <TextView android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" + android:text="@string/from_string"/> - <RadioButton - android:id="@+id/initial_2_radio" + <RadioGroup + android:id="@+id/initial_value_group" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" > - <RadioButton - android:id="@+id/initial_3_radio" - android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + <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_4_radio" - android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + <RadioButton + android:id="@+id/initial_2_radio" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/fahrenheit_string" /> - </RadioGroup> + <RadioButton + android:id="@+id/initial_3_radio" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/kelvin_string" /> - </LinearLayout> + <RadioButton + android:id="@+id/initial_4_radio" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/rankine_string" /> - <LinearLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="" - android:orientation="vertical"> + </RadioGroup> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/to_string"/> + </LinearLayout> - <RadioGroup - android:id="@+id/convert_to_group" + <LinearLayout android:layout_width="wrap_content" - android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:layout_gravity="end" + android:paddingLeft="30dp" + android:orientation="vertical"> - <RadioButton - android:id="@+id/convert_1_radio" + <TextView android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" + android:text="@string/to_string"/> - <RadioButton - android:id="@+id/convert_2_radio" + <RadioGroup + android:id="@+id/convert_to_group" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content"> + + <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> - <RadioButton - android:id="@+id/convert_3_radio" - android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + </LinearLayout> - <RadioButton - android:id="@+id/convert_4_radio" - android:layout_width="wrap_content" - android:layout_height="wrap_content" /> - </RadioGroup> + <Button + android:id="@+id/convert_button" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/convert_button_string"/> - </LinearLayout> + <TextView + android:id="@+id/converstion_text_view" + android:layout_width="wrap_content" + android:layout_height="wrap_content" /> - </LinearLayout> + <TextView + android:id="@+id/equation_text_view" + android:layout_width="wrap_content" + android:layout_height="wrap_content" /> - <Button - android:id="@+id/convert_button" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/convert_button_string"/> + </LinearLayout> - <TextView - android:id="@+id/converstion_text_view" - android:layout_width="wrap_content" - android:layout_height="wrap_content" /> - <TextView - android:id="@+id/equation_text_view" - android:layout_width="wrap_content" - android:layout_height="wrap_content" /> </LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 44ad3620ae80ac686a4bc4c45e54cc4920533790..189aae42165a89796b99d0108f370a71f2189096 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -11,7 +11,11 @@ <string name="celsius_string">Celsius</string> <string name="fahrenheit_string">Fahrenheit</string> <string name="kelvin_string">Kelvin</string> - <string name="rankin_string">Rankine</string> + <string name="rankine_string">Rankine</string> <string name="convert_button_string">CONVERT</string> + <!--Toasts--> + <string name="convert_error_1_toast">Please input a number to convert!</string> + <string name="convert_error_2_toast">Please select a temperature type!</string> + </resources>