am f08ebe9e: Reconcile with ics-mr1-release
* commit 'f08ebe9e0d54250d656c4a6c245ec0b5335ccae2':
diff --git a/Android.mk b/Android.mk
index 4e4f40e..90f5b5f 100644
--- a/Android.mk
+++ b/Android.mk
@@ -19,7 +19,7 @@
LOCAL_MODULE_TAGS := optional
-LOCAL_STATIC_JAVA_LIBRARIES := libarity android-support-v4
+LOCAL_STATIC_JAVA_LIBRARIES := libarity android-support-v4 guava
LOCAL_SRC_FILES := $(call all-java-files-under, src)
diff --git a/res/layout-land/advanced_pad.xml b/res/layout-land/advanced_pad.xml
index 55cef52..5b8f98b 100644
--- a/res/layout-land/advanced_pad.xml
+++ b/res/layout-land/advanced_pad.xml
@@ -36,26 +36,31 @@
android:id="@+id/sin"
android:text="@string/sin"
style="@style/button_small_style"
+ android:contentDescription="@string/sinDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/cos"
android:text="@string/cos"
style="@style/button_small_style"
+ android:contentDescription="@string/cosDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/tan"
android:text="@string/tan"
style="@style/button_small_style"
+ android:contentDescription="@string/tanDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/pi"
android:text="@string/pi"
style="@style/button_style"
+ android:contentDescription="@string/piDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/factorial"
android:text="@string/factorial"
style="@style/button_style"
+ android:contentDescription="@string/factorialDesc"
/>
</LinearLayout>
@@ -68,26 +73,31 @@
android:id="@+id/ln"
android:text="@string/ln"
style="@style/button_small_style"
+ android:contentDescription="@string/lnDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/lg"
android:text="@string/lg"
style="@style/button_small_style"
+ android:contentDescription="@string/lgDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/e"
android:text="@string/e"
style="@style/button_style"
+ android:contentDescription="@string/eDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/power"
android:text="@string/power"
style="@style/button_style"
+ android:contentDescription="@string/powerDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/sqrt"
android:text="@string/sqrt"
style="@style/button_style"
+ android:contentDescription="@string/sqrtDesc"
/>
</LinearLayout>
</LinearLayout>
diff --git a/res/layout-land/main.xml b/res/layout-land/main.xml
index e0ac981..2d3b1c3 100644
--- a/res/layout-land/main.xml
+++ b/res/layout-land/main.xml
@@ -72,6 +72,7 @@
android:layout_marginRight="0dp"
android:textSize="15dp"
style="@style/button_style"
+ android:contentDescription="@string/delDesc"
/>
</FrameLayout>
</LinearLayout>
diff --git a/res/layout-land/simple_pad.xml b/res/layout-land/simple_pad.xml
index 539bdfc..271cb0e 100644
--- a/res/layout-land/simple_pad.xml
+++ b/res/layout-land/simple_pad.xml
@@ -49,16 +49,19 @@
android:id="@+id/leftParen"
android:text="@string/leftParen"
style="@style/button_style"
+ android:contentDescription="@string/leftParenDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/rightParen"
android:text="@string/rightParen"
style="@style/button_style"
+ android:contentDescription="@string/rightParenDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/mul"
android:text="@string/mul"
style="@style/button_style"
+ android:contentDescription="@string/mulDesc"
/>
</LinearLayout>
@@ -86,16 +89,19 @@
android:id="@+id/dot"
android:text="@string/dot"
style="@style/digit_button_style"
+ android:contentDescription="@string/dotDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/div"
android:text="@string/div"
style="@style/button_style"
+ android:contentDescription="@string/divDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/minus"
android:text="@string/minus"
style="@style/button_style"
+ android:contentDescription="@string/minusDesc"
/>
</LinearLayout>
@@ -128,11 +134,13 @@
android:id="@+id/equal"
android:text="@string/equal"
style="@style/button_style"
+ android:contentDescription="@string/equalDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/plus"
android:text="@string/plus"
style="@style/button_style"
+ android:contentDescription="@string/plusDesc"
/>
</LinearLayout>
</LinearLayout>
diff --git a/res/layout-port/advanced_pad.xml b/res/layout-port/advanced_pad.xml
index 8dd5d95..843c54d 100644
--- a/res/layout-port/advanced_pad.xml
+++ b/res/layout-port/advanced_pad.xml
@@ -35,16 +35,19 @@
android:id="@+id/sin"
android:text="@string/sin"
style="@style/button_small_style"
+ android:contentDescription="@string/sinDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/cos"
android:text="@string/cos"
style="@style/button_small_style"
+ android:contentDescription="@string/cosDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/tan"
android:text="@string/tan"
style="@style/button_small_style"
+ android:contentDescription="@string/tanDesc"
/>
</LinearLayout>
@@ -57,16 +60,19 @@
android:id="@+id/ln"
android:text="@string/ln"
style="@style/button_small_style"
+ android:contentDescription="@string/lnDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/lg"
android:text="@string/lg"
style="@style/button_small_style"
+ android:contentDescription="@string/lgDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/factorial"
android:text="@string/factorial"
style="@style/button_style"
+ android:contentDescription="@string/factorialDesc"
/>
</LinearLayout>
@@ -79,16 +85,19 @@
android:id="@+id/pi"
android:text="@string/pi"
style="@style/button_style"
+ android:contentDescription="@string/piDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/e"
android:text="@string/e"
style="@style/button_style"
+ android:contentDescription="@string/eDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/power"
android:text="@string/power"
style="@style/button_style"
+ android:contentDescription="@string/powerDesc"
/>
</LinearLayout>
@@ -101,16 +110,19 @@
android:id="@+id/leftParen"
android:text="@string/leftParen"
style="@style/button_style"
+ android:contentDescription="@string/leftParenDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/rightParen"
android:text="@string/rightParen"
style="@style/button_style"
+ android:contentDescription="@string/rightParenDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/sqrt"
android:text="@string/sqrt"
style="@style/button_style"
+ android:contentDescription="@string/sqrtDesc"
/>
</LinearLayout>
</LinearLayout>
diff --git a/res/layout-port/main.xml b/res/layout-port/main.xml
index c64a252..e0746d5 100644
--- a/res/layout-port/main.xml
+++ b/res/layout-port/main.xml
@@ -89,6 +89,7 @@
android:layout_marginRight="0dp"
android:textSize="15dp"
style="@style/button_style"
+ android:contentDescription="@string/delDesc"
/>
</FrameLayout>
diff --git a/res/layout-port/simple_pad.xml b/res/layout-port/simple_pad.xml
index 3041ebc..1d8b535 100644
--- a/res/layout-port/simple_pad.xml
+++ b/res/layout-port/simple_pad.xml
@@ -49,6 +49,7 @@
android:id="@+id/div"
android:text="@string/div"
style="@style/button_style"
+ android:contentDescription="@string/divDesc"
/>
</LinearLayout>
@@ -76,6 +77,7 @@
android:id="@+id/mul"
android:text="@string/mul"
style="@style/button_style"
+ android:contentDescription="@string/mulDesc"
/>
</LinearLayout>
@@ -103,6 +105,7 @@
android:id="@+id/minus"
android:text="@string/minus"
style="@style/button_style"
+ android:contentDescription="@string/minusDesc"
/>
</LinearLayout>
@@ -115,6 +118,7 @@
android:id="@+id/dot"
android:text="@string/dot"
style="@style/digit_button_style"
+ android:contentDescription="@string/dotDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/digit0"
@@ -125,11 +129,13 @@
android:id="@+id/equal"
android:text="@string/equal"
style="@style/button_style"
+ android:contentDescription="@string/equalDesc"
/>
<com.android.calculator2.ColorButton
android:id="@+id/plus"
android:text="@string/plus"
style="@style/button_style"
+ android:contentDescription="@string/plusDesc"
/>
</LinearLayout>
</LinearLayout>
diff --git a/res/layout-sw600dp-land/main.xml b/res/layout-sw600dp-land/main.xml
index 9b0fff8..383cb36 100644
--- a/res/layout-sw600dp-land/main.xml
+++ b/res/layout-sw600dp-land/main.xml
@@ -59,7 +59,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="5dip"
- android:paddingRight="5dip" />
+ android:paddingRight="5dip"
+ android:contentDescription="@string/clearDesc" />
<ImageButton
android:id="@+id/del"
android:src="@drawable/calc_clear_symbol"
@@ -67,7 +68,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="5dip"
- android:paddingRight="5dip" />
+ android:paddingRight="5dip"
+ android:contentDescription="@string/delDesc" />
</FrameLayout>
</LinearLayout>
@@ -88,55 +90,65 @@
<Button
android:id="@+id/sin"
android:text="@string/sin"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/sinDesc" />
<Button
android:id="@+id/ln"
android:text="@string/ln"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/lnDesc" />
</LinearLayout>
<LinearLayout
style="@style/btn_row_style">
<Button
android:id="@+id/cos"
android:text="@string/cos"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/cosDesc" />
<Button
android:id="@+id/lg"
android:text="@string/lg"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/lgDesc" />
</LinearLayout>
<LinearLayout
style="@style/btn_row_style">
<Button
android:id="@+id/tan"
android:text="@string/tan"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/tanDesc" />
<Button
android:id="@+id/e"
android:text="@string/e"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/eDesc" />
</LinearLayout>
<LinearLayout
style="@style/btn_row_style">
<Button
android:id="@+id/pi"
android:text="@string/pi"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/piDesc" />
<Button
android:id="@+id/power"
android:text="@string/power"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/powerDesc" />
</LinearLayout>
<LinearLayout
style="@style/btn_row_style">
<Button
android:id="@+id/factorial"
android:text="@string/factorial"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/factorialDesc" />
<Button
android:id="@+id/sqrt"
android:text="@string/sqrt"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/sqrtDesc" />
</LinearLayout>
</LinearLayout>
@@ -162,11 +174,13 @@
<Button
android:id="@+id/div"
android:text="@string/div"
- style="@style/btn_operation_cell_style" />
+ style="@style/btn_operation_cell_style"
+ android:contentDescription="@string/divDesc" />
<Button
android:id="@+id/leftParen"
android:text="@string/leftParen"
- style="@style/btn_operation_cell_style" />
+ style="@style/btn_operation_cell_style"
+ android:contentDescription="@string/leftParenDesc" />
</LinearLayout>
<LinearLayout
style="@style/btn_row_style">
@@ -185,11 +199,13 @@
<Button
android:id="@+id/mul"
android:text="@string/mul"
- style="@style/btn_operation_cell_style" />
+ style="@style/btn_operation_cell_style"
+ android:contentDescription="@string/mulDesc" />
<Button
android:id="@+id/rightParen"
android:text="@string/rightParen"
- style="@style/btn_operation_cell_style" />
+ style="@style/btn_operation_cell_style"
+ android:contentDescription="@string/rightParenDesc" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
@@ -218,7 +234,8 @@
<Button
android:id="@+id/minus"
android:text="@string/minus"
- style="@style/btn_operation_cell_style" />
+ style="@style/btn_operation_cell_style"
+ android:contentDescription="@string/minusDesc" />
</LinearLayout>
<LinearLayout
style="@style/btn_row_style">
@@ -230,17 +247,20 @@
<Button
android:id="@+id/dot"
android:text="@string/dot"
- style="@style/btn_digit_cell_style" />
+ style="@style/btn_digit_cell_style"
+ android:contentDescription="@string/dotDesc" />
<Button
android:id="@+id/plus"
android:text="@string/plus"
- style="@style/btn_operation_cell_style" />
+ style="@style/btn_operation_cell_style"
+ android:contentDescription="@string/plusDesc" />
</LinearLayout>
</LinearLayout>
<Button
android:id="@+id/equal"
android:text="@string/equal"
- style="@style/btn_operation_cell_style" />
+ style="@style/btn_operation_cell_style"
+ android:contentDescription="@string/equalDesc" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
diff --git a/res/layout-sw600dp/main.xml b/res/layout-sw600dp/main.xml
index e149e61..e21e30c 100644
--- a/res/layout-sw600dp/main.xml
+++ b/res/layout-sw600dp/main.xml
@@ -59,7 +59,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="5dip"
- android:paddingRight="5dip" />
+ android:paddingRight="5dip"
+ android:contentDescription="@string/clearDesc" />
<ImageButton
android:id="@+id/del"
android:src="@drawable/calc_clear_symbol"
@@ -67,7 +68,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="5dip"
- android:paddingRight="5dip" />
+ android:paddingRight="5dip"
+ android:contentDescription="@string/delDesc" />
</FrameLayout>
</LinearLayout>
@@ -83,46 +85,56 @@
<Button
android:id="@+id/sin"
android:text="@string/sin"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/sinDesc" />
<Button
android:id="@+id/cos"
android:text="@string/cos"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/cosDesc" />
<Button
android:id="@+id/tan"
android:text="@string/tan"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/tanDesc" />
<Button
android:id="@+id/pi"
android:text="@string/pi"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/piDesc" />
<Button
android:id="@+id/factorial"
android:text="@string/factorial"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/factorialDesc" />
</LinearLayout>
<LinearLayout
style="@style/btn_row_style">
<Button
android:id="@+id/ln"
android:text="@string/ln"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/lnDesc" />
<Button
android:id="@+id/lg"
android:text="@string/lg"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/lgDesc" />
<Button
android:id="@+id/e"
android:text="@string/e"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/eDesc" />
<Button
android:id="@+id/power"
android:text="@string/power"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/powerDesc" />
<Button
android:id="@+id/sqrt"
android:text="@string/sqrt"
- style="@style/btn_function_cell_style" />
+ style="@style/btn_function_cell_style"
+ android:contentDescription="@string/sqrtDesc" />
</LinearLayout>
</LinearLayout>
@@ -149,11 +161,13 @@
<Button
android:id="@+id/div"
android:text="@string/div"
- style="@style/btn_operation_cell_style" />
+ style="@style/btn_operation_cell_style"
+ android:contentDescription="@string/divDesc" />
<Button
android:id="@+id/leftParen"
android:text="@string/leftParen"
- style="@style/btn_operation_cell_style" />
+ style="@style/btn_operation_cell_style"
+ android:contentDescription="@string/leftParenDesc" />
</LinearLayout>
<LinearLayout
style="@style/btn_row_style">
@@ -172,11 +186,13 @@
<Button
android:id="@+id/mul"
android:text="@string/mul"
- style="@style/btn_operation_cell_style" />
+ style="@style/btn_operation_cell_style"
+ android:contentDescription="@string/mulDesc" />
<Button
android:id="@+id/rightParen"
android:text="@string/rightParen"
- style="@style/btn_operation_cell_style" />
+ style="@style/btn_operation_cell_style"
+ android:contentDescription="@string/rightParenDesc" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
@@ -205,7 +221,8 @@
<Button
android:id="@+id/minus"
android:text="@string/minus"
- style="@style/btn_operation_cell_style" />
+ style="@style/btn_operation_cell_style"
+ android:contentDescription="@string/minusDesc" />
</LinearLayout>
<LinearLayout
style="@style/btn_row_style">
@@ -217,17 +234,20 @@
<Button
android:id="@+id/dot"
android:text="@string/dot"
- style="@style/btn_digit_cell_style" />
+ style="@style/btn_digit_cell_style"
+ android:contentDescription="@string/dotDesc" />
<Button
android:id="@+id/plus"
android:text="@string/plus"
- style="@style/btn_operation_cell_style" />
+ style="@style/btn_operation_cell_style"
+ android:contentDescription="@string/plusDesc" />
</LinearLayout>
</LinearLayout>
<Button
android:id="@+id/equal"
android:text="@string/equal"
- style="@style/btn_operation_cell_style" />
+ style="@style/btn_operation_cell_style"
+ android:contentDescription="@string/equalDesc" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index df87d98..958a6c4 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -90,4 +90,92 @@
<string name="clear_history">Clear history</string>
<!-- Toast shown when text is copied to the clipboard. -->
<string name="text_copied_toast">Text copied.</string>
+
+ <!--Content descriptions for accessibility. These strings will be read aloud to users who are using the calculator with
+ accessibility features enabled and should reflect the mathematical concept instead of a direct representation of what is shown
+ on the button-->
+ <string name="leftParenDesc">left parenthesis</string>
+ <string name="rightParenDesc">right parenthesis</string>
+ <string name="factorialDesc">factorial</string>
+ <string name="lnDesc">natural logarithm</string>
+ <string name="lgDesc">logarithm</string>
+ <string name="sqrtDesc">square root</string>
+ <string name="divDesc">divide</string>
+ <string name="mulDesc">multiply</string>
+ <string name="plusDesc">plus</string>
+ <string name="minusDesc">minus</string>
+ <string name="dotDesc">point</string>
+ <string name="powerDesc">power</string>
+ <string name="delDesc">delete</string>
+ <string name="clearDesc">clear</string>
+ <string name="tanDesc">tangent</string>
+ <string name="sinDesc">sine</string>
+ <string name="cosDesc">cosine</string>
+ <string name="eDesc">Euler\'s number</string>
+ <string name="piDesc">pi</string>
+ <string name="equalDesc">equals</string>
+
+ <!--Content descriptions for accessibility used as keys when determining which mathematical
+ concept description to speak when accessibility features are enabled. Order of the array is
+ important. -->
+ <string-array name="operators" translatable="false">
+ <item>(</item>
+ <item>)</item>
+ <item>!</item>
+ <item>ln</item>
+ <item>log</item>
+ <item>\u221a</item>
+ <item>\u00f7</item>
+ <item>\u00d7</item>
+ <item>+</item>
+ <item>\u2212</item>
+ <item>.</item>
+ <item>^</item>
+ <item>tan</item>
+ <item>sin</item>
+ <item>cos</item>
+ <item>\u03c0</item>
+ <item>=</item>
+ </string-array>
+
+ <!--Content descriptions for accessibility. These strings will be read aloud to users who
+ are using the calculator with accessibility features enabled and hover over the edit text
+ field. These should reflect the mathematical concept instead of a direct representation of
+ what is shown in the text field. Order of the array is important.-->
+ <string-array name="operatorDescs">
+ <!-- Description for mathematical ( [CHAR LIMIT=200]-->
+ <item>left parenthesis</item>
+ <!-- Description for mathematical ) [CHAR LIMIT=200]-->
+ <item>right parenthesis</item>
+ <!-- Description for mathematical ! (factorial) function [CHAR LIMIT=200]-->
+ <item>factorial</item>
+ <!-- Description for mathematical ln [CHAR LIMIT=200]-->
+ <item>natural logarithm</item>
+ <!-- Description for mathematical log [CHAR LIMIT=200]-->
+ <item>logarithm</item>
+ <!-- Description for mathematical square root [CHAR LIMIT=200]-->
+ <item>square root</item>
+ <!-- Description for mathematical / [CHAR LIMIT=200]-->
+ <item>divided by</item>
+ <!-- Description for mathematical x [CHAR LIMIT=200]-->
+ <item>multiplied by</item>
+ <!-- Description for mathematical + [CHAR LIMIT=200]-->
+ <item>plus</item>
+ <!-- Description for mathematical - [CHAR LIMIT=200]-->
+ <item>minus</item>
+ <!-- Description for mathematical . [CHAR LIMIT=200]-->
+ <item>point</item>
+ <!-- Description for mathematical ^ [CHAR LIMIT=200]-->
+ <item>power</item>
+ <!-- Description for mathematical TAN [CHAR LIMIT=200]-->
+ <item>tangent</item>
+ <!-- Description for mathematical SIN [CHAR LIMIT=200]-->
+ <item>sine</item>
+ <!-- Description for mathematical COS [CHAR LIMIT=200]-->
+ <item>cosine</item>
+ <!-- Description for mathematical PI [CHAR LIMIT=200]-->
+ <item>pi</item>
+ <!-- Description for mathematical = [CHAR LIMIT=200]-->
+ <item>equals</item>
+ </string-array>
</resources>
diff --git a/src/com/android/calculator2/CalculatorDisplay.java b/src/com/android/calculator2/CalculatorDisplay.java
index 3b48e1d..ca31fe9 100644
--- a/src/com/android/calculator2/CalculatorDisplay.java
+++ b/src/com/android/calculator2/CalculatorDisplay.java
@@ -19,11 +19,11 @@
import android.content.Context;
import android.graphics.Rect;
import android.text.Editable;
+import android.text.InputType;
import android.text.Spanned;
import android.text.method.NumberKeyListener;
import android.util.AttributeSet;
import android.view.animation.TranslateAnimation;
-import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.ViewSwitcher;
@@ -48,7 +48,6 @@
TranslateAnimation inAnimDown;
TranslateAnimation outAnimDown;
- private Logic mLogic;
private int mMaxDigits = DEFAULT_MAX_DIGITS;
public CalculatorDisplay(Context context, AttributeSet attrs) {
@@ -61,11 +60,10 @@
}
protected void setLogic(Logic logic) {
- mLogic = logic;
NumberKeyListener calculatorKeyListener =
new NumberKeyListener() {
public int getInputType() {
- return EditorInfo.TYPE_CLASS_TEXT;
+ return InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
}
@Override
diff --git a/src/com/android/calculator2/CalculatorEditText.java b/src/com/android/calculator2/CalculatorEditText.java
index 170e116..2135b38 100644
--- a/src/com/android/calculator2/CalculatorEditText.java
+++ b/src/com/android/calculator2/CalculatorEditText.java
@@ -30,9 +30,13 @@
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.EditText;
import android.widget.Toast;
+import com.google.common.collect.ImmutableMap;
+
public class CalculatorEditText extends EditText {
private static final String LOG_TAG = "Calculator2";
@@ -40,6 +44,8 @@
private static final int COPY = 1;
private static final int PASTE = 2;
private String[] mMenuItemsStrings;
+ private ImmutableMap<String, String> sReplacementTable;
+ private String[] sOperators;
public CalculatorEditText(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -62,6 +68,58 @@
return true;
}
+ @Override
+ public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
+ super.onInitializeAccessibilityEvent(event);
+ String mathText = mathParse(getText().toString());
+ // Parse the string into something more "mathematical" sounding.
+ if (!TextUtils.isEmpty(mathText)) {
+ event.getText().clear();
+ event.getText().add(mathText);
+ setContentDescription(mathText);
+ }
+ }
+
+ @Override
+ public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
+ super.onInitializeAccessibilityNodeInfo(info);
+ info.setText(mathParse(getText().toString()));
+ }
+
+ @Override
+ public void onPopulateAccessibilityEvent(AccessibilityEvent event) {
+ // Do nothing.
+ }
+
+ private String mathParse(String plainText) {
+ String parsedText = plainText;
+ if (!TextUtils.isEmpty(parsedText)) {
+ // Initialize replacement table.
+ initializeReplacementTable();
+ for (String operator : sOperators) {
+ if (sReplacementTable.containsKey(operator)) {
+ parsedText = parsedText.replace(operator, sReplacementTable.get(operator));
+ }
+ }
+ }
+ return parsedText;
+ }
+
+ private synchronized void initializeReplacementTable() {
+ if (sReplacementTable == null) {
+ ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
+ Resources res = getContext().getResources();
+ sOperators = res.getStringArray(R.array.operators);
+ String[] descs = res.getStringArray(R.array.operatorDescs);
+ int pos = 0;
+ for (String key : sOperators) {
+ builder.put(key, descs[pos]);
+ pos++;
+ }
+ sReplacementTable = builder.build();
+ }
+ }
+
private class MenuHandler implements MenuItem.OnMenuItemClickListener {
public boolean onMenuItemClick(MenuItem item) {
return onTextContextMenuItem(item.getTitle());
diff --git a/src/com/android/calculator2/ColorButton.java b/src/com/android/calculator2/ColorButton.java
index 742db7e..de330e2 100644
--- a/src/com/android/calculator2/ColorButton.java
+++ b/src/com/android/calculator2/ColorButton.java
@@ -17,15 +17,15 @@
package com.android.calculator2;
import android.content.Context;
+import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
-import android.widget.Button;
import android.view.View.OnClickListener;
import android.view.View;
import android.view.MotionEvent;
-import android.content.res.Resources;
+import android.widget.Button;
/**
* Button with click-animation effect.