Persist "inv" selected state

Bug: 22441481
Change-Id: Ic572eb2b06ff7394a2ae9295adf6f6c3dba8cb71
diff --git a/src/com/android/calculator2/Calculator.java b/src/com/android/calculator2/Calculator.java
index dc08612..be83d7d 100644
--- a/src/com/android/calculator2/Calculator.java
+++ b/src/com/android/calculator2/Calculator.java
@@ -184,12 +184,14 @@
         }
     };
 
-    private static final String NAME = Calculator.class.getName();
+    private static final String NAME = "Calculator";
     private static final String KEY_DISPLAY_STATE = NAME + "_display_state";
     private static final String KEY_UNPROCESSED_CHARS = NAME + "_unprocessed_chars";
+    /**
+     * Associated value is a byte array holding the evaluator state.
+     */
     private static final String KEY_EVAL_STATE = NAME + "_eval_state";
-                // Associated value is a byte array holding both mCalculatorState
-                // and the (much more complex) evaluator state.
+    private static final String KEY_INVERSE_MODE = NAME + "_inverse_mode";
 
     private CalculatorState mCurrentState;
     private Evaluator mEvaluator;
@@ -295,7 +297,8 @@
         mFormulaText.setOnPasteListener(this);
         mDeleteButton.setOnLongClickListener(this);
 
-        onInverseToggled(mInverseToggle.isSelected());
+        onInverseToggled(savedInstanceState != null
+                && savedInstanceState.getBoolean(KEY_INVERSE_MODE));
         onModeChanged(mEvaluator.getDegreeMode());
 
         if (mCurrentState != CalculatorState.INPUT) {
@@ -331,6 +334,7 @@
             throw new AssertionError("Impossible IO exception", e);
         }
         outState.putByteArray(KEY_EVAL_STATE, byteArrayStream.toByteArray());
+        outState.putBoolean(KEY_INVERSE_MODE, mInverseToggle.isSelected());
     }
 
     // Set the state, updating delete label and display colors.
@@ -409,6 +413,7 @@
      * @param showInverse {@code true} if inverse functions should be shown
      */
     private void onInverseToggled(boolean showInverse) {
+        mInverseToggle.setSelected(showInverse);
         if (showInverse) {
             mInverseToggle.setContentDescription(getString(R.string.desc_inv_on));
             for (View invertibleButton : mInvertibleButtons) {