am 5c85e48a: (-s ours) Import revised translations. DO NOT MERGE
* commit '5c85e48a713ec70ebce65ebf1a3622035992f8c3':
Import revised translations. DO NOT MERGE
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 3b33cea..236eadd 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -4,9 +4,10 @@
<original-package android:name="com.android.calculator2" />
- <application android:label="@string/app_name" android:icon="@drawable/icon">
+ <application android:label="@string/app_name" android:icon="@mipmap/ic_launcher_calculator">
<activity android:name="Calculator"
- android:theme="@android:style/Theme.Black.NoTitleBar">
+ android:theme="@android:style/Theme.Holo.NoActionBar"
+ android:windowSoftInputMode="stateAlwaysHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
diff --git a/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png b/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png
new file mode 100644
index 0000000..d13386a
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png b/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png
new file mode 100644
index 0000000..77a0e7d
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png b/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png
new file mode 100644
index 0000000..763c538
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png b/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png
new file mode 100644
index 0000000..328fe16
--- /dev/null
+++ b/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/icon.png b/res/drawable-hdpi/icon.png
deleted file mode 100644
index ac1c045..0000000
--- a/res/drawable-hdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png b/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png
new file mode 100644
index 0000000..1534d99
--- /dev/null
+++ b/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png b/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png
new file mode 100644
index 0000000..9fed21e
--- /dev/null
+++ b/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png b/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png
new file mode 100644
index 0000000..eded173
--- /dev/null
+++ b/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png b/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png
new file mode 100644
index 0000000..e6a1dce
--- /dev/null
+++ b/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png
Binary files differ
diff --git a/res/drawable-mdpi/icon.png b/res/drawable-mdpi/icon.png
deleted file mode 100644
index c574bd3..0000000
--- a/res/drawable-mdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xlarge-hdpi/calc_clear_symbol.png b/res/drawable-xlarge-hdpi/calc_clear_symbol.png
new file mode 100644
index 0000000..8ffc30e
--- /dev/null
+++ b/res/drawable-xlarge-hdpi/calc_clear_symbol.png
Binary files differ
diff --git a/res/drawable-xlarge-hdpi/calculator_input_field.9.png b/res/drawable-xlarge-hdpi/calculator_input_field.9.png
new file mode 100644
index 0000000..555873c
--- /dev/null
+++ b/res/drawable-xlarge-hdpi/calculator_input_field.9.png
Binary files differ
diff --git a/res/drawable-xlarge-mdpi/calc_clear_symbol.png b/res/drawable-xlarge-mdpi/calc_clear_symbol.png
new file mode 100644
index 0000000..60dfecc
--- /dev/null
+++ b/res/drawable-xlarge-mdpi/calc_clear_symbol.png
Binary files differ
diff --git a/res/drawable-xlarge-mdpi/calculator_input_field.9.png b/res/drawable-xlarge-mdpi/calculator_input_field.9.png
new file mode 100644
index 0000000..679d4c8
--- /dev/null
+++ b/res/drawable-xlarge-mdpi/calculator_input_field.9.png
Binary files differ
diff --git a/res/drawable/btn_digit.xml b/res/drawable/btn_digit.xml
new file mode 100644
index 0000000..2f91721
--- /dev/null
+++ b/res/drawable/btn_digit.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector
+ xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <item
+ android:state_pressed="true"
+ android:drawable="@drawable/btn_keyboard_key_light_pressed_holo" />
+ <item
+ android:drawable="@drawable/btn_keyboard_key_light_normal_holo" />
+</selector>
diff --git a/res/drawable/btn_function.xml b/res/drawable/btn_function.xml
new file mode 100644
index 0000000..25a3e66
--- /dev/null
+++ b/res/drawable/btn_function.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector
+ xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:state_pressed="true"
+ android:drawable="@drawable/btn_keyboard_key_dark_pressed_holo" />
+ <item
+ android:drawable="@drawable/btn_keyboard_key_dark_normal_holo" />
+</selector>
diff --git a/res/layout-land/main.xml b/res/layout-land/main.xml
index b38e961..42682be 100644
--- a/res/layout-land/main.xml
+++ b/res/layout-land/main.xml
@@ -34,24 +34,38 @@
android:layout_width="0dp"
android:layout_weight="5"
android:layout_height="match_parent"
- >
+ maxDigits="12">
<EditText style="@style/display_style" />
<EditText style="@style/display_style" />
</com.android.calculator2.CalculatorDisplay>
- <com.android.calculator2.ColorButton
- android:id="@+id/del"
- android:text="@string/clear"
- android:layout_width="0dp"
- android:layout_weight="1"
- android:layout_height="match_parent"
- android:textColor="#ffffffff"
- android:layout_marginRight="0dp"
- android:textSize="15dp"
- style="@style/button_style"
- />
+ <FrameLayout
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:layout_height="match_parent">
+ <!-- marginRight has to be 0 to catch border-touch -->
+ <com.android.calculator2.ColorButton
+ android:id="@+id/clear"
+ android:text="@string/clear"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginRight="0dp"
+ android:textSize="15dp"
+ style="@style/button_style"
+ />
+ <!-- marginRight has to be 0 to catch border-touch -->
+ <com.android.calculator2.ColorButton
+ android:id="@+id/del"
+ android:text="@string/del"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginRight="0dp"
+ android:textSize="15dp"
+ style="@style/button_style"
+ />
+ </FrameLayout>
</LinearLayout>
<com.android.calculator2.PanelSwitcher
diff --git a/res/layout-port/main.xml b/res/layout-port/main.xml
index 75317dd..eea3ef8 100644
--- a/res/layout-port/main.xml
+++ b/res/layout-port/main.xml
@@ -29,6 +29,7 @@
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
+ maxDigits="8"
>
<EditText style="@style/display_style" />
@@ -63,18 +64,33 @@
android:layout_height="match_parent"
android:layout_weight="3"
/>
-
+
+ <FrameLayout
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:layout_height="match_parent">
<!-- marginRight has to be 0 to catch border-touch -->
<com.android.calculator2.ColorButton
- android:id="@+id/del"
+ android:id="@+id/clear"
android:text="@string/clear"
- android:layout_width="0dp"
- android:layout_weight="1"
+ android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginRight="0dp"
android:textSize="15dp"
style="@style/button_style"
/>
+ <!-- marginRight has to be 0 to catch border-touch -->
+ <com.android.calculator2.ColorButton
+ android:id="@+id/del"
+ android:text="@string/del"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginRight="0dp"
+ android:textSize="15dp"
+ style="@style/button_style"
+ />
+ </FrameLayout>
+
</LinearLayout>
<LinearLayout
diff --git a/res/layout-xlarge-land/main.xml b/res/layout-xlarge-land/main.xml
new file mode 100644
index 0000000..9e21630
--- /dev/null
+++ b/res/layout-xlarge-land/main.xml
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2011, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="#ff000000"
+ android:paddingLeft="48dip"
+ android:paddingRight="48dip"
+ android:paddingTop="48dip"
+ android:paddingBottom="48dip">
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:layout_marginBottom="48dip"
+ android:background="@drawable/calculator_input_field">
+
+ <com.android.calculator2.CalculatorDisplay
+ android:id="@+id/display"
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:layout_height="match_parent"
+ maxDigits="14"
+ >
+
+ <com.android.calculator2.CalculatorEditText
+ style="@style/display_style" />
+ <com.android.calculator2.CalculatorEditText
+ style="@style/display_style" />
+
+ </com.android.calculator2.CalculatorDisplay>
+
+ <FrameLayout
+ android:layout_width="160dip"
+ android:layout_height="match_parent">
+ <Button
+ android:id="@+id/clear"
+ android:text="@string/clear"
+ style="@style/btn_clear"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingLeft="5dip"
+ android:paddingRight="5dip" />
+ <ImageButton
+ android:id="@+id/del"
+ android:src="@drawable/calc_clear_symbol"
+ style="@style/btn_clear"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingLeft="5dip"
+ android:paddingRight="5dip" />
+ </FrameLayout>
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="0dip"
+ android:layout_weight="4"
+ android:orientation="horizontal">
+
+ <LinearLayout
+ android:layout_width="0dip"
+ android:layout_height="match_parent"
+ android:layout_weight="2"
+ android:orientation="vertical"
+ android:layout_marginRight="64dip">
+ <LinearLayout
+ style="@style/btn_row_style">
+ <Button
+ android:id="@+id/sin"
+ android:text="@string/sin"
+ style="@style/btn_function_cell_style" />
+ <Button
+ android:id="@+id/ln"
+ android:text="@string/ln"
+ style="@style/btn_function_cell_style" />
+ </LinearLayout>
+ <LinearLayout
+ style="@style/btn_row_style">
+ <Button
+ android:id="@+id/cos"
+ android:text="@string/cos"
+ style="@style/btn_function_cell_style" />
+ <Button
+ android:id="@+id/lg"
+ android:text="@string/lg"
+ style="@style/btn_function_cell_style" />
+ </LinearLayout>
+ <LinearLayout
+ style="@style/btn_row_style">
+ <Button
+ android:id="@+id/tan"
+ android:text="@string/tan"
+ style="@style/btn_function_cell_style" />
+ <Button
+ android:id="@+id/e"
+ android:text="@string/e"
+ style="@style/btn_function_cell_style" />
+ </LinearLayout>
+ <LinearLayout
+ style="@style/btn_row_style">
+ <Button
+ android:id="@+id/pi"
+ android:text="@string/pi"
+ style="@style/btn_function_cell_style" />
+ <Button
+ android:id="@+id/power"
+ android:text="@string/power"
+ style="@style/btn_function_cell_style" />
+ </LinearLayout>
+ <LinearLayout
+ style="@style/btn_row_style">
+ <Button
+ android:id="@+id/factorial"
+ android:text="@string/factorial"
+ style="@style/btn_function_cell_style" />
+ <Button
+ android:id="@+id/sqrt"
+ android:text="@string/sqrt"
+ style="@style/btn_function_cell_style" />
+ </LinearLayout>
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="0dip"
+ android:layout_height="match_parent"
+ android:layout_weight="5"
+ android:orientation="vertical">
+ <LinearLayout
+ style="@style/btn_row_style">
+ <Button
+ android:id="@+id/digit7"
+ android:text="@string/digit7"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/digit8"
+ android:text="@string/digit8"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/digit9"
+ android:text="@string/digit9"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/div"
+ android:text="@string/div"
+ style="@style/btn_operation_cell_style" />
+ <Button
+ android:id="@+id/leftParen"
+ android:text="@string/leftParen"
+ style="@style/btn_operation_cell_style" />
+ </LinearLayout>
+ <LinearLayout
+ style="@style/btn_row_style">
+ <Button
+ android:id="@+id/digit4"
+ android:text="@string/digit4"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/digit5"
+ android:text="@string/digit5"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/digit6"
+ android:text="@string/digit6"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/mul"
+ android:text="@string/mul"
+ style="@style/btn_operation_cell_style" />
+ <Button
+ android:id="@+id/rightParen"
+ android:text="@string/rightParen"
+ style="@style/btn_operation_cell_style" />
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="0dip"
+ android:layout_weight="2"
+ android:orientation="horizontal">
+ <LinearLayout
+ android:layout_width="0dip"
+ android:layout_height="match_parent"
+ android:layout_weight="4"
+ android:orientation="vertical">
+ <LinearLayout
+ style="@style/btn_row_style">
+ <Button
+ android:id="@+id/digit1"
+ android:text="@string/digit1"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/digit2"
+ android:text="@string/digit2"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/digit3"
+ android:text="@string/digit3"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/minus"
+ android:text="@string/minus"
+ style="@style/btn_operation_cell_style" />
+ </LinearLayout>
+ <LinearLayout
+ style="@style/btn_row_style">
+ <Button
+ android:id="@+id/digit0"
+ android:text="@string/digit0"
+ style="@style/btn_digit_cell_style"
+ android:layout_weight="2" />
+ <Button
+ android:id="@+id/dot"
+ android:text="@string/dot"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/plus"
+ android:text="@string/plus"
+ style="@style/btn_operation_cell_style" />
+ </LinearLayout>
+ </LinearLayout>
+ <Button
+ android:id="@+id/equal"
+ android:text="@string/equal"
+ style="@style/btn_operation_cell_style" />
+ </LinearLayout>
+ </LinearLayout>
+ </LinearLayout>
+</LinearLayout>
diff --git a/res/layout-xlarge/main.xml b/res/layout-xlarge/main.xml
new file mode 100644
index 0000000..e4ba64b
--- /dev/null
+++ b/res/layout-xlarge/main.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2011, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="#ff000000"
+ android:paddingLeft="32dip"
+ android:paddingRight="32dip"
+ android:paddingTop="64dip"
+ android:paddingBottom="64dip">
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:layout_marginBottom="72dip"
+ android:background="@drawable/calculator_input_field">
+
+ <com.android.calculator2.CalculatorDisplay
+ android:id="@+id/display"
+ android:layout_width="0dp"
+ android:layout_weight="1"
+ android:layout_height="match_parent"
+ maxDigits="12"
+ >
+
+ <com.android.calculator2.CalculatorEditText
+ style="@style/display_style" />
+ <com.android.calculator2.CalculatorEditText
+ style="@style/display_style" />
+
+ </com.android.calculator2.CalculatorDisplay>
+
+ <FrameLayout
+ android:layout_width="160dip"
+ android:layout_height="match_parent">
+ <Button
+ android:id="@+id/clear"
+ android:text="@string/clear"
+ style="@style/btn_clear"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingLeft="5dip"
+ android:paddingRight="5dip" />
+ <ImageButton
+ android:id="@+id/del"
+ android:src="@drawable/calc_clear_symbol"
+ style="@style/btn_clear"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingLeft="5dip"
+ android:paddingRight="5dip" />
+ </FrameLayout>
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="0dip"
+ android:layout_weight="2"
+ android:orientation="vertical"
+ android:layout_marginBottom="72dip">
+
+ <LinearLayout
+ style="@style/btn_row_style">
+ <Button
+ android:id="@+id/sin"
+ android:text="@string/sin"
+ style="@style/btn_function_cell_style" />
+ <Button
+ android:id="@+id/cos"
+ android:text="@string/cos"
+ style="@style/btn_function_cell_style" />
+ <Button
+ android:id="@+id/tan"
+ android:text="@string/tan"
+ style="@style/btn_function_cell_style" />
+ <Button
+ android:id="@+id/pi"
+ android:text="@string/pi"
+ style="@style/btn_function_cell_style" />
+ <Button
+ android:id="@+id/factorial"
+ android:text="@string/factorial"
+ style="@style/btn_function_cell_style" />
+ </LinearLayout>
+ <LinearLayout
+ style="@style/btn_row_style">
+ <Button
+ android:id="@+id/ln"
+ android:text="@string/ln"
+ style="@style/btn_function_cell_style" />
+ <Button
+ android:id="@+id/lg"
+ android:text="@string/lg"
+ style="@style/btn_function_cell_style" />
+ <Button
+ android:id="@+id/e"
+ android:text="@string/e"
+ style="@style/btn_function_cell_style" />
+ <Button
+ android:id="@+id/power"
+ android:text="@string/power"
+ style="@style/btn_function_cell_style" />
+ <Button
+ android:id="@+id/sqrt"
+ android:text="@string/sqrt"
+ style="@style/btn_function_cell_style" />
+ </LinearLayout>
+
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="0dip"
+ android:layout_weight="5"
+ android:orientation="vertical">
+ <LinearLayout
+ style="@style/btn_row_style">
+ <Button
+ android:id="@+id/digit7"
+ android:text="@string/digit7"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/digit8"
+ android:text="@string/digit8"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/digit9"
+ android:text="@string/digit9"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/div"
+ android:text="@string/div"
+ style="@style/btn_operation_cell_style" />
+ <Button
+ android:id="@+id/leftParen"
+ android:text="@string/leftParen"
+ style="@style/btn_operation_cell_style" />
+ </LinearLayout>
+ <LinearLayout
+ style="@style/btn_row_style">
+ <Button
+ android:id="@+id/digit4"
+ android:text="@string/digit4"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/digit5"
+ android:text="@string/digit5"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/digit6"
+ android:text="@string/digit6"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/mul"
+ android:text="@string/mul"
+ style="@style/btn_operation_cell_style" />
+ <Button
+ android:id="@+id/rightParen"
+ android:text="@string/rightParen"
+ style="@style/btn_operation_cell_style" />
+ </LinearLayout>
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="0dip"
+ android:layout_weight="2"
+ android:orientation="horizontal">
+ <LinearLayout
+ android:layout_width="0dip"
+ android:layout_height="match_parent"
+ android:layout_weight="4"
+ android:orientation="vertical">
+ <LinearLayout
+ style="@style/btn_row_style">
+ <Button
+ android:id="@+id/digit1"
+ android:text="@string/digit1"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/digit2"
+ android:text="@string/digit2"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/digit3"
+ android:text="@string/digit3"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/minus"
+ android:text="@string/minus"
+ style="@style/btn_operation_cell_style" />
+ </LinearLayout>
+ <LinearLayout
+ style="@style/btn_row_style">
+ <Button
+ android:id="@+id/digit0"
+ android:text="@string/digit0"
+ style="@style/btn_digit_cell_style"
+ android:layout_weight="2" />
+ <Button
+ android:id="@+id/dot"
+ android:text="@string/dot"
+ style="@style/btn_digit_cell_style" />
+ <Button
+ android:id="@+id/plus"
+ android:text="@string/plus"
+ style="@style/btn_operation_cell_style" />
+ </LinearLayout>
+ </LinearLayout>
+ <Button
+ android:id="@+id/equal"
+ android:text="@string/equal"
+ style="@style/btn_operation_cell_style" />
+ </LinearLayout>
+ </LinearLayout>
+</LinearLayout>
diff --git a/res/mipmap-hdpi/ic_launcher_calculator.png b/res/mipmap-hdpi/ic_launcher_calculator.png
new file mode 100644
index 0000000..00d334a
--- /dev/null
+++ b/res/mipmap-hdpi/ic_launcher_calculator.png
Binary files differ
diff --git a/res/mipmap-mdpi/ic_launcher_calculator.png b/res/mipmap-mdpi/ic_launcher_calculator.png
new file mode 100644
index 0000000..fde519a
--- /dev/null
+++ b/res/mipmap-mdpi/ic_launcher_calculator.png
Binary files differ
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 7d6d70d..c63c243 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"حذف"</string>
- <string name="clear" msgid="895929542545793094">"محو"</string>
+ <string name="clear" msgid="8103610981407459768">"محو"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"اللوحة الأساسية"</string>
<string name="advanced" msgid="7122495413742976492">"اللوحة المتقدمة"</string>
<string name="clear_history" msgid="8458043980601165012">"محو السجل"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"تم نسخ النص"</string>
</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 95d7657..1ce7bb9 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"ИЗТРИВАНЕ"</string>
- <string name="clear" msgid="895929542545793094">"ИЗЧИСТВАНЕ"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Основен панел"</string>
<string name="advanced" msgid="7122495413742976492">"Разширен панел"</string>
<string name="clear_history" msgid="8458043980601165012">"Изчистване на историята"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Текстът е копиран"</string>
</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 09f9fa5..86d119f 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"SUPRIMEIX"</string>
- <string name="clear" msgid="895929542545793094">"ESBORRA"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Tauler bàsic"</string>
<string name="advanced" msgid="7122495413742976492">"Tauler avançat"</string>
<string name="clear_history" msgid="8458043980601165012">"Esborra l\'historial"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Text copiat"</string>
</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index ef68c53..06d6faa 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"SMAZAT"</string>
- <string name="clear" msgid="895929542545793094">"VYMAZAT"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Základní funkce"</string>
<string name="advanced" msgid="7122495413742976492">"Pokročilé funkce"</string>
<string name="clear_history" msgid="8458043980601165012">"Vymazat historii"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Text zkopírován"</string>
</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index f8b7417..8ee4df6 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"SLET"</string>
- <string name="clear" msgid="895929542545793094">"RYD"</string>
+ <string name="clear" msgid="8103610981407459768">"RYD"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Grundlæggende panel"</string>
<string name="advanced" msgid="7122495413742976492">"Avanceret panel"</string>
<string name="clear_history" msgid="8458043980601165012">"Ryd oversigt"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Kopieret tekst"</string>
</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index c0a8c1d..c7286f3 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"Entfernen"</string>
- <string name="clear" msgid="895929542545793094">"C"</string>
+ <string name="clear" msgid="8103610981407459768">"Entf."</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Grundfunktionen"</string>
<string name="advanced" msgid="7122495413742976492">"Erweiterte Funktionen"</string>
<string name="clear_history" msgid="8458043980601165012">"Verlauf löschen"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Text kopiert"</string>
</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 3245b12..bc01dc0 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"DELETE"</string>
- <string name="clear" msgid="895929542545793094">"CLEAR"</string>
+ <string name="clear" msgid="8103610981407459768">"ΔΙΑΓΡ."</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Πίνακας βασικών πράξεων"</string>
<string name="advanced" msgid="7122495413742976492">"Πίνακας σύνθετων συναρτήσεων"</string>
<string name="clear_history" msgid="8458043980601165012">"Εκκαθάριση ιστορικού"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Το κείμενο αντιγράφηκε"</string>
</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index af91650..805e73c 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"DELETE"</string>
- <string name="clear" msgid="895929542545793094">"CLEAR"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Basic panel"</string>
<string name="advanced" msgid="7122495413742976492">"Advanced panel"</string>
<string name="clear_history" msgid="8458043980601165012">"Clear history"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Text copied"</string>
</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 7bd2fc9..11b83c4 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"ELIMINAR"</string>
- <string name="clear" msgid="895929542545793094">"BORRAR"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sen"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Panel básico"</string>
<string name="advanced" msgid="7122495413742976492">"Panel avanzado"</string>
<string name="clear_history" msgid="8458043980601165012">"Borrar historial"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Texto copiado"</string>
</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 7d5fb95..fe464cc 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"ELIMINAR"</string>
- <string name="clear" msgid="895929542545793094">"BORRAR"</string>
+ <string name="clear" msgid="8103610981407459768">"BORRAR"</string>
<string name="sin" msgid="6793866152659175277">"sen"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Panel de funciones básicas"</string>
<string name="advanced" msgid="7122495413742976492">"Panel de funciones avanzadas"</string>
<string name="clear_history" msgid="8458043980601165012">"Borrar historial"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Se ha copiado el texto."</string>
</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 33e4029..eb8e2fc 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"حذف"</string>
- <string name="clear" msgid="895929542545793094">"پاک کردن"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"برنزه"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"پانل اصلی"</string>
<string name="advanced" msgid="7122495413742976492">"پانل پیشرفته"</string>
<string name="clear_history" msgid="8458043980601165012">"پاک کردن سابقه"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"متن کپی شده"</string>
</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 46c1c2b..8eadcdf 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"POISTA"</string>
- <string name="clear" msgid="895929542545793094">"TYHJENNÄ"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Perustoiminnot"</string>
<string name="advanced" msgid="7122495413742976492">"Lisätoiminnot"</string>
<string name="clear_history" msgid="8458043980601165012">"Tyhjennä historia"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Teksti kopioitu"</string>
</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 1d53bbf..92bc9de 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"SUPPRIMER"</string>
- <string name="clear" msgid="895929542545793094">"EFF."</string>
+ <string name="clear" msgid="8103610981407459768">"EFF."</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Panneau de base"</string>
<string name="advanced" msgid="7122495413742976492">"Fonctions avancées"</string>
<string name="clear_history" msgid="8458043980601165012">"Effacer l\'historique"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Texte copié"</string>
</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 73f44b2..253ce5c 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"IZBRIŠI"</string>
- <string name="clear" msgid="895929542545793094">"OČISTI"</string>
+ <string name="clear" msgid="8103610981407459768">"Briši"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Ploča Osnovno"</string>
<string name="advanced" msgid="7122495413742976492">"Ploča Napredno"</string>
<string name="clear_history" msgid="8458043980601165012">"Izbriši povijest"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Tekst kopiran"</string>
</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 723042c..05ae74b 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"TÖRLÉS"</string>
- <string name="clear" msgid="895929542545793094">"MINDENT TÖRÖL"</string>
+ <string name="clear" msgid="8103610981407459768">"Törlés"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Alappanel"</string>
<string name="advanced" msgid="7122495413742976492">"Speciális panel"</string>
<string name="clear_history" msgid="8458043980601165012">"Előzmények törlése"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Másolt szöveg"</string>
</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 36303fd..2c70699 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"DELETE"</string>
- <string name="clear" msgid="895929542545793094">"CLEAR"</string>
+ <string name="clear" msgid="8103610981407459768">"HAPUS"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Panel dasar"</string>
<string name="advanced" msgid="7122495413742976492">"Panel lanjutan"</string>
<string name="clear_history" msgid="8458043980601165012">"Hapus riwayat"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Teks disalin"</string>
</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index ff5da74..98291c4 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"ELIMINA"</string>
- <string name="clear" msgid="895929542545793094">"CANC"</string>
+ <string name="clear" msgid="8103610981407459768">"CANC"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Pannello base"</string>
<string name="advanced" msgid="7122495413742976492">"Pannello avanzato"</string>
<string name="clear_history" msgid="8458043980601165012">"Cancella cronologia"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Testo copiato"</string>
</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 2a4996b..fb1493d 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"מחק"</string>
- <string name="clear" msgid="895929542545793094">"נקה"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"חלונית בסיסית"</string>
<string name="advanced" msgid="7122495413742976492">"חלונית \'מתקדם\'"</string>
<string name="clear_history" msgid="8458043980601165012">"נקה היסטוריה"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"טקסט שהועתק"</string>
</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 4882d6b..cec99e5 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"削除"</string>
- <string name="clear" msgid="895929542545793094">"CLEAR"</string>
+ <string name="clear" msgid="8103610981407459768">"消去"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"標準機能"</string>
<string name="advanced" msgid="7122495413742976492">"関数機能"</string>
<string name="clear_history" msgid="8458043980601165012">"履歴消去"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"テキストをコピーしました"</string>
</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 1ade1fd..173dcb8 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"삭제"</string>
- <string name="clear" msgid="895929542545793094">"지우기"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"기본 패널"</string>
<string name="advanced" msgid="7122495413742976492">"고급 패널"</string>
<string name="clear_history" msgid="8458043980601165012">"기록 지우기"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"텍스트 복사됨"</string>
</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 6e9197f..001ffea 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"IŠTRINTI"</string>
- <string name="clear" msgid="895929542545793094">"IŠVALYTI"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Pagrindinis skydelis"</string>
<string name="advanced" msgid="7122495413742976492">"Išplėstinis skydelis"</string>
<string name="clear_history" msgid="8458043980601165012">"Išvalyti istoriją"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Tekstas nukopijuotas"</string>
</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 0c6a27b..3b5a722 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"DZĒST"</string>
- <string name="clear" msgid="895929542545793094">"NOTĪRĪT"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Pamata panelis"</string>
<string name="advanced" msgid="7122495413742976492">"Izvērsts panelis"</string>
<string name="clear_history" msgid="8458043980601165012">"Notīrīt vēsturi"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Teksts ir nokopēts."</string>
</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 969fe6f..607b16e 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"SLETT"</string>
- <string name="clear" msgid="895929542545793094">"RYDD"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Grunnleggende panel"</string>
<string name="advanced" msgid="7122495413742976492">"Avansert panel"</string>
<string name="clear_history" msgid="8458043980601165012">"Tøm logg"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Tekst kopiert"</string>
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index fc6bfb0..ac11fca 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"VERWIJDEREN"</string>
- <string name="clear" msgid="895929542545793094">"WISSEN"</string>
+ <string name="clear" msgid="8103610981407459768">"WISSEN"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Basis"</string>
<string name="advanced" msgid="7122495413742976492">"Geavanceerd"</string>
<string name="clear_history" msgid="8458043980601165012">"Geschiedenis wissen"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Tekst gekopieerd"</string>
</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index bac7970..2f35256 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"USUŃ"</string>
- <string name="clear" msgid="895929542545793094">"USUŃ"</string>
+ <string name="clear" msgid="8103610981407459768">"CZYŚĆ"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tg"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Panel podstawowy"</string>
<string name="advanced" msgid="7122495413742976492">"Panel zaawansowany"</string>
<string name="clear_history" msgid="8458043980601165012">"Wyczyść historię"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Tekst skopiowany"</string>
</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index a339625..0d48269 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"ELIMINAR"</string>
- <string name="clear" msgid="895929542545793094">"LIMPAR"</string>
+ <string name="clear" msgid="8103610981407459768">"LIMPAR"</string>
<string name="sin" msgid="6793866152659175277">"sen"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Painel básico"</string>
<string name="advanced" msgid="7122495413742976492">"Painel avançado"</string>
<string name="clear_history" msgid="8458043980601165012">"Limpar histórico"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Texto copiado"</string>
</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 227ff99..c98af2c 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"EXCLUIR"</string>
- <string name="clear" msgid="895929542545793094">"LIMPAR"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Painel básico"</string>
<string name="advanced" msgid="7122495413742976492">"Painel avançado"</string>
<string name="clear_history" msgid="8458043980601165012">"Limpar histórico"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Texto copiado"</string>
</resources>
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index 9ccd664..3e5ea0e 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"C"</string>
- <string name="clear" msgid="895929542545793094">"AC"</string>
+ <!-- outdated translation 895929542545793094 --> <string name="clear" msgid="8103610981407459768">"AC"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,6 @@
<string name="basic" msgid="7691469861698059753">"Funcziuns da basa"</string>
<string name="advanced" msgid="7122495413742976492">"Funcziuns avanzadas"</string>
<string name="clear_history" msgid="8458043980601165012">"Stizzar la cronologia"</string>
+ <!-- no translation found for text_copied_toast (8283471249866321961) -->
+ <skip />
</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index f473eb4..4bc1c0f 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"ŞTERGEŢI"</string>
- <string name="clear" msgid="895929542545793094">"GOLIŢI"</string>
+ <string name="clear" msgid="8103610981407459768">"ŞTERGE"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tg"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Panou de bază"</string>
<string name="advanced" msgid="7122495413742976492">"Panou avansat"</string>
<string name="clear_history" msgid="8458043980601165012">"Ştergeţi istoricul"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Text copiat"</string>
</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 8d9807e..910248b 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"Удалить"</string>
- <string name="clear" msgid="895929542545793094">"СБРОС"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Основная панель"</string>
<string name="advanced" msgid="7122495413742976492">"Дополнительная панель"</string>
<string name="clear_history" msgid="8458043980601165012">"Очистить историю"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Текст скопирован"</string>
</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 7d7bed3..568c484 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"ODSTRÁNIŤ"</string>
- <string name="clear" msgid="895929542545793094">"VYMAZAŤ"</string>
+ <string name="clear" msgid="8103610981407459768">"Vymaz."</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Základné funkcie"</string>
<string name="advanced" msgid="7122495413742976492">"Rozšírené funkcie"</string>
<string name="clear_history" msgid="8458043980601165012">"Vymazať históriu"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Text bol skopírovaný"</string>
</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 63a8621..5e6c0b7 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"IZBRIŠI"</string>
- <string name="clear" msgid="895929542545793094">"POČISTI"</string>
+ <string name="clear" msgid="8103610981407459768">"IZBRIS"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Osnovna plošča"</string>
<string name="advanced" msgid="7122495413742976492">"Plošča z dodatnimi nastavitvami"</string>
<string name="clear_history" msgid="8458043980601165012">"Počisti zgodovino"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Besedilo kopirano"</string>
</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 922be6a..2c73f98 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"ИЗБРИШИ"</string>
- <string name="clear" msgid="895929542545793094">"ОБРИШИ"</string>
+ <string name="clear" msgid="8103610981407459768">"ОБРИШИ"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Основна табла"</string>
<string name="advanced" msgid="7122495413742976492">"Напредна табла"</string>
<string name="clear_history" msgid="8458043980601165012">"Обриши историју"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Текст је копиран"</string>
</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 26126a4..490c675 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"RADERA"</string>
- <string name="clear" msgid="895929542545793094">"RENSA"</string>
+ <string name="clear" msgid="8103610981407459768">"Rensa"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Standardpanel"</string>
<string name="advanced" msgid="7122495413742976492">"Avancerad panel"</string>
<string name="clear_history" msgid="8458043980601165012">"Rensa historik"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Texten har kopierats"</string>
</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 33fa2a0..5774351 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"DELETE"</string>
- <string name="clear" msgid="895929542545793094">"ล้าง"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"แผงควบคุมพื้นฐาน"</string>
<string name="advanced" msgid="7122495413742976492">"แผงควบคุมขั้นสูง"</string>
<string name="clear_history" msgid="8458043980601165012">"ล้างประวัติ"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"คัดลอกข้อความแล้ว"</string>
</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 6d9a08f..c1bfcf4 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"TANGGALIN"</string>
- <string name="clear" msgid="895929542545793094">"I-CLEAR"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Pangunahing panel"</string>
<string name="advanced" msgid="7122495413742976492">"Advanced na panel"</string>
<string name="clear_history" msgid="8458043980601165012">"I-clear ang kasaysayan"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Kinopya ang teksto"</string>
</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index f984904..3edd987 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"SİL"</string>
- <string name="clear" msgid="895929542545793094">"TEMİZLE"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Ana panel"</string>
<string name="advanced" msgid="7122495413742976492">"Gelişmiş panel"</string>
<string name="clear_history" msgid="8458043980601165012">"Geçmişi temizle"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Metin kopyalandı"</string>
</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 5c5cdb7..aaba7dc 100755
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"ВИДАЛИТИ"</string>
- <string name="clear" msgid="895929542545793094">"ОЧИСТИТИ"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tg"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Основна панель"</string>
<string name="advanced" msgid="7122495413742976492">"Розширена панель"</string>
<string name="clear_history" msgid="8458043980601165012">"Очистити історію"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Текст скопійовано"</string>
</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 7ada2c7..3606b1f 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"XOÁ"</string>
- <string name="clear" msgid="895929542545793094">"XOÁ"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"Bảng điều khiển cơ bản"</string>
<string name="advanced" msgid="7122495413742976492">"Bảng điều khiển nâng cao"</string>
<string name="clear_history" msgid="8458043980601165012">"Xoá lịch sử"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"Đã sao chép văn bản"</string>
</resources>
diff --git a/res/values-xlarge/styles.xml b/res/values-xlarge/styles.xml
new file mode 100644
index 0000000..9dd6b4e
--- /dev/null
+++ b/res/values-xlarge/styles.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <dimen name="btn_digit_text_size">64sp</dimen>
+ <dimen name="btn_operation_text_size">64sp</dimen>
+ <dimen name="btn_function_text_size">32sp</dimen>
+ <dimen name="btn_clear_text_size">48sp</dimen>
+ <dimen name="display_text_size">72sp</dimen>
+</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index f96ef78..eee4624 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"删除"</string>
- <string name="clear" msgid="895929542545793094">"清除"</string>
+ <string name="clear" msgid="8103610981407459768">"清除"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"基本面板"</string>
<string name="advanced" msgid="7122495413742976492">"高级面板"</string>
<string name="clear_history" msgid="8458043980601165012">"清除历史记录"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"文本已复制"</string>
</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 439c209..8b09b24 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -29,7 +29,7 @@
<string name="digit8" msgid="3134686906411558886">"8"</string>
<string name="digit9" msgid="765379157698748031">"9"</string>
<string name="del" msgid="6248896117422989693">"刪除"</string>
- <string name="clear" msgid="895929542545793094">"清除"</string>
+ <string name="clear" msgid="8103610981407459768">"CLR"</string>
<string name="sin" msgid="6793866152659175277">"sin"</string>
<string name="cos" msgid="6901841853098114414">"cos"</string>
<string name="tan" msgid="7957459816738554960">"tan"</string>
@@ -41,4 +41,5 @@
<string name="basic" msgid="7691469861698059753">"基本面板"</string>
<string name="advanced" msgid="7122495413742976492">"進階面板"</string>
<string name="clear_history" msgid="8458043980601165012">"清除記錄"</string>
+ <string name="text_copied_toast" msgid="8283471249866321961">"文字已複製"</string>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 76807d5..6d64e7c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -41,8 +41,8 @@
<string name="digit9">9</string>
<!-- Button name on screen to delete the last entered digit or operator -->
<string name="del">DELETE</string>
- <!-- Button name on screen to clear the entire calculation field -->
- <string name="clear">CLEAR</string>
+ <!-- Button name on screen to clear the entire calculation field. [CHAR LIMIT=6] -->
+ <string name="clear">CLR</string>
<!-- Do not translate. Unicode division sign; don't translate. Displayed as button on screen. -->
<string name="div">\u00f7</string>
<!-- Do not translate. Unicode multiplication sign; don't translate. Displayed as button on screen. -->
@@ -88,4 +88,6 @@
<string name="advanced">Advanced panel</string>
<!-- Menu item text to clear the calculation history. -->
<string name="clear_history">Clear history</string>
+ <!-- Toast shown when text is copied to the clipboard. -->
+ <string name="text_copied_toast">Text copied</string>
</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 9eac97d..b41cb07 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -1,5 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
<resources>
+ <dimen name="btn_digit_text_size">40sp</dimen>
+ <dimen name="btn_operation_text_size">40sp</dimen>
+ <dimen name="btn_function_text_size">30sp</dimen>
+ <dimen name="btn_clear_text_size">30sp</dimen>
+ <dimen name="display_text_size">30sp</dimen>
+
<style name="button_style">
<item name="android:textSize">40dp</item>
<item name="android:layout_width">match_parent</item>
@@ -19,7 +39,8 @@
</style>
<style name="display_style">
- <item name="android:textSize">40dp</item>
+ <item name="android:textSize">@dimen/display_text_size</item>
+ <item name="android:inputType">text</item>
<item name="android:gravity">right|center_vertical</item>
<item name="android:textColor">#ffffff</item>
<item name="android:maxLines">1</item>
@@ -29,4 +50,40 @@
<item name="android:layout_height">match_parent</item>
<item name="android:padding">8dp</item>
</style>
+
+ <style name="btn_row_style">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">0dip</item>
+ <item name="android:layout_weight">1</item>
+ <item name="android:orientation">horizontal</item>
+ </style>
+
+ <style name="btn_function_cell_style">
+ <item name="android:layout_width">0dip</item>
+ <item name="android:layout_weight">1</item>
+ <item name="android:layout_height">match_parent</item>
+ <item name="android:background">@drawable/btn_function</item>
+ <item name="android:textSize">@dimen/btn_function_text_size</item>
+ </style>
+
+ <style name="btn_operation_cell_style">
+ <item name="android:layout_width">0dip</item>
+ <item name="android:layout_weight">1</item>
+ <item name="android:layout_height">match_parent</item>
+ <item name="android:background">@drawable/btn_function</item>
+ <item name="android:textSize">@dimen/btn_operation_text_size</item>
+ </style>
+
+ <style name="btn_digit_cell_style">
+ <item name="android:layout_width">0dip</item>
+ <item name="android:layout_weight">1</item>
+ <item name="android:layout_height">match_parent</item>
+ <item name="android:background">@drawable/btn_digit</item>
+ <item name="android:textSize">@dimen/btn_digit_text_size</item>
+ </style>
+
+ <style name="btn_clear">
+ <item name="android:background">?android:attr/selectableItemBackground</item>
+ <item name="android:textSize">@dimen/btn_clear_text_size</item>
+ </style>
</resources>
diff --git a/src/com/android/calculator2/Calculator.java b/src/com/android/calculator2/Calculator.java
index 768a317..c7227fa 100644
--- a/src/com/android/calculator2/Calculator.java
+++ b/src/com/android/calculator2/Calculator.java
@@ -18,31 +18,27 @@
import android.app.Activity;
import android.os.Bundle;
-import android.util.Log;
import android.util.Config;
-import android.util.TypedValue;
-import android.view.Display;
+import android.util.Log;
+import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
-import android.view.KeyEvent;
-import android.widget.Button;
-import android.widget.TextView;
-public class Calculator extends Activity {
+public class Calculator extends Activity implements PanelSwitcher.Listener, Logic.Listener {
EventListener mListener = new EventListener();
private CalculatorDisplay mDisplay;
private Persist mPersist;
private History mHistory;
private Logic mLogic;
private PanelSwitcher mPanelSwitcher;
+ private View mClearButton;
+ private View mBackspaceButton;
private static final int CMD_CLEAR_HISTORY = 1;
private static final int CMD_BASIC_PANEL = 2;
private static final int CMD_ADVANCED_PANEL = 3;
- private static final int HVGA_WIDTH_PIXELS = 320;
-
static final int BASIC_PANEL = 0;
static final int ADVANCED_PANEL = 1;
@@ -58,59 +54,116 @@
setContentView(R.layout.main);
mPersist = new Persist(this);
+ mPersist.load();
+
mHistory = mPersist.history;
mDisplay = (CalculatorDisplay) findViewById(R.id.display);
- mLogic = new Logic(this, mHistory, mDisplay, (Button) findViewById(R.id.equal));
+ mClearButton = findViewById(R.id.clear);
+ mClearButton.setOnClickListener(mListener);
+ mClearButton.setOnLongClickListener(mListener);
+
+ mBackspaceButton = findViewById(R.id.del);
+ mBackspaceButton.setOnClickListener(mListener);
+ mBackspaceButton.setOnLongClickListener(mListener);
+
+ mLogic = new Logic(this, mHistory, mDisplay);
+ mLogic.setListener(this);
+
+ mLogic.setDeleteMode(mPersist.getDeleteMode());
+ mLogic.setLineLength(mDisplay.getMaxDigits());
+
HistoryAdapter historyAdapter = new HistoryAdapter(this, mHistory, mLogic);
mHistory.setObserver(historyAdapter);
mPanelSwitcher = (PanelSwitcher) findViewById(R.id.panelswitch);
- mPanelSwitcher.setCurrentIndex(state==null ? 0 : state.getInt(STATE_CURRENT_VIEW, 0));
+ if (mPanelSwitcher != null) {
+ mPanelSwitcher.setCurrentIndex(state==null ? 0 : state.getInt(STATE_CURRENT_VIEW, 0));
+ mPanelSwitcher.setListener(this);
+ }
mListener.setHandler(mLogic, mPanelSwitcher);
-
mDisplay.setOnKeyListener(mListener);
- View view;
- if ((view = findViewById(R.id.del)) != null) {
-// view.setOnClickListener(mListener);
- view.setOnLongClickListener(mListener);
+ setOnClickListener(R.id.digit0);
+ setOnClickListener(R.id.digit1);
+ setOnClickListener(R.id.digit2);
+ setOnClickListener(R.id.digit3);
+ setOnClickListener(R.id.digit4);
+ setOnClickListener(R.id.digit5);
+ setOnClickListener(R.id.digit6);
+ setOnClickListener(R.id.digit7);
+ setOnClickListener(R.id.digit8);
+ setOnClickListener(R.id.digit9);
+ setOnClickListener(R.id.dot);
+
+ setOnClickListener(R.id.plus);
+ setOnClickListener(R.id.minus);
+ setOnClickListener(R.id.div);
+ setOnClickListener(R.id.mul);
+ setOnClickListener(R.id.leftParen);
+ setOnClickListener(R.id.rightParen);
+ setOnClickListener(R.id.equal);
+
+ setOnClickListener(R.id.sin);
+ setOnClickListener(R.id.ln);
+ setOnClickListener(R.id.cos);
+ setOnClickListener(R.id.lg);
+ setOnClickListener(R.id.tan);
+ setOnClickListener(R.id.e);
+ setOnClickListener(R.id.pi);
+ setOnClickListener(R.id.power);
+ setOnClickListener(R.id.factorial);
+ setOnClickListener(R.id.sqrt);
+
+ mLogic.resumeWithHistory();
+ updateDeleteMode();
+ }
+
+ private void updateDeleteMode() {
+ if (mLogic.getDeleteMode() == Logic.DELETE_MODE_BACKSPACE) {
+ mClearButton.setVisibility(View.GONE);
+ mBackspaceButton.setVisibility(View.VISIBLE);
+ } else {
+ mClearButton.setVisibility(View.VISIBLE);
+ mBackspaceButton.setVisibility(View.GONE);
}
- /*
- if ((view = findViewById(R.id.clear)) != null) {
- view.setOnClickListener(mListener);
- }
- */
+ }
+
+ private void setOnClickListener(int id) {
+ findViewById(id).setOnClickListener(mListener);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuItem item;
-
+
item = menu.add(0, CMD_CLEAR_HISTORY, 0, R.string.clear_history);
+ item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
item.setIcon(R.drawable.clear_history);
-
+
item = menu.add(0, CMD_ADVANCED_PANEL, 0, R.string.advanced);
+ item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
item.setIcon(R.drawable.advanced);
-
+
item = menu.add(0, CMD_BASIC_PANEL, 0, R.string.basic);
+ item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
item.setIcon(R.drawable.simple);
return true;
}
-
+
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
- menu.findItem(CMD_BASIC_PANEL).setVisible(mPanelSwitcher != null &&
+ menu.findItem(CMD_BASIC_PANEL).setVisible(mPanelSwitcher != null &&
mPanelSwitcher.getCurrentIndex() == ADVANCED_PANEL);
-
- menu.findItem(CMD_ADVANCED_PANEL).setVisible(mPanelSwitcher != null &&
+
+ menu.findItem(CMD_ADVANCED_PANEL).setVisible(mPanelSwitcher != null &&
mPanelSwitcher.getCurrentIndex() == BASIC_PANEL);
-
+
return true;
}
@@ -122,14 +175,14 @@
break;
case CMD_BASIC_PANEL:
- if (mPanelSwitcher != null &&
+ if (mPanelSwitcher != null &&
mPanelSwitcher.getCurrentIndex() == ADVANCED_PANEL) {
mPanelSwitcher.moveRight();
}
break;
case CMD_ADVANCED_PANEL:
- if (mPanelSwitcher != null &&
+ if (mPanelSwitcher != null &&
mPanelSwitcher.getCurrentIndex() == BASIC_PANEL) {
mPanelSwitcher.moveLeft();
}
@@ -141,20 +194,23 @@
@Override
protected void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
- state.putInt(STATE_CURRENT_VIEW, mPanelSwitcher.getCurrentIndex());
+ if (mPanelSwitcher != null) {
+ state.putInt(STATE_CURRENT_VIEW, mPanelSwitcher.getCurrentIndex());
+ }
}
@Override
public void onPause() {
super.onPause();
mLogic.updateHistory();
+ mPersist.setDeleteMode(mLogic.getDeleteMode());
mPersist.save();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent keyEvent) {
- if (keyCode == KeyEvent.KEYCODE_BACK
- && mPanelSwitcher.getCurrentIndex() == ADVANCED_PANEL) {
+ if (keyCode == KeyEvent.KEYCODE_BACK
+ && mPanelSwitcher != null && mPanelSwitcher.getCurrentIndex() == ADVANCED_PANEL) {
mPanelSwitcher.moveRight();
return true;
} else {
@@ -168,16 +224,13 @@
}
}
- /**
- * The font sizes in the layout files are specified for a HVGA display.
- * Adjust the font sizes accordingly if we are running on a different
- * display.
- */
- public void adjustFontSize(TextView view) {
- float fontPixelSize = view.getTextSize();
- Display display = getWindowManager().getDefaultDisplay();
- int h = Math.min(display.getWidth(), display.getHeight());
- float ratio = (float)h/HVGA_WIDTH_PIXELS;
- view.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontPixelSize*ratio);
+ @Override
+ public void onChange() {
+ invalidateOptionsMenu();
+ }
+
+ @Override
+ public void onDeleteModeChange() {
+ updateDeleteMode();
}
}
diff --git a/src/com/android/calculator2/CalculatorDisplay.java b/src/com/android/calculator2/CalculatorDisplay.java
index 130446e..3b48e1d 100644
--- a/src/com/android/calculator2/CalculatorDisplay.java
+++ b/src/com/android/calculator2/CalculatorDisplay.java
@@ -17,66 +17,47 @@
package com.android.calculator2;
import android.content.Context;
+import android.graphics.Rect;
import android.text.Editable;
import android.text.Spanned;
import android.text.method.NumberKeyListener;
import android.util.AttributeSet;
import android.view.animation.TranslateAnimation;
-import android.text.InputType;
+import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
-import android.widget.TextView;
import android.widget.ViewSwitcher;
-import android.graphics.Rect;
-import android.graphics.Paint;
/**
* Provides vertical scrolling for the input/result EditText.
*/
class CalculatorDisplay extends ViewSwitcher {
+
+ private static final String ATTR_MAX_DIGITS = "maxDigits";
+ private static final int DEFAULT_MAX_DIGITS = 10;
+
// only these chars are accepted from keyboard
- private static final char[] ACCEPTED_CHARS =
+ private static final char[] ACCEPTED_CHARS =
"0123456789.+-*/\u2212\u00d7\u00f7()!%^".toCharArray();
private static final int ANIM_DURATION = 500;
+
enum Scroll { UP, DOWN, NONE }
-
+
TranslateAnimation inAnimUp;
TranslateAnimation outAnimUp;
TranslateAnimation inAnimDown;
TranslateAnimation outAnimDown;
private Logic mLogic;
- private boolean mComputedLineLength = false;
-
+ private int mMaxDigits = DEFAULT_MAX_DIGITS;
+
public CalculatorDisplay(Context context, AttributeSet attrs) {
super(context, attrs);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
- Calculator calc = (Calculator) getContext();
- calc.adjustFontSize((TextView)getChildAt(0));
- calc.adjustFontSize((TextView)getChildAt(1));
+ mMaxDigits = attrs.getAttributeIntValue(null, ATTR_MAX_DIGITS, DEFAULT_MAX_DIGITS);
}
- @Override
- protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
- super.onLayout(changed, left, top, right, bottom);
- if (!mComputedLineLength) {
- mLogic.setLineLength(getNumberFittingDigits((TextView) getCurrentView()));
- mComputedLineLength = true;
- }
- }
-
- // compute the maximum number of digits that fit in the
- // calculator display without scrolling.
- private int getNumberFittingDigits(TextView display) {
- int available = display.getWidth()
- - display.getTotalPaddingLeft() - display.getTotalPaddingRight();
- Paint paint = display.getPaint();
- float digitWidth = paint.measureText("2222222222") / 10f;
- return (int) (available / digitWidth);
+ public int getMaxDigits() {
+ return mMaxDigits;
}
protected void setLogic(Logic logic) {
@@ -84,14 +65,15 @@
NumberKeyListener calculatorKeyListener =
new NumberKeyListener() {
public int getInputType() {
- // Don't display soft keyboard.
- return InputType.TYPE_NULL;
+ return EditorInfo.TYPE_CLASS_TEXT;
}
-
+
+ @Override
protected char[] getAcceptedChars() {
return ACCEPTED_CHARS;
}
+ @Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
/* the EditText should still accept letters (eg. 'sin')
@@ -107,6 +89,7 @@
text.setBackgroundDrawable(null);
text.setEditableFactory(factory);
text.setKeyListener(calculatorKeyListener);
+ text.setSingleLine();
}
}
@@ -138,45 +121,40 @@
EditText getEditText() {
return (EditText) getCurrentView();
}
-
+
Editable getText() {
EditText text = (EditText) getCurrentView();
return text.getText();
}
-
+
void setText(CharSequence text, Scroll dir) {
if (getText().length() == 0) {
dir = Scroll.NONE;
}
-
+
if (dir == Scroll.UP) {
setInAnimation(inAnimUp);
- setOutAnimation(outAnimUp);
+ setOutAnimation(outAnimUp);
} else if (dir == Scroll.DOWN) {
setInAnimation(inAnimDown);
- setOutAnimation(outAnimDown);
+ setOutAnimation(outAnimDown);
} else { // Scroll.NONE
setInAnimation(null);
setOutAnimation(null);
}
-
+
EditText editText = (EditText) getNextView();
editText.setText(text);
//Calculator.log("selection to " + text.length() + "; " + text);
editText.setSelection(text.length());
showNext();
}
-
- void setSelection(int i) {
- EditText text = (EditText) getCurrentView();
- text.setSelection(i);
- }
-
+
int getSelectionStart() {
EditText text = (EditText) getCurrentView();
return text.getSelectionStart();
}
-
+
@Override
protected void onFocusChanged(boolean gain, int direction, Rect prev) {
//Calculator.log("focus " + gain + "; " + direction + "; " + prev);
diff --git a/src/com/android/calculator2/CalculatorEditText.java b/src/com/android/calculator2/CalculatorEditText.java
new file mode 100644
index 0000000..a61ad95
--- /dev/null
+++ b/src/com/android/calculator2/CalculatorEditText.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.calculator2;
+
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.graphics.Rect;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.ActionMode;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.MotionEvent;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
+import android.widget.Toast;
+
+public class CalculatorEditText extends EditText {
+
+ public CalculatorEditText(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ setCustomSelectionActionModeCallback(new NoTextSelectionMode());
+ }
+
+ @Override
+ protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
+ super.onFocusChanged(focused, direction, previouslyFocusedRect);
+
+ InputMethodManager imm = ((InputMethodManager) getContext().
+ getSystemService(Context.INPUT_METHOD_SERVICE));
+ if (imm != null && imm.isActive(this)) {
+ imm.hideSoftInputFromWindow(getApplicationWindowToken(), 0);
+ }
+ }
+
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ if (event.getActionMasked() == MotionEvent.ACTION_UP) {
+ // Hack to prevent keyboard and insertion handle from showing.
+ cancelLongPress();
+ }
+ return super.onTouchEvent(event);
+ }
+
+ @Override
+ public boolean performLongClick() {
+ final Editable text = getText();
+ if (TextUtils.isEmpty(text)) {
+ return false;
+ }
+
+ copyContent();
+ return true;
+ }
+
+ private void copyContent() {
+ final Editable text = getText();
+ setSelection(0, text.length());
+ ClipboardManager clipboard = (ClipboardManager) getContext().getSystemService(
+ Context.CLIPBOARD_SERVICE);
+ clipboard.setPrimaryClip(ClipData.newPlainText(null, text));
+ Toast.makeText(getContext(), R.string.text_copied_toast, Toast.LENGTH_SHORT).show();
+ }
+
+ class NoTextSelectionMode implements ActionMode.Callback {
+ @Override
+ public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+ return false;
+ }
+
+ @Override
+ public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+ copyContent();
+ // Make the selection highlight blink
+ postDelayed(new Runnable() {
+ public void run() {
+ setSelection(getSelectionEnd());
+ }
+ }, 200);
+ // Prevents the selection action mode on double tap.
+ return false;
+ }
+
+ @Override
+ public void onDestroyActionMode(ActionMode mode) {}
+
+ @Override
+ public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+ return false;
+ }
+ }
+}
diff --git a/src/com/android/calculator2/ColorButton.java b/src/com/android/calculator2/ColorButton.java
index c95ea8b..8aa9204 100644
--- a/src/com/android/calculator2/ColorButton.java
+++ b/src/com/android/calculator2/ColorButton.java
@@ -34,13 +34,13 @@
int CLICK_FEEDBACK_COLOR;
static final int CLICK_FEEDBACK_INTERVAL = 10;
static final int CLICK_FEEDBACK_DURATION = 350;
-
+
float mTextX;
float mTextY;
long mAnimStart;
OnClickListener mListener;
Paint mFeedbackPaint;
-
+
public ColorButton(Context context, AttributeSet attrs) {
super(context, attrs);
Calculator calc = (Calculator) context;
@@ -61,14 +61,12 @@
mFeedbackPaint.setStyle(Style.STROKE);
mFeedbackPaint.setStrokeWidth(2);
getPaint().setColor(res.getColor(R.color.button_text));
-
- mAnimStart = -1;
- calc.adjustFontSize(this);
+ mAnimStart = -1;
}
- @Override
+ @Override
public void onSizeChanged(int w, int h, int oldW, int oldH) {
measureText();
}
@@ -96,7 +94,7 @@
public void onDraw(Canvas canvas) {
if (mAnimStart != -1) {
int animDuration = (int) (System.currentTimeMillis() - mAnimStart);
-
+
if (animDuration >= CLICK_FEEDBACK_DURATION) {
mAnimStart = -1;
} else {
@@ -106,16 +104,16 @@
} else if (isPressed()) {
drawMagicFlame(0, canvas);
}
-
+
CharSequence text = getText();
canvas.drawText(text, 0, text.length(), mTextX, mTextY, getPaint());
}
public void animateClickFeedback() {
mAnimStart = System.currentTimeMillis();
- invalidate();
- }
-
+ invalidate();
+ }
+
@Override
public boolean onTouchEvent(MotionEvent event) {
boolean result = super.onTouchEvent(event);
diff --git a/src/com/android/calculator2/EventListener.java b/src/com/android/calculator2/EventListener.java
index 42f356c..78f3bab 100644
--- a/src/com/android/calculator2/EventListener.java
+++ b/src/com/android/calculator2/EventListener.java
@@ -20,18 +20,18 @@
import android.view.KeyEvent;
import android.widget.Button;
-class EventListener implements View.OnKeyListener,
- View.OnClickListener,
+class EventListener implements View.OnKeyListener,
+ View.OnClickListener,
View.OnLongClickListener {
Logic mHandler;
PanelSwitcher mPanelSwitcher;
-
+
void setHandler(Logic handler, PanelSwitcher panelSwitcher) {
mHandler = handler;
mPanelSwitcher = panelSwitcher;
}
-
- //@Override
+
+ @Override
public void onClick(View view) {
int id = view.getId();
switch (id) {
@@ -39,15 +39,13 @@
mHandler.onDelete();
break;
- case R.id.equal:
- mHandler.onEnter();
- break;
-
- /*
case R.id.clear:
mHandler.onClear();
break;
- */
+
+ case R.id.equal:
+ mHandler.onEnter();
+ break;
default:
if (view instanceof Button) {
@@ -57,15 +55,15 @@
text += '(';
}
mHandler.insert(text);
- if (mPanelSwitcher != null &&
+ if (mPanelSwitcher != null &&
mPanelSwitcher.getCurrentIndex() == Calculator.ADVANCED_PANEL) {
mPanelSwitcher.moveRight();
- }
+ }
}
}
}
- //@Override
+ @Override
public boolean onLongClick(View view) {
int id = view.getId();
if (id == R.id.del) {
@@ -74,13 +72,11 @@
}
return false;
}
-
- private static final char[] EQUAL = {'='};
- //@Override
+ @Override
public boolean onKey(View view, int keyCode, KeyEvent keyEvent) {
int action = keyEvent.getAction();
-
+
if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT ||
keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
boolean eat = mHandler.eatHorizontalMove(keyCode == KeyEvent.KEYCODE_DPAD_LEFT);
@@ -93,8 +89,8 @@
}
//Calculator.log("KEY " + keyCode + "; " + action);
-
- if (keyEvent.getMatch(EQUAL, keyEvent.getMetaState()) == '=') {
+
+ if (keyEvent.getUnicodeChar() == '=') {
if (action == KeyEvent.ACTION_UP) {
mHandler.onEnter();
}
@@ -108,7 +104,7 @@
return false;
}
- /*
+ /*
We should act on KeyEvent.ACTION_DOWN, but strangely
sometimes the DOWN event isn't received, only the UP.
So the workaround is to act on UP...
@@ -116,17 +112,17 @@
*/
if (action == KeyEvent.ACTION_UP) {
- switch (keyCode) {
+ switch (keyCode) {
case KeyEvent.KEYCODE_ENTER:
case KeyEvent.KEYCODE_DPAD_CENTER:
mHandler.onEnter();
break;
-
+
case KeyEvent.KEYCODE_DPAD_UP:
mHandler.onUp();
break;
- case KeyEvent.KEYCODE_DPAD_DOWN:
+ case KeyEvent.KEYCODE_DPAD_DOWN:
mHandler.onDown();
break;
}
diff --git a/src/com/android/calculator2/Logic.java b/src/com/android/calculator2/Logic.java
index 0e8c19f..92cfa6a 100644
--- a/src/com/android/calculator2/Logic.java
+++ b/src/com/android/calculator2/Logic.java
@@ -16,8 +16,9 @@
package com.android.calculator2;
+import com.android.calculator2.CalculatorDisplay.Scroll;
+
import android.view.KeyEvent;
-import android.widget.Button;
import android.widget.EditText;
import android.content.Context;
@@ -35,22 +36,48 @@
private static final String INFINITY_UNICODE = "\u221e";
+ public static final String MARKER_EVALUATE_ON_RESUME = "?";
+
// the two strings below are the result of Double.toString() for Infinity & NaN
// they are not output to the user and don't require internationalization
- private static final String INFINITY = "Infinity";
+ private static final String INFINITY = "Infinity";
private static final String NAN = "NaN";
static final char MINUS = '\u2212';
private final String mErrorString;
- Logic(Context context, History history, CalculatorDisplay display, Button equalButton) {
+ public final static int DELETE_MODE_BACKSPACE = 0;
+ public final static int DELETE_MODE_CLEAR = 1;
+
+ private int mDeleteMode = DELETE_MODE_BACKSPACE;
+
+ public interface Listener {
+ void onDeleteModeChange();
+ }
+
+ private Listener mListener;
+
+ Logic(Context context, History history, CalculatorDisplay display) {
mErrorString = context.getResources().getString(R.string.error);
mHistory = history;
mDisplay = display;
mDisplay.setLogic(this);
+ }
- clearWithHistory(false);
+ public void setListener(Listener listener) {
+ this.mListener = listener;
+ }
+
+ public void setDeleteMode(int mode) {
+ if (mDeleteMode != mode) {
+ mDeleteMode = mode;
+ mListener.onDeleteModeChange();
+ }
+ }
+
+ public int getDeleteMode() {
+ return mDeleteMode;
}
void setLineLength(int nDigits) {
@@ -60,7 +87,7 @@
boolean eatHorizontalMove(boolean toLeft) {
EditText editText = mDisplay.getEditText();
int cursorPos = editText.getSelectionStart();
- return toLeft ? cursorPos == 0 : cursorPos >= editText.length();
+ return toLeft ? cursorPos == 0 : cursorPos >= editText.length();
}
private String getText() {
@@ -69,17 +96,27 @@
void insert(String delta) {
mDisplay.insert(delta);
+ setDeleteMode(DELETE_MODE_BACKSPACE);
}
- private void setText(CharSequence text) {
- mDisplay.setText(text, CalculatorDisplay.Scroll.UP);
+ public void resumeWithHistory() {
+ clearWithHistory(false);
}
private void clearWithHistory(boolean scroll) {
- mDisplay.setText(mHistory.getText(),
- scroll ? CalculatorDisplay.Scroll.UP : CalculatorDisplay.Scroll.NONE);
- mResult = "";
- mIsError = false;
+ String text = mHistory.getText();
+ if (MARKER_EVALUATE_ON_RESUME.equals(text)) {
+ if (!mHistory.moveToPrevious()) {
+ text = "";
+ }
+ text = mHistory.getText();
+ evaluateAndShowResult(text, CalculatorDisplay.Scroll.NONE);
+ } else {
+ mResult = "";
+ mDisplay.setText(
+ text, scroll ? CalculatorDisplay.Scroll.UP : CalculatorDisplay.Scroll.NONE);
+ mIsError = false;
+ }
}
private void clear(boolean scroll) {
@@ -91,12 +128,14 @@
mResult = "";
mIsError = false;
updateHistory();
+
+ setDeleteMode(DELETE_MODE_BACKSPACE);
}
boolean acceptInsert(String delta) {
String text = getText();
return !mIsError &&
- (!mResult.equals(text) ||
+ (!mResult.equals(text) ||
isOperator(delta) ||
mDisplay.getSelectionStart() != text.length());
}
@@ -111,28 +150,31 @@
}
void onClear() {
- clear(false);
+ clear(mDeleteMode == DELETE_MODE_CLEAR);
}
void onEnter() {
- String text = getText();
- if (text.equals(mResult)) {
- clearWithHistory(false); //clear after an Enter on result
+ if (mDeleteMode == DELETE_MODE_CLEAR) {
+ clearWithHistory(false); // clear after an Enter on result
} else {
- mHistory.enter(text);
- try {
- mResult = evaluate(text);
- } catch (SyntaxException e) {
- mIsError = true;
- mResult = mErrorString;
+ evaluateAndShowResult(getText(), CalculatorDisplay.Scroll.UP);
+ }
+ }
+
+ public void evaluateAndShowResult(String text, Scroll scroll) {
+ try {
+ String result = evaluate(text);
+ if (!text.equals(result)) {
+ mHistory.enter(text);
+ mResult = result;
+ mDisplay.setText(mResult, scroll);
+ setDeleteMode(DELETE_MODE_CLEAR);
}
- if (text.equals(mResult)) {
- //no need to show result, it is exactly what the user entered
- clearWithHistory(true);
- } else {
- setText(mResult);
- //mEqualButton.setText(mEnterString);
- }
+ } catch (SyntaxException e) {
+ mIsError = true;
+ mResult = mErrorString;
+ mDisplay.setText(mResult, scroll);
+ setDeleteMode(DELETE_MODE_CLEAR);
}
}
@@ -157,7 +199,12 @@
}
void updateHistory() {
- mHistory.update(getText());
+ String text = getText();
+ if (text.equals(mResult)) {
+ mHistory.update(MARKER_EVALUATE_ON_RESUME);
+ } else {
+ mHistory.update(getText());
+ }
}
private static final int ROUND_DIGITS = 1;
@@ -173,12 +220,62 @@
--size;
}
- String result = Util.doubleToString(mSymbols.eval(input), mLineLength, ROUND_DIGITS);
+ double value = mSymbols.eval(input);
+
+ String result = "";
+ for (int precision = mLineLength; precision > 6; precision--) {
+ result = tryFormattingWithPrecision(value, precision);
+ if (result.length() <= mLineLength) {
+ break;
+ }
+ }
+ return result.replace('-', MINUS).replace(INFINITY, INFINITY_UNICODE);
+ }
+
+ private String tryFormattingWithPrecision(double value, int precision) {
+ // The standard scientific formatter is basically what we need. We will
+ // start with what it produces and then massage it a bit.
+ String result = String.format("%" + mLineLength + "." + precision + "g", value);
if (result.equals(NAN)) { // treat NaN as Error
mIsError = true;
return mErrorString;
}
- return result.replace('-', MINUS).replace(INFINITY, INFINITY_UNICODE);
+ String mantissa = result;
+ String exponent = null;
+ int e = result.indexOf('e');
+ if (e != -1) {
+ mantissa = result.substring(0, e);
+
+ // Strip "+" and unnecessary 0's from the exponent
+ exponent = result.substring(e + 1);
+ if (exponent.startsWith("+")) {
+ exponent = exponent.substring(1);
+ }
+ exponent = String.valueOf(Integer.parseInt(exponent));
+ } else {
+ mantissa = result;
+ }
+
+ int period = mantissa.indexOf('.');
+ if (period == -1) {
+ period = mantissa.indexOf(',');
+ }
+ if (period != -1) {
+ // Strip trailing 0's
+ while (mantissa.length() > 0 && mantissa.endsWith("0")) {
+ mantissa = mantissa.substring(0, mantissa.length() - 1);
+ }
+ if (mantissa.length() == period + 1) {
+ mantissa = mantissa.substring(0, mantissa.length() - 1);
+ }
+ }
+
+ if (exponent != null) {
+ result = mantissa + 'e' + exponent;
+ } else {
+ result = mantissa;
+ }
+ return result;
}
static boolean isOperator(String text) {
diff --git a/src/com/android/calculator2/PanelSwitcher.java b/src/com/android/calculator2/PanelSwitcher.java
index cc62848..6e64259 100644
--- a/src/com/android/calculator2/PanelSwitcher.java
+++ b/src/com/android/calculator2/PanelSwitcher.java
@@ -16,15 +16,18 @@
package com.android.calculator2;
-import android.view.animation.TranslateAnimation;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.GestureDetector;
-import android.widget.FrameLayout;
import android.content.Context;
import android.util.AttributeSet;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.animation.AccelerateDecelerateInterpolator;
+import android.view.animation.Animation;
+import android.view.animation.Animation.AnimationListener;
+import android.view.animation.TranslateAnimation;
+import android.widget.FrameLayout;
-class PanelSwitcher extends FrameLayout {
+class PanelSwitcher extends FrameLayout implements AnimationListener {
private static final int MAJOR_MOVE = 60;
private static final int ANIM_DURATION = 400;
@@ -43,10 +46,17 @@
private static final int RIGHT = 2;
private int mPreviousMove;
+ public interface Listener {
+ void onChange();
+ }
+
+ private Listener mListener;
+
public PanelSwitcher(Context context, AttributeSet attrs) {
super(context, attrs);
mCurrentView = 0;
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
+ @Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
int dx = (int) (e2.getX() - e1.getX());
@@ -67,9 +77,17 @@
});
}
+ public void setListener(Listener listener) {
+ this.mListener = listener;
+ }
+
void setCurrentIndex(int current) {
+ boolean changed = mCurrentView != current;
mCurrentView = current;
updateCurrentView();
+ if (changed && mListener != null) {
+ mListener.onChange();
+ }
}
private void updateCurrentView() {
@@ -78,12 +96,14 @@
}
}
- @Override
+ @Override
public void onSizeChanged(int w, int h, int oldW, int oldH) {
mWidth = w;
inLeft = new TranslateAnimation(mWidth, 0, 0, 0);
- outLeft = new TranslateAnimation(0, -mWidth, 0, 0);
+ inLeft.setAnimationListener(this);
+ outLeft = new TranslateAnimation(0, -mWidth, 0, 0);
inRight = new TranslateAnimation(-mWidth, 0, 0, 0);
+ inRight.setAnimationListener(this);
outRight = new TranslateAnimation(0, mWidth, 0, 0);
inLeft.setDuration(ANIM_DURATION);
@@ -92,6 +112,7 @@
outRight.setDuration(ANIM_DURATION);
}
+ @Override
protected void onFinishInflate() {
int count = getChildCount();
mChildren = new View[count];
@@ -141,4 +162,19 @@
int getCurrentIndex() {
return mCurrentView;
}
+
+ @Override
+ public void onAnimationRepeat(Animation animation) {
+ }
+
+ @Override
+ public void onAnimationStart(Animation animation) {
+ }
+
+ @Override
+ public void onAnimationEnd(Animation animation) {
+ if (mListener != null) {
+ mListener.onChange();
+ }
+ }
}
diff --git a/src/com/android/calculator2/Persist.java b/src/com/android/calculator2/Persist.java
index 454f10b..208faed 100644
--- a/src/com/android/calculator2/Persist.java
+++ b/src/com/android/calculator2/Persist.java
@@ -28,23 +28,33 @@
import android.content.Context;
class Persist {
- private static final int LAST_VERSION = 1;
+ private static final int LAST_VERSION = 2;
private static final String FILE_NAME = "calculator.data";
private Context mContext;
History history = new History();
+ private int mDeleteMode;
Persist(Context context) {
this.mContext = context;
- load();
}
- private void load() {
+ public void setDeleteMode(int mode) {
+ mDeleteMode = mode;
+ }
+
+ public int getDeleteMode() {
+ return mDeleteMode;
+ }
+
+ public void load() {
try {
InputStream is = new BufferedInputStream(mContext.openFileInput(FILE_NAME), 8192);
DataInputStream in = new DataInputStream(is);
int version = in.readInt();
- if (version > LAST_VERSION) {
+ if (version > 1) {
+ mDeleteMode = in.readInt();
+ } else if (version > LAST_VERSION) {
throw new IOException("data version " + version + "; expected " + LAST_VERSION);
}
history = new History(version, in);
@@ -56,15 +66,16 @@
}
}
- void save() {
+ public void save() {
try {
OutputStream os = new BufferedOutputStream(mContext.openFileOutput(FILE_NAME, 0), 8192);
DataOutputStream out = new DataOutputStream(os);
out.writeInt(LAST_VERSION);
+ out.writeInt(mDeleteMode);
history.write(out);
out.close();
} catch (IOException e) {
Calculator.log("" + e);
- }
+ }
}
}