summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Boehm <hboehm@google.com>2015-10-11 16:41:35 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-10-11 16:41:35 +0000
commitd5f67fe2d2ddabecd0618a4bc8ac899cc316ca10 (patch)
tree5d656f29be82e95c4e67b0924a59a20d3d54b711
parent68db0665c1e0e608c23f8a35bf97b4d39305827f (diff)
parentf6033a42aa90367012ecb11977fe86ccdac54f54 (diff)
downloadandroid_packages_apps_ExactCalculator-d5f67fe2d2ddabecd0618a4bc8ac899cc316ca10.tar.gz
android_packages_apps_ExactCalculator-d5f67fe2d2ddabecd0618a4bc8ac899cc316ca10.tar.bz2
android_packages_apps_ExactCalculator-d5f67fe2d2ddabecd0618a4bc8ac899cc316ca10.zip
Merge "Implicitly clear on incomplete keyboard input" into mnc-dr-dev
-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);