Fix strings, stability bug, easy UI & correctness issues
Bug: 20625562
Bug: 20649711
Bug: 20561890
Bug: 20561528
Bug: 20442590
Bug: 15473140
Bug: 20503008
Bug: 20503007
- Improve timeout text.
- Recalculate when Calculator is rotated, e.g. in error state, thus
reproducing message. It's unclear this is good enough, but it's
better.
- Fix square root parsing.
- Fix concatenation of numbers when pasting by adding explicit
multiplication.
- Display divide by zero error differently from other domain errors.
- Improved advanced keypad layout of portrait-mode tablet calculator.
- Improved overflow menu order. (More to be done.)
- Report zero division as zero division when we can recognize it.
- Switch to floating menus for copy/paste.
Change-Id: I3875414f293e62a59b0e41f0de822f29bd5ac6a6
diff --git a/src/com/android/calculator2/Calculator.java b/src/com/android/calculator2/Calculator.java
index ed5eb6b..df7c09c 100644
--- a/src/com/android/calculator2/Calculator.java
+++ b/src/com/android/calculator2/Calculator.java
@@ -239,19 +239,18 @@
mEvaluator.clear();
}
}
+ } else {
+ mCurrentState = CalculatorState.INPUT;
+ mEvaluator.clear();
}
mFormulaText.setOnKeyListener(mFormulaOnKeyListener);
mFormulaText.setOnTextSizeChangeListener(this);
mFormulaText.setPasteListener(this);
mDeleteButton.setOnLongClickListener(this);
updateDegreeMode(mEvaluator.getDegreeMode());
- if (mCurrentState == CalculatorState.EVALUATE) {
- // Odd case. Evaluation probably took a long time. Let user ask for it again
- mCurrentState = CalculatorState.INPUT;
- // TODO: This can happen if the user rotates the screen.
- // Is this rotate-to-abort behavior correct? Revisit after experimentation.
- }
if (mCurrentState != CalculatorState.INPUT) {
+ // Just reevaluate.
+ redisplayFormula();
setState(CalculatorState.INIT);
mEvaluator.requireResult();
} else {
@@ -607,19 +606,20 @@
// Evaluation encountered en error. Display the error.
void onError(final int errorResourceId) {
- if (mCurrentState != CalculatorState.EVALUATE) {
- // Only animate error on evaluate.
- return;
+ if (mCurrentState == CalculatorState.EVALUATE) {
+ setState(CalculatorState.ANIMATE);
+ reveal(mCurrentButton, R.color.calculator_error_color,
+ new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ setState(CalculatorState.ERROR);
+ mResult.displayError(errorResourceId);
+ }
+ });
+ } else if (mCurrentState == CalculatorState.INIT) {
+ setState(CalculatorState.ERROR);
+ mResult.displayError(errorResourceId);
}
-
- setState(CalculatorState.ANIMATE);
- reveal(mCurrentButton, R.color.calculator_error_color, new AnimatorListenerAdapter() {
- @Override
- public void onAnimationEnd(Animator animation) {
- setState(CalculatorState.ERROR);
- mResult.displayError(errorResourceId);
- }
- });
}