summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Boehm <hboehm@google.com>2015-09-16 16:33:47 -0700
committerHans Boehm <hboehm@google.com>2015-10-11 05:55:03 +0000
commitf6033a42aa90367012ecb11977fe86ccdac54f54 (patch)
tree52e2195d61af6d55490b17fee4495fe44125ac21
parentb7bd34886fb39401b6e38ad97634655a0d025902 (diff)
downloadandroid_packages_apps_ExactCalculator-f6033a42aa90367012ecb11977fe86ccdac54f54.tar.gz
android_packages_apps_ExactCalculator-f6033a42aa90367012ecb11977fe86ccdac54f54.tar.bz2
android_packages_apps_ExactCalculator-f6033a42aa90367012ecb11977fe86ccdac54f54.zip
Implicitly clear on incomplete keyboard input
Bug: 22931305 When the calculator is in result mode, cause a typed function name to clear the display, just as touching the function on the screen would. Change-Id: I77c69737a571ad8d2e6396fa3f34d5ada324fee4 (cherry picked from commit 5d79d10734b45133be7753955afd9e5edec58a1d)
-rw-r--r--src/com/android/calculator2/Calculator.java26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/com/android/calculator2/Calculator.java b/src/com/android/calculator2/Calculator.java
index 99ef032..c7e14a4 100644
--- a/src/com/android/calculator2/Calculator.java
+++ b/src/com/android/calculator2/Calculator.java
@@ -445,19 +445,27 @@ public class Calculator extends Activity
}
}
+ /**
+ * Switch to INPUT from RESULT state in response to input of the specified button_id.
+ * View.NO_ID is treated as an incomplete function id.
+ */
+ private void switchToInput(int button_id) {
+ if (KeyMaps.isBinary(button_id) || KeyMaps.isSuffix(button_id)) {
+ mEvaluator.collapse();
+ } else {
+ announceClearedForAccessibility();
+ mEvaluator.clear();
+ }
+ setState(CalculatorState.INPUT);
+ }
+
// Add the given button id to input expression.
// If appropriate, clear the expression before doing so.
private void addKeyToExpr(int id) {
if (mCurrentState == CalculatorState.ERROR) {
setState(CalculatorState.INPUT);
} else if (mCurrentState == CalculatorState.RESULT) {
- if (KeyMaps.isBinary(id) || KeyMaps.isSuffix(id)) {
- mEvaluator.collapse();
- } else {
- announceClearedForAccessibility();
- mEvaluator.clear();
- }
- setState(CalculatorState.INPUT);
+ switchToInput(id);
}
if (!mEvaluator.append(id)) {
// TODO: Some user visible feedback?
@@ -916,6 +924,10 @@ public class Calculator extends Activity
int current = 0;
int len = moreChars.length();
boolean lastWasDigit = false;
+ if (mCurrentState == CalculatorState.RESULT && len != 0) {
+ // Clear display immediately for incomplete function name.
+ switchToInput(KeyMaps.keyForChar(moreChars.charAt(current)));
+ }
while (current < len) {
char c = moreChars.charAt(current);
int k = KeyMaps.keyForChar(c);