diff --git a/android-app-core/AndroidManifest.xml b/android-app-core/AndroidManifest.xml
index 312325db..cfe0783d 100644
--- a/android-app-core/AndroidManifest.xml
+++ b/android-app-core/AndroidManifest.xml
@@ -1,6 +1,5 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/android-app-core/pom.xml b/android-app-core/pom.xml
index 0d45fb72..300fa660 100644
--- a/android-app-core/pom.xml
+++ b/android-app-core/pom.xml
@@ -1,16 +1,16 @@
- 4.0.0
+ 4.0.0
-
- org.solovyev.android
- calculatorpp-parent
- 1.6.3-SNAPSHOT
-
+
+ org.solovyev.android
+ calculatorpp-parent
+ 1.6.3-SNAPSHOT
+
- org.solovyev.android
- calculatorpp-android-app-core
- 1.6.3-SNAPSHOT
+ org.solovyev.android
+ calculatorpp-android-app-core
+ 1.6.3-SNAPSHOTCalculator++ Application Coreapklib
@@ -21,43 +21,43 @@
calculatorpp-core
-
- org.solovyev
- common-core
-
+
+ org.solovyev
+ common-core
+
-
- org.solovyev
- common-text
-
+
+ org.solovyev
+ common-text
+
-
- org.solovyev.android
- android-common-all
- apklib
-
+
+ org.solovyev.android
+ android-common-all
+ apklib
+
-
- org.solovyev
- jscl
-
+
+ org.solovyev
+ jscl
+
-
- com.actionbarsherlock
- library
- apklib
-
+
+ com.actionbarsherlock
+ library
+ apklib
+
-
- com.google.android
- android
- provided
-
+
+ com.google.android
+ android
+ provided
+
-
- com.google.android
- support-v4
-
+
+ com.google.android
+ support-v4
+
@@ -71,5 +71,5 @@
-
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/blue_button.xml b/android-app-core/res/drawable/blue_button.xml
index dc5f61c0..3f190da7 100644
--- a/android-app-core/res/drawable/blue_button.xml
+++ b/android-app-core/res/drawable/blue_button.xml
@@ -2,9 +2,8 @@
-
+
-
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/blue_button_dark.xml b/android-app-core/res/drawable/blue_button_dark.xml
index 39fd8f86..38247e80 100644
--- a/android-app-core/res/drawable/blue_button_dark.xml
+++ b/android-app-core/res/drawable/blue_button_dark.xml
@@ -2,9 +2,8 @@
-
+
-
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/blue_button_dark_shape.xml b/android-app-core/res/drawable/blue_button_dark_shape.xml
index a2bde68b..153639d6 100644
--- a/android-app-core/res/drawable/blue_button_dark_shape.xml
+++ b/android-app-core/res/drawable/blue_button_dark_shape.xml
@@ -7,8 +7,9 @@
-->
-
-
+
+
diff --git a/android-app-core/res/drawable/blue_button_shape.xml b/android-app-core/res/drawable/blue_button_shape.xml
index 4e0ef759..fd8acd78 100644
--- a/android-app-core/res/drawable/blue_button_shape.xml
+++ b/android-app-core/res/drawable/blue_button_shape.xml
@@ -1,8 +1,9 @@
-
-
+
+
diff --git a/android-app-core/res/drawable/default_abs__btn_cab_done_holo_dark.xml b/android-app-core/res/drawable/default_abs__btn_cab_done_holo_dark.xml
index 89f81b08..c029d95c 100644
--- a/android-app-core/res/drawable/default_abs__btn_cab_done_holo_dark.xml
+++ b/android-app-core/res/drawable/default_abs__btn_cab_done_holo_dark.xml
@@ -1,5 +1,4 @@
-
-
-
-
-
+
+
+
diff --git a/android-app-core/res/drawable/default_abs__item_background_holo_dark.xml b/android-app-core/res/drawable/default_abs__item_background_holo_dark.xml
index 972d516c..eb72d05b 100644
--- a/android-app-core/res/drawable/default_abs__item_background_holo_dark.xml
+++ b/android-app-core/res/drawable/default_abs__item_background_holo_dark.xml
@@ -1,5 +1,4 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/android-app-core/res/drawable/default_abs__list_selector_background_transition_holo_dark.xml b/android-app-core/res/drawable/default_abs__list_selector_background_transition_holo_dark.xml
index fc72f082..c9f87b73 100644
--- a/android-app-core/res/drawable/default_abs__list_selector_background_transition_holo_dark.xml
+++ b/android-app-core/res/drawable/default_abs__list_selector_background_transition_holo_dark.xml
@@ -1,5 +1,4 @@
-
-
-
-
+
+
diff --git a/android-app-core/res/drawable/default_abs__list_selector_holo_dark.xml b/android-app-core/res/drawable/default_abs__list_selector_holo_dark.xml
index d21ac8b3..619ff9d3 100644
--- a/android-app-core/res/drawable/default_abs__list_selector_holo_dark.xml
+++ b/android-app-core/res/drawable/default_abs__list_selector_holo_dark.xml
@@ -1,5 +1,4 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/android-app-core/res/drawable/default_abs__spinner_ab_holo_dark.xml b/android-app-core/res/drawable/default_abs__spinner_ab_holo_dark.xml
index 8b818f24..4cda1e26 100644
--- a/android-app-core/res/drawable/default_abs__spinner_ab_holo_dark.xml
+++ b/android-app-core/res/drawable/default_abs__spinner_ab_holo_dark.xml
@@ -1,5 +1,4 @@
-
-
-
-
-
-
+
+
+
+
diff --git a/android-app-core/res/drawable/default_abs__tab_indicator_ab_holo.xml b/android-app-core/res/drawable/default_abs__tab_indicator_ab_holo.xml
index 262e94c9..e538a5f4 100644
--- a/android-app-core/res/drawable/default_abs__tab_indicator_ab_holo.xml
+++ b/android-app-core/res/drawable/default_abs__tab_indicator_ab_holo.xml
@@ -1,5 +1,4 @@
-
-
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
diff --git a/android-app-core/res/drawable/gray_button.xml b/android-app-core/res/drawable/gray_button.xml
index 0475d651..967fbfc0 100644
--- a/android-app-core/res/drawable/gray_button.xml
+++ b/android-app-core/res/drawable/gray_button.xml
@@ -2,9 +2,8 @@
-
+
-
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/gray_button_dark.xml b/android-app-core/res/drawable/gray_button_dark.xml
index 8005ad57..4c45b348 100644
--- a/android-app-core/res/drawable/gray_button_dark.xml
+++ b/android-app-core/res/drawable/gray_button_dark.xml
@@ -2,9 +2,8 @@
-
+
-
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/gray_button_dark_shape.xml b/android-app-core/res/drawable/gray_button_dark_shape.xml
index 62262512..6545aa5a 100644
--- a/android-app-core/res/drawable/gray_button_dark_shape.xml
+++ b/android-app-core/res/drawable/gray_button_dark_shape.xml
@@ -1,8 +1,9 @@
-
-
+
+
diff --git a/android-app-core/res/drawable/gray_button_shape.xml b/android-app-core/res/drawable/gray_button_shape.xml
index 840e90f4..1710094b 100644
--- a/android-app-core/res/drawable/gray_button_shape.xml
+++ b/android-app-core/res/drawable/gray_button_shape.xml
@@ -1,8 +1,9 @@
-
-
+
+
diff --git a/android-app-core/res/drawable/metro_blue_abs__tab_indicator_ab_holo.xml b/android-app-core/res/drawable/metro_blue_abs__tab_indicator_ab_holo.xml
index 1f468ac7..75077a99 100644
--- a/android-app-core/res/drawable/metro_blue_abs__tab_indicator_ab_holo.xml
+++ b/android-app-core/res/drawable/metro_blue_abs__tab_indicator_ab_holo.xml
@@ -1,5 +1,4 @@
-
-
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
diff --git a/android-app-core/res/drawable/metro_blue_button.xml b/android-app-core/res/drawable/metro_blue_button.xml
index 24368529..a638c635 100644
--- a/android-app-core/res/drawable/metro_blue_button.xml
+++ b/android-app-core/res/drawable/metro_blue_button.xml
@@ -2,9 +2,8 @@
-
+
-
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/metro_blue_button_shape.xml b/android-app-core/res/drawable/metro_blue_button_shape.xml
index 656da4fb..e6fc3fc1 100644
--- a/android-app-core/res/drawable/metro_blue_button_shape.xml
+++ b/android-app-core/res/drawable/metro_blue_button_shape.xml
@@ -1,5 +1,4 @@
-
-
-
-
+
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/metro_blue_list_item.xml b/android-app-core/res/drawable/metro_blue_list_item.xml
index 2180338c..21559be3 100644
--- a/android-app-core/res/drawable/metro_blue_list_item.xml
+++ b/android-app-core/res/drawable/metro_blue_list_item.xml
@@ -2,20 +2,20 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
diff --git a/android-app-core/res/drawable/metro_button_dark.xml b/android-app-core/res/drawable/metro_button_dark.xml
index 5e752adf..01eecc9c 100644
--- a/android-app-core/res/drawable/metro_button_dark.xml
+++ b/android-app-core/res/drawable/metro_button_dark.xml
@@ -2,8 +2,7 @@
-
+
-
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/metro_button_dark_shape.xml b/android-app-core/res/drawable/metro_button_dark_shape.xml
index 65f7f671..3f06ca5b 100644
--- a/android-app-core/res/drawable/metro_button_dark_shape.xml
+++ b/android-app-core/res/drawable/metro_button_dark_shape.xml
@@ -1,5 +1,4 @@
-
-
-
-
+
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/metro_button_green.xml b/android-app-core/res/drawable/metro_button_green.xml
index ac3da7d1..4fa1e269 100644
--- a/android-app-core/res/drawable/metro_button_green.xml
+++ b/android-app-core/res/drawable/metro_button_green.xml
@@ -2,9 +2,8 @@
-
+
-
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/metro_button_green_shape.xml b/android-app-core/res/drawable/metro_button_green_shape.xml
index 247e25e9..01833fac 100644
--- a/android-app-core/res/drawable/metro_button_green_shape.xml
+++ b/android-app-core/res/drawable/metro_button_green_shape.xml
@@ -1,5 +1,4 @@
-
-
-
-
+
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/metro_button_light.xml b/android-app-core/res/drawable/metro_button_light.xml
index 30394010..1498b5aa 100644
--- a/android-app-core/res/drawable/metro_button_light.xml
+++ b/android-app-core/res/drawable/metro_button_light.xml
@@ -2,8 +2,7 @@
-
+
-
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/metro_button_light_shape.xml b/android-app-core/res/drawable/metro_button_light_shape.xml
index 2de2e09f..32bbaf5c 100644
--- a/android-app-core/res/drawable/metro_button_light_shape.xml
+++ b/android-app-core/res/drawable/metro_button_light_shape.xml
@@ -1,5 +1,4 @@
-
-
-
-
+
+
diff --git a/android-app-core/res/drawable/metro_button_pressed.xml b/android-app-core/res/drawable/metro_button_pressed.xml
index e6d88e63..386a4bad 100644
--- a/android-app-core/res/drawable/metro_button_pressed.xml
+++ b/android-app-core/res/drawable/metro_button_pressed.xml
@@ -1,5 +1,4 @@
-
-
-
-
+
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/metro_button_purple.xml b/android-app-core/res/drawable/metro_button_purple.xml
index beb401f7..d5c51b1e 100644
--- a/android-app-core/res/drawable/metro_button_purple.xml
+++ b/android-app-core/res/drawable/metro_button_purple.xml
@@ -2,9 +2,8 @@
-
+
-
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/metro_button_purple_shape.xml b/android-app-core/res/drawable/metro_button_purple_shape.xml
index 343112fc..e50eab0f 100644
--- a/android-app-core/res/drawable/metro_button_purple_shape.xml
+++ b/android-app-core/res/drawable/metro_button_purple_shape.xml
@@ -1,5 +1,4 @@
-
-
-
-
+
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/metro_green_list_item.xml b/android-app-core/res/drawable/metro_green_list_item.xml
index a46d60e8..e7292aa6 100644
--- a/android-app-core/res/drawable/metro_green_list_item.xml
+++ b/android-app-core/res/drawable/metro_green_list_item.xml
@@ -2,21 +2,21 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
diff --git a/android-app-core/res/drawable/metro_purple_list_item.xml b/android-app-core/res/drawable/metro_purple_list_item.xml
index d966445e..34bbe728 100644
--- a/android-app-core/res/drawable/metro_purple_list_item.xml
+++ b/android-app-core/res/drawable/metro_purple_list_item.xml
@@ -2,20 +2,20 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
diff --git a/android-app-core/res/drawable/pane_background.xml b/android-app-core/res/drawable/pane_background.xml
index 763272f3..4058c468 100644
--- a/android-app-core/res/drawable/pane_background.xml
+++ b/android-app-core/res/drawable/pane_background.xml
@@ -1,5 +1,4 @@
-
-
-
-
+
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/violet_button.xml b/android-app-core/res/drawable/violet_button.xml
index f1f10580..2f72752a 100644
--- a/android-app-core/res/drawable/violet_button.xml
+++ b/android-app-core/res/drawable/violet_button.xml
@@ -2,9 +2,8 @@
-
+
-
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/violet_button_dark.xml b/android-app-core/res/drawable/violet_button_dark.xml
index b1b755df..2d1232c8 100644
--- a/android-app-core/res/drawable/violet_button_dark.xml
+++ b/android-app-core/res/drawable/violet_button_dark.xml
@@ -2,9 +2,8 @@
-
+
-
+
\ No newline at end of file
diff --git a/android-app-core/res/drawable/violet_button_dark_shape.xml b/android-app-core/res/drawable/violet_button_dark_shape.xml
index b8553175..7409fe9c 100644
--- a/android-app-core/res/drawable/violet_button_dark_shape.xml
+++ b/android-app-core/res/drawable/violet_button_dark_shape.xml
@@ -7,8 +7,9 @@
-->
-
-
+
+
diff --git a/android-app-core/res/drawable/violet_button_shape.xml b/android-app-core/res/drawable/violet_button_shape.xml
index b5133366..4ef0e931 100644
--- a/android-app-core/res/drawable/violet_button_shape.xml
+++ b/android-app-core/res/drawable/violet_button_shape.xml
@@ -7,8 +7,9 @@
-->
-
-
+
+
diff --git a/android-app-core/res/layout/cpp_fixable_messages_dialog.xml b/android-app-core/res/layout/cpp_fixable_messages_dialog.xml
index 43a71fff..333c2c04 100644
--- a/android-app-core/res/layout/cpp_fixable_messages_dialog.xml
+++ b/android-app-core/res/layout/cpp_fixable_messages_dialog.xml
@@ -1,31 +1,32 @@
+ style="?cpp_dialog_style">
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_fixable_messages_dialog_message.xml b/android-app-core/res/layout/cpp_fixable_messages_dialog_message.xml
index 4fd4d11e..243c6956 100644
--- a/android-app-core/res/layout/cpp_fixable_messages_dialog_message.xml
+++ b/android-app-core/res/layout/cpp_fixable_messages_dialog_message.xml
@@ -1,23 +1,24 @@
+ a:layout_width="match_parent"
+ a:layout_height="wrap_content"
+ a:orientation="horizontal"
+ a:padding="6dp">
-
+
-
+
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_0.xml b/android-app-core/res/layout/cpp_simple_button_0.xml
index 37867e1f..5c9fb014 100644
--- a/android-app-core/res/layout/cpp_simple_button_0.xml
+++ b/android-app-core/res/layout/cpp_simple_button_0.xml
@@ -7,6 +7,6 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_0"
+ a:text="0"
+ style="@style/cpp_simple_metro_digit_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_1.xml b/android-app-core/res/layout/cpp_simple_button_1.xml
index 9341718d..f4324e2d 100644
--- a/android-app-core/res/layout/cpp_simple_button_1.xml
+++ b/android-app-core/res/layout/cpp_simple_button_1.xml
@@ -7,6 +7,6 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_1"
+ a:text="1"
+ style="@style/cpp_simple_metro_digit_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_2.xml b/android-app-core/res/layout/cpp_simple_button_2.xml
index eb884305..e8ca564a 100644
--- a/android-app-core/res/layout/cpp_simple_button_2.xml
+++ b/android-app-core/res/layout/cpp_simple_button_2.xml
@@ -7,6 +7,6 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_2"
+ a:text="2"
+ style="@style/cpp_simple_metro_digit_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_3.xml b/android-app-core/res/layout/cpp_simple_button_3.xml
index 357a13f2..b6e3142f 100644
--- a/android-app-core/res/layout/cpp_simple_button_3.xml
+++ b/android-app-core/res/layout/cpp_simple_button_3.xml
@@ -7,6 +7,6 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_3"
+ a:text="3"
+ style="@style/cpp_simple_metro_digit_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_4.xml b/android-app-core/res/layout/cpp_simple_button_4.xml
index a9e711a3..d1a1f820 100644
--- a/android-app-core/res/layout/cpp_simple_button_4.xml
+++ b/android-app-core/res/layout/cpp_simple_button_4.xml
@@ -6,6 +6,6 @@
~ or visit http://se.solovyev.org
-->
\ No newline at end of file
+ a:id="@id/cpp_button_4"
+ a:text="4"
+ style="@style/cpp_simple_metro_digit_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_5.xml b/android-app-core/res/layout/cpp_simple_button_5.xml
index f7f9dae8..43cdfd79 100644
--- a/android-app-core/res/layout/cpp_simple_button_5.xml
+++ b/android-app-core/res/layout/cpp_simple_button_5.xml
@@ -6,6 +6,6 @@
~ or visit http://se.solovyev.org
-->
\ No newline at end of file
+ a:id="@id/cpp_button_5"
+ a:text="5"
+ style="@style/cpp_simple_metro_digit_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_6.xml b/android-app-core/res/layout/cpp_simple_button_6.xml
index 63d57149..a5d843ee 100644
--- a/android-app-core/res/layout/cpp_simple_button_6.xml
+++ b/android-app-core/res/layout/cpp_simple_button_6.xml
@@ -7,6 +7,6 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_6"
+ a:text="6"
+ style="@style/cpp_simple_metro_digit_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_7.xml b/android-app-core/res/layout/cpp_simple_button_7.xml
index 3ef824aa..4a9d3f08 100644
--- a/android-app-core/res/layout/cpp_simple_button_7.xml
+++ b/android-app-core/res/layout/cpp_simple_button_7.xml
@@ -1,6 +1,6 @@
\ No newline at end of file
+ a:id="@id/cpp_button_7"
+ a:text="7"
+ style="@style/cpp_simple_metro_digit_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_8.xml b/android-app-core/res/layout/cpp_simple_button_8.xml
index aa79844d..05ad8463 100644
--- a/android-app-core/res/layout/cpp_simple_button_8.xml
+++ b/android-app-core/res/layout/cpp_simple_button_8.xml
@@ -7,6 +7,6 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_8"
+ a:text="8"
+ style="@style/cpp_simple_metro_digit_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_9.xml b/android-app-core/res/layout/cpp_simple_button_9.xml
index b01ac228..a57aedb2 100644
--- a/android-app-core/res/layout/cpp_simple_button_9.xml
+++ b/android-app-core/res/layout/cpp_simple_button_9.xml
@@ -7,6 +7,6 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_9"
+ a:text="9"
+ style="@style/cpp_simple_metro_digit_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_app.xml b/android-app-core/res/layout/cpp_simple_button_app.xml
index 2e5baf72..e56cd43d 100644
--- a/android-app-core/res/layout/cpp_simple_button_app.xml
+++ b/android-app-core/res/layout/cpp_simple_button_app.xml
@@ -7,7 +7,7 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_app"
+ a:src="@drawable/kb_logo"
+ style="@style/cpp_simple_metro_control_image_button_style"
+ a:contentDescription="App" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_clear.xml b/android-app-core/res/layout/cpp_simple_button_clear.xml
index fceee51b..470854c2 100644
--- a/android-app-core/res/layout/cpp_simple_button_clear.xml
+++ b/android-app-core/res/layout/cpp_simple_button_clear.xml
@@ -7,7 +7,7 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_clear"
+ a:text="@string/c_clear"
+ a:textStyle="bold"
+ style="@style/cpp_simple_metro_control_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_copy.xml b/android-app-core/res/layout/cpp_simple_button_copy.xml
index 665276f2..810fb148 100644
--- a/android-app-core/res/layout/cpp_simple_button_copy.xml
+++ b/android-app-core/res/layout/cpp_simple_button_copy.xml
@@ -7,7 +7,7 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_copy"
+ a:src="@drawable/kb_copy"
+ style="@style/cpp_simple_metro_control_image_button_style"
+ a:contentDescription="Copy" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_division.xml b/android-app-core/res/layout/cpp_simple_button_division.xml
index 516c224e..ad36211b 100644
--- a/android-app-core/res/layout/cpp_simple_button_division.xml
+++ b/android-app-core/res/layout/cpp_simple_button_division.xml
@@ -7,6 +7,6 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_division"
+ a:text="/"
+ style="@style/cpp_simple_metro_blue_operation_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_dot.xml b/android-app-core/res/layout/cpp_simple_button_dot.xml
index 2607694e..5e53ab00 100644
--- a/android-app-core/res/layout/cpp_simple_button_dot.xml
+++ b/android-app-core/res/layout/cpp_simple_button_dot.xml
@@ -7,6 +7,6 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_period"
+ a:text="."
+ style="@style/metro_digit_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_equals.xml b/android-app-core/res/layout/cpp_simple_button_equals.xml
index 039d3321..bcf0396f 100644
--- a/android-app-core/res/layout/cpp_simple_button_equals.xml
+++ b/android-app-core/res/layout/cpp_simple_button_equals.xml
@@ -5,8 +5,7 @@
~ For more information, please, contact se.solovyev@gmail.com
~ or visit http://se.solovyev.org
-->
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_erase.xml b/android-app-core/res/layout/cpp_simple_button_erase.xml
index 389e6169..2659c88d 100644
--- a/android-app-core/res/layout/cpp_simple_button_erase.xml
+++ b/android-app-core/res/layout/cpp_simple_button_erase.xml
@@ -7,7 +7,7 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_erase"
+ a:src="@drawable/kb_delete"
+ style="@style/cpp_simple_metro_control_image_button_style"
+ a:contentDescription="Erase" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_functions.xml b/android-app-core/res/layout/cpp_simple_button_functions.xml
index bb441593..a18de38c 100644
--- a/android-app-core/res/layout/cpp_simple_button_functions.xml
+++ b/android-app-core/res/layout/cpp_simple_button_functions.xml
@@ -7,7 +7,7 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_functions"
+ a:text="ƒ(x)"
+ a:textStyle="italic"
+ style="@style/cpp_simple_metro_control_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_history.xml b/android-app-core/res/layout/cpp_simple_button_history.xml
index 7ba3c30f..e16e00b7 100644
--- a/android-app-core/res/layout/cpp_simple_button_history.xml
+++ b/android-app-core/res/layout/cpp_simple_button_history.xml
@@ -6,7 +6,7 @@
~ or visit http://se.solovyev.org
-->
\ No newline at end of file
+ a:id="@id/cpp_button_history"
+ a:text="@string/c_history_button"
+ style="@style/cpp_simple_metro_control_button_style"
+ a:textStyle="bold" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_left.xml b/android-app-core/res/layout/cpp_simple_button_left.xml
index 2f8c37a7..d0648c62 100644
--- a/android-app-core/res/layout/cpp_simple_button_left.xml
+++ b/android-app-core/res/layout/cpp_simple_button_left.xml
@@ -7,6 +7,6 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_left"
+ a:text="◀"
+ style="@style/cpp_simple_metro_control_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_like.xml b/android-app-core/res/layout/cpp_simple_button_like.xml
index 9d3eef7c..bc55854f 100644
--- a/android-app-core/res/layout/cpp_simple_button_like.xml
+++ b/android-app-core/res/layout/cpp_simple_button_like.xml
@@ -7,7 +7,7 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_like"
+ a:src="@drawable/kb_facebook"
+ style="@style/cpp_simple_metro_control_image_button_style"
+ a:contentDescription="Like" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_multiplication.xml b/android-app-core/res/layout/cpp_simple_button_multiplication.xml
index 719decf3..809fd2b1 100644
--- a/android-app-core/res/layout/cpp_simple_button_multiplication.xml
+++ b/android-app-core/res/layout/cpp_simple_button_multiplication.xml
@@ -7,6 +7,6 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_multiplication"
+ a:text="×"
+ style="@style/cpp_simple_metro_blue_operation_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_paste.xml b/android-app-core/res/layout/cpp_simple_button_paste.xml
index b9695e12..8fac963f 100644
--- a/android-app-core/res/layout/cpp_simple_button_paste.xml
+++ b/android-app-core/res/layout/cpp_simple_button_paste.xml
@@ -7,7 +7,7 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_paste"
+ a:src="@drawable/kb_paste"
+ style="@style/cpp_simple_metro_control_image_button_style"
+ a:contentDescription="Paste" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_percent.xml b/android-app-core/res/layout/cpp_simple_button_percent.xml
index b98f7063..c6938813 100644
--- a/android-app-core/res/layout/cpp_simple_button_percent.xml
+++ b/android-app-core/res/layout/cpp_simple_button_percent.xml
@@ -7,6 +7,6 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_percent"
+ a:text="%"
+ style="@style/cpp_simple_metro_blue_operation_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_plus.xml b/android-app-core/res/layout/cpp_simple_button_plus.xml
index 0c10bb7b..cb9c3b20 100644
--- a/android-app-core/res/layout/cpp_simple_button_plus.xml
+++ b/android-app-core/res/layout/cpp_simple_button_plus.xml
@@ -6,6 +6,6 @@
~ or visit http://se.solovyev.org
-->
\ No newline at end of file
+ a:id="@id/cpp_button_plus"
+ a:text="+"
+ style="@style/cpp_simple_metro_blue_operation_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_power.xml b/android-app-core/res/layout/cpp_simple_button_power.xml
index f6a5f95b..6d0ba7af 100644
--- a/android-app-core/res/layout/cpp_simple_button_power.xml
+++ b/android-app-core/res/layout/cpp_simple_button_power.xml
@@ -7,6 +7,6 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_power"
+ a:text="^"
+ style="@style/cpp_simple_metro_blue_operation_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_right.xml b/android-app-core/res/layout/cpp_simple_button_right.xml
index bc24d176..afdaff28 100644
--- a/android-app-core/res/layout/cpp_simple_button_right.xml
+++ b/android-app-core/res/layout/cpp_simple_button_right.xml
@@ -7,6 +7,6 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_right"
+ a:text="▶"
+ style="@style/cpp_simple_metro_control_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_round_brackets.xml b/android-app-core/res/layout/cpp_simple_button_round_brackets.xml
index 9833ee95..22e62fd8 100644
--- a/android-app-core/res/layout/cpp_simple_button_round_brackets.xml
+++ b/android-app-core/res/layout/cpp_simple_button_round_brackets.xml
@@ -7,6 +7,6 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_round_brackets"
+ a:text="()"
+ style="@style/cpp_simple_metro_digit_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_settings.xml b/android-app-core/res/layout/cpp_simple_button_settings.xml
index f4c13728..14ca0b27 100644
--- a/android-app-core/res/layout/cpp_simple_button_settings.xml
+++ b/android-app-core/res/layout/cpp_simple_button_settings.xml
@@ -7,7 +7,7 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_settings"
+ a:src="@drawable/kb_settings"
+ style="@style/cpp_simple_metro_control_image_button_style"
+ a:contentDescription="Settings" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_subtraction.xml b/android-app-core/res/layout/cpp_simple_button_subtraction.xml
index 78a9d36f..c15221c3 100644
--- a/android-app-core/res/layout/cpp_simple_button_subtraction.xml
+++ b/android-app-core/res/layout/cpp_simple_button_subtraction.xml
@@ -6,6 +6,6 @@
~ or visit http://se.solovyev.org
-->
\ No newline at end of file
+ a:id="@id/cpp_button_subtraction"
+ a:text="-"
+ style="@style/cpp_simple_metro_blue_operation_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_button_vars.xml b/android-app-core/res/layout/cpp_simple_button_vars.xml
index 0bea581e..e76af1a7 100644
--- a/android-app-core/res/layout/cpp_simple_button_vars.xml
+++ b/android-app-core/res/layout/cpp_simple_button_vars.xml
@@ -7,7 +7,7 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_vars"
+ a:text="π,…"
+ a:textStyle="italic"
+ style="@style/cpp_simple_metro_control_button_style" />
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_simple_keyboard.xml b/android-app-core/res/layout/cpp_simple_keyboard.xml
index d5b0ee28..97c60876 100644
--- a/android-app-core/res/layout/cpp_simple_keyboard.xml
+++ b/android-app-core/res/layout/cpp_simple_keyboard.xml
@@ -1,74 +1,104 @@
+ a:layout_width="match_parent"
+ a:layout_height="match_parent"
+ a:orientation="vertical">
-
+
-
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app-core/res/layout/cpp_unit_converter.xml b/android-app-core/res/layout/cpp_unit_converter.xml
index 878af88a..8bdc86ee 100644
--- a/android-app-core/res/layout/cpp_unit_converter.xml
+++ b/android-app-core/res/layout/cpp_unit_converter.xml
@@ -1,78 +1,88 @@
+ a:layout_width="fill_parent"
+ a:layout_height="fill_parent"
+ a:paddingLeft="10dp"
+ a:paddingRight="10dp"
+ a:orientation="vertical">
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app-core/res/layout/main_calculator.xml b/android-app-core/res/layout/main_calculator.xml
index db7c950f..212851f9 100644
--- a/android-app-core/res/layout/main_calculator.xml
+++ b/android-app-core/res/layout/main_calculator.xml
@@ -1,5 +1,8 @@
-
-
+
+
\ No newline at end of file
diff --git a/android-app-core/res/layout/main_calculator_mobile.xml b/android-app-core/res/layout/main_calculator_mobile.xml
index db7c950f..212851f9 100644
--- a/android-app-core/res/layout/main_calculator_mobile.xml
+++ b/android-app-core/res/layout/main_calculator_mobile.xml
@@ -1,5 +1,8 @@
-
-
+
+
\ No newline at end of file
diff --git a/android-app-core/res/values-es/text_about.xml b/android-app-core/res/values-es/text_about.xml
index 980fe912..2e65c351 100644
--- a/android-app-core/res/values-es/text_about.xml
+++ b/android-app-core/res/values-es/text_about.xml
@@ -8,12 +8,16 @@
Acerca de
- Copyright (c) 2009-2011\n\nCreado por serso aka se.solovyev\n\n
- Este programa es Open Source:\nTodo el código fuente puede encontrarse en\nhttp://github.com\n\n
- Para más información, por favor,\ncontacte con el autor al mail\nse.solovyev@gmail.com\n
+ Copyright (c) 2009-2011\n\nCreado por serso aka se.solovyev
+ \n\n
+ Este programa es Open Source:\nTodo el código fuente puede encontrarse en\n
+ http://github.com\n\n
+ Para más información, por favor,\ncontacte con el autor al mail\n
+ se.solovyev@gmail.com\n
o visite\nhttp://se.solovyev.org\n\n
Si desea apoyar el proyecto\n\n
- Si le gusta la aplicación\nvalórela con 5 estrellas en\nGoogle Play\n\n
+ Si le gusta la aplicación\nvalórela con 5 estrellas en\n
+ Google Play\n\n
Gracias a las personas que han traducido Calculadora++ a los diferentes idiomas:\n
Español - Jordi Luna\n
Italiano - Gabriele Ravanetti\n\n
diff --git a/android-app-core/res/values-es/text_functions.xml b/android-app-core/res/values-es/text_functions.xml
index bfa39970..e905ba7a 100644
--- a/android-app-core/res/values-es/text_functions.xml
+++ b/android-app-core/res/values-es/text_functions.xml
@@ -23,15 +23,32 @@
Función Raíz cuadrado.Función Raíz cuadrada.Función que devuelve el valor absoluto de un argumento.
- Función que devuelve el signo de un argumento: -1 si el argumento es menor que 0, 0 si es igual a 0, 1 si es mayor que 0.
- Función Igual - Devuelve 1 si dos argumentos son iguales, 0 si no lo son.
- Función Menor o igual - Devuelve 1 si dos argumentos son iguales o el primero es menor que el segundo, 0 si el primero es mayor.
- Función Mayor o igual - Devuelve 1 si dos argumentos son iguales o si el primero es mayor que el segundo, 0 si el primero es menor.
- Función Distinto - Devuelve 1 si dos argumentos no son iguales, 0 si son idénticos.
- Función Menor - Devuelve 1 si el primer argumento es menor que el segundo, 0 si no lo es.
- Función Mayor - Devuelve 1 si el primer argumento es mayor que el segundo, 0 si no lo es.
- Convierte grados a radianes: d - grados, m - minutos (por defecto = 0), s - segundos (por defecto = 0).
- Convierte grados de notación DMS a notación decimal: d - grados, m - minutos (por defecto = 0), s - segundos (por defecto = 0).
+ Función que devuelve el signo de un argumento: -1 si el argumento es menor que
+ 0, 0 si es igual a 0, 1 si es mayor que 0.
+
+ Función Igual - Devuelve 1 si dos argumentos son iguales, 0 si no lo son.
+
+ Función Menor o igual - Devuelve 1 si dos argumentos son iguales o el primero es
+ menor que el segundo, 0 si el primero es mayor.
+
+ Función Mayor o igual - Devuelve 1 si dos argumentos son iguales o si el primero
+ es mayor que el segundo, 0 si el primero es menor.
+
+ Función Distinto - Devuelve 1 si dos argumentos no son iguales, 0 si son
+ idénticos.
+
+ Función Menor - Devuelve 1 si el primer argumento es menor que el segundo, 0 si
+ no lo es.
+
+ Función Mayor - Devuelve 1 si el primer argumento es mayor que el segundo, 0 si
+ no lo es.
+
+ Convierte grados a radianes: d - grados, m - minutos (por defecto = 0), s -
+ segundos (por defecto = 0).
+
+ Convierte grados de notación DMS a notación decimal: d - grados, m - minutos
+ (por defecto = 0), s - segundos (por defecto = 0).
+ Convierte radianes a grados.Trigonométrico
diff --git a/android-app-core/res/values-es/text_help.xml b/android-app-core/res/values-es/text_help.xml
index 84886e6a..776284c6 100644
--- a/android-app-core/res/values-es/text_help.xml
+++ b/android-app-core/res/values-es/text_help.xml
@@ -11,15 +11,19 @@
Pantallas
- ¿Como puedo utilizar las funciones indicadas en las esquinas superior e inferior derechas de los botones?\n
+ ¿Como puedo utilizar las funciones indicadas en las esquinas superior e inferior derechas de los botones?
\n
- Mantenga pulsado el botón y deslícelo ligeramente hacia arriba o abajo. En función del valor mostrado en el\nbotón se realizará la acción deseada.\n
+ \n
+ Mantenga pulsado el botón y deslícelo ligeramente hacia arriba o abajo. En función del valor mostrado en
+ el\nbotón se realizará la acción deseada.\n
\n
¿Como puedo conmutar entre Radianes y Grados?\n
\n
- Para conmutar entre las diferentes unidades de ángulo, puede ajustar la opción preferida en la configuración de\nla aplicación\no bién utilizar el conmutador ubicado en el botón 6\n
+ Para conmutar entre las diferentes unidades de ángulo, puede ajustar la opción preferida en la configuración
+ de\nla aplicación\no bién utilizar el conmutador ubicado en el botón 6\n
(el valor actual está resaltado en color amarillo).\n
- También puede utilizar las funciones deg() y rad() y el operador ° para convertir grados a radianes y viceversa.\n\n
+ También puede utilizar las funciones deg() y rad() y el operador ° para convertir grados a radianes y
+ viceversa.\n\n
Ejemplos:\n
268° = 4.67748\n
@@ -40,12 +44,13 @@
Nota:\n\n
- 100 + (20 + 20)% = 140,\n pero\n100+ (20% + 20%) = 124.0\n
+ 100 + (20 + 20)% = 140,\npero\n100+ (20% + 20%) = 124.0\n
100 + 50% ^ 2 = 2600,\npero\n100 + 50 ^ 2% = 101.08\n\n
¿Soporta C++ cálculos fraccionarios?\n\n
- Si, puede teclear la expresión fraccionaria en el editor y utilizar ≡ (en la esquina superior derecha del botón\n = ). También puede utilizar ≡ para simplificar la expresión.\n\n
+ Si, puede teclear la expresión fraccionaria en el editor y utilizar ≡ (en la esquina superior derecha del
+ botón\n = ). También puede utilizar ≡ para simplificar la expresión.\n\n
Ejemplos:\n\n
@@ -64,7 +69,8 @@
¿Puede C++ dibujar gráficas de las funciones?\n\n
- Sí, expresión de tipo que contiene una variable no definida (por ejemplo, cos (t) y la t no tiene valor) y haga clic en el resultado. En el menú contextual, seleccione \'Gráfico Plot\'.\n\n
+ Sí, expresión de tipo que contiene una variable no definida (por ejemplo, cos (t) y la t no tiene valor) y haga
+ clic en el resultado. En el menú contextual, seleccione \'Gráfico Plot\'.\n\n
¿Soporta C++ cálculos matriciales?\n\n
@@ -76,21 +82,41 @@
- 1. Puede omitir signos de multiplicación innecesarios (en lugar de 3*t o t*sin(π*t)simplemente escriba 3t o tsin(πt))\n\n
+ 1. Puede omitir signos de multiplicación innecesarios (en lugar de 3*t o t*sin(π*t)simplemente escriba 3t o
+ tsin(πt))\n\n
2. Utilice ≡ (en la esquina superior derecha del botón = ) para simplificar la expresión\n\n
3. Haga clic en el resultado para copiarlo al portapapeles\n\n
- 4. Raravez deberá utilizar el botón = ya que el resultado se va calculando automáticamente conforme introduce las funciones\n\n
+ 4. Raravez deberá utilizar el botón = ya que el resultado se va calculando automáticamente conforme introduce
+ las funciones\n\n
5. Añada constantes para los valores usados habitualmente (incluso puede grabar expresiones)\n\n
6. Utilice las variables ubicadas en los botones 4 y 5\n\n
- 1. Pantalla principal: Se muestra al inicio de la aplicación. Puede llegar a ella desde otra pantalla pulsando el botón Atrás.\n\n
- 2. Pantalla de Variables y Constantes: contiene una lista de las constantes disponibles. Puede añadir más constantes y variables haciendo clic en el botón Añadir. Un Clic corto en variable/constante la inserta en el editor, Clic largo - abre la ventana del editor de variables. Puede llegar a ella desde la pantalla principal pulsando el botón π,… .\n\n
- 3. Pantalla de Funciones: contiene una lista de todas las funciones disponibles. Un Clic corto en la función la inserta en el editor. Puede llegar a ella desde la pantalla principal pulsando el botón f(x).\n\n
- 4. Pantalla de Operadores: contiene una lista de todos los operadores disponibles. Un Clic corto en el operador lo inserta en el editor. Puede llegar a él desde la pantalla principal pulsando el botón ∂,… .\n\n
- 5. Pantalla de Historial: contiene una lista de todas las acciones realizadas por el usuario. Un Clic corto en el elemento Historial lo inserta en el editor. Puede llegar a él desde la pantalla principal pulsando el botón M .\n\n
- 6. Pantalla de Configuración: contiene los ajustes de la aplicación. Puede llegar a él desde la pantalla principal seleccionando la opción Configuración del menú.\n\n
+ 1.
+ Pantalla principal:
+ Se muestra al inicio de la aplicación. Puede llegar a ella desde otra pantalla pulsando el botón Atrás.\n\n
+ 2.
+ Pantalla de Variables y Constantes:
+ contiene una lista de las constantes disponibles. Puede añadir más constantes y variables haciendo clic en el
+ botón Añadir. Un Clic corto en variable/constante la inserta en el editor, Clic largo - abre la ventana del
+ editor de variables. Puede llegar a ella desde la pantalla principal pulsando el botón π,… .\n\n
+ 3.
+ Pantalla de Funciones:
+ contiene una lista de todas las funciones disponibles. Un Clic corto en la función la inserta en el editor.
+ Puede llegar a ella desde la pantalla principal pulsando el botón f(x).\n\n
+ 4.
+ Pantalla de Operadores:
+ contiene una lista de todos los operadores disponibles. Un Clic corto en el operador lo inserta en el editor.
+ Puede llegar a él desde la pantalla principal pulsando el botón ∂,… .\n\n
+ 5.
+ Pantalla de Historial:
+ contiene una lista de todas las acciones realizadas por el usuario. Un Clic corto en el elemento Historial lo
+ inserta en el editor. Puede llegar a él desde la pantalla principal pulsando el botón M .\n\n
+ 6.
+ Pantalla de Configuración:
+ contiene los ajustes de la aplicación. Puede llegar a él desde la pantalla principal seleccionando la opción
+ Configuración del menú.\n\n
\ No newline at end of file
diff --git a/android-app-core/res/values-es/text_operators.xml b/android-app-core/res/values-es/text_operators.xml
index 4941f22e..adbf9630 100644
--- a/android-app-core/res/values-es/text_operators.xml
+++ b/android-app-core/res/values-es/text_operators.xml
@@ -8,16 +8,25 @@
Operadores
- El módulo operación encuentra el resto de la división de \'x\' por \'y\'.
- Función Suma \'f(i)\', iterativamente a través de \'i\' desde \'from\' hasta \'to\'.
- Devuelve el producto de las funciones \'f(i)\', iterativamente a través de \'i\' desde \'from\' hasta \'to\'.
- Devuelve el derivado de orden \'order\' (por defecto = 1) de funciones \'f(x)\' por \'x\' variable y calcula en el punto \'x_point\' (por defecto = el mismo que \'x\').
+ El módulo operación encuentra el resto de la división de \'x\' por \'y\'.
+
+ Función Suma \'f(i)\', iterativamente a través de \'i\' desde \'from\' hasta
+ \'to\'.
+
+ Devuelve el producto de las funciones \'f(i)\', iterativamente a través de
+ \'i\' desde \'from\' hasta \'to\'.
+
+ Devuelve el derivado de orden \'order\' (por defecto = 1) de funciones
+ \'f(x)\' por \'x\' variable y calcula en el punto \'x_point\' (por defecto = el mismo que \'x\').
+ Devuelve la integral de la función \'f(x)\' por \'x\' variable.
- Función integral \'f(x)\' por \'x\' variable desde \'a\' hasta \'b\'.
+ Función integral \'f(x)\' por \'x\' variable desde \'a\' hasta \'b\'.
+ Devuelve el factorial de la expresión antes.Devuelve el doble factorial de la expresión antes.
- Devuelve el valor porcentaje de la expresión antes.\nEjemplos:\n
+ Devuelve el valor porcentaje de la expresión
+ antes.\nEjemplos:\n
100 + 50% = 150\n
100 * 50% = 50\n
100 + 100 * 50% * 50% = 125
diff --git a/android-app-core/res/values-es/text_strings.xml b/android-app-core/res/values-es/text_strings.xml
index 4ab350bd..537a88f0 100644
--- a/android-app-core/res/values-es/text_strings.xml
+++ b/android-app-core/res/values-es/text_strings.xml
@@ -60,7 +60,9 @@
¡El valor debe ser numérico o estar vacío!La variable name entra en conflicto con la función name!¡Ya existe una variable con el mismo nombre!
- El nombre de la Constante no es válido: el nombre debe comenzar con una letra,puede contener letras, dígitos y líneas.
+ El nombre de la Constante no es válido: el nombre debe comenzar con una
+ letra,puede contener letras, dígitos y líneas.
+ ¡Una Variable de Sistema no puede ser cambiada!Introducir nuevo cálculo
@@ -80,7 +82,9 @@
Define la unidad para ángulos predeterminada.Sistemas de numeración
- Define el sistema de numeración por defecto para todos los números de entrada.
+ Define el sistema de numeración por defecto para todos los números de
+ entrada.
+ SecimalHexadecimalOctal
@@ -90,7 +94,9 @@
PredeterminadoVioletaAzul claro
- Precisión del resultado (todos los cálculos se realizar con la máxima precisión a pesar del valor de esta opción)
+ Precisión del resultado (todos los cálculos se realizar con la máxima
+ precisión a pesar del valor de esta opción)
+ Ajustar colores y estilo en el editor de la calculadoraEstablecer el tema para la CalculadoraLimpiar historial
@@ -127,14 +133,15 @@
ToSwipe distance for buttons
- Sets swipe distance for buttons that support additional swipe actions
+ Sets swipe distance for buttons that support additional swipe actions
+ CommentGuardadoNo se guardaExpresión copiada en el portapapeles!
- Estado:
- Comentario:
+ Estado:
+ Comentario:UtilizarCopia de la expresiónCopia resultado
diff --git a/android-app-core/res/values-es/text_vars.xml b/android-app-core/res/values-es/text_vars.xml
index 6b21b33e..dcc9fd21 100644
--- a/android-app-core/res/values-es/text_vars.xml
+++ b/android-app-core/res/values-es/text_vars.xml
@@ -6,13 +6,23 @@
- Ratio de la circunferencia del círculo a su diámetro. Nota: esta constante es la unidad de medida dependiente => rad: 3,14, deg: 180,0
- Ratio de la circunferencia del círculo a su diámetro. Nota: esta constante es la unidad de medida independientes => rad: 3.14, deg: 3.14
- Número real único como el valor de la derivada (pendiente de la línea tangente) de la función f(x) = e^x en el punto x = 0 es igual a 1
+ Ratio de la circunferencia del círculo a su diámetro. Nota: esta constante es la
+ unidad de medida dependiente => rad: 3,14, deg: 180,0
+
+ Ratio de la circunferencia del círculo a su diámetro. Nota: esta constante es la
+ unidad de medida independientes => rad: 3.14, deg: 3.14
+
+ Número real único como el valor de la derivada (pendiente de la línea tangente)
+ de la función f(x) = e^x en el punto x = 0 es igual a 1
+ Unidad imaginaria, definida como i^2 = −1Velocidad de la luz en vacío, m·s^-1
- La constante gravitatoria es una constante física empírica consistente en el cálculo de la atracción gravitatoria entre objetos con masa, m^3·kg^−1·s^−2
- Constante física que refleja los tamaños de energía cuántica en mecánica cuántica, J·s
+ La constante gravitatoria es una constante física empírica consistente en el
+ cálculo de la atracción gravitatoria entre objetos con masa, m^3·kg^−1·s^−2
+
+ Constante física que refleja los tamaños de energía cuántica en mecánica
+ cuántica, J·s
+ Constante Planck reducida, J·sNo es un númeroInfinito
diff --git a/android-app-core/res/values-it/text_about.xml b/android-app-core/res/values-it/text_about.xml
index 80267985..d3999b8a 100644
--- a/android-app-core/res/values-it/text_about.xml
+++ b/android-app-core/res/values-it/text_about.xml
@@ -9,11 +9,14 @@
AboutCopyright (c) 2009-2011\n\nCreato da serso aka se.solovyev\n\n
- Questo programma è open source:\ntutto il codice può essere trovato su\nhttp://github.com\n\n
- Per ulteriori informazioni contatta\nl\'autore via email\nse.solovyev@gmail.com
+ Questo programma è open source:\ntutto il codice può essere trovato su\n
+ http://github.com\n\n
+ Per ulteriori informazioni contatta\nl\'autore via email\n
+ se.solovyev@gmail.com
\no visita\nhttp://se.solovyev.org\n\n
Se vuoi aiutare il progetto\n\n
- Se ti piace l\'applicazione\nvota 5 stelle nel\nGoogle Play\n\n
+ Se ti piace l\'applicazione\nvota 5 stelle nel\n
+ Google Play\n\n
Grazie a persone che traducono Calculator++ in diverse lingue:\n
Italiano - Gabriele Ravanetti\n
Spagnolo - Jordi Luna\n\n
diff --git a/android-app-core/res/values-it/text_functions.xml b/android-app-core/res/values-it/text_functions.xml
index 92f59bcf..7f59d9d8 100644
--- a/android-app-core/res/values-it/text_functions.xml
+++ b/android-app-core/res/values-it/text_functions.xml
@@ -23,15 +23,33 @@
Funzione radice quadrata.Funzione radice cubica.Funzione che restituisce il valore assoluto di un argomento.
- Funzione che restituisce il segno di un argomento: -1 se l\'argomnto è minore di 0, 0 se è uguale a 0, 1 se è maggiore di 0.
- Funzione uguaglianza - restituisce 1 se i due argomenti sono uguali, 0 altrimenti.
- Funzione minore-o-uguale - restituisce 1 se i due argomenti sono uguali o il primo è minore del secondo, 0 altrimenti.
- Funzione maggiore-o-uguale - restituisce 1 se i due argomenti sono uguali o il primo è maggiore del secondo, 0 altrimenti.
- Funzione disuguaglianza - restituisce 1 se i due argomenti non sono uguali, 0 altrimenti.
- Funzione minore - restituisce 1 se il primo argomento è minore del secondo, 0 altrimenti.
- Funzione maggiore - restituisce 1 se il primo argomento è maggiore del secondo, 0 altrimenti.
- Converte gradi in radianti: d - gradi, m - minuti (predefinito = 0), s - secondi (predefinito = 0).
- Converte gradi dalla notazione DMS in notazione decimale: d - gradi, m - minuti (predefinito = 0), s - secondi (predefinito = 0).
+ Funzione che restituisce il segno di un argomento: -1 se l\'argomnto è minore
+ di 0, 0 se è uguale a 0, 1 se è maggiore di 0.
+
+ Funzione uguaglianza - restituisce 1 se i due argomenti sono uguali, 0
+ altrimenti.
+
+ Funzione minore-o-uguale - restituisce 1 se i due argomenti sono uguali o il
+ primo è minore del secondo, 0 altrimenti.
+
+ Funzione maggiore-o-uguale - restituisce 1 se i due argomenti sono uguali o il
+ primo è maggiore del secondo, 0 altrimenti.
+
+ Funzione disuguaglianza - restituisce 1 se i due argomenti non sono uguali, 0
+ altrimenti.
+
+ Funzione minore - restituisce 1 se il primo argomento è minore del secondo, 0
+ altrimenti.
+
+ Funzione maggiore - restituisce 1 se il primo argomento è maggiore del secondo,
+ 0 altrimenti.
+
+ Converte gradi in radianti: d - gradi, m - minuti (predefinito = 0), s -
+ secondi (predefinito = 0).
+
+ Converte gradi dalla notazione DMS in notazione decimale: d - gradi, m - minuti
+ (predefinito = 0), s - secondi (predefinito = 0).
+ Converte radianti in gradi.Trigonometriche
diff --git a/android-app-core/res/values-it/text_help.xml b/android-app-core/res/values-it/text_help.xml
index 5f7d777d..f4d3f29f 100644
--- a/android-app-core/res/values-it/text_help.xml
+++ b/android-app-core/res/values-it/text_help.xml
@@ -11,15 +11,19 @@
Schermate
- Come posso utilizzare le funzioni scritte in alto a destra e nell\'angolo in basso a destra del pulsante?\n
+ Come posso utilizzare le funzioni scritte in alto a destra e nell\'angolo in basso a destra del pulsante?
\n
- Premi il pulsante e trascinalo leggermente verso l\'alto o verso il basso. A seconda del valore mostrato sul pulsante azione si verificherà.\n
+ \n
+ Premi il pulsante e trascinalo leggermente verso l\'alto o verso il basso. A seconda del valore mostrato sul
+ pulsante azione si verificherà.\n
\n
Come posso passare da radianti a gradi?\n
\n
- Per passare da una unità diversa angolazione è possibile cambiare apposita opzione nelle impostazioni dell\'applicazione o utilizzare l\'interruttore situato sul tasto 6\n
+ Per passare da una unità diversa angolazione è possibile cambiare apposita opzione nelle impostazioni
+ dell\'applicazione o utilizzare l\'interruttore situato sul tasto 6\n
(valore corrente è illuminata con il colore giallo).\n
- Anche attualente C++ non supporta questa funzione ma è possibile utilizzare le funzioni deg() e rad() e l\'operatore ° per convertire i gradi in radianti e vice versa.\n
+ Anche attualente C++ non supporta questa funzione ma è possibile utilizzare le funzioni deg() e rad() e
+ l\'operatore ° per convertire i gradi in radianti e vice versa.\n
\n
Esempi:\n
268° = 4.67748\n
@@ -40,12 +44,17 @@
\n
Note:\n
\n
- 100 + (20 + 20)% = 140, ma 100+ (20% + 20%) = 124.0\n
- 100 + 50% ^ 2 = 2600, ma 100 + 50 ^ 2% = 101.08\n
+ 100 + (20 + 20)% = 140,
+ ma
+ 100+ (20% + 20%) = 124.0\n
+ 100 + 50% ^ 2 = 2600,
+ ma
+ 100 + 50 ^ 2% = 101.08\n
\n
C++ supporta il calcolo delle frazioni?\n
\n
- Sì, è possibile digitare l\'espressione frazionaria nell\'editor e usare = (nell\'angolo in alto a destra del pulsante = ). Inoltre è possibile utilizzare = per semplificare l\'espressione.\n
+ Sì, è possibile digitare l\'espressione frazionaria nell\'editor e usare = (nell\'angolo in alto a destra del
+ pulsante = ). Inoltre è possibile utilizzare = per semplificare l\'espressione.\n
\n
Esempi:\n
\n
@@ -64,7 +73,8 @@
\n
C++ può disegnare i grafici delle funzioni?\n
\n
- Sì, espressione tipo che contiene 1 variabile non definita (ad esempio cos (t) e t non ha alcun valore) e cliccare sul risultato. Nel menu contestuale scegliere \'Grafico plot\'.\n
+ Sì, espressione tipo che contiene 1 variabile non definita (ad esempio cos (t) e t non ha alcun valore) e
+ cliccare sul risultato. Nel menu contestuale scegliere \'Grafico plot\'.\n
\n
C++ supporta il calcolo delle matrici?\n
\n
@@ -76,21 +86,41 @@
- 1. È possibile omettere i segni non necessari nella moltiplicazione (invece di 3*t o t*sin(p*t) digita 3t o tsin(pt))\n\n
+ 1. È possibile omettere i segni non necessari nella moltiplicazione (invece di 3*t o t*sin(p*t) digita 3t o
+ tsin(pt))\n\n
2. Utilizza = (nell\'angolo in alto a destra del pulsante = ) per semplificare l\'espressione\n\n
3. Basta fare click sul risultato per copiarlo negli appunti\n\n
- 4. Usa raramente il pulsante = - il risultato è calcolato in tempo reale\n\n
+ 4. Usa raramente il pulsante = - il risultato è calcolato in tempo reale\n\n
5. Aggiungi costanti per i valori usati spesso (è possibile salvare anche le espressioni)\n\n
6. Utilizzare le variabili trova il 4 e 5 tasti\n\n
- 1. Schermata principale: viene visualizzata all\'avvio dell\'applicazione, può essere raggiunta da un altra schermata premendo il pulsante Indietro.\n\n
- 2. Schermata variabili e costanti: contiene l\'elenco delle costanti disponibili. L\'utente può aggiungere qui costanti e variabili cliccando il pulsante Aggiungi. Un breve click sulla variabile/costante la inserisce nell\'editor, un click prolungato apre la finestra di editor variabili. Può essere raggiunta dalla schermata principale premendo il pulsante π,….\n\n
- 3. Schermata funzioni: contiene l\'elenco di tutte le funzioni disponibili. Un breve click sulla funzione la inserisce nell\'editor. Può essere raggiunta dalla schermata principale premento il pulsante f(x).\n\n
- 4. Schermata operatori: contiene l\'elenco di tutti gli operatori disponibili. Un breve click sull\'operartore lo inserisce nell\'editor. Può essere raggiunta dalla schermata principale premento il pulsante ∂,….\n\n
- 5. Schermata cronologia: contiene l\'elenco di tutte le azioni fatte dall\'utente. Un breve click su un elemento della lista lo inserisce nell\'editor. Può essere raggiunta dalla schermata principale premento il pulsante M.\n\n
- 6. Schermata impostazioni: contiene le impostazioni dell\'applicazione. Può essere raggiunta dalla schermata principale premento il pulsante Impostazioni nel menù.
+ 1.
+ Schermata principale:
+ viene visualizzata all\'avvio dell\'applicazione, può essere raggiunta da un altra schermata premendo il
+ pulsante Indietro.\n\n
+ 2.
+ Schermata variabili e costanti:
+ contiene l\'elenco delle costanti disponibili. L\'utente può aggiungere qui costanti e variabili cliccando il
+ pulsante Aggiungi. Un breve click sulla variabile/costante la inserisce nell\'editor, un click prolungato apre
+ la finestra di editor variabili. Può essere raggiunta dalla schermata principale premendo il pulsante π,….\n\n
+ 3.
+ Schermata funzioni:
+ contiene l\'elenco di tutte le funzioni disponibili. Un breve click sulla funzione la inserisce nell\'editor.
+ Può essere raggiunta dalla schermata principale premento il pulsante f(x).\n\n
+ 4.
+ Schermata operatori:
+ contiene l\'elenco di tutti gli operatori disponibili. Un breve click sull\'operartore lo inserisce
+ nell\'editor. Può essere raggiunta dalla schermata principale premento il pulsante ∂,….\n\n
+ 5.
+ Schermata cronologia:
+ contiene l\'elenco di tutte le azioni fatte dall\'utente. Un breve click su un elemento della lista lo inserisce
+ nell\'editor. Può essere raggiunta dalla schermata principale premento il pulsante M.\n\n
+ 6.
+ Schermata impostazioni:
+ contiene le impostazioni dell\'applicazione. Può essere raggiunta dalla schermata principale premento il
+ pulsante Impostazioni nel menù.
\ No newline at end of file
diff --git a/android-app-core/res/values-it/text_operators.xml b/android-app-core/res/values-it/text_operators.xml
index b8a7b23a..e5f5c8de 100644
--- a/android-app-core/res/values-it/text_operators.xml
+++ b/android-app-core/res/values-it/text_operators.xml
@@ -10,14 +10,20 @@
L\'operazione modulo trova il resto della divisione di \'x\' by \'y\'.Funzione somma \'f(i)\', iterazione tra \'i\' da \'from\' a \'to\'.
- Restituisce il prodotto della funzione \'f(i)\', iterazione tra \'i\' da \'from\' a \'to\'.
- Restituisce la derivata di ordine \'order\' della funzione \'f(x)\' in \'x\' e calcolata nel punto \'x_point\'.
+ Restituisce il prodotto della funzione \'f(i)\', iterazione tra \'i\' da
+ \'from\' a \'to\'.
+
+ Restituisce la derivata di ordine \'order\' della funzione \'f(x)\' in
+ \'x\' e calcolata nel punto \'x_point\'.
+ Restituisce l\'integrale della funzione \'f(x)\' in \'x\'.Funzione integrale \'f(x)\' in \'x\' da \'a\' a \'b\'.Restituisce il fattoriale dell\'espressione precedente.
- Restituisce il fattoriale doppio dell\'espressione precedente.
- Restituisce la percentuale dell\'espressione precedente.\nEsempi:\n
+ Restituisce il fattoriale doppio dell\'espressione precedente.
+
+ Restituisce la percentuale dell\'espressione
+ precedente.\nEsempi:\n
100 + 50% = 150\n
100 * 50% = 50\n
100 + 100 * 50% * 50% = 125
diff --git a/android-app-core/res/values-it/text_strings.xml b/android-app-core/res/values-it/text_strings.xml
index 01d7e5b7..ab84e898 100644
--- a/android-app-core/res/values-it/text_strings.xml
+++ b/android-app-core/res/values-it/text_strings.xml
@@ -10,9 +10,9 @@
Calculator++Calculator++ FreeCalc++
- Impostazioni
- Errore
- Risultato copiato negli appunti!
+ Impostazioni
+ Errore
+ Risultato copiato negli appunti!ImpostazioniAiutoVariabili e costanti
@@ -56,11 +56,13 @@
DescrizioneCrea variabileModifica variabile
-
+
Il valore deve essere un numero o vuoto!Il nome della variabile entra in conflitto col nome della funzione!Una variabile con lo stesso nome esiste già!
- Il nome della costante non è valido: il nome deve iniziare con una lettera, può contenere lettere, cifre e underscore.
+ Il nome della costante non è valido: il nome deve iniziare con una lettera, può
+ contenere lettere, cifre e underscore.
+ La variabile di sistema non può essere cambiata!Inserisci una nuova espressione
@@ -71,7 +73,7 @@
La cronologia è vuota!CronologiaIl carattere \'%s\' non è accettato come nome di variabile!
-
+
Unità angoliGradiRadianti
@@ -80,7 +82,8 @@
Definisci l\'unità di misura predefinita per gli angoli.Numerale sistemi
- Definisce il sistema numerale di default per tutti i numeri di ingresso.
+ Definisce il sistema numerale di default per tutti i numeri di ingresso.
+ DecimaleEsadecimaleOttale
@@ -90,8 +93,12 @@
PredefinitoViolaBlu chiaro
- Precisione del risultato (tutti i calcoli sono fatti con la massima precisione, indipendentemente dal valore di questa opzione)
- Attiva o disattiva la colorazione e lo styling dell\' editor calcolatrice
+ Precisione del risultato (tutti i calcoli sono fatti con la massima
+ precisione, indipendentemente dal valore di questa opzione)
+
+ Attiva o disattiva la colorazione e lo styling dell\' editor
+ calcolatrice
+ Imposta il tema per la calcolatriceCancella cronologiaLe prossime costanti sono indefinite: {0}!
@@ -115,7 +122,7 @@
BreveMediaLunga
-
+
Durata feedback tattileDurata della vibrazione su click dei pulsanti
@@ -127,14 +134,16 @@
ASwipe distanza per i pulsanti
- Imposta distanza swipe per i pulsanti che supportano le azioni swipe supplementare
+ Imposta distanza swipe per i pulsanti che supportano le azioni swipe
+ supplementare
+ CommentoSalvatoNon salvatoEspressione copiato negli appunti!
- Stato:
- Commento:
+ Stato:
+ Commento:UsoCopia espressioneCopia risultato
diff --git a/android-app-core/res/values-it/text_vars.xml b/android-app-core/res/values-it/text_vars.xml
index 1dc3cfb5..a28135b6 100644
--- a/android-app-core/res/values-it/text_vars.xml
+++ b/android-app-core/res/values-it/text_vars.xml
@@ -6,13 +6,23 @@
- Rapporto tra la circonferenza di qualsiasi cerchio col suo diametro. Nota: questa costante è l\'unità di misura dipende => rad: 3.14, deg: 180.0
- Rapporto tra la circonferenza di qualsiasi cerchio col suo diametro. Nota: questa costante è l\'unità di misura indipendente => rad: 3.14, deg: 3.14
- Unico numero reale tale che il valore della derivata (pendenza della retta tangente) della funzione f(x) = e^x nel punto x = 0 che è uguale a 1
+ Rapporto tra la circonferenza di qualsiasi cerchio col suo diametro. Nota:
+ questa costante è l\'unità di misura dipende => rad: 3.14, deg: 180.0
+
+ Rapporto tra la circonferenza di qualsiasi cerchio col suo diametro. Nota:
+ questa costante è l\'unità di misura indipendente => rad: 3.14, deg: 3.14
+
+ Unico numero reale tale che il valore della derivata (pendenza della retta
+ tangente) della funzione f(x) = e^x nel punto x = 0 che è uguale a 1
+ Unità immaginaria, definita come i^2 = -1Velocità della luce nel vuoto, m·s^-1
- La costante gravitazionale è una costante fisica empirica coinvolta nel calcolo dell\' attrazione gravitazionale tra gli oggetti con massa, m^3·kg^−1·s^−2
- Costante fisica che riflette la dimensione dei quanti di energia in meccanica quantistica, J·s
+ La costante gravitazionale è una costante fisica empirica coinvolta nel calcolo
+ dell\' attrazione gravitazionale tra gli oggetti con massa, m^3·kg^−1·s^−2
+
+ Costante fisica che riflette la dimensione dei quanti di energia in meccanica
+ quantistica, J·s
+ Costante di riduzione di Planck, J·sNon è un numeroInfinito
diff --git a/android-app-core/res/values-ru/text_about.xml b/android-app-core/res/values-ru/text_about.xml
index 4537b879..98bee277 100644
--- a/android-app-core/res/values-ru/text_about.xml
+++ b/android-app-core/res/values-ru/text_about.xml
@@ -9,16 +9,19 @@
О программеCopyright (c) 2009-2011\n\nПрограмма создана\nserso aka se.solovyev\n\n
- Сайт приложения: http://facebook.com/calculatorpp\n\n
- Эта программа с открытыми исходным кодом:\nон может быть найден на \nhttp://github.com\n\n
- За подробной информацией, пожалуйста,\nобращайтесь на почту\nse.solovyev@gmail.com\n
+ Сайт приложения:http://facebook.com/calculatorpp\n\n
+ Эта программа с открытыми исходным кодом:\nон может быть найден на \n
+ http://github.com\n\n
+ За подробной информацией, пожалуйста,\nобращайтесь на почту\n
+ se.solovyev@gmail.com\n
или посетите сайт \nhttp://se.solovyev.org\n\n
Если вы хотите поддержать проект материально\nвы можете купить специальную опцию из настроек приложения\n\n
- Если вам понравилось приложение -\nпоставьте 5 звёздочек в\nGoogle Play\n\n
+ Если вам понравилось приложение -\nпоставьте 5 звёздочек в\n
+ Google Play\n\n
Спасибо тем, кто переводил Калькулятор++:\n
на итальянский - Gabriele Ravanetti\n
на испанский - Jordi Luna\n
- на украинский - Андрій Бандура\n\n
+ на украинский - Андрій Бандура\n\n
Это приложение использует следующие открытые библиотеки:\n
Simple (XML serialization)\n
JSCL\n
@@ -53,7 +56,8 @@
1. Поддержка ввода чисел в научной нотации (2.3E2)\n
2. Добавлены функции: deg(), rad() для перевода радианов в градусы и наоборот\n
3. Добавлена поддержка установки приложения на карту памяти\n
- 4. Добавлена поддержка сохранить целое выражение как константу (например, наберите ln(6t), нажмите +π, введите имя и сохраните)\n
+ 4. Добавлена поддержка сохранить целое выражение как константу (например, наберите ln(6t), нажмите +π, введите
+ имя и сохраните)\n
5. Исправлена проблема с функцией abs() и комплексным аргументом\n
6. Исправлена проблема с отображением результата
@@ -99,12 +103,15 @@
- 1. Добавлено построение графиков: введите выражение с одной неизвестной переменной (например, cos(t)) и нажмите на результат. В контекстном меню выберите \'Построить график\'. Поддерживаемые операции: масштабирование, сдвиг, построение графика для мнимой части комплексного числа.
+ 1. Добавлено построение графиков: введите выражение с одной неизвестной переменной (например, cos(t)) и нажмите
+ на результат. В контекстном меню выберите \'Построить график\'. Поддерживаемые операции: масштабирование, сдвиг,
+ построение графика для мнимой части комплексного числа.
1. Настройка свайпа для кнопки
- 2. Поддержка различный систем счисление (dec, bin, oct). Dec и bin могут быть выбраны из основного окна (кнопка CE) и из основных настроек\n
+ 2. Поддержка различный систем счисление (dec, bin, oct). Dec и bin могут быть выбраны из основного окна (кнопка
+ CE) и из основных настроек\n
3. Исправлена проблема упрощения для √\n
4. Улучшена производительность построения графиков
@@ -114,14 +121,16 @@
2. Расширенная история: сохранение, удаление, копирование истории (используйте длинное нажатие)\n
3. Добавлен испанский язык\n
4. Полная поддержка систем счисления (dec, hex, oct, bin)\n
- 5. !!!: Решение проблемы знака произведения на некоторых устройствах. Если у вас странные символы вместо × - измените знак произведения * в настройках приложения\n
+ 5. !!!: Решение проблемы знака произведения на некоторых устройствах. Если у вас странные символы вместо × -
+ измените знак произведения * в настройках приложения\n
6. Исправлено: правильное вычисление двойного факториала, 20x, e^(pi*i)+1 и др.
1. Добавлен экран примечаний к выпуску\n
2. Добавлены категории функций и переменных\n
- 3. Добавлены дополнительные действия для функций, операторов и переменных - контекстное меню вызывается долгим нажатием по элементу\n
+ 3. Добавлены дополнительные действия для функций, операторов и переменных - контекстное меню вызывается долгим
+ нажатием по элементу\n
4. Добавлен логарифм по любому основанию\n
5. Настройка кнопки Назад\n
6. Вариант константы π независимой от единиц измерения углов
@@ -142,10 +151,12 @@
От разработчика\n\n
Мне жаль уведомлять вас о том что в этой версии приложения появилась реклама.\n
Я не видел на андроид.маркете калькулятор с похожими возможностями и не думаю, что увижу в ближайшем будущем.\n
- Но, тем не менее, я хочу развивать его функциональность и поддерживать уже реализованное. Так случилось, что я больше не могу делать это бесплатно - разработка отнимает слишком много времени и усилий,
+ Но, тем не менее, я хочу развивать его функциональность и поддерживать уже реализованное. Так случилось, что я
+ больше не могу делать это бесплатно - разработка отнимает слишком много времени и усилий,
так как приложение стало довольно большим и сложным.\n
Если вы хотите поддержать проект и убрать рекламы, вы можете купить специальную опцию в настройках приложения,\n
- если вы не хотите или не можете этого сделать - вы по-прежнему можете отблагодарить автора программы по почте: se.solovyev@gmail.com, высоко оценить приложение на андроид.маркете\n
+ если вы не хотите или не можете этого сделать - вы по-прежнему можете отблагодарить автора программы по почте:
+ se.solovyev@gmail.com, высоко оценить приложение на андроид.маркете\n
или помочь в переводе приложения на свой родной язык.
@@ -169,7 +180,8 @@
От разработчика:\n\n
Я рад сообщить, что у Калькулятора++ появился собственный форум: http://facebook.com/calculatorpp.\n
- Здесь вы можете найти всю последнюю информацию о приложении, узнать об известных проблемах и внести свои предложения.\n
+ Здесь вы можете найти всю последнюю информацию о приложении, узнать об известных проблемах и внести свои
+ предложения.\n
Для входа вы можете использовать аккаунт социальной сети (Facebook, Twitter или Google).\n\n
1. Добавлены кнопки управления масштаб на графике\n
2. Исправлены проблемы с биллингом\n
@@ -191,59 +203,60 @@
10. Исправлены проблемы с покупкой приложения
-
- 1. Украинская локализация (Андрій Бандура)\n
- 2. HEX символы не видны в HEX режиме\n
- 3. Настройка для выключения автоматического поворота экрана\n
- 4. Настройка для убирания кнопки равно\n
- 5. Исправлена проблема с построением графиков\n
- 6. Исправлена проблема E+ (HEX режим)\n
- 7. π и Π поменяны местами\n
- 8. Добавлен инструмент перевода единиц (нажмите на дисплей или выберите в меню приложения)\n
- 9. Исправлено неправильное интегрирование и дифференцирование функции lg()
-
+
+ 1. Украинская локализация (Андрій Бандура)\n
+ 2. HEX символы не видны в HEX режиме\n
+ 3. Настройка для выключения автоматического поворота экрана\n
+ 4. Настройка для убирания кнопки равно\n
+ 5. Исправлена проблема с построением графиков\n
+ 6. Исправлена проблема E+ (HEX режим)\n
+ 7. π и Π поменяны местами\n
+ 8. Добавлен инструмент перевода единиц (нажмите на дисплей или выберите в меню приложения)\n
+ 9. Исправлено неправильное интегрирование и дифференцирование функции lg()
+
-
- 1. Виртуальная клавиатура больше не показывается на Android 4 ICS\n
- 2. Быстрый перевод чисел из контекстного меню дисплея\n
- 3. Другие исправления GUI
-
+
+ 1. Виртуальная клавиатура больше не показывается на Android 4 ICS\n
+ 2. Быстрый перевод чисел из контекстного меню дисплея\n
+ 3. Другие исправления GUI
+
-
- 1. Теперь у нас есть своя страница на Facebook: facebook.com/calculatorpp\n
- 2. Поддержка планшетов (новый потрясающий UI)\n
- 3. Улучшенный графопостроитель\n
- 4. Промежуточные вычисления не записываются в историю\n
- 5. Более быстрый отклик приложения\n
- 6. Отправление отчётов об ошибках\n
- 7. Китайская локализация
-
+
+ 1. Теперь у нас есть своя страница на Facebook: facebook.com/calculatorpp\n
+ 2. Поддержка планшетов (новый потрясающий UI)\n
+ 3. Улучшенный графопостроитель\n
+ 4. Промежуточные вычисления не записываются в историю\n
+ 5. Более быстрый отклик приложения\n
+ 6. Отправление отчётов об ошибках\n
+ 7. Китайская локализация
+
-
- 1. Улучшения UI для 4-7 дюймовых экранов\n
- 2. Переменная ans (последний вычисленный результат)
-
+
+ 1. Улучшения UI для 4-7 дюймовых экранов\n
+ 2. Переменная ans (последний вычисленный результат)
+
-
- 1. Виджет для рабочего стола (работает только если приложение установлено на внутреннюю память телефона)\n
- 2. Раскладка от мобильного телефона для планшета (Настройки->Настройки внешнего вида->Раскладка->Научная (телефон))\n
- 3. Ручные вычисления (Настройки->Настройки вычислений->Результат вычисляется…)
-
+
+ 1. Виджет для рабочего стола (работает только если приложение установлено на внутреннюю память телефона)\n
+ 2. Раскладка от мобильного телефона для планшета (Настройки->Настройки внешнего вида->Раскладка->Научная
+ (телефон))\n
+ 3. Ручные вычисления (Настройки->Настройки вычислений->Результат вычисляется…)
+
-
- 1. Поддержка пользовательских функций (кнопка +f или кнопка + на экране функций)\n
- 2. Добавлены различные размеры виджета: 3x3, 3x4, 4x4, 4x5\n
- 3. Добавлено несколько функций: re(x), im(x), √3(x), √4(x), √n(x, n)\n
- 4. Система счисления/единицы измерения углов по умолчанию + окно с ошибками расчётов\n
- 5. Ускорена работа приложения\n
- 6. Исправлена проблема размера шрифта кнопок в мобильной раскладке (для планшетов)\n
- 7. Другие исправления
-
+
+ 1. Поддержка пользовательских функций (кнопка +f или кнопка + на экране функций)\n
+ 2. Добавлены различные размеры виджета: 3x3, 3x4, 4x4, 4x5\n
+ 3. Добавлено несколько функций: re(x), im(x), √3(x), √4(x), √n(x, n)\n
+ 4. Система счисления/единицы измерения углов по умолчанию + окно с ошибками расчётов\n
+ 5. Ускорена работа приложения\n
+ 6. Исправлена проблема размера шрифта кнопок в мобильной раскладке (для планшетов)\n
+ 7. Другие исправления
+
-
- 1. Калькулятор в отдельном окне\n
- 2. Исправлен UI для некоторых устройств
-
+
+ 1. Калькулятор в отдельном окне\n
+ 2. Исправлен UI для некоторых устройств
+
1. Возможность удаления иконки для Калькулятора++ в отдельном окне\n
@@ -251,13 +264,13 @@
3. Исправлено дрожание окна Калькулятора++
-
- 1. Полностью переработан графопостроитель\n
- 2. Добавлена возможность построения нескольких функций на одном графике\n
- 3. Добавлено построение в 3D\n
- 4. Добавлена возможность деать скриншоты графика\n
- 5. Исправлены проблемы с пользовательскими функциями\n
- 6. Другие исправления
-
+
+ 1. Полностью переработан графопостроитель\n
+ 2. Добавлена возможность построения нескольких функций на одном графике\n
+ 3. Добавлено построение в 3D\n
+ 4. Добавлена возможность деать скриншоты графика\n
+ 5. Исправлены проблемы с пользовательскими функциями\n
+ 6. Другие исправления
+
\ No newline at end of file
diff --git a/android-app-core/res/values-ru/text_functions.xml b/android-app-core/res/values-ru/text_functions.xml
index cfe049be..8a2d5f55 100644
--- a/android-app-core/res/values-ru/text_functions.xml
+++ b/android-app-core/res/values-ru/text_functions.xml
@@ -23,15 +23,25 @@
Функция квадратного корня.Функция кубического корня.Модуль.
- Знак - возвращает знак аргумента: -1, если аргумент меньше0, 0, если равен 0, 1, если больше 0.
+ Знак - возвращает знак аргумента: -1, если аргумент меньше0, 0, если равен 0,
+ 1, если больше 0.
+ Равно - возвращает 1, если два аргумента равны, иначе 0.
- Меньше-либо-равно - возвращает 1, если два аргумента равны или первое меньше второго, иначе 0.
- Больше-либо-равно - возвращает 1 если два аргумента равны или первое больше второго, иначе 0.
+ Меньше-либо-равно - возвращает 1, если два аргумента равны или первое меньше
+ второго, иначе 0.
+
+ Больше-либо-равно - возвращает 1 если два аргумента равны или первое больше
+ второго, иначе 0.
+ Не-равно - возвращает 1, если два аргумента не равны, иначе 0.Меньше - возвращает 1, если первый аргумент меньше второго, иначе 0.Больше - возвращает 1, если первый аргумент больше второго, иначе 0.
- Преобразует градусы в радианы: d - градусы, m - минуты (по умолчанию = 0), s - секунды (по умолчанию = 0)
- Преобразует градусы из шестидесятеричной системы в десятичную: d - градусы, m - минуты (по умолчанию = 0), s - секунды (по умолчанию = 0)
+ Преобразует градусы в радианы: d - градусы, m - минуты (по умолчанию = 0), s -
+ секунды (по умолчанию = 0)
+
+ Преобразует градусы из шестидесятеричной системы в десятичную: d - градусы, m -
+ минуты (по умолчанию = 0), s - секунды (по умолчанию = 0)
+ Преобразует радианы в градусы.Тригонометрические
diff --git a/android-app-core/res/values-ru/text_help.xml b/android-app-core/res/values-ru/text_help.xml
index 0a47b1be..98b9165a 100644
--- a/android-app-core/res/values-ru/text_help.xml
+++ b/android-app-core/res/values-ru/text_help.xml
@@ -14,22 +14,26 @@
Как я могу убрать рекламу?\n
\n
Вы можете сделать это купив специальную опцию из настроек приложения.\n
- Покупка проводится через Google Play и привязана к вашему google аккаунту.\n
- Все ваши устройства будут знать о покупке и не будут показывать рекламу.\n
- \n
+ Покупка проводится через Google Play и привязана к вашему google аккаунту.\n
+ Все ваши устройства будут знать о покупке и не будут показывать рекламу.\n
+ \n
Почему Калькулятор++ требует ИНТЕРНЕТ разрешения?\n
\n
- На данный момент такое разрешение требуется только для одной цели - показать рекламу. Если вы купите специальную опцию К++ не будет больше использовать ваше интернет подключение.\n
+ На данный момент такое разрешение требуется только для одной цели - показать рекламу. Если вы купите специальную
+ опцию К++ не будет больше использовать ваше интернет подключение.\n
\n
Как я могу использовать функции написанные в верхнем правом и нижнем правом углах кнопки?\n
\n
- Нажмите на кнопку и потяните вверх или вниз. В зависимости от значения указанного на кнопке произойдёт действие.\n
+ Нажмите на кнопку и потяните вверх или вниз. В зависимости от значения указанного на кнопке произойдёт
+ действие.\n
\n
Как я могу переключиться между радианами и градусами?\n
\n
- Для переключения единиц измерения углов либо выберите соответствующий пункт настроек приложения,\nлибо воспользуйтесь переключателем, расположенным на клавише 6\n
+ Для переключения единиц измерения углов либо выберите соответствующий пункт настроек приложения,\nлибо
+ воспользуйтесь переключателем, расположенным на клавише 6\n
(текущее значение выделено жёлтым цветом).\n
- Также вы можете воспользоваться функциями deg() и rad() и оператором ° для перевода радиан в градусы и обратно.\n
+ Также вы можете воспользоваться функциями deg() и rad() и оператором ° для перевода радиан в градусы и
+ обратно.\n
\n
Примеры:\n
268° = 4.67748\n
@@ -50,12 +54,17 @@
\n
Замечание:\n
\n
- 100 + (20 + 20)% = 140, но 100+ (20% + 20%) = 124.0\n
- 100 + 50% ^ 2 = 2600, но 100 + 50 ^ 2% = 101.08\n
+ 100 + (20 + 20)% = 140,
+ но
+ 100+ (20% + 20%) = 124.0\n
+ 100 + 50% ^ 2 = 2600,
+ но
+ 100 + 50 ^ 2% = 101.08\n
\n
Поддерживает ли К++ дробные вычисления?\n
\n
- Да, вы можете ввести дробное выражение в редактор и нажать ≡ (в правом верхнем углу кнопки =). Также вы можете использовать ≡ для упрощения выражений.\n
+ Да, вы можете ввести дробное выражение в редактор и нажать ≡ (в правом верхнем углу кнопки =). Также вы можете
+ использовать ≡ для упрощения выражений.\n
\n
Примеры:\n
\n
@@ -74,7 +83,8 @@
\n
Умеет ли К++ строить графики функций?\n
\n
- Да, введите выражение с 1 неизвестной переменной (например, cos(t)) и нажмите на результат. В контекстном меню выберите \'Построить график\'\n
+ Да, введите выражение с 1 неизвестной переменной (например, cos(t)) и нажмите на результат. В контекстном меню
+ выберите \'Построить график\'\n
\n
Поддерживает ли К++ матричные вычисления?\n
\n
@@ -86,7 +96,8 @@
- 1. Вы можете опускать ненужные знаки произведения в выражении (вместо 3*t или t*sin(π*t) просто пишите 3t или tsin(πt)).\n\n
+ 1. Вы можете опускать ненужные знаки произведения в выражении (вместо 3*t или t*sin(π*t) просто пишите 3t или
+ tsin(πt)).\n\n
2. Используйте ≡ (в верхнем правом углу кнопки =) для упрощения выражения.\n\n
3. Нажмите на результат для того, чтобы скопировать его в буфер обмена.\n\n
4. Используйте кнопку = реже - результат вычисляется на лету.\n\n
@@ -95,12 +106,29 @@
- 1. Основной экран: открывается по старту приложения, на него можно попасть из любого другого экрана нажав кнопку Назад.\n\n
- 2. Экран констант и переменных: содержит список переменных и констант. Пользователь может добавить новые элементы нажав кнопку Добавить. Короткое нажатие вставляет значение в редактор, длинное - открывает окно редактирования. На экран можно попасть нажав кнопку π,… на основном экране.\n\n
- 3. Экран функций: содержит список всех доступных функций. Короткое нажатие вставляет функцию в редактор. На экран можно попасть нажав кнопку f(x) на основном экране.\n\n
- 4. Экран операторов: содержит список всех доступных операторов. Короткое нажатие вставляет оператор в редактор. На экран можно попасть нажав кнопку ∂,… на основном экране.\n\n
- 5. Экран истории: содержит список всех операций произведённых пользователем. Короткое нажатие на элемент списка вставляет его в редактор. На экран можно попасть нажав кнопку M на основном экране.\n\n
- 6. Экран настроек: содержит список настроек приложения. На экран можно попасть нажав кнопку Настройки в меню.
+ 1.
+ Основной экран:
+ открывается по старту приложения, на него можно попасть из любого другого экрана нажав кнопку Назад.\n\n
+ 2.
+ Экран констант и переменных:
+ содержит список переменных и констант. Пользователь может добавить новые элементы нажав кнопку Добавить.
+ Короткое нажатие вставляет значение в редактор, длинное - открывает окно редактирования. На экран можно попасть
+ нажав кнопку π,… на основном экране.\n\n
+ 3.
+ Экран функций:
+ содержит список всех доступных функций. Короткое нажатие вставляет функцию в редактор. На экран можно попасть
+ нажав кнопку f(x) на основном экране.\n\n
+ 4.
+ Экран операторов:
+ содержит список всех доступных операторов. Короткое нажатие вставляет оператор в редактор. На экран можно
+ попасть нажав кнопку ∂,… на основном экране.\n\n
+ 5.
+ Экран истории:
+ содержит список всех операций произведённых пользователем. Короткое нажатие на элемент списка вставляет его в
+ редактор. На экран можно попасть нажав кнопку M на основном экране.\n\n
+ 6.
+ Экран настроек:
+ содержит список настроек приложения. На экран можно попасть нажав кнопку Настройки в меню.
\ No newline at end of file
diff --git a/android-app-core/res/values-ru/text_operators.xml b/android-app-core/res/values-ru/text_operators.xml
index be82b3d6..b251a4e4 100644
--- a/android-app-core/res/values-ru/text_operators.xml
+++ b/android-app-core/res/values-ru/text_operators.xml
@@ -9,15 +9,23 @@
ОператорыВозвращает остаток от деления \'x\' на \'y\'.
- Суммирует функции \'f(i)\', пробегая по переменной \'i\' от \'from\' до \'to\'.
- Возвращает произведение функций \'f(i)\', пробегая по переменной \'i\' от \'from\' до \'to\'.
- Возвращает производную порядка \'order\' (по умолчанию = 1) функции \'f(x)\' по переменной \'x\' и вычисляет её в точке \'x_point\' (по умолчанию = такая же как и \'x\').
+ Суммирует функции \'f(i)\', пробегая по переменной \'i\' от \'from\' до
+ \'to\'.
+
+ Возвращает произведение функций \'f(i)\', пробегая по переменной \'i\' от
+ \'from\' до \'to\'.
+
+ Возвращает производную порядка \'order\' (по умолчанию = 1) функции
+ \'f(x)\' по переменной \'x\' и вычисляет её в точке \'x_point\' (по умолчанию = такая же как и \'x\').
+ Возвращает интеграл функции \'f(x)\' по переменной \'x\'.
- Интегрирует функцию \'f(x)\' по переменной \'x\' от \'a\' до \'b\'.
+ Интегрирует функцию \'f(x)\' по переменной \'x\' от \'a\' до \'b\'.
+ Возвращает факториал от предыдущего выражения.Возвращает двойной факториал от предыдущего выражения.
- Возвращает процентное значение от предыдущего выражения.\nПримеры:\n
+ Возвращает процентное значение от предыдущего
+ выражения.\nПримеры:\n
100 + 50% = 150\n
100 * 50% = 50\n
100 + 100 * 50% * 50% = 125
diff --git a/android-app-core/res/values-ru/text_preferences.xml b/android-app-core/res/values-ru/text_preferences.xml
index 1ae61f20..c86a4986 100644
--- a/android-app-core/res/values-ru/text_preferences.xml
+++ b/android-app-core/res/values-ru/text_preferences.xml
@@ -1,16 +1,26 @@
- Переключатель автоматического поворота экрана
- Если включено, то калькулятор будет автоматически менять ориентацию экрана
+ Переключатель автоматического поворота экрана
+ Если включено, то калькулятор будет автоматически менять ориентацию
+ экрана
+
- Показывать клавишу равно
- Если включено, то клавиша равно будет показана
+ Показывать клавишу равно
+ Если включено, то клавиша равно будет показана
- Не показывать цифры из других систем счисления
- Если включено, то цифры из других систем счисления не будут показаны
+ Не показывать цифры из других систем счисления
+ Если включено, то цифры из других систем счисления не будут
+ показаны
+
- Показывать промежуточные вычисления на экране истории
- Если включено, то все вычисления будут показаны на экране истории
+ Показывать промежуточные вычисления на экране
+ истории
+
+ Если включено, то все вычисления будут показаны
+ на экране истории
+
- Результат вычисляется по мере ввода выражения
- Если включено, то результат вычисляется по мере ввода выражения
+ Результат вычисляется по мере ввода выражения
+ Если включено, то результат вычисляется по мере ввода
+ выражения
+
\ No newline at end of file
diff --git a/android-app-core/res/values-ru/text_strings.xml b/android-app-core/res/values-ru/text_strings.xml
index db095c87..f6024a5a 100644
--- a/android-app-core/res/values-ru/text_strings.xml
+++ b/android-app-core/res/values-ru/text_strings.xml
@@ -8,8 +8,8 @@
Калькулятор++
- Калькулятор++ (В отдельном окне)
- Калькулятор++ Free
+ Калькулятор++ (В отдельном окне)
+ Калькулятор++ FreeКальк++НастройкиОшибка
@@ -44,10 +44,14 @@
Округление результатаВключает/выключает округление результатаРезультат в научной форме
- Если включено - результат будет всегда записан в научной форме (12.34E-12)
+ Если включено - результат будет всегда записан в научной форме
+ (12.34E-12)
+ Точность результатаМаксимальное время вычисления
- Если вычисления превысят установленный предел - калькулятор остановится с ошибкой
+ Если вычисления превысят установленный предел - калькулятор
+ остановится с ошибкой
+ ВыходДобавитьОтмена
@@ -63,10 +67,14 @@
Создать переменнуюРедактировать переменную
- Значение должно либо оставаться пустым либо быть числом: если у вас есть параметры, то создайте функцию!
+ Значение должно либо оставаться пустым либо быть числом: если у вас есть
+ параметры, то создайте функцию!
+ Имя переменной не может быть зарезервированным системным именем!Переменная с таким именем уже существует!
- Имя переменной не валидно: имя должно начинаться с буквы, может содержать буквы, цифры и знак подчёркивания.
+ Имя переменной не валидно: имя должно начинаться с буквы, может содержать буквы,
+ цифры и знак подчёркивания.
+ Системная переменная не может быть изменена!Введите новое выражение
@@ -83,10 +91,13 @@
РадианыГрадыОбороты
- Устанавливает единицы измерения углов которые будут использованы при вычислениях
+ Устанавливает единицы измерения углов которые будут использованы при
+ вычислениях
+ Текущая система счисления
- Устанавливает систему счисления которая будет использована при вычислениях
+ Устанавливает систему счисления которая будет использована при вычислениях
+ ДесятичнаяШестнадцатеричнаяВосьмеричная
@@ -99,8 +110,11 @@
Метро Синяя (По умолчанию)Метро ЗелёнаяМетро Фиолетовая
- Точность результата(все вычисления производятся максимально точно)
- Включает/выключает подсветку синтаксиса в поле редактирования калькулятора
+ Точность результата(все вычисления производятся максимально точно)
+
+ Включает/выключает подсветку синтаксиса в поле редактирования
+ калькулятора
+ Устанавливает тему оформления приложенияОчистить историюСледующие константы не определены: {0}!
@@ -116,8 +130,8 @@
РаскладкаНаучная (телефон)Научная
- Научная (большие кнопкм)
- Простая
+ Научная (большие кнопкм)
+ ПростаяУстанавливает раскладку кнопокОтклик на нажатие
@@ -138,17 +152,19 @@
ДоДлина свайпа для клавиш
- Устанавливает длину свайпа для клавиш которые поддерживают дополнительные действия по свайпу
+ Устанавливает длину свайпа для клавиш которые поддерживают дополнительные
+ действия по свайпу
+ КомментарийСохраненоНе сохраненоВыражение скопировано в буфер!
- Статус:
- Комментарий:
+ Статус:
+ Комментарий:Использовать
- Исп.
- Копировать выражение
+ Исп.
+ Копировать выражениеКопировать результатЗначениеСохранено (см. вкладку \'Сохранённая история\')
@@ -167,10 +183,16 @@
Копировать значениеПриветствие
- Спасибо за выбор Калькулятора++!\n\nКалькулятор++ - это мощный инструмент для проведения ежедневных расчётов.\n\nДля избавление от рекламы и поддержки проекта вы можете воспользоваться специальной опцией доступной из настроек приложения.\n\nПеред началом работы рекомендуется прочитать FAQ и подсказки для использования всех возможностей программы (нажмите Меню, затем Помощь)
+ Спасибо за выбор Калькулятора++!\n\nКалькулятор++ - это мощный инструмент для
+ проведения ежедневных расчётов.\n\nДля избавление от рекламы и поддержки проекта вы можете воспользоваться
+ специальной опцией доступной из настроек приложения.\n\nПеред началом работы рекомендуется прочитать FAQ и
+ подсказки для использования всех возможностей программы (нажмите Меню, затем Помощь)
+ Показывать примечания к выпуску
- Определяет показывать или нет всплывающее окно с примечаниями к выпуску после обновления новой версии
+ Определяет показывать или нет всплывающее окно с примечаниями к
+ выпуску после обновления новой версии
+ Устанавливает поведение по нажатию на кнопку НазадИспользовать кнопку назад как назад по истории
@@ -180,7 +202,9 @@
ВниманиеОшибка
- Биллинг не поддерживается: вы должны иметь Google Checkout аккаунт привязанный в вашему Google аккаунту и должны быть подключены к интернету.
+ Биллинг не поддерживается: вы должны иметь Google Checkout аккаунт привязанный в
+ вашему Google аккаунту и должны быть подключены к интернету.
+ Поддержать проектИ убрать рекламу
@@ -192,146 +216,177 @@
ОтзывВы используете Калькулятор++ некоторое время\n
и для нас важно узнать ваше мнение о приложении.\n\n
- Пожалуйста, оцените Калькулятор++ \nна Google Play,\n оставьте комментарий или \nобсудите приложение \nв Facebook
+ Пожалуйста, оцените Калькулятор++ \nна
+ Google Play,\n оставьте
+ комментарий или \nобсудите приложение \nв
+ Facebook
- Хорошие новости - я только что выпустил новое приложение под Андроид под названием Заметки++.\n
- Если вы заинтересованы в быстром и удобном способе оставлять заметки пройдите по ссылке и попробуйте Заметки++!
-
+ Хорошие новости - я только что выпустил новое приложение под Андроид под
+ названиемЗаметки++.\n
+ Если вы заинтересованы в быстром и удобном способе оставлять заметки пройдите по
+ ссылке
+ и попробуйте Заметки++!
+ Единицы измерения углов изменены на \'%s\'!Система счисления изменена на \'%s\'!
- Перевод величин
+ Перевод величин
- Перевести в…
+ Перевести в…
- Перевести в hex
- Перевести в bin
- Перевести в dec
+ Перевести в hex
+ Перевести в bin
+ Перевести в dec
- Редактор
- Результат
- Другие
- Производные/Интегралы
- Калькулятор++ обнаружил ошибку…
- Отчёт об ошибке в Калькуляторе++
-
- К сожалению, Калькулятор++ завершился с ошибкой.\n\n
- Для того чтобы исправить её, нам необходима некоторая дополнительная информация. Мы рекомендуем вам выслать этот отчёт об ошибке (после нажатия кнопки \'Да\' вы увидите всю передаваемую информацию в новом окне).\n\n
- Хотите ли вы выслать отчёт об ошибке?
-
- Настройки графиков
+ Редактор
+ Результат
+ Другие
+ Производные/Интегралы
+ Калькулятор++ обнаружил ошибку…
+ Отчёт об ошибке в Калькуляторе++
+
+ К сожалению, Калькулятор++ завершился с ошибкой.\n\n
+ Для того чтобы исправить её, нам необходима некоторая дополнительная информация. Мы рекомендуем вам выслать этот
+ отчёт об ошибке (после нажатия кнопки \'Да\' вы увидите всю передаваемую информацию в новом окне).\n\n
+ Хотите ли вы выслать отчёт об ошибке?
+
+ Настройки графиков
- Интерполировать график
- Если включено - при построении графика будет использована интерполяция
- Цвет вещественной части графика
- Устанавливает цвет вещественной части графика
- Цвет мнимой части графика
- Устанавливает цвет мнимой части графика
+ Интерполировать график
+ Если включено - при построении графика будет использована
+ интерполяция
+
+ Цвет вещественной части графика
+ Устанавливает цвет вещественной части графика
+ Цвет мнимой части графика
+ Устанавливает цвет мнимой части графика
- Белый
- Серый
- Красный
- Синий
- Зелёный
+ Белый
+ Серый
+ Красный
+ Синий
+ Зелёный
- Имя
- Тело функции
- Описание
- Параметры
+ Имя
+ Тело функции
+ Описание
+ Параметры
- Создать функцию
- Редактировать функцию
- Не правильное имя функции: имя должно начинаться с буквы, должно содержать буквы, цифры и знаки подчёркивания.
- Функция с таким именем уже существует!
- Тело функции не должно быть пустым!
- Имя параметра не должно быть пустым!
- Вы действительно хотите удалить функцию \'%s\'?
- Невозможно создать пустую функцию!
+ Создать функцию
+ Редактировать функцию
+ Не правильное имя функции: имя должно начинаться с буквы, должно содержать
+ буквы, цифры и знаки подчёркивания.
+
+ Функция с таким именем уже существует!
+ Тело функции не должно быть пустым!
+ Имя параметра не должно быть пустым!
+ Вы действительно хотите удалить функцию \'%s\'?
+ Невозможно создать пустую функцию!
- Не показывать это сообщение до следующего запуска программы
- Калькулятор++
- При построении графика возникла арифметическая ошибка: %s
- Да
- Показывать сообщения об ошибках в диалоге
- Если включено, то сообщения об ошибках возникающих при вычислениях будут показаны в отдельном диалоге
- Исправить
+ Не показывать это сообщение до следующего запуска программы
+ Калькулятор++
+ При построении графика возникла арифметическая ошибка: %s
+ Да
+ Показывать сообщения об ошибках в диалоге
+ Если включено, то сообщения об ошибках возникающих при
+ вычислениях будут показаны в отдельном диалоге
+
+ Исправить
- Система счисления по умолчанию
- Устанавливает систему счисления по умолчанию
- Система счисления по умолчанию \'%1$s\' отличается от текущей \'%2$s\'. Забыли её вернуть?
+ Система счисления по умолчанию
+ Устанавливает систему счисления по умолчанию
+ Система счисления по умолчанию \'%1$s\' отличается от текущей
+ \'%2$s\'. Забыли её вернуть?
+
- Единицы измерения углов по умолчанию
- Устанавливает единицы измерения углов по умолчанию
- Единицы измерения углов по умолчанию \'%1$s\' отличаются от текущих \'%2$s\'. Забыли их вернуть?
+ Единицы измерения углов по умолчанию
+ Устанавливает единицы измерения углов по умолчанию
+ Единицы измерения углов по умолчанию \'%1$s\' отличаются от текущих
+ \'%2$s\'. Забыли их вернуть?
+
- Закрыть
- Калькулятор++ Виджет (3x3)
- Калькулятор++ Виджет (3x4)
- Калькулятор++ Виджет (4x4)
- Калькулятор++ Виджет (4x5)
- Нажмите чтобы открыть калькулятор в отдельном окне
+ Закрыть
+ Калькулятор++ Виджет (3x3)
+ Калькулятор++ Виджет (3x4)
+ Калькулятор++ Виджет (4x4)
+ Калькулятор++ Виджет (4x5)
+ Нажмите чтобы открыть калькулятор в отдельном окне
- Настройки калькулятора в отдельном окне
- Запуск после загрузки устройства
- Если включено, то кнопка Калькулятора++ будет доступна в панели уведомлений после загрузки устройства
+ Настройки калькулятора в отдельном окне
+ Запуск после загрузки устройства
+ Если включено, то кнопка Калькулятора++ будет доступна в панели
+ уведомлений после загрузки устройства
+
- Показывать отдельную иконку (может потребовать перезагрузки)
- Если включено, то вторая иконка будет добавлена в список приложений
+ Показывать отдельную иконку (может потребовать перезагрузки)
+
+ Если включено, то вторая иконка будет добавлена в список
+ приложений
+
- Вы можете удалить вторую иконку Калькулятора++ из списка приложений из настроек или нажав следующую кнопку
+ Вы можете удалить вторую иконку Калькулятора++ из списка приложений
+ из настроек или нажав следующую кнопку
+ Удалить иконкуЭто изменение может потребовать перезагрузки
- 2D график
- 3D график
- Функции на графике
+ 2D график
+ 3D график
+ Функции на графике
- Строить мнимую часть функции
- Если включено, то мнимая часть функции будет построена на графике
+ Строить мнимую часть функции
+ Если включено, то мнимая часть функции будет построена на графике
+
- Одноцветный
- Многоцветный (только в 3D)
+ Одноцветный
+ Многоцветный (только в 3D)
- Сплошной (-----)
- Пунктирный (- - -)
- Точечный (. . .)
- Точечно-пунктирный (-.-.-)
+ Сплошной (-----)
+ Пунктирный (- - -)
+ Точечный (. . .)
+ Точечно-пунктирный (-.-.-)
- Графопостроитель
- Сделать снимок графика
- Снимок графика сохранён: %1$s!
- Снимок не может быть сохранён, из-за отсутствия SD карты. Вставьте SD карту и повторите!
+ Графопостроитель
+ Сделать снимок графика
+ Снимок графика сохранён: %1$s!
+ Снимок не может быть сохранён, из-за отсутствия SD карты. Вставьте
+ SD карту и повторите!
+
- Тип цвета линии
- Цвет линии
- Тип линии
- Толщина линии
- Настройки функции
- Функция
- Закреплена
- Видна
- +граф
- Невозможно построить пустую функцию!
- Невозможно построить функцию: слишком много переменных!
- Интервал построения
- X мин
- X макс
- Y мин
- Y макс
- Неправильное число!
- Границы графика не могут быть равны!
- Применить
- Сообщение
- Продолжить
- Поддержать проект очень легко и безопасно: процесс покупки проводится Google и всё что вам нужно - это настроенный Google аккаунт.\n\n
- Информация о покупке хранится на серверах Google с вашим Google аккаунтом и вы можете легко использовать приложение на нескольких устройствах.\n\n
- По нажатию кнопки \'Продолжить\' вы будете перенаправлены в приложение Google Play для совершения покупки.
-
- Покупка
+ Тип цвета линии
+ Цвет линии
+ Тип линии
+ Толщина линии
+ Настройки функции
+ Функция
+ Закреплена
+ Видна
+ +граф
+ Невозможно построить пустую функцию!
+ Невозможно построить функцию: слишком много переменных!
+ Интервал построения
+ X мин
+ X макс
+ Y мин
+ Y макс
+ Неправильное число!
+ Границы графика не могут быть равны!
+ Применить
+ Сообщение
+ Продолжить
+ Поддержать проект очень легко и безопасно: процесс покупки проводится Google и всё
+ что вам нужно - это настроенный Google аккаунт.\n\n
+ Информация о покупке хранится на серверах Google с вашим Google аккаунтом и вы можете легко использовать
+ приложение на нескольких устройствах.\n\n
+ По нажатию кнопки \'Продолжить\' вы будете перенаправлены в приложение Google Play для совершения покупки.
+
+ Покупка
- Спасибо за помощь в развитии проекта!\n\n Приложение получит уведомление о покупке в течение нескольких минут. Вы всегда можете посмотреть состояние покупки в вашем Google аккаунте.\n
- Если у вас есть вопросы или проблемы вы всегда можете обратиться ко мне напрямую (конакты доступны в Меню->О приложении)
-
+ Спасибо за помощь в развитии проекта!\n\n Приложение получит уведомление
+ о покупке в течение нескольких минут. Вы всегда можете посмотреть состояние покупки в вашем Google аккаунте.\n
+ Если у вас есть вопросы или проблемы вы всегда можете обратиться ко мне напрямую (конакты доступны в Меню->О
+ приложении)
+
\ No newline at end of file
diff --git a/android-app-core/res/values-ru/text_vars.xml b/android-app-core/res/values-ru/text_vars.xml
index 2967156a..31219fc1 100644
--- a/android-app-core/res/values-ru/text_vars.xml
+++ b/android-app-core/res/values-ru/text_vars.xml
@@ -6,13 +6,21 @@
- Отношение длины окружности к диаметру. Внимание: эта постоянная зависит от единиц измерения углов => rad: 3.14, deg: 180.0
- Отношение длины окружности к диаметру. Внимание: эта постоянная не зависит от единиц измерения углов => rad: 3.14, deg: 3.14
- Вещественное число, такое что производная функции f(x) = e^x в точке x = 0 равно 1
+ Отношение длины окружности к диаметру. Внимание: эта постоянная зависит от
+ единиц измерения углов => rad: 3.14, deg: 180.0
+
+ Отношение длины окружности к диаметру. Внимание: эта постоянная не зависит от
+ единиц измерения углов => rad: 3.14, deg: 3.14
+
+ Вещественное число, такое что производная функции f(x) = e^x в точке x = 0 равно
+ 1
+ Мнимая единица, определённая как i^2 = −1Скорость света в вакууме, м·с^-1Гравитационная постоянная, с^3·кг^−1·с^−2
- Постоянная Планка - коэффициент, связывающий величину энергии электромагнитного излучения с его частотой, Дж·с
+ Постоянная Планка - коэффициент, связывающий величину энергии электромагнитного
+ излучения с его частотой, Дж·с
+ Приведённая постоянная Планка, Дж·сНе числоБесконечность
diff --git a/android-app-core/res/values-uk/text_about.xml b/android-app-core/res/values-uk/text_about.xml
index e4a9d126..4739f53a 100644
--- a/android-app-core/res/values-uk/text_about.xml
+++ b/android-app-core/res/values-uk/text_about.xml
@@ -9,12 +9,15 @@
Про програмуCopyright (c) 2009-2011\n\nСтворено serso aka se.solovyev\n\n
- Сайт програми: http://facebook.com/calculatorpp\n\n
- Ця програма з відкритим вихідним кодом:\nйого можна знайти на \nhttp://github.com\n\n
- За детальною інформацією, будь ласка, звертайтеся до автора на пошту\nse.solovyev@gmail.com
+ Сайт програми:http://facebook.com/calculatorpp\n\n
+ Ця програма з відкритим вихідним кодом:\nйого можна знайти на \n
+ http://github.com\n\n
+ За детальною інформацією, будь ласка, звертайтеся до автора на пошту\n
+ se.solovyev@gmail.com
\nабо відвідайте сайт\nhttp://se.solovyev.org\n\n
- Якщо хочете підтримати проект фінансово,\nто ви можете купити спеціальну опцію у налаштуваннях програми\n\n
- Якщо вам сподобалася програма,\n то оцініть її у 5 зірочок на\nGoogle Play\n\n
+ Якщо хочете підтримати проект фінансово,\nто ви можете купити спеціальну опцію у налаштуваннях програми\n\n
+ Якщо вам сподобалася програма,\n то оцініть її у 5 зірочок на\n
+ Google Play\n\n
Дякую усім, хто переклав Калькулятор++ на інші мови:\n
італійську - Gabriele Ravanetti\n
іспанську - Jordi Luna\n
@@ -27,7 +30,7 @@
Замітки до випуску„Замітки до випуску версії“
-
+
1. Реакція на натискання\n
2. Дві розкладки кнопок: калькулятор і телефон\n
@@ -53,13 +56,14 @@
1. Підтримка вводу чисел у експоненційній формі (2.3E2)\n
2. Додано функції: deg(), rad() для перетворення радіан у градуси і навпаки\n
3. Додано підтримку встановлення програми на карту пам’яті\n
- 4. Додано можливість зберегти цілий вираз як сталу (наприклад, наберіть ln(6t), натисніть +π кнопку, введіть ім’я та збережіть)\n
+ 4. Додано можливість зберегти цілий вираз як сталу (наприклад, наберіть ln(6t), натисніть +π кнопку, введіть
+ ім’я та збережіть)\n
5. Виправлено проблему з функцією abs() and комплексним аргументом\n
6. Виправлено проблему з відображенням результату
- 1. Виправлено проблему з i^3\n
+ 1. Виправлено проблему з i^3\n
2. Виправлено збій через велику кількість дужок
@@ -99,12 +103,15 @@
- 1. Додано побудову графіків: введіть вираз з одніє невідомою змінною (наприклад, cos(t)) і натисніть результат. У контекстному меню виберіть \'Побудувати графік\'. Підтримувані операції: масштабування, зсув, побудова графіка уявної частини
+ 1. Додано побудову графіків: введіть вираз з одніє невідомою змінною (наприклад, cos(t)) і натисніть результат.
+ У контекстному меню виберіть \'Побудувати графік\'. Підтримувані операції: масштабування, зсув, побудова графіка
+ уявної частини
1. Buttons swipe preference\n
- 2. Додано підтримку для різних систем числення (dec, bin, oct). Dec та bin можна вибрати із головного екрану (кнопка CE) та у налаштуваннях програми\n
+ 2. Додано підтримку для різних систем числення (dec, bin, oct). Dec та bin можна вибрати із головного екрану
+ (кнопка CE) та у налаштуваннях програми\n
3. Виправлено проблему спрощення для √ \n
4. Збільшено швидкість побудови графіків
@@ -114,14 +121,16 @@
2. Розширена історія: зберегти, вилучити, копіювати (натисніть і утримуйте для додаткових дій)\n
3. Додано іспанську мову\n
4. Повна підтримка систем числення (dec, hex, oct, bin)\n
- 5. !!!: Виправлено проблему із знаком множення на деяких пристрояї - якщо у вас дивні символи замість × - перейдіть до налаштувань та змініть знак множення на *\n
+ 5. !!!: Виправлено проблему із знаком множення на деяких пристрояї - якщо у вас дивні символи замість × -
+ перейдіть до налаштувань та змініть знак множення на *\n
6. Виправлено: правильне обчислення подвійного факторіала, 20x, e^(pi*i)+1 fix та ін.
1. Додано екран заміток до випуску \n
2. Додано категорії функцій та змінних\n
- 3. Додано додаткові дії для констант, функцій та операторів (long click on the item and choose from context menu)\n
+ 3. Додано додаткові дії для констант, функцій та операторів (long click on the item and choose from context
+ menu)\n
4. Додано функцію обчислення логарифма за довільною основою \n
5. Налаштування кнопки „Назад“\n
6. Варіант константи π незалежної одиниць виміру кутів
@@ -129,7 +138,7 @@
1. Виправлено відсутність курсора на пристроях з Android 3 та вище\n
- 2. Виправлена проблема з заміною 3.14... на константу Π
+ 2. Виправлена проблема з заміною 3.14... на константу Π
@@ -141,11 +150,15 @@
Від розробника\n\n
На жаль, мушу повідомити Вас, що у цій версії програми появилася реклама.\n
- Я не бачив на Google Play калькулятор з подібними можливостями і не думаю, що побачу у найближчому майбутньому.\n
- Але тим не менш я хочу розвивати його функціональність та підтримувати вже втілене. Так трапилося, що я вже не можу це робити безкоштовно - розробка забирає багато часу та зусиль від мене,
+ Я не бачив на Google Play калькулятор з подібними можливостями і не думаю, що побачу у найближчому
+ майбутньому.\n
+ Але тим не менш я хочу розвивати його функціональність та підтримувати вже втілене. Так трапилося, що я вже не
+ можу це робити безкоштовно - розробка забирає багато часу та зусиль від мене,
тому що програма стала надто великою та складною.\n
- Якщо ви хочете підтримати проект та забрати рекламу, то ви можете купити спеціальну опцію у налаштуваннях програми,\n
- якщо ви не хочете платити чи не можете це зробити, то можна подякувати авторові по пошті: se.solovyev@gmail.com, високо оцінити програму на Google Play\n
+ Якщо ви хочете підтримати проект та забрати рекламу, то ви можете купити спеціальну опцію у налаштуваннях
+ програми,\n
+ якщо ви не хочете платити чи не можете це зробити, то можна подякувати авторові по пошті: se.solovyev@gmail.com,
+ високо оцінити програму на Google Play\n
або допомогти перекласти цю програму на вашу рідну мову.
@@ -168,8 +181,10 @@
Від розробника:\n\n
Я радий повідомити Вас, що запустив форум для Калькулятор++: http://facebook.com/calculatorpp.\n
- Тут ви можете знайти усю останню інформацію про програму, дізнатися про відомі проблеми та внести свої пропозиції.\n
- Для входу ви можете скористатися обліковим записом соціальної мережі (Facebook, Twitter or Google are supported).\n\n
+ Тут ви можете знайти усю останню інформацію про програму, дізнатися про відомі проблеми та внести свої
+ пропозиції.\n
+ Для входу ви можете скористатися обліковим записом соціальної мережі (Facebook, Twitter or Google are
+ supported).\n\n
1. Додано кнопки управління масштабом на графіку\n
2. Виправлено проблему рахунків\n
3. Виправлено проблему збереження констант\n
@@ -190,22 +205,22 @@
10. Виправлені проблеми купівлі програми
-
- 1. Українська локалізація (Андрій Бандура)\n
- 2. HEX символи не видно у не HEX режимі\n
- 3. Параметр для вимкнення автоматичного повороту екрану\n
- 4. Параметр для приховання кнопки дорівнює\n
- 5. Виправлено проблему з побудовою графіків\n
- 6. Виправлено проблему E+ (HEX режим)\n
- 7. π та Π помінялися місцями\n
- 8. Додано інструмент перетворення чисел (натисніть на дисплей або виберіть в меню програми)\n
- 9. Виправлено неправильне інтегрування і диференціювання функції lg()
-
+
+ 1. Українська локалізація (Андрій Бандура)\n
+ 2. HEX символи не видно у не HEX режимі\n
+ 3. Параметр для вимкнення автоматичного повороту екрану\n
+ 4. Параметр для приховання кнопки дорівнює\n
+ 5. Виправлено проблему з побудовою графіків\n
+ 6. Виправлено проблему E+ (HEX режим)\n
+ 7. π та Π помінялися місцями\n
+ 8. Додано інструмент перетворення чисел (натисніть на дисплей або виберіть в меню програми)\n
+ 9. Виправлено неправильне інтегрування і диференціювання функції lg()
+
-
- 1. Віртуальна клавіатура більше не показувується на Android 4 ICS\n
- 2. Швидке перетворення чисел із контекстного меню дисплея\n
- 3. Інші виправлення GUI
-
+
+ 1. Віртуальна клавіатура більше не показувується на Android 4 ICS\n
+ 2. Швидке перетворення чисел із контекстного меню дисплея\n
+ 3. Інші виправлення GUI
+
diff --git a/android-app-core/res/values-uk/text_functions.xml b/android-app-core/res/values-uk/text_functions.xml
index e398ce5f..75aa867b 100644
--- a/android-app-core/res/values-uk/text_functions.xml
+++ b/android-app-core/res/values-uk/text_functions.xml
@@ -23,15 +23,32 @@
Квадратний корінь.Кубічний корінь.Абсолютне значення (модуль) аргумента.
- Знак аргумента: -1, якщо аргумент менший за 0, 0, якщо рівний 0, 1, якщо більший за 0.
- Фунцкія рівності - дає результат 1, якщо обидва аргументи рівні, інакше 0.
- Функція менше-або-дорівнює - дає результат 1, якщо обидва аргументи рівні або перший менший другого, інакше 0.
- Функція більше-або-дорівнює - дає результат 1, якщо обидва аргументи рівні або перший більший другого, інакше 0.
- Функція не-дорівнює - дає результат 1, якщо обидва аргументи не рівні, інакше 0.
- Функція менше - дає результат 1, якщо перший аргумент менший другого, інакше 0.
- Функція більше - дає результат 1, якщо перший аргумент більший другого, інакше 0.
- Перетворює градуси у радіани: d - градуси, m - мінути (по замовчуванню = 0), s - секунди (за замовчуванням = 0).
- Перетворює градуси із шістдесяткової системи у десяткову: d - градуси, m - мінути (за замовчуванням = 0), s - секунди (за замовчуванням = 0).
+ Знак аргумента: -1, якщо аргумент менший за 0, 0, якщо рівний 0, 1, якщо
+ більший за 0.
+
+ Фунцкія рівності - дає результат 1, якщо обидва аргументи рівні, інакше 0.
+
+ Функція менше-або-дорівнює - дає результат 1, якщо обидва аргументи рівні або
+ перший менший другого, інакше 0.
+
+ Функція більше-або-дорівнює - дає результат 1, якщо обидва аргументи рівні або
+ перший більший другого, інакше 0.
+
+ Функція не-дорівнює - дає результат 1, якщо обидва аргументи не рівні, інакше
+ 0.
+
+ Функція менше - дає результат 1, якщо перший аргумент менший другого, інакше
+ 0.
+
+ Функція більше - дає результат 1, якщо перший аргумент більший другого, інакше
+ 0.
+
+ Перетворює градуси у радіани: d - градуси, m - мінути (по замовчуванню = 0), s
+ - секунди (за замовчуванням = 0).
+
+ Перетворює градуси із шістдесяткової системи у десяткову: d - градуси, m -
+ мінути (за замовчуванням = 0), s - секунди (за замовчуванням = 0).
+ Перетворює радіани у градуси.Тригонометричні
diff --git a/android-app-core/res/values-uk/text_help.xml b/android-app-core/res/values-uk/text_help.xml
index f5b2f1a0..51b02729 100644
--- a/android-app-core/res/values-uk/text_help.xml
+++ b/android-app-core/res/values-uk/text_help.xml
@@ -14,22 +14,26 @@
Як я можу забрати рекламу?\n
\n
Ви можете це зробити, купивши спеціальну опцію у налаштуваннях програми.\n
- Купівля проводиться через Google Play і прив’язана до вашого облікового запису Google.\n
- Всі ваші пристрої будуть знати про покупку та не будуть показувати рекламу.\n
+ Купівля проводиться через Google Play і прив’язана до вашого облікового запису Google.\n
+ Всі ваші пристрої будуть знати про покупку та не будуть показувати рекламу.\n
\n
Чому Калькулятор++ потребує дозволу для виходу в інтернет?\n
\n
- На даний час програмі потрібний такий дозвіл лише для однієї цілі - показати рекламу. Якщо ви купите спеціальну опцію, то K++ не буде більше використовувати ваше інтернет-з’єднання.\n
+ На даний час програмі потрібний такий дозвіл лише для однієї цілі - показати рекламу. Якщо ви купите спеціальну
+ опцію, то K++ не буде більше використовувати ваше інтернет-з’єднання.\n
\n
Як я можу використовувати функції, написані у верхньому правому та нижньому правому куті кнопки?\n
\n
- Натисніть на кнопку, утримуйте і посуньте легко вгору або вниз. Залежно від значення вказаного на кнопці відбудеться відповідна дія.\n
+ Натисніть на кнопку, утримуйте і посуньте легко вгору або вниз. Залежно від значення вказаного на кнопці
+ відбудеться відповідна дія.\n
\n
Як можна перемикатися між радіанами та градусами?\n
\n
- Для перемикання одиниць вимірювання кутів ви можете вибрати відповідний пункт налаштувань програми,\n або скористатися перемикачем, розміщеним на кнопці 6\n
+ Для перемикання одиниць вимірювання кутів ви можете вибрати відповідний пункт налаштувань програми,\n або
+ скористатися перемикачем, розміщеним на кнопці 6\n
(current value is lighted with yellow color).\n
- Також ви можете скористатися функціями deg() та rad() і оператором ° для перетворення радіан у градуси і навпаки.\n
+ Також ви можете скористатися функціями deg() та rad() і оператором ° для перетворення радіан у градуси і
+ навпаки.\n
\n
Приклади:\n
268° = 4.67748\n
@@ -50,12 +54,17 @@
\n
Зауваження:\n
\n
- 100 + (20 + 20)% = 140, but 100+ (20% + 20%) = 124.0\n
- 100 + 50% ^ 2 = 2600, but 100 + 50 ^ 2% = 101.08\n
+ 100 + (20 + 20)% = 140,
+ but
+ 100+ (20% + 20%) = 124.0\n
+ 100 + 50% ^ 2 = 2600,
+ but
+ 100 + 50 ^ 2% = 101.08\n
\n
Чи підтримує К++ дробові обчислення?\n
\n
- Так, ви можете ввести дробовий вираз у редакторі і використати ≡ (у правому верхньому куті кнопки =). Також ви можете використати ≡ для спрощення виразу.\n
+ Так, ви можете ввести дробовий вираз у редакторі і використати ≡ (у правому верхньому куті кнопки =). Також ви
+ можете використати ≡ для спрощення виразу.\n
\n
Приклади:\n
\n
@@ -74,7 +83,8 @@
\n
Чи може К++ будувати графіки функції?\n
\n
- Так, введіть вираз, який містить одну змінну (наприклад, cos(t) і t не має ніякого значення) та клацніть на результат. У контекстному меню виберіть \'Побудувати графік\'.\n
+ Так, введіть вираз, який містить одну змінну (наприклад, cos(t) і t не має ніякого значення) та клацніть на
+ результат. У контекстному меню виберіть \'Побудувати графік\'.\n
\n
Чи підтримує К++ матричні обчислення?\n
\n
@@ -95,12 +105,29 @@
- 1. Головний екран: відкривається після запуску програми, на нього можна потрапити з іншого екрану, натиснувши кнопку „Назад“.\n\n
- 2. Екран змінних та констант: містить список доступних змінних та констант. Користувач може додати нові змінні та константи, натиснувши кнопку „Додати“. Коротке натискання на змінній/константі вставляє значення у редактор, довге натискання - відкриває вікно редактора змінних. На цей екран можна потрапити з головного, натиснувши кнопку π,… .\n\n
- 3. Екран функцій: містить список усіх доступних функцій. Коротке натискання на функції вставляє її у редактор. На екран можна потрапити з головного, натиснувши кнопку f(x).\n\n
- 4. Екран операторів: містить список усіх доступних операторів. Коротке натискання на операторі вставляє його у редактор. На екран можна потрапити з головного, натиснувши кноку ∂,… .\n\n
- 5. Екран історії: містить список усіх дій, виконаних користувачем. Коротке натискання на елементі списку вставляє його у редактор. На екран можна потрапити з головного, натиснувши кнопку M.\n\n
- 6. Екран налаштувань: містить налаштування програми. На екран можна потрапити з головного, натиснувши кнопку Налаштування у меню.
+ 1.
+ Головний екран:
+ відкривається після запуску програми, на нього можна потрапити з іншого екрану, натиснувши кнопку „Назад“.\n\n
+ 2.
+ Екран змінних та констант:
+ містить список доступних змінних та констант. Користувач може додати нові змінні та константи, натиснувши кнопку
+ „Додати“. Коротке натискання на змінній/константі вставляє значення у редактор, довге натискання - відкриває
+ вікно редактора змінних. На цей екран можна потрапити з головного, натиснувши кнопку π,… .\n\n
+ 3.
+ Екран функцій:
+ містить список усіх доступних функцій. Коротке натискання на функції вставляє її у редактор. На екран можна
+ потрапити з головного, натиснувши кнопку f(x).\n\n
+ 4.
+ Екран операторів:
+ містить список усіх доступних операторів. Коротке натискання на операторі вставляє його у редактор. На екран
+ можна потрапити з головного, натиснувши кноку ∂,… .\n\n
+ 5.
+ Екран історії:
+ містить список усіх дій, виконаних користувачем. Коротке натискання на елементі списку вставляє його у редактор.
+ На екран можна потрапити з головного, натиснувши кнопку M.\n\n
+ 6.
+ Екран налаштувань:
+ містить налаштування програми. На екран можна потрапити з головного, натиснувши кнопку Налаштування у меню.
diff --git a/android-app-core/res/values-uk/text_operators.xml b/android-app-core/res/values-uk/text_operators.xml
index 3f5523bf..6972035d 100644
--- a/android-app-core/res/values-uk/text_operators.xml
+++ b/android-app-core/res/values-uk/text_operators.xml
@@ -9,9 +9,14 @@
ОператориОбчислює остачу від ділення \'x\' на \'y\'.
- Сумує функції \'f(i)\', де змінна \'i\' міняється від \'from\' до \'to\'.
- Обчислює добуток функцій \'f(i)\', де змінна \'i\' міняється від \'from\' до \'to\'.
- Повертає похідну порядку \'order\' (по замовчуванню = 1) функції \'f(x)\' по змінній \'x\' та обчислює її значення у точці \'x_point\' (за замовчуванням = така ж як \'x\').
+ Сумує функції \'f(i)\', де змінна \'i\' міняється від \'from\' до \'to\'.
+
+ Обчислює добуток функцій \'f(i)\', де змінна \'i\' міняється від \'from\' до
+ \'to\'.
+
+ Повертає похідну порядку \'order\' (по замовчуванню = 1) функції \'f(x)\'
+ по змінній \'x\' та обчислює її значення у точці \'x_point\' (за замовчуванням = така ж як \'x\').
+ Повертає інтеграл функції \'f(x)\' по змінній \'x\'.Інтегрує функцію \'f(x)\' по змінній \'x\' від \'a\' до \'b\'.
diff --git a/android-app-core/res/values-uk/text_preferences.xml b/android-app-core/res/values-uk/text_preferences.xml
index 54ebb899..f6f2a905 100644
--- a/android-app-core/res/values-uk/text_preferences.xml
+++ b/android-app-core/res/values-uk/text_preferences.xml
@@ -1,10 +1,13 @@
- Перемикач автоматичного повороту екрану
- Якщо включено, то калькулятор будет автоматично міняти орієнтацію екрану
+ Перемикач автоматичного повороту екрану
+ Якщо включено, то калькулятор будет автоматично міняти орієнтацію екрану
+
- Показувати кнопку дорівнює
- Якщо включено, то кнопка дорівнює буде показана
+ Показувати кнопку дорівнює
+ Якщо включено, то кнопка дорівнює буде показана
- Не показувати цифри із інших систем числения
- Якщо включено, то цифри із іншиих систем числення будуть приховані
+ Не показувати цифри із інших систем числения
+ Якщо включено, то цифри із іншиих систем числення будуть
+ приховані
+
\ No newline at end of file
diff --git a/android-app-core/res/values-uk/text_strings.xml b/android-app-core/res/values-uk/text_strings.xml
index aaefdc9a..ca9da921 100644
--- a/android-app-core/res/values-uk/text_strings.xml
+++ b/android-app-core/res/values-uk/text_strings.xml
@@ -10,9 +10,9 @@
Калькулятор++Калькулятор++ FreeКальк++
- Налаштування
- Помилка
- Результат скопійовано у буфер!
+ Налаштування
+ Помилка
+ Результат скопійовано у буфер!НалаштуванняДопомогаЗмінні та константи
@@ -43,10 +43,14 @@
Заокруглювати результатВключити/вимкнути заокруглення результатуЗавжди експоненціальна форма
- Якщо включено, то результат буде записано лише у експоненціальній формі (12.34E-12)
+ Якщо включено, то результат буде записано лише у експоненціальній
+ формі (12.34E-12)
+ Точність результатуМаксимальний час обчислень
- Якщо тривалість обчислень перевищить встановлену межу, то калькулятор зупиниться з помилкою
+ Якщо тривалість обчислень перевищить встановлену межу, то
+ калькулятор зупиниться з помилкою
+ ВийтиДодатиСкасувати
@@ -65,7 +69,9 @@
Значення може бути порожнім або числом!Ім’я змінної не може бути зарезервованим системним ім’ям!Змінна з таким іменем вже існує!
- Невірне ім’я змінної: воно мусить починатися з букви, може містити букви, цифри та знак підкреслення (_).
+ Невірне ім’я змінної: воно мусить починатися з букви, може містити букви, цифри
+ та знак підкреслення (_).
+ Системну змінну не можна змінювати!Введіть новий вираз
@@ -98,7 +104,8 @@
Метро Синя (типова)Метро ЗеленаМетро Пурпурова
- Точність результату (усі обчислення проводяться максимально точно)
+ Точність результату (усі обчислення проводяться максимально точно)
+ Включити/вимкнути підсвітку у редакторі калькулятораВстановити тему калькулятораОчистити історію
@@ -136,16 +143,18 @@
ДоВідстань розмаху (свайпу) для кнопок
- Задає відстань розмаху для кнопок, які підтримують додаткові дії для свайпу
+ Задає відстань розмаху для кнопок, які підтримують додаткові дії для
+ свайпу
+ КоментарЗбереженоНе збереженоВираз скопійовано до буфера!
- Статус:
- Коментар:
+ Статус:
+ Коментар:Використовувати
- Вик.
+ Вик.Копіювати виразКопіювати результатЗначення
@@ -164,11 +173,17 @@
Копіювати описКопіювати значення
- Дякуємо вам за вибір Калькулятор++!\n\nКалькулятор++ - це потужний інструмент для проведення щоденних розрахунків.\n\nЩоб вилучити рекламу та підтримати проект ви можете вибрати спеціальну опцію у налаштуваннях програми.\n\nПеред початком робота рекомендується прочитати ЧаП та підказки для використання усіх можливостей програми (натисніть кнопку Меню і тоді Допомога)
+ Дякуємо вам за вибір Калькулятор++!\n\nКалькулятор++ - це потужний інструмент для
+ проведення щоденних розрахунків.\n\nЩоб вилучити рекламу та підтримати проект ви можете вибрати спеціальну опцію
+ у налаштуваннях програми.\n\nПеред початком робота рекомендується прочитати ЧаП та підказки для використання
+ усіх можливостей програми (натисніть кнопку Меню і тоді Допомога)
+ ВітаємоПоказувати замітки до випуску
- Визначає, чи показувати спливаюче вікно з примітками до випуску після оновлення до нової версії
+ Визначає, чи показувати спливаюче вікно з примітками до випуску
+ після оновлення до нової версії
+ Визначити поведінку кнопку НазадВикористовувати кнопку Назад як назад по історії
@@ -178,7 +193,9 @@
УвагаПомилка
- Біллінг не підтримується: ви повинні мати обліковий запис Google Checkout, пов’язаний з вашим обліковим записом Google і мати підключення до Інтернету.
+ Біллінг не підтримується: ви повинні мати обліковий запис Google Checkout, пов’язаний
+ з вашим обліковим записом Google і мати підключення до Інтернету.
+ Підтримайте проекті позбудьтеся реклами!
@@ -190,17 +207,20 @@
Зворотній зв’язокВи вже використовуєте Калькулятор++ деякий час \n
і для нас важливо знати вашу думку про програму.\n\n
- Будь ласка, оцініть Калькулятор++ \nна Google Play,\n залиште коментар або \nобговоріть програму \nна Facebook
+ Будь ласка, оцініть Калькулятор++ \nна
+ Google Play,\n залиште
+ коментар або \nобговоріть програму \nна
+ FacebookОдиниці виміру кутів змінено на \'%s\'!Система числення змінена на \'%s\'!
- Перетворення чисел
+ Перетворення чисел
- Перетворити в…
+ Перетворити в…
- Перетворити в hex
- Перетворити в bin
- Перетворити в dec
+ Перетворити в hex
+ Перетворити в bin
+ Перетворити в dec
diff --git a/android-app-core/res/values-uk/text_vars.xml b/android-app-core/res/values-uk/text_vars.xml
index 1a70f01f..11793cf5 100644
--- a/android-app-core/res/values-uk/text_vars.xml
+++ b/android-app-core/res/values-uk/text_vars.xml
@@ -6,13 +6,23 @@
- Відношення довжини кола до діаметру. Увага: ця стала залежить від одиниць виміру кутів => rad: 3.14, deg: 180.0
- Відношення довжини кола до діаметру. Увага: ця стала не залежить від одиниць виміру кутів => rad: 3.14, deg: 3.14
- стала e - дійсне число таке, що похідна функції (кутовий коефіцієнт дотичної) f(x) = e^x в точці x = 0 дорівнює 1
+ Відношення довжини кола до діаметру. Увага: ця стала залежить від одиниць виміру
+ кутів => rad: 3.14, deg: 180.0
+
+ Відношення довжини кола до діаметру. Увага: ця стала не залежить від одиниць
+ виміру кутів => rad: 3.14, deg: 3.14
+
+ стала e - дійсне число таке, що похідна функції (кутовий коефіцієнт дотичної)
+ f(x) = e^x в точці x = 0 дорівнює 1
+ Уявна одиниця, визначається як i^2 = −1Швидкість світла у вакуумі, м·с^-1
- Гравітаційна стала - емпірична фізична стала, необхідна для розрахунку сили гравітаційної взаємодії між двома об’єктами з масою, м^3·кг^−1·с^−2
- Стала Планка - коефіцієнт, який пов’язує величину енергії електромагнітного випромінюювання з його частотою, Дж·с
+ Гравітаційна стала - емпірична фізична стала, необхідна для розрахунку сили
+ гравітаційної взаємодії між двома об’єктами з масою, м^3·кг^−1·с^−2
+
+ Стала Планка - коефіцієнт, який пов’язує величину енергії електромагнітного
+ випромінюювання з його частотою, Дж·с
+ Зведена стала Планка, Дж·сНе числоНескінченність
diff --git a/android-app-core/res/values-zh-rtw/text_about.xml b/android-app-core/res/values-zh-rtw/text_about.xml
index 4f3f6777..3a2e4a4e 100644
--- a/android-app-core/res/values-zh-rtw/text_about.xml
+++ b/android-app-core/res/values-zh-rtw/text_about.xml
@@ -9,17 +9,20 @@
關於Copyright (c) 2009-2011\n\nCreated by serso aka se.solovyev\n\n
- 程式網站: http://facebook.com/calculatorpp\n\n
+ 程式網站:http://facebook.com/calculatorpp\n\n
此程式為開放源碼軟體:\n原始碼位於\nhttp://github.com\n\n
- 如果您需要更多資訊\n請寄信至作者信箱\nse.solovyev@gmail.com
+ 如果您需要更多資訊\n請寄信至作者信箱\n
+ se.solovyev@gmail.com
\n或是造訪\nhttp://se.solovyev.org\n\n
如果您想要支持此專案\n\n您可以從程式設定頁面中購買一個特別的選項\n\n
- 如果您喜歡這個程式\n請在 Google Play 中將它評等為五顆星\n\n
+ 如果您喜歡這個程式\n請在
+ Google Play
+ 中將它評等為五顆星\n\n
感謝以下 Calculator++ 的翻譯者:\n
義大利文 - Gabriele Ravanetti\n
西班牙文 - Jordi Luna\n
- 烏克蘭文 - Андрій Бандура\n\n
- 此程式使用以下開放源碼的函式庫:\n
+ 烏克蘭文 - Андрій Бандура\n\n
+ 此程式使用以下開放源碼的函式庫:\n
Simple (XML 序列化)\n
JSCL\n
AChartEngine
@@ -27,7 +30,7 @@
發行公告"發行公告版本 "
-
+
1. 觸控回饋\n
2. 兩種版面配置: 計算機與手機\n
@@ -99,7 +102,8 @@
- 1. 新增函數繪圖功能: 輸入包含 1 個未定義變數的計算式再點擊計算結果, 選擇「繪圖」. 支援縮放、平移及繪製虛數部份.
+ 1. 新增函數繪圖功能: 輸入包含 1 個未定義變數的計算式再點擊計算結果, 選擇「繪圖」. 支援縮放、平移及繪製虛數部份.
+
1. 按鈕滑動選項\n
@@ -188,22 +192,22 @@
10. 修正付款錯誤
-
- 1. 烏克蘭文翻譯 (Андрій Бандура)\n
- 2. 在其他進位制下不顯示十六進位的數字\n
- 3. 新增避免自動轉換顯示方向的選項\n
- 4. 新增隱藏等號按鈕的選項\n
- 5. 修正繪圖錯誤\n
- 6. 修正 E+ 的錯誤 (十六進位模式)\n
- 7. 交換 π 和 Π\n
- 8. 新增轉換工具 (按下顯示區域或在選單中選擇)\n
- 9. 修正 lg() 微分積分的錯誤
-
+
+ 1. 烏克蘭文翻譯 (Андрій Бандура)\n
+ 2. 在其他進位制下不顯示十六進位的數字\n
+ 3. 新增避免自動轉換顯示方向的選項\n
+ 4. 新增隱藏等號按鈕的選項\n
+ 5. 修正繪圖錯誤\n
+ 6. 修正 E+ 的錯誤 (十六進位模式)\n
+ 7. 交換 π 和 Π\n
+ 8. 新增轉換工具 (按下顯示區域或在選單中選擇)\n
+ 9. 修正 lg() 微分積分的錯誤
+
-
- 1. 在 Android 4 ICS 上不顯示虛擬鍵盤\n
- 2. 在長按選單中新增快速數值轉換\n
- 3. 圖形介面小修正
-
+
+ 1. 在 Android 4 ICS 上不顯示虛擬鍵盤\n
+ 2. 在長按選單中新增快速數值轉換\n
+ 3. 圖形介面小修正
+
diff --git a/android-app-core/res/values-zh-rtw/text_help.xml b/android-app-core/res/values-zh-rtw/text_help.xml
index 8204d829..21423df9 100644
--- a/android-app-core/res/values-zh-rtw/text_help.xml
+++ b/android-app-core/res/values-zh-rtw/text_help.xml
@@ -14,8 +14,8 @@
如何移除廣告?\n
\n
您可以在設定選單中購買一個移除廣告的選項.\n
- 您可以透過 Google Play 購買, 購買的紀錄將會紀錄在您的 Google 帳號中.\n
- 所有使用您 Google 帳號的裝置都會記得您的購買而隱藏廣告.\n
+ 您可以透過 Google Play 購買, 購買的紀錄將會紀錄在您的 Google 帳號中.\n
+ 所有使用您 Google 帳號的裝置都會記得您的購買而隱藏廣告.\n
\n
為何 Calculator++ 需要使用網際網路的權限?\n
\n
@@ -51,8 +51,12 @@
\n
注意:\n
\n
- 100 + (20 + 20)% = 140, 但是 100+ (20% + 20%) = 124.0\n
- 100 + 50% ^ 2 = 2600, 但是 100 + 50 ^ 2% = 101.08\n
+ 100 + (20 + 20)% = 140,
+ 但是
+ 100+ (20% + 20%) = 124.0\n
+ 100 + 50% ^ 2 = 2600,
+ 但是
+ 100 + 50 ^ 2% = 101.08\n
\n
Calculator++ 是否支援分數運算?\n
\n
@@ -96,12 +100,24 @@
- 1. 主畫面: 在程式啟動時顯示, 在其他畫面的時候, 可以按下跳出鍵以回到主畫面.\n\n
- 2. 變數與常數畫面: 顯示可用的常數. 使用者可以按下「新增」按鈕以新增常數或變數. 短按變數將它插入主畫面的編輯器中, 長按會開啟編輯畫面. 可以從從主畫面中的 π,… 按鈕進入.\n\n
- 3. 函數畫面: 顯示可用的函數. 短按函數將它插入主畫面的編輯器中. 可以從主畫面中的 f(x) 按鈕進入.\n\n
- 4. 運算子畫面: 顯示所有可用的運算子. 短按運算子將它插入主畫面的編輯器中. 可以從主畫面中的 ∂,… 按鈕進入.\n\n
- 5. 紀錄畫面: 顯示使用者過去的使用紀錄. 短按項目將它插入主畫面的編輯器中. 可以從主畫面中的 M 按鈕進入.\n\n
- 6. 設定畫面: 包含程式的設定. 在主畫面中按下選單鍵, 選擇「設定」選項以進入.
+ 1.
+ 主畫面:
+ 在程式啟動時顯示, 在其他畫面的時候, 可以按下跳出鍵以回到主畫面.\n\n
+ 2.
+ 變數與常數畫面:
+ 顯示可用的常數. 使用者可以按下「新增」按鈕以新增常數或變數. 短按變數將它插入主畫面的編輯器中, 長按會開啟編輯畫面. 可以從從主畫面中的 π,… 按鈕進入.\n\n
+ 3.
+ 函數畫面:
+ 顯示可用的函數. 短按函數將它插入主畫面的編輯器中. 可以從主畫面中的 f(x) 按鈕進入.\n\n
+ 4.
+ 運算子畫面:
+ 顯示所有可用的運算子. 短按運算子將它插入主畫面的編輯器中. 可以從主畫面中的 ∂,… 按鈕進入.\n\n
+ 5.
+ 紀錄畫面:
+ 顯示使用者過去的使用紀錄. 短按項目將它插入主畫面的編輯器中. 可以從主畫面中的 M 按鈕進入.\n\n
+ 6.
+ 設定畫面:
+ 包含程式的設定. 在主畫面中按下選單鍵, 選擇「設定」選項以進入.
diff --git a/android-app-core/res/values-zh-rtw/text_operators.xml b/android-app-core/res/values-zh-rtw/text_operators.xml
index c1c7a035..270fb9f5 100644
--- a/android-app-core/res/values-zh-rtw/text_operators.xml
+++ b/android-app-core/res/values-zh-rtw/text_operators.xml
@@ -11,7 +11,9 @@
取 \'x\' 除以 \'y\' 的餘數.計算 f(i) 的和, i 從 \'from\' 到 \'to\'.計算 \'f(i)\' 的積, i 從 \'from\' 到 \'to\'.
- 計算 \'f(x)\' 對 \'x\' 的第 \'order\' 階微分(預設為 1) 在 \'x_point\' 的值 (預設 = \'x\').
+ 計算 \'f(x)\' 對 \'x\' 的第 \'order\' 階微分(預設為 1) 在 \'x_point\' 的值 (預設 =
+ \'x\').
+ 計算 \'f(x)\' 對 \'x\' 的積分.計算 \'f(x)\' 對 \'x\' 從 \'a\' 到 \'b\' 的定積分.
diff --git a/android-app-core/res/values-zh-rtw/text_preferences.xml b/android-app-core/res/values-zh-rtw/text_preferences.xml
index ecb1c580..ce9e0bcb 100644
--- a/android-app-core/res/values-zh-rtw/text_preferences.xml
+++ b/android-app-core/res/values-zh-rtw/text_preferences.xml
@@ -1,10 +1,10 @@
- 自動切換螢幕方向
- 是否自動切換螢幕顯示的方向
+ 自動切換螢幕方向
+ 是否自動切換螢幕顯示的方向
- 顯示「等於」按鈕
- 是否顯示「等於」按鈕
+ 顯示「等於」按鈕
+ 是否顯示「等於」按鈕
- 隱藏其他進位的數字
- 是否隱藏目前進位制以外的數字鍵
+ 隱藏其他進位的數字
+ 是否隱藏目前進位制以外的數字鍵
diff --git a/android-app-core/res/values-zh-rtw/text_strings.xml b/android-app-core/res/values-zh-rtw/text_strings.xml
index a3559b52..9bfb51f8 100644
--- a/android-app-core/res/values-zh-rtw/text_strings.xml
+++ b/android-app-core/res/values-zh-rtw/text_strings.xml
@@ -10,9 +10,9 @@
Calculator++Calculator++ FreeCalc++
- 設定
- 錯誤
- 答案已複製到剪貼簿!
+ 設定
+ 錯誤
+ 答案已複製到剪貼簿!設定說明變數與常數
@@ -142,8 +142,8 @@
已儲存未儲存計算式已複製到剪接簿!
- 狀態:
- 備註:
+ 狀態:
+ 備註:使用使用複製計算式
@@ -164,7 +164,9 @@
複製描述複製值
- 感謝您選擇 Calculator++!\n\nCalculator++ 是一個強大的計算工具.\n\n您可以從設定選單內的一個特殊選項移除廣告並支持此專案.\n\n強烈建議您在使用本程式之前先閱讀常見問題以及提示 (按下選單鍵, 然後選擇「說明」)
+ 感謝您選擇 Calculator++!\n\nCalculator++
+ 是一個強大的計算工具.\n\n您可以從設定選單內的一個特殊選項移除廣告並支持此專案.\n\n強烈建議您在使用本程式之前先閱讀常見問題以及提示 (按下選單鍵, 然後選擇「說明」)
+ 歡迎顯示發行公告
@@ -190,21 +192,28 @@
回饋您已使用 Calculator++ 一段時間了 \n
我們很希望可以瞭解您對這個軟體的意見.\n\n
- 請在 Google Play 上評等 Calculator++,\n 留下評論訊息 \n或是在 Facebook 上討論.
+ 請在
+ Google Play
+ 上評等 Calculator++,\n 留下評論訊息 \n或是在
+ Facebook
+ 上討論.
- 好消息 - 我剛發行了一個新的 Android 應用程式, 叫做 Notes++.\n
- 如果您正在尋找能快速簡單作筆記的程式, 請點選 此連結 試試看 Notes++!
-
+ 好消息 - 我剛發行了一個新的 Android 應用程式, 叫做
+ Notes++.\n
+ 如果您正在尋找能快速簡單作筆記的程式, 請點選
+ 此連結
+ 試試看 Notes++!
+ 角度單位已設定為 \'%s\'!進位制已設定為 \'%s\'!轉換工具
- 轉換為…
+ 轉換為…
- 轉換為十六進位
- 轉換為二進位
- 轉換為十進位
+ 轉換為十六進位
+ 轉換為二進位
+ 轉換為十進位
diff --git a/android-app-core/res/values/arrays.xml b/android-app-core/res/values/arrays.xml
index 50a5a011..f2fe1ba6 100644
--- a/android-app-core/res/values/arrays.xml
+++ b/android-app-core/res/values/arrays.xml
@@ -20,16 +20,16 @@
@string/p_white_line_color
- @string/p_blue_line_color
- @string/p_red_line_color
- @string/p_green_line_color
+ @string/p_blue_line_color
+ @string/p_red_line_color
+ @string/p_green_line_color@string/p_grey_line_colorwhite
- blue
- red
- green
+ blue
+ red
+ greengrey
diff --git a/android-app-core/res/values/colors.xml b/android-app-core/res/values/colors.xml
index 41d417dc..d9524fbf 100644
--- a/android-app-core/res/values/colors.xml
+++ b/android-app-core/res/values/colors.xml
@@ -1,16 +1,16 @@
- #ffffffff
- #ff393939
- #ffffffff
- #ffffff99
- #ffffffff
- #ffffff99
- #ff000000
- #ff1f1f1f
- #ff1f1f1f
- #10648c
- #088e3a
- #651456
- #393939
+ #ffffffff
+ #ff393939
+ #ffffffff
+ #ffffff99
+ #ffffffff
+ #ffffff99
+ #ff000000
+ #ff1f1f1f
+ #ff1f1f1f
+ #10648c
+ #088e3a
+ #651456
+ #393939
\ No newline at end of file
diff --git a/android-app-core/res/values/dimens.xml b/android-app-core/res/values/dimens.xml
index d5674683..42ef792d 100644
--- a/android-app-core/res/values/dimens.xml
+++ b/android-app-core/res/values/dimens.xml
@@ -1,31 +1,31 @@
- 20sp
- 0.5dp
- 2.5dp
+ 20sp
+ 0.5dp
+ 2.5dp
- 15sp
- 20sp
+ 15sp
+ 20sp
- 30dp
- 20dp
+ 30dp
+ 20dp
- 20dp
- 25sp
- 25sp
+ 20dp
+ 25sp
+ 25sp
- 25sp
- 25sp
- 5dp
- 5dp
- 20sp
- 15sp
+ 25sp
+ 25sp
+ 5dp
+ 5dp
+ 20sp
+ 15sp20sp10dp
-
- 5dp
- 3dp
+
+ 5dp
+ 3dp
- 20dp
+ 20dp
\ No newline at end of file
diff --git a/android-app-core/res/values/ids.xml b/android-app-core/res/values/ids.xml
index c44a23fe..a6cfdbd7 100644
--- a/android-app-core/res/values/ids.xml
+++ b/android-app-core/res/values/ids.xml
@@ -1,37 +1,37 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app-core/res/values/preferences.xml b/android-app-core/res/values/preferences.xml
index 8445b05b..8e3be996 100644
--- a/android-app-core/res/values/preferences.xml
+++ b/android-app-core/res/values/preferences.xml
@@ -1,5 +1,5 @@
- org.solovyev.android.calculator.CalculatorModel_functions
- org.solovyev.android.calculator.CalculatorModel_vars
+ org.solovyev.android.calculator.CalculatorModel_functions
+ org.solovyev.android.calculator.CalculatorModel_vars
\ No newline at end of file
diff --git a/android-app-core/res/values/styles.xml b/android-app-core/res/values/styles.xml
index 4d9b3f46..e595c912 100644
--- a/android-app-core/res/values/styles.xml
+++ b/android-app-core/res/values/styles.xml
@@ -7,44 +7,44 @@
+ true
+ @style/cpp_text_appearance_window_title
+ #BB000000
+ 2.75
+
+ #fff
+ 14sp
+ bold
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
+
-
+
-
+
-
-
-
+
\ No newline at end of file
diff --git a/android-app-core/res/values/text_about.xml b/android-app-core/res/values/text_about.xml
index c8a57c53..52705a92 100644
--- a/android-app-core/res/values/text_about.xml
+++ b/android-app-core/res/values/text_about.xml
@@ -9,17 +9,20 @@
AboutCopyright (c) 2009-2011\n\nCreated by serso aka se.solovyev\n\n
- Application web site: http://facebook.com/calculatorpp\n\n
- This program is open source:\nall source code can be found on\nhttp://github.com\n\n
- For more information please\ncontact the author by email\nse.solovyev@gmail.com
+ Application web site:http://facebook.com/calculatorpp\n\n
+ This program is open source:\nall source code can be found on\n
+ http://github.com\n\n
+ For more information please\ncontact the author by email\n
+ se.solovyev@gmail.com
\nor visit\nhttp://se.solovyev.org\n\n
If you want to support the project\n\nyou can buy a special option from application preferences\n\n
- If you like the application\nrank it with 5 stars in\nGoogle Play\n\n
+ If you like the application\nrank it with 5 stars in\n
+ Google Play\n\n
Thanks to people who translate Calculator++ in different languages:\n
Italian - Gabriele Ravanetti\n
Spanish - Jordi Luna\n
- Ukrainian - Андрій Бандура\n\n
- This application uses next open source libraries:\n
+ Ukrainian - Андрій Бандура\n\n
+ This application uses next open source libraries:\n
Simple (XML serialization)\n
JSCL\n
AChartEngine
@@ -27,7 +30,7 @@
Release notes"Release notes for version "
-
+
1. Haptic feedback\n
2. Two layouts: calculator and cellphone\n
@@ -53,7 +56,8 @@
1. Support for entering numbers in scientific notation (2.3E2)\n
2. Added functions: deg(), rad() to convert from radians to degrees and vice versa\n
3. Added support for installing application on sd card\n
- 4. Added possibility to save entire expression as constant (e.g. type ln(6t), press +π button, enter name and save)\n
+ 4. Added possibility to save entire expression as constant (e.g. type ln(6t), press +π button, enter name and
+ save)\n
5. Fixed bug with abs() function and complex argument\n
6. Fixed bug with displaying result
@@ -99,12 +103,15 @@
- 1. Added functions\' plotting: type expression which contains 1 undefined variable (e.g. cos(t)) and click on the result. In the context menu choose \'Plot graph\'. Supported features: zoom in/out, moving graph, plotting imaginary part
+ 1. Added functions\' plotting: type expression which contains 1 undefined variable (e.g. cos(t)) and click on
+ the result. In the context menu choose \'Plot graph\'. Supported features: zoom in/out, moving graph, plotting
+ imaginary part
1. Buttons swipe preference\n
- 2. Added support for different numeral bases (currently supported: dec, bin, oct). Dec and bin can be chosen from main screen (CE button) and from app preferences\n
+ 2. Added support for different numeral bases (currently supported: dec, bin, oct). Dec and bin can be chosen
+ from main screen (CE button) and from app preferences\n
3. Fixed √ simplification problem\n
4. Performance improvements in functions\' plotting
@@ -114,14 +121,16 @@
2. Extended history: save, remove, copy, use from history screen (use long click for additional actions)\n
3. Added Spanish language\n
4. Full numeral base support (dec, hex, oct, bin)\n
- 5. !!!: Fix for multiplication sign on some devices - if you have strange symbols instead of × - go to the settings and change multiplication sign to *\n
+ 5. !!!: Fix for multiplication sign on some devices - if you have strange symbols instead of × - go to the
+ settings and change multiplication sign to *\n
6. Bug fixes: correct double factorial calculation, 20x fix, e^(pi*i)+1 fix and others
1. Release notes screen added\n
2. Added categories in functions and constants screens\n
- 3. Additional actions are available for constants, functions and operators (long click on the item and choose from context menu)\n
+ 3. Additional actions are available for constants, functions and operators (long click on the item and choose
+ from context menu)\n
4. Logarithm function added - calculate logarithm of any base \n
5. Back button preference\n
6. Variant of π constant independent from angle units
@@ -141,11 +150,15 @@
Note from developer\n\n
Sorry to inform you but this version of application brings built-in ads.\n
- I haven\'t seen in Google Play calculator with similar capabilities and I don\'t think I will see it in the close future.\n
- But still I want to extend it\'s functionality and support already implemented. The thing is that I cannot do it anymore for free - it takes too much time and great efforts from me as
+ I haven\'t seen in Google Play calculator with similar capabilities and I don\'t think I will see it in the
+ close future.\n
+ But still I want to extend it\'s functionality and support already implemented. The thing is that I cannot do it
+ anymore for free - it takes too much time and great efforts from me as
application has become rather big and complex.\n
- If you want to support the project and remove the ads please purchase special option from application preferences,\n
- if you don\'t want to pay or can\'t do it - you still can thank the author of this program by email: se.solovyev@gmail.com, rate application with high mark in Google Play\n
+ If you want to support the project and remove the ads please purchase special option from application
+ preferences,\n
+ if you don\'t want to pay or can\'t do it - you still can thank the author of this program by email:
+ se.solovyev@gmail.com, rate application with high mark in Google Play\n
or help to translate the application to your native language.
@@ -168,7 +181,8 @@
Note from developer:\n\n
I\'m glad to inform you that I\'ve started a forum for Calculator++: http://facebook.com/calculatorpp.\n
- Here you can find latest information about application, check for known issues, submit bugs or suggest new features.\n
+ Here you can find latest information about application, check for known issues, submit bugs or suggest new
+ features.\n
You can use your social account to login (Facebook, Twitter or Google are supported).\n\n
1. Zoom buttons on graph plotter\n
2. Billing bug fixes\n
@@ -190,59 +204,59 @@
10. Billing problems fixes
-
- 1. Ukrainian localization (Андрій Бандура)\n
- 2. HEX digits are not shown in not HEX mode\n
- 3. Preference for disabling display auto rotation\n
- 4. Preference for hiding equals button\n
- 5. Fixed plot problem\n
- 6. Fixed E+ problem (HEX mode)\n
- 7. π and Π are switched\n
- 8. Conversion tool added (tap on display or choose from application menu)\n
- 9. Wrong lg() integration and differentiation fixed
-
+
+ 1. Ukrainian localization (Андрій Бандура)\n
+ 2. HEX digits are not shown in not HEX mode\n
+ 3. Preference for disabling display auto rotation\n
+ 4. Preference for hiding equals button\n
+ 5. Fixed plot problem\n
+ 6. Fixed E+ problem (HEX mode)\n
+ 7. π and Π are switched\n
+ 8. Conversion tool added (tap on display or choose from application menu)\n
+ 9. Wrong lg() integration and differentiation fixed
+
-
- 1. Virtual keyboard are now not shown on Android 4 ICS\n
- 2. Fast number conversion from display context menu\n
- 3. Minor GUI fixes
-
+
+ 1. Virtual keyboard are now not shown on Android 4 ICS\n
+ 2. Fast number conversion from display context menu\n
+ 3. Minor GUI fixes
+
-
- 1. We are now on Facebook: facebook.com/calculatorpp\n
- 2. Tablet support (new awesome UI)\n
- 3. Improved graph plotter\n
- 4. Intermediate calculations are not shown in the history anymore\n
- 5. Faster UI response\n
- 6. Crash reports handler\n
- 7. Chinese translations
-
+
+ 1. We are now on Facebook: facebook.com/calculatorpp\n
+ 2. Tablet support (new awesome UI)\n
+ 3. Improved graph plotter\n
+ 4. Intermediate calculations are not shown in the history anymore\n
+ 5. Faster UI response\n
+ 6. Crash reports handler\n
+ 7. Chinese translations
+
-
- 1. UI improvements for 4-7 inches displays\n
- 2. Ans variable (last calculated value)
-
+
+ 1. UI improvements for 4-7 inches displays\n
+ 2. Ans variable (last calculated value)
+
-
- 1. Calculator++ widget for home screen (works only if app installed in phone memory)\n
- 2. Mobile phone layout for tablets (Preferences->Appearance Preferences->Layout->Scientific (Mobile))\n
- 3. Manual calculations (Preferences->Calculations Preferences->Result is calculated…)
-
+
+ 1. Calculator++ widget for home screen (works only if app installed in phone memory)\n
+ 2. Mobile phone layout for tablets (Preferences->Appearance Preferences->Layout->Scientific (Mobile))\n
+ 3. Manual calculations (Preferences->Calculations Preferences->Result is calculated…)
+
-
- 1. Support for user-defined functions (see +f button or + button inside functions screen)\n
- 2. Widget in different sizes: 3x3, 3x4, 4x4, 4x5\n
- 3. Several functions added: re(x), im(x), √3(x), √4(x), √n(x, n)\n
- 4. Default number systems/angle units + special warning dialog in case of calculations errors\n
- 5. Performance improvements\n
- 6. Text size in mobile layout for tablets fixed\n
- 7. Bug fixes
-
+
+ 1. Support for user-defined functions (see +f button or + button inside functions screen)\n
+ 2. Widget in different sizes: 3x3, 3x4, 4x4, 4x5\n
+ 3. Several functions added: re(x), im(x), √3(x), √4(x), √n(x, n)\n
+ 4. Default number systems/angle units + special warning dialog in case of calculations errors\n
+ 5. Performance improvements\n
+ 6. Text size in mobile layout for tablets fixed\n
+ 7. Bug fixes
+
-
- 1. Calculator in separate window\n
- 2. UI is fixed for some devices
-
+
+ 1. Calculator in separate window\n
+ 2. UI is fixed for some devices
+
1. Possibility to remove icon for Calculator++ in separate window\n
@@ -250,13 +264,13 @@
3. Fixed flicker for Calculator++ in separate window
-
- 1. Graph plotter completely reworked\n
- 2. Added support for graphing several functions\n
- 3. Added 3D graphing capability\n
- 4. Added support for graph screenshots\n
- 5. Fixed issues with user defined functions\n
- 6. Other fixes
-
+
+ 1. Graph plotter completely reworked\n
+ 2. Added support for graphing several functions\n
+ 3. Added 3D graphing capability\n
+ 4. Added support for graph screenshots\n
+ 5. Fixed issues with user defined functions\n
+ 6. Other fixes
+
\ No newline at end of file
diff --git a/android-app-core/res/values/text_functions.xml b/android-app-core/res/values/text_functions.xml
index e866b0d3..f863c54b 100644
--- a/android-app-core/res/values/text_functions.xml
+++ b/android-app-core/res/values/text_functions.xml
@@ -23,15 +23,29 @@
Square root function.Cubic root function.Function that gives absolute value of an argument.
- Function that gives the sign of an argument: -1 if argument is less than 0, 0 if equals to 0, 1 if more than 0.
+ Function that gives the sign of an argument: -1 if argument is less than 0, 0
+ if equals to 0, 1 if more than 0.
+ Equals function - gives 1 if two arguments are equals, 0 otherwise.
- Lesser-or-equals function - gives 1 if two arguments are equals or first is less than second, 0 otherwise.
- Greater-or-equals function - gives 1 if two arguments are equals or first is greater than second, 0 otherwise.
- Not-equals function - gives 1 if two arguments are not equals, 0 otherwise.
- Lesser function - gives 1 if first argument is less than second, 0 otherwise.
- Greater function - gives 1 if first argument is greater than second, 0 otherwise.
- Converts degrees into radians: d - degrees, m - minutes (default = 0), s - seconds (default = 0).
- Converts degrees from DMS notation to decimal notation: d - degrees, m - minutes (default = 0), s - seconds (default = 0).
+ Lesser-or-equals function - gives 1 if two arguments are equals or first is less
+ than second, 0 otherwise.
+
+ Greater-or-equals function - gives 1 if two arguments are equals or first is
+ greater than second, 0 otherwise.
+
+ Not-equals function - gives 1 if two arguments are not equals, 0 otherwise.
+
+ Lesser function - gives 1 if first argument is less than second, 0 otherwise.
+
+ Greater function - gives 1 if first argument is greater than second, 0
+ otherwise.
+
+ Converts degrees into radians: d - degrees, m - minutes (default = 0), s -
+ seconds (default = 0).
+
+ Converts degrees from DMS notation to decimal notation: d - degrees, m -
+ minutes (default = 0), s - seconds (default = 0).
+ Converts radians into degrees.Trigonometric
diff --git a/android-app-core/res/values/text_help.xml b/android-app-core/res/values/text_help.xml
index 63d3c587..e14b5631 100644
--- a/android-app-core/res/values/text_help.xml
+++ b/android-app-core/res/values/text_help.xml
@@ -14,12 +14,14 @@
How can I remove the ads?\n
\n
You can do it by purchasing the special option in the main application preferences.\n
- Purchase is done with Google Play and is linked to your google account.\n
- All your devices where same google account is set will be aware of purchase and will not show the advertisement.\n
+ Purchase is done with Google Play and is linked to your google account.\n
+ All your devices where same google account is set will be aware of purchase and will not show the
+ advertisement.\n
\n
Why Calculator++ needs INTERNET permission?\n
\n
- Currently application needs such permission only for one purpose - to show ads. If you buy the special option C++ will never use your internet connection.\n
+ Currently application needs such permission only for one purpose - to show ads. If you buy the special option
+ C++ will never use your internet connection.\n
\n
How can I use functions written in the top right and bottom right corners of the button?\n
\n
@@ -27,7 +29,8 @@
\n
How can I toggle between radians and degrees?\n
\n
- To toggle between different angle units you can either change appropriate option in application settings\n or use the toggle switch located on the 6 button\n
+ To toggle between different angle units you can either change appropriate option in application settings\n or
+ use the toggle switch located on the 6 button\n
(current value is lighted with yellow color).\n
Also you can use deg() and rad() functions and ° operator to convert degrees to radians and vice versa.\n
\n
@@ -50,12 +53,17 @@
\n
Note:\n
\n
- 100 + (20 + 20)% = 140, but 100+ (20% + 20%) = 124.0\n
- 100 + 50% ^ 2 = 2600, but 100 + 50 ^ 2% = 101.08\n
+ 100 + (20 + 20)% = 140,
+ but
+ 100+ (20% + 20%) = 124.0\n
+ 100 + 50% ^ 2 = 2600,
+ but
+ 100 + 50 ^ 2% = 101.08\n
\n
Does C++ support fractional calculations?\n
\n
- Yes, you can type your fractional expression in the editor and use ≡ (in the top right corner of = button). Also you can use ≡ to simplify expression.\n
+ Yes, you can type your fractional expression in the editor and use ≡ (in the top right corner of = button). Also
+ you can use ≡ to simplify expression.\n
\n
Examples:\n
\n
@@ -74,7 +82,8 @@
\n
Can C++ plot graph of the function?\n
\n
- Yes, type expression which contains 1 undefined variable (e.g. cos(t) and t has no value) and click on the result. In the context menu choose \'Plot graph\'.\n
+ Yes, type expression which contains 1 undefined variable (e.g. cos(t) and t has no value) and click on the
+ result. In the context menu choose \'Plot graph\'.\n
\n
Does C++ support matrix calculations?\n
\n
@@ -95,12 +104,29 @@
- 1. Main screen: is shown on application start, can be reached from another screen by pressing Back button.\n\n
- 2. Variables and Constants screen: contains list of available constants. User may add some constants and variables here by clicking Add button. Short click on variable/constant inserts it into the editor, long click - opens variable editor window. Can be reached from the main screen by pressing π,… button.\n\n
- 3. Functions screen: contains list of all available functions. Short click on function inserts it into the editor. Can be reached from the main screen by pressing f(x) button.\n\n
- 4. Operators screen: contains list of all available operators. Short click on operator inserts it into the editor. Can be reached from the main screen by pressing ∂,… button.\n\n
- 5. History screen: contains list of all actions done by user. Short click on history item sets it into the editor. Can be reached from the main screen by pressing M button.\n\n
- 6. Settings screen: contains application preferences. Can be reached from the main screen by pressing Settings in menu.
+ 1.
+ Main screen:
+ is shown on application start, can be reached from another screen by pressing Back button.\n\n
+ 2.
+ Variables and Constants screen:
+ contains list of available constants. User may add some constants and variables here by clicking Add button.
+ Short click on variable/constant inserts it into the editor, long click - opens variable editor window. Can be
+ reached from the main screen by pressing π,… button.\n\n
+ 3.
+ Functions screen:
+ contains list of all available functions. Short click on function inserts it into the editor. Can be reached
+ from the main screen by pressing f(x) button.\n\n
+ 4.
+ Operators screen:
+ contains list of all available operators. Short click on operator inserts it into the editor. Can be reached
+ from the main screen by pressing ∂,… button.\n\n
+ 5.
+ History screen:
+ contains list of all actions done by user. Short click on history item sets it into the editor. Can be reached
+ from the main screen by pressing M button.\n\n
+ 6.
+ Settings screen:
+ contains application preferences. Can be reached from the main screen by pressing Settings in menu.
\ No newline at end of file
diff --git a/android-app-core/res/values/text_operators.xml b/android-app-core/res/values/text_operators.xml
index be00f4d0..2938c6dd 100644
--- a/android-app-core/res/values/text_operators.xml
+++ b/android-app-core/res/values/text_operators.xml
@@ -9,15 +9,22 @@
OperatorsModulo operation finds the remainder of division of \'x\' by \'y\'.
- Sums functions \'f(i)\', iterating through \'i\' from \'from\' to \'to\'.
- Gives product of functions \'f(i)\', iterating through \'i\' from \'from\' to \'to\'.
- Gives derivative of order \'order\' (default = 1) of functions \'f(x)\' by \'x\' variable and calculates at point \'x_point\' (default = same as \'x\').
+ Sums functions \'f(i)\', iterating through \'i\' from \'from\' to \'to\'.
+
+ Gives product of functions \'f(i)\', iterating through \'i\' from \'from\'
+ to \'to\'.
+
+ Gives derivative of order \'order\' (default = 1) of functions \'f(x)\'
+ by \'x\' variable and calculates at point \'x_point\' (default = same as \'x\').
+ Gives integral of function \'f(x)\' by \'x\' variable.
- Integrates function \'f(x)\' by \'x\' variable from \'a\' to \'b\'.
+ Integrates function \'f(x)\' by \'x\' variable from \'a\' to \'b\'.
+ Gives the factorial of the expression before.Gives the double factorial of the expression before.
- Gives the percent value of the expression before.\nExamples:\n
+ Gives the percent value of the expression
+ before.\nExamples:\n
100 + 50% = 150\n
100 * 50% = 50\n
100 + 100 * 50% * 50% = 125
diff --git a/android-app-core/res/values/text_preferences.xml b/android-app-core/res/values/text_preferences.xml
index 9d4fb1e2..fc811068 100644
--- a/android-app-core/res/values/text_preferences.xml
+++ b/android-app-core/res/values/text_preferences.xml
@@ -1,16 +1,23 @@
- Toggle screen orientation change
- If turned on calculator will change screen orientation automatically
+ Toggle screen orientation change
+ If turned on calculator will change screen orientation automatically
+
- Show equals button
- If turned on equals button is shown
+ Show equals button
+ If turned on equals button is shown
- Hide numeral base digits
- If turned on numeral base digits of other numeral bases will be hidden
+ Hide numeral base digits
+ If turned on numeral base digits of other numeral bases will be
+ hidden
+
- Show intermediate calculations in history
- If turned on all calculations will be shown on history screen
+ Show intermediate calculations in history
+ If turned on all calculations will be shown on
+ history screen
+
- Result is calculated while typing expression
- If turned on calculations are done automatically while typing expression
+ Result is calculated while typing expression
+ If turned on calculations are done automatically while typing
+ expression
+
\ No newline at end of file
diff --git a/android-app-core/res/values/text_strings.xml b/android-app-core/res/values/text_strings.xml
index 34fdd9e3..fd245829 100644
--- a/android-app-core/res/values/text_strings.xml
+++ b/android-app-core/res/values/text_strings.xml
@@ -11,9 +11,9 @@
Calculator++ (Window mode)Calculator++ FreeCalc++
- Settings
- Error
- Result copied to clipboard!
+ Settings
+ Error
+ Result copied to clipboard!SettingsHelpVariables And Constants
@@ -44,10 +44,14 @@
Round resultToggles rounding of the resultAlways scientific notation
- If turned on forces to use only scientific notation of output (12.34E-12)
+ If turned on forces to use only scientific notation of output
+ (12.34E-12)
+ Precision of resultMaximum calculation time
- If calculations exceed specified limit - calculator halts with error
+ If calculations exceed specified limit - calculator halts with
+ error
+ ExitAddCancel
@@ -63,10 +67,14 @@
Create variableEdit variable
- Value must be either number or empty: if you have parameters - create function instead!
+ Value must be either number or empty: if you have parameters - create
+ function instead!
+ Variable name clashes with function name!Variable with same name already exists!
- Name of constant is not valid: name must start with letter, can contain letters, digits and underscore.
+ Name of constant is not valid: name must start with letter, can contain letters,
+ digits and underscore.
+ System variable cannot be changed!Enter new expression
@@ -86,7 +94,7 @@
Defines the units for angles to be used in calculationsCurrent numeral system
- Defines the numeral system to be used in calculations
+ Defines the numeral system to be used in calculationsDecimalHexadecimalOctal
@@ -99,7 +107,9 @@
Metro Blue (Default)Metro GreenMetro Purple
- Precision of result value (all calculations are done with maximum precision regardless of the value of this option)
+ Precision of result value (all calculations are done with maximum
+ precision regardless of the value of this option)
+ Toggles colouring and styling in calculator editorSets the theme for calculatorClear history
@@ -138,14 +148,15 @@
ToSwipe distance for buttons
- Sets swipe distance for buttons that support additional swipe actions
+ Sets swipe distance for buttons that support additional swipe actions
+ CommentSavedNot savedExpression copied to the clipboard!
- Status:
- Comment:
+ Status:
+ Comment:UseUseCopy expression
@@ -166,11 +177,17 @@
Copy descriptionCopy value
- Thank you for choosing Calculator++!\n\nCalculator++ is a powerful tool for making everyday calculations.\n\nTo remove the ads and support the project you can use special option from application settings.\n\nIt\'s highly recommended to read the FAQ and hints before the work to use all the features of application (press Menu button and then Help)
+ Thank you for choosing Calculator++!\n\nCalculator++ is a powerful tool for making
+ everyday calculations.\n\nTo remove the ads and support the project you can use special option from application
+ settings.\n\nIt\'s highly recommended to read the FAQ and hints before the work to use all the features of
+ application (press Menu button and then Help)
+ WelcomeShow release notes
- Defines if release notes popup window should appear after update to the new version
+ Defines if release notes popup window should appear after update to
+ the new version
+ Defines the behaviour of the Back buttonUse Back button as history prev
@@ -180,7 +197,9 @@
WarningError
- Billing is not supported: you must have Google Checkout account linked to your Google account and must be connected to the internet.
+ Billing is not supported: you must have Google Checkout account linked to your Google
+ account and must be connected to the internet.
+ Support the projectAnd remove the advertisement
@@ -192,116 +211,137 @@
FeedbackYou have been using Calculator++ for some time \n
and it\'s important for us to know your opinion about application.\n\n
- Please rate Calculator++ \non Google Play,\n leave a comment or \ndiscuss application \non Facebook
+ Please rate Calculator++ \non
+ Google Play,\n leave a comment or \ndiscuss application \non
+ Facebook
- Good news - I just released new application for Android called Notes++.\n
- If you\'re interesting in fast and easy way of making notes please follow the link and try Notes++!
-
+ Good news - I just released new application for Android called
+ Notes++.\n
+ If you\'re interesting in fast and easy way of making notes please follow the
+ link
+ and try Notes++!
+ Angle units changed to \'%s\'!Numeral base changed to \'%s\'!Conversion tool
- Convert to…
+ Convert to…
- Convert to hex
- Convert to bin
- Convert to dec
+ Convert to hex
+ Convert to bin
+ Convert to dec
- Editor
- Result
- Other
- Derivatives/Integrals
- Calculator++ has crashed…
- Calculator++ crash report
-
- Unfortunately, Calculator++ has crashed.\n\n
- In order to fix the problem we need some information about it. It\'s highly recommended to send crash report via email (after pressing \'Ok\' button you will see all sent data in the new window).\n\n
- Do you want to send crash report?
-
- Graph settings
+ Editor
+ Result
+ Other
+ Derivatives/Integrals
+ Calculator++ has crashed…
+ Calculator++ crash report
+
+ Unfortunately, Calculator++ has crashed.\n\n
+ In order to fix the problem we need some information about it. It\'s highly recommended to send crash report via
+ email (after pressing \'Ok\' button you will see all sent data in the new window).\n\n
+ Do you want to send crash report?
+
+ Graph settings
- Interpolate function\'s graph
- If checked cubic interpolation will be used in function graph drawing
- Color of real part of functions graph
- Sets color of real part functions graph
- Color of imaginary part of functions graph
- Sets color of imaginary part functions graph
+ Interpolate function\'s graph
+ If checked cubic interpolation will be used in function
+ graph drawing
+
+ Color of real part of functions graph
+ Sets color of real part functions graph
+ Color of imaginary part of functions graph
+ Sets color of imaginary part functions graph
- White
- Grey
- Red
- Blue
- Green
+ White
+ Grey
+ Red
+ Blue
+ Green
- Name
- Value
- Description
- Parameters
+ Name
+ Value
+ Description
+ ParametersCreate functionEdit function
- Name of function is not valid: name must start with letter, can contain letters, digits and underscore.
+ Name of function is not valid: name must start with letter, can contain
+ letters, digits and underscore.
+ Function with same name already exists!Function body could not be empty!Function parameter should not be empty!
- Do you really want to delete \'%s\' function?
- Unable to create empty function!
- Do not show this message until next session
- Calculator++ warning
- Arithmetic error occurred while plotting: %s
- OK
- Show calculation messages in dialog
- If turned on if any message occurred while calculations
- special dialog will be shown
-
- Fix
+ Do you really want to delete \'%s\' function?
+ Unable to create empty function!
+ Do not show this message until next session
+ Calculator++ warning
+ Arithmetic error occurred while plotting: %s
+ OK
+ Show calculation messages in dialog
+ If turned on if any message occurred while calculations
+ special dialog will be shown
+
+ Fix
- Default numeral system
- Defines the default numeral system
- Default numeral system \'%1$s\' differs from current \'%2$s\'. Forgot to change back?
+ Default numeral system
+ Defines the default numeral system
+ Default numeral system \'%1$s\' differs from current \'%2$s\'. Forgot
+ to change back?
+
- Default angle units
- Defines the default angle units
- Default angle units \'%1$s\' differs from current \'%2$s\'. Forgot to change back?
- Close
- Calculator++ Widget (3x3)
- Calculator++ Widget (3x4)
- Calculator++ Widget (4x4)
- Calculator++ Widget (4x5)
- Click to open calculator in window mode
+ Default angle units
+ Defines the default angle units
+ Default angle units \'%1$s\' differs from current \'%2$s\'. Forgot to
+ change back?
+
+ Close
+ Calculator++ Widget (3x3)
+ Calculator++ Widget (3x4)
+ Calculator++ Widget (4x4)
+ Calculator++ Widget (4x5)
+ Click to open calculator in window mode
- Calculator (in separate window) settings
- Start on boot
- If turned on Calculator++ will appear in notification bar after device boot
+ Calculator (in separate window) settings
+ Start on boot
+ If turned on Calculator++ will appear in notification bar after
+ device boot
+
- Show separate icon (require reboot)
- If turned on second icon will be shown in applications\' list
+ Show separate icon (require reboot)
+ If turned on second icon will be shown in applications\' list
+
- You can remove second icon in applications\' list from application settings or by pressing next button
- Remove icon
- This change may require reboot
+ You can remove second icon in applications\' list from application
+ settings or by pressing next button
+
+ Remove icon
+ This change may require reboot
- 2D plot
- 3D plot
- Graph functions
+ 2D plot
+ 3D plot
+ Graph functions
- Plot imaginary part of function
- If checked imaginary part of function will be plotted
+ Plot imaginary part of function
+ If checked imaginary part of function will be plotted
- Monochrome
- Color map (only 3D)
+ Monochrome
+ Color map (only 3D)
- Solid (-----)
- Dashed (- - -)
- Dotted (. . .)
- Dot-dashed (-.-.-)
+ Solid (-----)
+ Dashed (- - -)
+ Dotted (. . .)
+ Dot-dashed (-.-.-)
- Function plotter
+ Function plotterCapture screenshotScreenshot successfully saved: %1$s!
- Screenshot cannot be saved as SD card is not mounted. Mount SD card and try again!
+ Screenshot cannot be saved as SD card is not mounted. Mount SD
+ card and try again!
+ Line color typeLine color
@@ -312,27 +352,32 @@
PinnedVisible+plot
- Unable to plot empty function!
- Unable to plot: too many variables!
- Graph range
- X Min
- X Max
- Y Min
- Y Max
- Invalid number!
- Graph boundaries should not be the same!
- Apply
- Message
- Continue
- Supporting the project is easy and secure: purchase process is provided by Google and all you need is a properly configured Google account.\n\n
- Payment information is stored in Google servers with your Google account and you can easily use application on several devices.\n\n
- By clicking \'Continue\' button you will be redirected to the Google Play app to make the payment.
-
- Purchase
+ Unable to plot empty function!
+ Unable to plot: too many variables!
+ Graph range
+ X Min
+ X Max
+ Y Min
+ Y Max
+ Invalid number!
+ Graph boundaries should not be the same!
+ Apply
+ Message
+ Continue
+ Supporting the project is easy and secure: purchase process is provided by Google
+ and all you need is a properly configured Google account.\n\n
+ Payment information is stored in Google servers with your Google account and you can easily use application on
+ several devices.\n\n
+ By clicking \'Continue\' button you will be redirected to the Google Play app to make the payment.
+
+ Purchase
- Thank you for supporting the application!\n\n It might take several minutes until app will be informed about the purchase. You always can check information about the purchase in your Google Account.\n
- If you have any problems or questions feel free to contact me directly (contacts are available in Main->Menu->About)
-
+ Thank you for supporting the application!\n\n It might take several
+ minutes until app will be informed about the purchase. You always can check information about the purchase in
+ your Google Account.\n
+ If you have any problems or questions feel free to contact me directly (contacts are available in
+ Main->Menu->About)
+
\ No newline at end of file
diff --git a/android-app-core/res/values/text_vars.xml b/android-app-core/res/values/text_vars.xml
index 71a3c052..5dd84d6b 100644
--- a/android-app-core/res/values/text_vars.xml
+++ b/android-app-core/res/values/text_vars.xml
@@ -6,13 +6,23 @@
- Ratio of any circle\'s circumference to its diameter. Note: this constant is degree unit dependent => rad: 3.14, deg: 180.0
- Ratio of any circle\'s circumference to its diameter. Note: this constant is degree unit independent => rad: 3.14, deg: 3.14
- Unique real number such that the value of the derivative (slope of the tangent line) of the function f(x) = e^x at the point x = 0 is equal to 1
+ Ratio of any circle\'s circumference to its diameter. Note: this constant is
+ degree unit dependent => rad: 3.14, deg: 180.0
+
+ Ratio of any circle\'s circumference to its diameter. Note: this constant is
+ degree unit independent => rad: 3.14, deg: 3.14
+
+ Unique real number such that the value of the derivative (slope of the tangent
+ line) of the function f(x) = e^x at the point x = 0 is equal to 1
+ Imaginary unit, defined such that i^2 = −1Speed of light in vacuum, m·s^-1
- The gravitational constant is an empirical physical constant involved in the calculation of the gravitational attraction between objects with mass, m^3·kg^−1·s^−2
- Physical constant reflecting the sizes of energy quanta in quantum mechanics, J·s
+ The gravitational constant is an empirical physical constant involved in the
+ calculation of the gravitational attraction between objects with mass, m^3·kg^−1·s^−2
+
+ Physical constant reflecting the sizes of energy quanta in quantum mechanics,
+ J·s
+ Reduced Planck constant, J·sNot a numberInfinity
diff --git a/android-app-core/res/values/theme_gray.xml b/android-app-core/res/values/theme_gray.xml
index ca6b0df3..9ebbbc0b 100644
--- a/android-app-core/res/values/theme_gray.xml
+++ b/android-app-core/res/values/theme_gray.xml
@@ -1,186 +1,184 @@
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
- @style/cpp_default_fragment_title_style
- @style/cpp_default_fragment_list_view_style
- @style/cpp_default_fragment_list_view_item_style
- @style/cpp_default_button_style
+
+ @style/cpp_default_actionbar_dropdown_style
+ @style/cpp_default_actionbar_dropdown_style
-
-
- @style/cpp_default_fragment_title_style
- @style/cpp_default_fragment_list_view_style
- @style/cpp_default_fragment_list_view_item_style
- @style/cpp_default_button_style
+
+ @style/cpp_default_dialog_style
+
+ @style/cpp_default_pane_style
+ @style/cpp_default_pane_style_transparent
+
\ No newline at end of file
diff --git a/android-app-core/res/values/theme_light_blue.xml b/android-app-core/res/values/theme_light_blue.xml
index 40760224..118fb58c 100644
--- a/android-app-core/res/values/theme_light_blue.xml
+++ b/android-app-core/res/values/theme_light_blue.xml
@@ -1,5 +1,4 @@
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/android-app-core/res/values/theme_metro_green.xml b/android-app-core/res/values/theme_metro_green.xml
index e592f15e..9d6b519d 100644
--- a/android-app-core/res/values/theme_metro_green.xml
+++ b/android-app-core/res/values/theme_metro_green.xml
@@ -4,14 +4,14 @@
@drawable/metro_button_green
-
+
-
+ @style/metro_green_fragment_list_view_item_style
+
\ No newline at end of file
diff --git a/android-app-core/res/values/theme_metro_purple.xml b/android-app-core/res/values/theme_metro_purple.xml
index aa3d8fc7..623855f8 100644
--- a/android-app-core/res/values/theme_metro_purple.xml
+++ b/android-app-core/res/values/theme_metro_purple.xml
@@ -5,14 +5,14 @@
-
+
+ @style/metro_purple_fragment_list_view_item_style
+
\ No newline at end of file
diff --git a/android-app-core/res/values/theme_violet.xml b/android-app-core/res/values/theme_violet.xml
index 1d7f0083..ad150e36 100644
--- a/android-app-core/res/values/theme_violet.xml
+++ b/android-app-core/res/values/theme_violet.xml
@@ -1,17 +1,17 @@
-
-
+
+
\ No newline at end of file
diff --git a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenBroadcastReceiver.java b/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenBroadcastReceiver.java
index 0af9cef0..47b61fcf 100644
--- a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenBroadcastReceiver.java
+++ b/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenBroadcastReceiver.java
@@ -9,27 +9,27 @@ import org.jetbrains.annotations.NotNull;
import org.solovyev.android.calculator.CalculatorPreferences;
/**
-* User: serso
-* Date: 11/20/12
-* Time: 11:05 PM
-*/
+ * User: serso
+ * Date: 11/20/12
+ * Time: 11:05 PM
+ */
public final class CalculatorOnscreenBroadcastReceiver extends BroadcastReceiver {
- public CalculatorOnscreenBroadcastReceiver() {
- }
+ public CalculatorOnscreenBroadcastReceiver() {
+ }
- @Override
- public void onReceive(@NotNull Context context,
- @NotNull Intent intent) {
- if ( intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED) ) {
- final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
- if ( CalculatorPreferences.OnscreenCalculator.startOnBoot.getPreferenceNoError(preferences) ) {
- CalculatorOnscreenService.showNotification(context);
- }
- } else {
- final Intent newIntent = new Intent(intent);
- newIntent.setClass(context, CalculatorOnscreenService.class);
- context.startService(newIntent);
- }
- }
+ @Override
+ public void onReceive(@NotNull Context context,
+ @NotNull Intent intent) {
+ if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
+ final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+ if (CalculatorPreferences.OnscreenCalculator.startOnBoot.getPreferenceNoError(preferences)) {
+ CalculatorOnscreenService.showNotification(context);
+ }
+ } else {
+ final Intent newIntent = new Intent(intent);
+ newIntent.setClass(context, CalculatorOnscreenService.class);
+ context.startService(newIntent);
+ }
+ }
}
diff --git a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenService.java b/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenService.java
index ec88d04a..74f98451 100644
--- a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenService.java
+++ b/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenService.java
@@ -27,111 +27,111 @@ import org.solovyev.android.calculator.external.ExternalCalculatorStateUpdater;
*/
public class CalculatorOnscreenService extends Service implements ExternalCalculatorStateUpdater, OnscreenViewListener {
- private static final int NOTIFICATION_ID = 9031988; // my birthday =)
+ private static final int NOTIFICATION_ID = 9031988; // my birthday =)
- @NotNull
- private final ExternalCalculatorIntentHandler intentHandler = new DefaultExternalCalculatorIntentHandler(this);
- public static final Class INTENT_LISTENER_CLASS = CalculatorOnscreenBroadcastReceiver.class;
+ @NotNull
+ private final ExternalCalculatorIntentHandler intentHandler = new DefaultExternalCalculatorIntentHandler(this);
+ public static final Class INTENT_LISTENER_CLASS = CalculatorOnscreenBroadcastReceiver.class;
- @Nullable
- private static String cursorColor;
+ @Nullable
+ private static String cursorColor;
- @NotNull
- private CalculatorOnscreenView view;
+ @NotNull
+ private CalculatorOnscreenView view;
private boolean compatibilityStart = true;
- private boolean viewCreated = false;
+ private boolean viewCreated = false;
- @Override
- public IBinder onBind(Intent intent) {
- return null;
- }
+ @Override
+ public IBinder onBind(Intent intent) {
+ return null;
+ }
- @Override
- public void onCreate() {
- super.onCreate();
- }
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ }
- private void createView() {
- if (!viewCreated) {
- final WindowManager wm = ((WindowManager) this.getSystemService(Context.WINDOW_SERVICE));
+ private void createView() {
+ if (!viewCreated) {
+ final WindowManager wm = ((WindowManager) this.getSystemService(Context.WINDOW_SERVICE));
- final DisplayMetrics dm = getResources().getDisplayMetrics();
+ final DisplayMetrics dm = getResources().getDisplayMetrics();
- int twoThirdWidth = 2 * wm.getDefaultDisplay().getWidth() / 3;
- int twoThirdHeight = 2 * wm.getDefaultDisplay().getHeight() / 3;
+ int twoThirdWidth = 2 * wm.getDefaultDisplay().getWidth() / 3;
+ int twoThirdHeight = 2 * wm.getDefaultDisplay().getHeight() / 3;
- twoThirdWidth = Math.min(twoThirdWidth, twoThirdHeight);
- twoThirdHeight = Math.max(twoThirdWidth, getHeight(twoThirdWidth));
+ twoThirdWidth = Math.min(twoThirdWidth, twoThirdHeight);
+ twoThirdHeight = Math.max(twoThirdWidth, getHeight(twoThirdWidth));
- final int baseWidth = Views.toPixels(dm, 300);
- final int width0 = Math.min(twoThirdWidth, baseWidth);
- final int height0 = Math.min(twoThirdHeight, getHeight(baseWidth));
+ final int baseWidth = Views.toPixels(dm, 300);
+ final int width0 = Math.min(twoThirdWidth, baseWidth);
+ final int height0 = Math.min(twoThirdHeight, getHeight(baseWidth));
- final int width = Math.min(width0, height0);
- final int height = Math.max(width0, height0);
+ final int width = Math.min(width0, height0);
+ final int height = Math.max(width0, height0);
- view = CalculatorOnscreenView.newInstance(this, CalculatorOnscreenViewState.newInstance(width, height, -1, -1), getCursorColor(this), this);
- view.show();
+ view = CalculatorOnscreenView.newInstance(this, CalculatorOnscreenViewState.newInstance(width, height, -1, -1), getCursorColor(this), this);
+ view.show();
- startCalculatorListening();
+ startCalculatorListening();
- viewCreated = true;
- }
- }
+ viewCreated = true;
+ }
+ }
- private int getHeight(int width) {
+ private int getHeight(int width) {
return 4 * width / 3;
}
private void startCalculatorListening() {
- Locator.getInstance().getExternalListenersContainer().addExternalListener(getIntentListenerClass());
- }
+ Locator.getInstance().getExternalListenersContainer().addExternalListener(getIntentListenerClass());
+ }
- @NotNull
- private static Class> getIntentListenerClass() {
- return INTENT_LISTENER_CLASS;
- }
+ @NotNull
+ private static Class> getIntentListenerClass() {
+ return INTENT_LISTENER_CLASS;
+ }
- private void stopCalculatorListening() {
+ private void stopCalculatorListening() {
Locator.getInstance().getExternalListenersContainer().removeExternalListener(getIntentListenerClass());
- }
+ }
- @Override
- public void onDestroy() {
- stopCalculatorListening();
+ @Override
+ public void onDestroy() {
+ stopCalculatorListening();
if (viewCreated) {
this.view.hide();
}
super.onDestroy();
- }
+ }
- @Override
- public void updateState(@NotNull Context context, @NotNull CalculatorEditorViewState editorState, @NotNull CalculatorDisplayViewState displayState) {
- view.updateDisplayState(displayState);
- view.updateEditorState(editorState);
- }
+ @Override
+ public void updateState(@NotNull Context context, @NotNull CalculatorEditorViewState editorState, @NotNull CalculatorDisplayViewState displayState) {
+ view.updateDisplayState(displayState);
+ view.updateEditorState(editorState);
+ }
- @NotNull
- private static String getCursorColor(@NotNull Context context) {
- if (cursorColor == null) {
- cursorColor = Integer.toHexString(context.getResources().getColor(R.color.cpp_onscreen_cursor_color)).substring(2);
- }
- return cursorColor;
- }
+ @NotNull
+ private static String getCursorColor(@NotNull Context context) {
+ if (cursorColor == null) {
+ cursorColor = Integer.toHexString(context.getResources().getColor(R.color.cpp_onscreen_cursor_color)).substring(2);
+ }
+ return cursorColor;
+ }
- @Override
- public void onStart(Intent intent, int startId) {
- super.onStart(intent, startId);
+ @Override
+ public void onStart(Intent intent, int startId) {
+ super.onStart(intent, startId);
if (this.compatibilityStart) {
handleStart(intent);
}
}
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
final int result;
try {
@@ -143,80 +143,80 @@ public class CalculatorOnscreenService extends Service implements ExternalCalcul
}
return result;
- }
-
- private void handleStart(@Nullable Intent intent) {
- if ( intent != null ) {
-
- if (isInitIntent(intent)) {
-
- boolean createView = intent.getBooleanExtra(AndroidExternalListenersContainer.INIT_ACTION_CREATE_VIEW_EXTRA, false);
- if (createView) {
- hideNotification();
- createView();
- } else {
- showNotification();
- }
- }
-
- if (viewCreated) {
- intentHandler.onIntent(this, intent);
- }
-
- }
}
- private boolean isInitIntent(@NotNull Intent intent) {
- return intent.getAction().equals(AndroidExternalListenersContainer.INIT_ACTION);
- }
+ private void handleStart(@Nullable Intent intent) {
+ if (intent != null) {
- private void hideNotification() {
- final NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
- nm.cancel(NOTIFICATION_ID);
- }
+ if (isInitIntent(intent)) {
- @Override
- public void onViewMinimized() {
- showNotification();
- stopSelf();
- }
+ boolean createView = intent.getBooleanExtra(AndroidExternalListenersContainer.INIT_ACTION_CREATE_VIEW_EXTRA, false);
+ if (createView) {
+ hideNotification();
+ createView();
+ } else {
+ showNotification();
+ }
+ }
- @Override
- public void onViewHidden() {
- stopSelf();
- }
+ if (viewCreated) {
+ intentHandler.onIntent(this, intent);
+ }
- private void showNotification() {
- final NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
- builder.setSmallIcon(R.drawable.kb_logo);
- builder.setContentTitle(getText(R.string.c_app_name));
- builder.setContentText(getString(R.string.open_onscreen_calculator));
- builder.setOngoing(true);
+ }
+ }
- final Intent intent = createShowOnscreenViewIntent(this);
- builder.setContentIntent(PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT));
+ private boolean isInitIntent(@NotNull Intent intent) {
+ return intent.getAction().equals(AndroidExternalListenersContainer.INIT_ACTION);
+ }
- final NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
- nm.notify(NOTIFICATION_ID, builder.getNotification());
- }
+ private void hideNotification() {
+ final NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ nm.cancel(NOTIFICATION_ID);
+ }
- public static void showNotification(@NotNull Context context) {
- final Intent intent = new Intent(AndroidExternalListenersContainer.INIT_ACTION);
- intent.setClass(context, getIntentListenerClass());
- context.sendBroadcast(intent);
- }
+ @Override
+ public void onViewMinimized() {
+ showNotification();
+ stopSelf();
+ }
- public static void showOnscreenView(@NotNull Context context) {
- final Intent intent = createShowOnscreenViewIntent(context);
- context.sendBroadcast(intent);
- }
+ @Override
+ public void onViewHidden() {
+ stopSelf();
+ }
- @NotNull
- private static Intent createShowOnscreenViewIntent(@NotNull Context context) {
- final Intent intent = new Intent(AndroidExternalListenersContainer.INIT_ACTION);
- intent.setClass(context, getIntentListenerClass());
- intent.putExtra(AndroidExternalListenersContainer.INIT_ACTION_CREATE_VIEW_EXTRA, true);
- return intent;
- }
+ private void showNotification() {
+ final NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
+ builder.setSmallIcon(R.drawable.kb_logo);
+ builder.setContentTitle(getText(R.string.c_app_name));
+ builder.setContentText(getString(R.string.open_onscreen_calculator));
+ builder.setOngoing(true);
+
+ final Intent intent = createShowOnscreenViewIntent(this);
+ builder.setContentIntent(PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT));
+
+ final NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ nm.notify(NOTIFICATION_ID, builder.getNotification());
+ }
+
+ public static void showNotification(@NotNull Context context) {
+ final Intent intent = new Intent(AndroidExternalListenersContainer.INIT_ACTION);
+ intent.setClass(context, getIntentListenerClass());
+ context.sendBroadcast(intent);
+ }
+
+ public static void showOnscreenView(@NotNull Context context) {
+ final Intent intent = createShowOnscreenViewIntent(context);
+ context.sendBroadcast(intent);
+ }
+
+ @NotNull
+ private static Intent createShowOnscreenViewIntent(@NotNull Context context) {
+ final Intent intent = new Intent(AndroidExternalListenersContainer.INIT_ACTION);
+ intent.setClass(context, getIntentListenerClass());
+ intent.putExtra(AndroidExternalListenersContainer.INIT_ACTION_CREATE_VIEW_EXTRA, true);
+ return intent;
+ }
}
diff --git a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenStartActivity.java b/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenStartActivity.java
index b45139d8..1079ba3a 100644
--- a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenStartActivity.java
+++ b/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenStartActivity.java
@@ -22,16 +22,16 @@ public class CalculatorOnscreenStartActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (Android.isComponentEnabled(this, CalculatorOnscreenStartActivity.class)) {
- final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ if (Android.isComponentEnabled(this, CalculatorOnscreenStartActivity.class)) {
+ final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (!CalculatorPreferences.OnscreenCalculator.removeIconDialogShown.getPreference(prefs)) {
FixableMessagesDialog.showDialog(Arrays.asList(new FixableMessage(getString(R.string.cpp_onscreen_remove_icon_message), MessageType.warning, new RemoveIconFixableError(this))), this, false);
CalculatorPreferences.OnscreenCalculator.removeIconDialogShown.putPreference(prefs, true);
- }
- }
+ }
+ }
- CalculatorOnscreenService.showOnscreenView(this);
+ CalculatorOnscreenService.showOnscreenView(this);
this.finish();
}
diff --git a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenView.java b/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenView.java
index 08da30cd..2aaeea03 100644
--- a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenView.java
+++ b/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenView.java
@@ -13,11 +13,7 @@ import android.view.WindowManager;
import android.widget.ImageView;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.solovyev.android.calculator.AndroidCalculatorDisplayView;
-import org.solovyev.android.calculator.AndroidCalculatorEditorView;
-import org.solovyev.android.calculator.CalculatorButton;
-import org.solovyev.android.calculator.CalculatorDisplayViewState;
-import org.solovyev.android.calculator.CalculatorEditorViewState;
+import org.solovyev.android.calculator.*;
import org.solovyev.android.prefs.Preference;
/**
@@ -26,39 +22,39 @@ import org.solovyev.android.prefs.Preference;
* Time: 9:03 PM
*/
public class CalculatorOnscreenView {
- /*
- **********************************************************************
- *
- * CONSTANTS
- *
- **********************************************************************
- */
+ /*
+ **********************************************************************
+ *
+ * CONSTANTS
+ *
+ **********************************************************************
+ */
- private static final String TAG = CalculatorOnscreenView.class.getSimpleName();
+ private static final String TAG = CalculatorOnscreenView.class.getSimpleName();
- /*
- **********************************************************************
- *
- * STATIC
- *
- **********************************************************************
- */
+ /*
+ **********************************************************************
+ *
+ * STATIC
+ *
+ **********************************************************************
+ */
- private static final Preference viewStatePreference = new CalculatorOnscreenViewState.Preference("onscreen_view_state", CalculatorOnscreenViewState.newDefaultState());
+ private static final Preference viewStatePreference = new CalculatorOnscreenViewState.Preference("onscreen_view_state", CalculatorOnscreenViewState.newDefaultState());
- /*
- **********************************************************************
- *
- * FIELDS
- *
- **********************************************************************
- */
+ /*
+ **********************************************************************
+ *
+ * FIELDS
+ *
+ **********************************************************************
+ */
- @NotNull
- private View root;
+ @NotNull
+ private View root;
- @NotNull
- private View content;
+ @NotNull
+ private View content;
@NotNull
private View header;
@@ -70,133 +66,133 @@ public class CalculatorOnscreenView {
private AndroidCalculatorDisplayView displayView;
@NotNull
- private Context context;
+ private Context context;
- @NotNull
- private CalculatorOnscreenViewState state = CalculatorOnscreenViewState.newDefaultState();
+ @NotNull
+ private CalculatorOnscreenViewState state = CalculatorOnscreenViewState.newDefaultState();
- @NotNull
- private String cursorColor;
+ @NotNull
+ private String cursorColor;
- @Nullable
- private OnscreenViewListener viewListener;
+ @Nullable
+ private OnscreenViewListener viewListener;
- /*
- **********************************************************************
- *
- * STATES
- *
- **********************************************************************
- */
+ /*
+ **********************************************************************
+ *
+ * STATES
+ *
+ **********************************************************************
+ */
- private boolean minimized = false;
+ private boolean minimized = false;
- private boolean attached = false;
+ private boolean attached = false;
- private boolean folded = false;
+ private boolean folded = false;
- private boolean initialized = false;
+ private boolean initialized = false;
- private boolean hidden = true;
+ private boolean hidden = true;
- /*
- **********************************************************************
- *
- * CONSTRUCTORS
- *
- **********************************************************************
- */
+ /*
+ **********************************************************************
+ *
+ * CONSTRUCTORS
+ *
+ **********************************************************************
+ */
- private CalculatorOnscreenView() {
- }
+ private CalculatorOnscreenView() {
+ }
- public static CalculatorOnscreenView newInstance(@NotNull Context context,
- @NotNull CalculatorOnscreenViewState state,
- @NotNull String cursorColor,
- @Nullable OnscreenViewListener viewListener) {
- final CalculatorOnscreenView result = new CalculatorOnscreenView();
+ public static CalculatorOnscreenView newInstance(@NotNull Context context,
+ @NotNull CalculatorOnscreenViewState state,
+ @NotNull String cursorColor,
+ @Nullable OnscreenViewListener viewListener) {
+ final CalculatorOnscreenView result = new CalculatorOnscreenView();
- result.root = View.inflate(context, R.layout.onscreen_layout, null);
- result.context = context;
- result.cursorColor = cursorColor;
- result.viewListener = viewListener;
+ result.root = View.inflate(context, R.layout.onscreen_layout, null);
+ result.context = context;
+ result.cursorColor = cursorColor;
+ result.viewListener = viewListener;
- final CalculatorOnscreenViewState persistedState = readState(context);
- if (persistedState != null) {
- result.state = persistedState;
- } else {
- result.state = state;
- }
+ final CalculatorOnscreenViewState persistedState = readState(context);
+ if (persistedState != null) {
+ result.state = persistedState;
+ } else {
+ result.state = state;
+ }
- return result;
- }
+ return result;
+ }
- /*
- **********************************************************************
- *
- * METHODS
- *
- **********************************************************************
- */
+ /*
+ **********************************************************************
+ *
+ * METHODS
+ *
+ **********************************************************************
+ */
- public void updateDisplayState(@NotNull CalculatorDisplayViewState displayState) {
- checkInit();
+ public void updateDisplayState(@NotNull CalculatorDisplayViewState displayState) {
+ checkInit();
displayView.setState(displayState);
- }
+ }
- public void updateEditorState(@NotNull CalculatorEditorViewState editorState) {
- checkInit();
+ public void updateEditorState(@NotNull CalculatorEditorViewState editorState) {
+ checkInit();
editorView.setState(editorState);
- }
+ }
- private void setHeight(int height) {
- checkInit();
+ private void setHeight(int height) {
+ checkInit();
- final WindowManager.LayoutParams params = (WindowManager.LayoutParams) root.getLayoutParams();
+ final WindowManager.LayoutParams params = (WindowManager.LayoutParams) root.getLayoutParams();
- params.height = height;
+ params.height = height;
- getWindowManager().updateViewLayout(root, params);
- }
+ getWindowManager().updateViewLayout(root, params);
+ }
- /*
- **********************************************************************
- *
- * LIFECYCLE
- *
- **********************************************************************
- */
+ /*
+ **********************************************************************
+ *
+ * LIFECYCLE
+ *
+ **********************************************************************
+ */
- private void init() {
+ private void init() {
- if (!initialized) {
- for (final CalculatorButton widgetButton : CalculatorButton.values()) {
- final View button = root.findViewById(widgetButton.getButtonId());
- if (button != null) {
- button.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
+ if (!initialized) {
+ for (final CalculatorButton widgetButton : CalculatorButton.values()) {
+ final View button = root.findViewById(widgetButton.getButtonId());
+ if (button != null) {
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
widgetButton.onClick(context);
- if ( widgetButton == CalculatorButton.app ) {
+ if (widgetButton == CalculatorButton.app) {
minimize();
}
- }
- });
- button.setOnLongClickListener(new View.OnLongClickListener() {
+ }
+ });
+ button.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
widgetButton.onLongClick(context);
return true;
}
});
- }
- }
+ }
+ }
- final WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
+ final WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
header = root.findViewById(R.id.onscreen_header);
- content = root.findViewById(R.id.onscreen_content);
+ content = root.findViewById(R.id.onscreen_content);
displayView = (AndroidCalculatorDisplayView) root.findViewById(R.id.calculator_display);
displayView.init(this.context, false);
@@ -204,320 +200,320 @@ public class CalculatorOnscreenView {
editorView = (AndroidCalculatorEditorView) root.findViewById(R.id.calculator_editor);
editorView.init(this.context);
- final View onscreenFoldButton = root.findViewById(R.id.onscreen_fold_button);
- onscreenFoldButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (folded) {
- unfold();
- } else {
- fold();
- }
- }
- });
-
- final View onscreenHideButton = root.findViewById(R.id.onscreen_minimize_button);
- onscreenHideButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- minimize();
- }
- });
-
- root.findViewById(R.id.onscreen_close_button).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- hide();
- }
- });
-
- final ImageView onscreenTitleImageView = (ImageView) root.findViewById(R.id.onscreen_title);
- onscreenTitleImageView.setOnTouchListener(new WindowDragTouchListener(wm, root));
-
- initialized = true;
- }
-
- }
-
- private void checkInit() {
- if (!initialized) {
- throw new IllegalStateException("init() must be called!");
- }
- }
-
- public void show() {
- if (hidden) {
- init();
- attach();
-
- hidden = false;
- }
- }
-
- public void attach() {
- checkInit();
-
- final WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
- if (!attached) {
- final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
- state.getWidth(),
- state.getHeight(),
- state.getX(),
- state.getY(),
- WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
- WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
- PixelFormat.TRANSLUCENT);
-
- params.gravity = Gravity.TOP | Gravity.LEFT;
-
- wm.addView(root, params);
- attached = true;
- }
- }
-
- private void fold() {
- if (!folded) {
- int newHeight = header.getHeight();
- content.setVisibility(View.GONE);
- setHeight(newHeight);
- folded = true;
- }
- }
-
- private void unfold() {
- if (folded) {
- content.setVisibility(View.VISIBLE);
- setHeight(state.getHeight());
- folded = false;
- }
- }
-
- public void detach() {
- checkInit();
-
- if (attached) {
- getWindowManager().removeView(root);
- attached = false;
- }
- }
-
- public void minimize() {
- checkInit();
- if (!minimized) {
- persistState(context, getCurrentState(!folded));
-
- detach();
-
- if (viewListener != null) {
- viewListener.onViewMinimized();
- }
-
- minimized = true;
- }
- }
-
- public static void persistState(@NotNull Context context, @NotNull CalculatorOnscreenViewState state) {
- final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
- viewStatePreference.putPreference(preferences, state);
- }
-
- @Nullable
- public static CalculatorOnscreenViewState readState(@NotNull Context context) {
- final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
- if (viewStatePreference.isSet(preferences)) {
- return viewStatePreference.getPreference(preferences);
- } else {
- return null;
- }
- }
-
- public void hide() {
- checkInit();
-
- if (!hidden) {
-
- persistState(context, getCurrentState(!folded));
-
- detach();
-
- if (viewListener != null) {
- viewListener.onViewHidden();
- }
-
- hidden = true;
- }
- }
-
- @NotNull
- private WindowManager getWindowManager() {
- return ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE));
- }
-
- @NotNull
- public CalculatorOnscreenViewState getCurrentState(boolean useRealSize) {
- final WindowManager.LayoutParams params = (WindowManager.LayoutParams) root.getLayoutParams();
- if (useRealSize) {
- return CalculatorOnscreenViewState.newInstance(params.width, params.height, params.x, params.y);
- } else {
- return CalculatorOnscreenViewState.newInstance(state.getWidth(), state.getHeight(), params.x, params.y);
- }
- }
-
- /*
- **********************************************************************
- *
- * STATIC
- *
- **********************************************************************
- */
-
- private static class WindowDragTouchListener implements View.OnTouchListener {
-
- /*
- **********************************************************************
- *
- * CONSTANTS
- *
- **********************************************************************
- */
-
- private static final float DIST_EPS = 0f;
- private static final float DIST_MAX = 100000f;
- private static final long TIME_EPS = 0L;
-
- /*
- **********************************************************************
- *
- * FIELDS
- *
- **********************************************************************
- */
-
- @NotNull
- private final WindowManager wm;
-
- private int orientation;
-
- private float x0;
-
- private float y0;
-
- private long time = 0;
-
- @NotNull
- private final View view;
-
- private int displayWidth;
-
- private int displayHeight;
-
- /*
- **********************************************************************
- *
- * CONSTRUCTORS
- *
- **********************************************************************
- */
-
- public WindowDragTouchListener(@NotNull WindowManager wm,
- @NotNull View view) {
- this.wm = wm;
- this.view = view;
- initDisplayParams();
- }
-
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- if (orientation != this.wm.getDefaultDisplay().getOrientation()) {
- // orientation has changed => we need to check display width/height each time window moved
- initDisplayParams();
- }
-
- //Log.d(TAG, "Action: " + event.getAction());
-
- final float x1 = event.getRawX();
- final float y1 = event.getRawY();
-
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- Log.d(TAG, "0:" + toString(x0, y0) + ", 1: " + toString(x1, y1));
- x0 = x1;
- y0 = y1;
- return true;
-
- case MotionEvent.ACTION_MOVE:
- final long currentTime = System.currentTimeMillis();
-
- if ( currentTime - time >= TIME_EPS ) {
- time = currentTime;
- processMove(x1, y1);
- }
- return true;
- }
-
- return false;
- }
-
- private void initDisplayParams() {
- this.orientation = this.wm.getDefaultDisplay().getOrientation();
-
- final DisplayMetrics displayMetrics = new DisplayMetrics();
- wm.getDefaultDisplay().getMetrics(displayMetrics);
-
- this.displayWidth = displayMetrics.widthPixels;
- this.displayHeight = displayMetrics.heightPixels;
- }
-
- private void processMove(float x1, float y1) {
- final float Δx = x1 - x0;
- final float Δy = y1 - y0;
-
- final WindowManager.LayoutParams params = (WindowManager.LayoutParams) view.getLayoutParams();
- Log.d(TAG, "0:" + toString(x0, y0) + ", 1: " + toString(x1, y1) + ", Δ: " + toString(Δx, Δy) + ", params: " + toString(params.x, params.y));
-
- boolean xInBounds = isDistanceInBounds(Δx);
- boolean yInBounds = isDistanceInBounds(Δy);
- if (xInBounds || yInBounds) {
-
- if (xInBounds) {
- params.x = (int) (params.x + Δx);
- }
-
- if (yInBounds) {
- params.y = (int) (params.y + Δy);
- }
-
- params.x = Math.min(Math.max(params.x, 0), displayWidth - params.width);
- params.y = Math.min(Math.max(params.y, 0), displayHeight - params.height);
+ final View onscreenFoldButton = root.findViewById(R.id.onscreen_fold_button);
+ onscreenFoldButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (folded) {
+ unfold();
+ } else {
+ fold();
+ }
+ }
+ });
+
+ final View onscreenHideButton = root.findViewById(R.id.onscreen_minimize_button);
+ onscreenHideButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ minimize();
+ }
+ });
+
+ root.findViewById(R.id.onscreen_close_button).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ hide();
+ }
+ });
+
+ final ImageView onscreenTitleImageView = (ImageView) root.findViewById(R.id.onscreen_title);
+ onscreenTitleImageView.setOnTouchListener(new WindowDragTouchListener(wm, root));
+
+ initialized = true;
+ }
+
+ }
+
+ private void checkInit() {
+ if (!initialized) {
+ throw new IllegalStateException("init() must be called!");
+ }
+ }
+
+ public void show() {
+ if (hidden) {
+ init();
+ attach();
+
+ hidden = false;
+ }
+ }
+
+ public void attach() {
+ checkInit();
+
+ final WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
+ if (!attached) {
+ final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
+ state.getWidth(),
+ state.getHeight(),
+ state.getX(),
+ state.getY(),
+ WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
+ WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
+ PixelFormat.TRANSLUCENT);
+
+ params.gravity = Gravity.TOP | Gravity.LEFT;
+
+ wm.addView(root, params);
+ attached = true;
+ }
+ }
+
+ private void fold() {
+ if (!folded) {
+ int newHeight = header.getHeight();
+ content.setVisibility(View.GONE);
+ setHeight(newHeight);
+ folded = true;
+ }
+ }
+
+ private void unfold() {
+ if (folded) {
+ content.setVisibility(View.VISIBLE);
+ setHeight(state.getHeight());
+ folded = false;
+ }
+ }
+
+ public void detach() {
+ checkInit();
+
+ if (attached) {
+ getWindowManager().removeView(root);
+ attached = false;
+ }
+ }
+
+ public void minimize() {
+ checkInit();
+ if (!minimized) {
+ persistState(context, getCurrentState(!folded));
+
+ detach();
+
+ if (viewListener != null) {
+ viewListener.onViewMinimized();
+ }
+
+ minimized = true;
+ }
+ }
+
+ public static void persistState(@NotNull Context context, @NotNull CalculatorOnscreenViewState state) {
+ final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+ viewStatePreference.putPreference(preferences, state);
+ }
+
+ @Nullable
+ public static CalculatorOnscreenViewState readState(@NotNull Context context) {
+ final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+ if (viewStatePreference.isSet(preferences)) {
+ return viewStatePreference.getPreference(preferences);
+ } else {
+ return null;
+ }
+ }
+
+ public void hide() {
+ checkInit();
+
+ if (!hidden) {
+
+ persistState(context, getCurrentState(!folded));
+
+ detach();
+
+ if (viewListener != null) {
+ viewListener.onViewHidden();
+ }
+
+ hidden = true;
+ }
+ }
+
+ @NotNull
+ private WindowManager getWindowManager() {
+ return ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE));
+ }
+
+ @NotNull
+ public CalculatorOnscreenViewState getCurrentState(boolean useRealSize) {
+ final WindowManager.LayoutParams params = (WindowManager.LayoutParams) root.getLayoutParams();
+ if (useRealSize) {
+ return CalculatorOnscreenViewState.newInstance(params.width, params.height, params.x, params.y);
+ } else {
+ return CalculatorOnscreenViewState.newInstance(state.getWidth(), state.getHeight(), params.x, params.y);
+ }
+ }
+
+ /*
+ **********************************************************************
+ *
+ * STATIC
+ *
+ **********************************************************************
+ */
+
+ private static class WindowDragTouchListener implements View.OnTouchListener {
+
+ /*
+ **********************************************************************
+ *
+ * CONSTANTS
+ *
+ **********************************************************************
+ */
+
+ private static final float DIST_EPS = 0f;
+ private static final float DIST_MAX = 100000f;
+ private static final long TIME_EPS = 0L;
+
+ /*
+ **********************************************************************
+ *
+ * FIELDS
+ *
+ **********************************************************************
+ */
+
+ @NotNull
+ private final WindowManager wm;
+
+ private int orientation;
+
+ private float x0;
+
+ private float y0;
+
+ private long time = 0;
+
+ @NotNull
+ private final View view;
+
+ private int displayWidth;
+
+ private int displayHeight;
+
+ /*
+ **********************************************************************
+ *
+ * CONSTRUCTORS
+ *
+ **********************************************************************
+ */
+
+ public WindowDragTouchListener(@NotNull WindowManager wm,
+ @NotNull View view) {
+ this.wm = wm;
+ this.view = view;
+ initDisplayParams();
+ }
+
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ if (orientation != this.wm.getDefaultDisplay().getOrientation()) {
+ // orientation has changed => we need to check display width/height each time window moved
+ initDisplayParams();
+ }
+
+ //Log.d(TAG, "Action: " + event.getAction());
+
+ final float x1 = event.getRawX();
+ final float y1 = event.getRawY();
+
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ Log.d(TAG, "0:" + toString(x0, y0) + ", 1: " + toString(x1, y1));
+ x0 = x1;
+ y0 = y1;
+ return true;
+
+ case MotionEvent.ACTION_MOVE:
+ final long currentTime = System.currentTimeMillis();
+
+ if (currentTime - time >= TIME_EPS) {
+ time = currentTime;
+ processMove(x1, y1);
+ }
+ return true;
+ }
+
+ return false;
+ }
+
+ private void initDisplayParams() {
+ this.orientation = this.wm.getDefaultDisplay().getOrientation();
+
+ final DisplayMetrics displayMetrics = new DisplayMetrics();
+ wm.getDefaultDisplay().getMetrics(displayMetrics);
+
+ this.displayWidth = displayMetrics.widthPixels;
+ this.displayHeight = displayMetrics.heightPixels;
+ }
+
+ private void processMove(float x1, float y1) {
+ final float Δx = x1 - x0;
+ final float Δy = y1 - y0;
+
+ final WindowManager.LayoutParams params = (WindowManager.LayoutParams) view.getLayoutParams();
+ Log.d(TAG, "0:" + toString(x0, y0) + ", 1: " + toString(x1, y1) + ", Δ: " + toString(Δx, Δy) + ", params: " + toString(params.x, params.y));
+
+ boolean xInBounds = isDistanceInBounds(Δx);
+ boolean yInBounds = isDistanceInBounds(Δy);
+ if (xInBounds || yInBounds) {
+
+ if (xInBounds) {
+ params.x = (int) (params.x + Δx);
+ }
+
+ if (yInBounds) {
+ params.y = (int) (params.y + Δy);
+ }
+
+ params.x = Math.min(Math.max(params.x, 0), displayWidth - params.width);
+ params.y = Math.min(Math.max(params.y, 0), displayHeight - params.height);
- wm.updateViewLayout(view, params);
+ wm.updateViewLayout(view, params);
- if (xInBounds) {
- x0 = x1;
- }
+ if (xInBounds) {
+ x0 = x1;
+ }
- if (yInBounds) {
- y0 = y1;
- }
- }
- }
-
- private boolean isDistanceInBounds(float δx) {
- δx = Math.abs(δx);
- return δx >= DIST_EPS && δx < DIST_MAX;
- }
-
- @NotNull
- private static String toString(float x, float y) {
- return "(" + formatFloat(x) + ", " + formatFloat(y) + ")";
- }
-
- private static String formatFloat(float value) {
- if (value >= 0) {
- return "+" + String.format("%.2f", value);
- } else {
- return String.format("%.2f", value);
- }
- }
- }
+ if (yInBounds) {
+ y0 = y1;
+ }
+ }
+ }
+
+ private boolean isDistanceInBounds(float δx) {
+ δx = Math.abs(δx);
+ return δx >= DIST_EPS && δx < DIST_MAX;
+ }
+
+ @NotNull
+ private static String toString(float x, float y) {
+ return "(" + formatFloat(x) + ", " + formatFloat(y) + ")";
+ }
+
+ private static String formatFloat(float value) {
+ if (value >= 0) {
+ return "+" + String.format("%.2f", value);
+ } else {
+ return String.format("%.2f", value);
+ }
+ }
+ }
}
diff --git a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenViewState.java b/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenViewState.java
index 43d3aebd..103224d6 100644
--- a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenViewState.java
+++ b/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenViewState.java
@@ -20,147 +20,147 @@ import java.util.Map;
*/
public class CalculatorOnscreenViewState implements Parcelable {
- private static final String TAG = CalculatorOnscreenViewState.class.getSimpleName();
+ private static final String TAG = CalculatorOnscreenViewState.class.getSimpleName();
- public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
- public CalculatorOnscreenViewState createFromParcel(@NotNull Parcel in) {
- return CalculatorOnscreenViewState.fromParcel(in);
- }
+ public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
+ public CalculatorOnscreenViewState createFromParcel(@NotNull Parcel in) {
+ return CalculatorOnscreenViewState.fromParcel(in);
+ }
- public CalculatorOnscreenViewState[] newArray(int size) {
- return new CalculatorOnscreenViewState[size];
- }
- };
+ public CalculatorOnscreenViewState[] newArray(int size) {
+ return new CalculatorOnscreenViewState[size];
+ }
+ };
- private int width;
+ private int width;
- private int height;
+ private int height;
- private int x;
+ private int x;
- private int y;
+ private int y;
- private CalculatorOnscreenViewState() {
- }
+ private CalculatorOnscreenViewState() {
+ }
- @NotNull
- private static CalculatorOnscreenViewState fromParcel(@NotNull Parcel in) {
- final CalculatorOnscreenViewState result = new CalculatorOnscreenViewState();
- result.width = in.readInt();
- result.height = in.readInt();
- result.x = in.readInt();
- result.y = in.readInt();
- return result;
- }
+ @NotNull
+ private static CalculatorOnscreenViewState fromParcel(@NotNull Parcel in) {
+ final CalculatorOnscreenViewState result = new CalculatorOnscreenViewState();
+ result.width = in.readInt();
+ result.height = in.readInt();
+ result.x = in.readInt();
+ result.y = in.readInt();
+ return result;
+ }
- @NotNull
- public static CalculatorOnscreenViewState newDefaultState() {
- return newInstance(200, 400, 0, 0);
- }
+ @NotNull
+ public static CalculatorOnscreenViewState newDefaultState() {
+ return newInstance(200, 400, 0, 0);
+ }
- @NotNull
- public static CalculatorOnscreenViewState newInstance(int width, int height, int x, int y) {
- final CalculatorOnscreenViewState result = new CalculatorOnscreenViewState();
- result.width = width;
- result.height = height;
- result.x = x;
- result.y = y;
- return result;
- }
+ @NotNull
+ public static CalculatorOnscreenViewState newInstance(int width, int height, int x, int y) {
+ final CalculatorOnscreenViewState result = new CalculatorOnscreenViewState();
+ result.width = width;
+ result.height = height;
+ result.x = x;
+ result.y = y;
+ return result;
+ }
- public int getWidth() {
- return width;
- }
+ public int getWidth() {
+ return width;
+ }
- public void setWidth(int width) {
- this.width = width;
- }
+ public void setWidth(int width) {
+ this.width = width;
+ }
- public int getHeight() {
- return height;
- }
+ public int getHeight() {
+ return height;
+ }
- public void setHeight(int height) {
- this.height = height;
- }
+ public void setHeight(int height) {
+ this.height = height;
+ }
- public int getX() {
- return x;
- }
+ public int getX() {
+ return x;
+ }
- public void setX(int x) {
- this.x = x;
- }
+ public void setX(int x) {
+ this.x = x;
+ }
- public int getY() {
- return y;
- }
+ public int getY() {
+ return y;
+ }
- public void setY(int y) {
- this.y = y;
- }
+ public void setY(int y) {
+ this.y = y;
+ }
- @Override
- public int describeContents() {
- return 0;
- }
+ @Override
+ public int describeContents() {
+ return 0;
+ }
- @Override
- public void writeToParcel(@NotNull Parcel out, int flags) {
- out.writeInt(width);
- out.writeInt(height);
- out.writeInt(x);
- out.writeInt(y);
- }
+ @Override
+ public void writeToParcel(@NotNull Parcel out, int flags) {
+ out.writeInt(width);
+ out.writeInt(height);
+ out.writeInt(x);
+ out.writeInt(y);
+ }
- @Override
- public String toString() {
- return "CalculatorOnscreenViewState{" +
- "y=" + y +
- ", x=" + x +
- ", height=" + height +
- ", width=" + width +
- '}';
- }
+ @Override
+ public String toString() {
+ return "CalculatorOnscreenViewState{" +
+ "y=" + y +
+ ", x=" + x +
+ ", height=" + height +
+ ", width=" + width +
+ '}';
+ }
- public static class Preference extends AbstractPreference {
+ public static class Preference extends AbstractPreference {
- public Preference(@NotNull String key, @Nullable CalculatorOnscreenViewState defaultValue) {
- super(key, defaultValue);
- }
+ public Preference(@NotNull String key, @Nullable CalculatorOnscreenViewState defaultValue) {
+ super(key, defaultValue);
+ }
- @Nullable
- @Override
- protected CalculatorOnscreenViewState getPersistedValue(@NotNull SharedPreferences preferences) {
- try {
- final CalculatorOnscreenViewState result = new CalculatorOnscreenViewState();
- final JSONObject jsonObject = new JSONObject(preferences.getString(getKey(), "{}"));
- result.width = jsonObject.getInt("width");
- result.height = jsonObject.getInt("height");
- result.x = jsonObject.getInt("x");
- result.y = jsonObject.getInt("y");
+ @Nullable
+ @Override
+ protected CalculatorOnscreenViewState getPersistedValue(@NotNull SharedPreferences preferences) {
+ try {
+ final CalculatorOnscreenViewState result = new CalculatorOnscreenViewState();
+ final JSONObject jsonObject = new JSONObject(preferences.getString(getKey(), "{}"));
+ result.width = jsonObject.getInt("width");
+ result.height = jsonObject.getInt("height");
+ result.x = jsonObject.getInt("x");
+ result.y = jsonObject.getInt("y");
- Log.d(TAG, "Reading onscreen view state: " + result);
+ Log.d(TAG, "Reading onscreen view state: " + result);
- return result;
- } catch (JSONException e) {
- return getDefaultValue();
- }
- }
+ return result;
+ } catch (JSONException e) {
+ return getDefaultValue();
+ }
+ }
- @Override
- protected void putPersistedValue(@NotNull SharedPreferences.Editor editor, @NotNull CalculatorOnscreenViewState value) {
- final Map properties = new HashMap();
- properties.put("width", value.getWidth());
- properties.put("height", value.getHeight());
- properties.put("x", value.getX());
- properties.put("y", value.getY());
+ @Override
+ protected void putPersistedValue(@NotNull SharedPreferences.Editor editor, @NotNull CalculatorOnscreenViewState value) {
+ final Map properties = new HashMap();
+ properties.put("width", value.getWidth());
+ properties.put("height", value.getHeight());
+ properties.put("x", value.getX());
+ properties.put("y", value.getY());
- final JSONObject jsonObject = new JSONObject(properties);
+ final JSONObject jsonObject = new JSONObject(properties);
- final String json = jsonObject.toString();
- Log.d(TAG, "Persisting onscreen view state: " + json);
- editor.putString(getKey(), json);
- }
- }
+ final String json = jsonObject.toString();
+ Log.d(TAG, "Persisting onscreen view state: " + json);
+ editor.putString(getKey(), json);
+ }
+ }
}
diff --git a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/OnscreenViewListener.java b/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/OnscreenViewListener.java
index d5d9bc17..00b5143d 100644
--- a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/OnscreenViewListener.java
+++ b/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/OnscreenViewListener.java
@@ -7,9 +7,9 @@ package org.solovyev.android.calculator.onscreen;
*/
public interface OnscreenViewListener {
- // view minimized == view is in the action bar
- void onViewMinimized();
+ // view minimized == view is in the action bar
+ void onViewMinimized();
- // view hidden == view closed
- void onViewHidden();
+ // view hidden == view closed
+ void onViewHidden();
}
diff --git a/android-app-test/pom.xml b/android-app-test/pom.xml
index 53888fbf..5278f140 100644
--- a/android-app-test/pom.xml
+++ b/android-app-test/pom.xml
@@ -1,18 +1,17 @@
-
- org.solovyev.android
- calculatorpp-parent
- 1.6.3-SNAPSHOT
-
+
+ org.solovyev.android
+ calculatorpp-parent
+ 1.6.3-SNAPSHOT
+
- 4.0.0
-
- org.solovyev.android
- calculatorpp-android-app-test
- Calculator++ Application (Test)
+ 4.0.0
+ org.solovyev.android
+ calculatorpp-android-app-test
+ Calculator++ Application (Test)
\ No newline at end of file
diff --git a/android-app-widget/AndroidManifest.xml b/android-app-widget/AndroidManifest.xml
index 25df81f1..49f99a51 100644
--- a/android-app-widget/AndroidManifest.xml
+++ b/android-app-widget/AndroidManifest.xml
@@ -1,6 +1,5 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/android-app-widget/pom.xml b/android-app-widget/pom.xml
index 31188553..daf6f799 100644
--- a/android-app-widget/pom.xml
+++ b/android-app-widget/pom.xml
@@ -1,16 +1,16 @@
- 4.0.0
+ 4.0.0
-
- org.solovyev.android
- calculatorpp-parent
- 1.6.3-SNAPSHOT
-
+
+ org.solovyev.android
+ calculatorpp-parent
+ 1.6.3-SNAPSHOT
+
- org.solovyev.android
- calculatorpp-android-app-widget
- 1.6.3-SNAPSHOT
+ org.solovyev.android
+ calculatorpp-android-app-widget
+ 1.6.3-SNAPSHOTCalculator++ Application Widgetapklib
@@ -27,16 +27,16 @@
apklib
-
- com.google.android
- android
- provided
-
+
+ com.google.android
+ android
+ provided
+
-
- com.google.android
- support-v4
-
+
+ com.google.android
+ support-v4
+
@@ -50,5 +50,5 @@
-
+
\ No newline at end of file
diff --git a/android-app-widget/res/layout/widget_display.xml b/android-app-widget/res/layout/widget_display.xml
index 2824442d..8c4fbc7a 100644
--- a/android-app-widget/res/layout/widget_display.xml
+++ b/android-app-widget/res/layout/widget_display.xml
@@ -6,11 +6,10 @@
~ or visit http://se.solovyev.org
-->
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/android-app-widget/res/layout/widget_editor.xml b/android-app-widget/res/layout/widget_editor.xml
index 3adfdeb6..9b0094c3 100644
--- a/android-app-widget/res/layout/widget_editor.xml
+++ b/android-app-widget/res/layout/widget_editor.xml
@@ -7,18 +7,18 @@
-->
+ a:id="@+id/main_fragment_layout"
+ style="@style/cpp_default_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_height="match_parent"
+ a:padding="@dimen/cpp_editor_padding">
-
+
\ No newline at end of file
diff --git a/android-app-widget/res/layout/widget_layout.xml b/android-app-widget/res/layout/widget_layout.xml
index e3c782c3..0eb7b2a1 100644
--- a/android-app-widget/res/layout/widget_layout.xml
+++ b/android-app-widget/res/layout/widget_layout.xml
@@ -1,36 +1,41 @@
+ a:layout_width="match_parent"
+ a:layout_height="match_parent"
+ a:orientation="vertical"
+ style="@style/cpp_widget_main_layout_style">
-
+
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app-widget/res/values/colors.xml b/android-app-widget/res/values/colors.xml
index 89429bd7..75232d5d 100644
--- a/android-app-widget/res/values/colors.xml
+++ b/android-app-widget/res/values/colors.xml
@@ -1,4 +1,4 @@
- #ff707070
+ #ff707070
\ No newline at end of file
diff --git a/android-app-widget/res/values/dimens.xml b/android-app-widget/res/values/dimens.xml
index 3915feed..77ae2926 100644
--- a/android-app-widget/res/values/dimens.xml
+++ b/android-app-widget/res/values/dimens.xml
@@ -1,6 +1,6 @@
- 25sp
- 25sp
- 6dp
+ 25sp
+ 25sp
+ 6dp
\ No newline at end of file
diff --git a/android-app-widget/res/values/styles.xml b/android-app-widget/res/values/styles.xml
index 95b2a8f0..7e75b3e0 100644
--- a/android-app-widget/res/values/styles.xml
+++ b/android-app-widget/res/values/styles.xml
@@ -1,17 +1,17 @@
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app-widget/src/main/java/org/solovyev/android/calculator/widget/AbstractCalculatorWidgetProvider.java b/android-app-widget/src/main/java/org/solovyev/android/calculator/widget/AbstractCalculatorWidgetProvider.java
index 9412c797..8172e9b5 100644
--- a/android-app-widget/src/main/java/org/solovyev/android/calculator/widget/AbstractCalculatorWidgetProvider.java
+++ b/android-app-widget/src/main/java/org/solovyev/android/calculator/widget/AbstractCalculatorWidgetProvider.java
@@ -21,140 +21,140 @@ import org.solovyev.android.calculator.external.ExternalCalculatorStateUpdater;
*/
abstract class AbstractCalculatorWidgetProvider extends AppWidgetProvider implements ExternalCalculatorStateUpdater {
- static final String BUTTON_ID_EXTRA = "buttonId";
- static final String BUTTON_PRESSED_ACTION = "org.solovyev.android.calculator.widget.BUTTON_PRESSED";
+ static final String BUTTON_ID_EXTRA = "buttonId";
+ static final String BUTTON_PRESSED_ACTION = "org.solovyev.android.calculator.widget.BUTTON_PRESSED";
- private static final String TAG = "Calculator++ Widget";
+ private static final String TAG = "Calculator++ Widget";
- /*
- **********************************************************************
- *
- * FIELDS
- *
- **********************************************************************
- */
+ /*
+ **********************************************************************
+ *
+ * FIELDS
+ *
+ **********************************************************************
+ */
- @Nullable
- private String cursorColor;
+ @Nullable
+ private String cursorColor;
- @NotNull
- private ExternalCalculatorIntentHandler intentHandler = new CalculatorWidgetIntentHandler(this);
+ @NotNull
+ private ExternalCalculatorIntentHandler intentHandler = new CalculatorWidgetIntentHandler(this);
- /*
- **********************************************************************
- *
- * CONSTRUCTORS
- *
- **********************************************************************
- */
+ /*
+ **********************************************************************
+ *
+ * CONSTRUCTORS
+ *
+ **********************************************************************
+ */
- protected AbstractCalculatorWidgetProvider() {
- final Class extends AppWidgetProvider> componentClass = this.getComponentClass();
+ protected AbstractCalculatorWidgetProvider() {
+ final Class extends AppWidgetProvider> componentClass = this.getComponentClass();
- Locator.getInstance().getExternalListenersContainer().addExternalListener(componentClass);
- }
+ Locator.getInstance().getExternalListenersContainer().addExternalListener(componentClass);
+ }
- /*
- **********************************************************************
- *
- * METHODS
- *
- **********************************************************************
- */
+ /*
+ **********************************************************************
+ *
+ * METHODS
+ *
+ **********************************************************************
+ */
- @Override
- public void onEnabled(Context context) {
- super.onEnabled(context);
+ @Override
+ public void onEnabled(Context context) {
+ super.onEnabled(context);
- getCursorColor(context);
- }
+ getCursorColor(context);
+ }
- @NotNull
- private String getCursorColor(@NotNull Context context) {
- if (cursorColor == null) {
- cursorColor = Integer.toHexString(context.getResources().getColor(R.color.cpp_widget_cursor_color)).substring(2);
- }
- return cursorColor;
- }
+ @NotNull
+ private String getCursorColor(@NotNull Context context) {
+ if (cursorColor == null) {
+ cursorColor = Integer.toHexString(context.getResources().getColor(R.color.cpp_widget_cursor_color)).substring(2);
+ }
+ return cursorColor;
+ }
- @Override
- public void onUpdate(@NotNull Context context,
- @NotNull AppWidgetManager appWidgetManager,
- @NotNull int[] appWidgetIds) {
- super.onUpdate(context, appWidgetManager, appWidgetIds);
+ @Override
+ public void onUpdate(@NotNull Context context,
+ @NotNull AppWidgetManager appWidgetManager,
+ @NotNull int[] appWidgetIds) {
+ super.onUpdate(context, appWidgetManager, appWidgetIds);
- updateWidget(context, appWidgetManager, appWidgetIds, Locator.getInstance().getEditor().getViewState(), Locator.getInstance().getDisplay().getViewState());
- }
+ updateWidget(context, appWidgetManager, appWidgetIds, Locator.getInstance().getEditor().getViewState(), Locator.getInstance().getDisplay().getViewState());
+ }
- @Override
- public void updateState(@NotNull Context context,
- @NotNull CalculatorEditorViewState editorState,
- @NotNull CalculatorDisplayViewState displayState) {
- final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
- final int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, getComponentClass()));
- updateWidget(context, appWidgetManager, appWidgetIds, editorState, displayState);
- }
+ @Override
+ public void updateState(@NotNull Context context,
+ @NotNull CalculatorEditorViewState editorState,
+ @NotNull CalculatorDisplayViewState displayState) {
+ final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
+ final int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, getComponentClass()));
+ updateWidget(context, appWidgetManager, appWidgetIds, editorState, displayState);
+ }
- @NotNull
- protected Class extends AbstractCalculatorWidgetProvider> getComponentClass(){
- return this.getClass();
- }
+ @NotNull
+ protected Class extends AbstractCalculatorWidgetProvider> getComponentClass() {
+ return this.getClass();
+ }
- private void updateWidget(@NotNull Context context,
- @NotNull AppWidgetManager appWidgetManager,
- @NotNull int[] appWidgetIds,
- @NotNull CalculatorEditorViewState editorState,
- @NotNull CalculatorDisplayViewState displayState) {
- for (int appWidgetId : appWidgetIds) {
- final RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
+ private void updateWidget(@NotNull Context context,
+ @NotNull AppWidgetManager appWidgetManager,
+ @NotNull int[] appWidgetIds,
+ @NotNull CalculatorEditorViewState editorState,
+ @NotNull CalculatorDisplayViewState displayState) {
+ for (int appWidgetId : appWidgetIds) {
+ final RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
- for (CalculatorButton button : CalculatorButton.values()) {
- final Intent onButtonClickIntent = new Intent(context, getComponentClass());
- onButtonClickIntent.setAction(BUTTON_PRESSED_ACTION);
- onButtonClickIntent.putExtra(BUTTON_ID_EXTRA, button.getButtonId());
- final PendingIntent pendingIntent = PendingIntent.getBroadcast(context, button.getButtonId(), onButtonClickIntent, PendingIntent.FLAG_UPDATE_CURRENT);
- if (pendingIntent != null) {
- views.setOnClickPendingIntent(button.getButtonId(), pendingIntent);
- }
- }
+ for (CalculatorButton button : CalculatorButton.values()) {
+ final Intent onButtonClickIntent = new Intent(context, getComponentClass());
+ onButtonClickIntent.setAction(BUTTON_PRESSED_ACTION);
+ onButtonClickIntent.putExtra(BUTTON_ID_EXTRA, button.getButtonId());
+ final PendingIntent pendingIntent = PendingIntent.getBroadcast(context, button.getButtonId(), onButtonClickIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+ if (pendingIntent != null) {
+ views.setOnClickPendingIntent(button.getButtonId(), pendingIntent);
+ }
+ }
- updateEditorState(context, views, editorState);
- updateDisplayState(context, views, displayState);
+ updateEditorState(context, views, editorState);
+ updateDisplayState(context, views, displayState);
- CalculatorButtons.initMultiplicationButton(views);
+ CalculatorButtons.initMultiplicationButton(views);
- appWidgetManager.updateAppWidget(appWidgetId, views);
- }
- }
+ appWidgetManager.updateAppWidget(appWidgetId, views);
+ }
+ }
- @Override
- public void onReceive(Context context, Intent intent) {
- super.onReceive(context, intent);
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ super.onReceive(context, intent);
- this.intentHandler.onIntent(context, intent);
- }
+ this.intentHandler.onIntent(context, intent);
+ }
- private void updateDisplayState(@NotNull Context context, @NotNull RemoteViews views, @NotNull CalculatorDisplayViewState displayState) {
- if (displayState.isValid()) {
- views.setTextViewText(R.id.calculator_display, displayState.getText());
- views.setTextColor(R.id.calculator_display, context.getResources().getColor(R.color.cpp_default_text_color));
- } else {
- views.setTextColor(R.id.calculator_display, context.getResources().getColor(R.color.cpp_display_error_text_color));
- }
- }
+ private void updateDisplayState(@NotNull Context context, @NotNull RemoteViews views, @NotNull CalculatorDisplayViewState displayState) {
+ if (displayState.isValid()) {
+ views.setTextViewText(R.id.calculator_display, displayState.getText());
+ views.setTextColor(R.id.calculator_display, context.getResources().getColor(R.color.cpp_default_text_color));
+ } else {
+ views.setTextColor(R.id.calculator_display, context.getResources().getColor(R.color.cpp_display_error_text_color));
+ }
+ }
- private void updateEditorState(@NotNull Context context, @NotNull RemoteViews views, @NotNull CalculatorEditorViewState editorState) {
- String text = editorState.getText();
+ private void updateEditorState(@NotNull Context context, @NotNull RemoteViews views, @NotNull CalculatorEditorViewState editorState) {
+ String text = editorState.getText();
- CharSequence newText = text;
- int selection = editorState.getSelection();
- if (selection >= 0 && selection <= text.length()) {
- // inject cursor
- newText = Html.fromHtml(text.substring(0, selection) + "|" + text.substring(selection));
- }
- Locator.getInstance().getNotifier().showDebugMessage(TAG, "New editor state: " + text);
- views.setTextViewText(R.id.calculator_editor, newText);
- }
+ CharSequence newText = text;
+ int selection = editorState.getSelection();
+ if (selection >= 0 && selection <= text.length()) {
+ // inject cursor
+ newText = Html.fromHtml(text.substring(0, selection) + "|" + text.substring(selection));
+ }
+ Locator.getInstance().getNotifier().showDebugMessage(TAG, "New editor state: " + text);
+ views.setTextViewText(R.id.calculator_editor, newText);
+ }
}
diff --git a/android-app-widget/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetIntentHandler.java b/android-app-widget/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetIntentHandler.java
index a1a6095d..9508f642 100644
--- a/android-app-widget/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetIntentHandler.java
+++ b/android-app-widget/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetIntentHandler.java
@@ -15,24 +15,24 @@ import org.solovyev.android.calculator.external.ExternalCalculatorStateUpdater;
*/
public class CalculatorWidgetIntentHandler extends DefaultExternalCalculatorIntentHandler {
- public CalculatorWidgetIntentHandler(@NotNull ExternalCalculatorStateUpdater stateUpdater) {
- super(stateUpdater);
- }
+ public CalculatorWidgetIntentHandler(@NotNull ExternalCalculatorStateUpdater stateUpdater) {
+ super(stateUpdater);
+ }
- @Override
- public void onIntent(@NotNull Context context, @NotNull Intent intent) {
- super.onIntent(context, intent);
+ @Override
+ public void onIntent(@NotNull Context context, @NotNull Intent intent) {
+ super.onIntent(context, intent);
- if (AbstractCalculatorWidgetProvider.BUTTON_PRESSED_ACTION.equals(intent.getAction())) {
- final int buttonId = intent.getIntExtra(AbstractCalculatorWidgetProvider.BUTTON_ID_EXTRA, 0);
+ if (AbstractCalculatorWidgetProvider.BUTTON_PRESSED_ACTION.equals(intent.getAction())) {
+ final int buttonId = intent.getIntExtra(AbstractCalculatorWidgetProvider.BUTTON_ID_EXTRA, 0);
- final CalculatorButton button = CalculatorButton.getById(buttonId);
- if (button != null) {
- button.onClick(context);
- }
- } else if (Intent.ACTION_CONFIGURATION_CHANGED.equals(intent.getAction())) {
- updateState(context, Locator.getInstance().getEditor().getViewState(), Locator.getInstance().getDisplay().getViewState());
- }
- }
+ final CalculatorButton button = CalculatorButton.getById(buttonId);
+ if (button != null) {
+ button.onClick(context);
+ }
+ } else if (Intent.ACTION_CONFIGURATION_CHANGED.equals(intent.getAction())) {
+ updateState(context, Locator.getInstance().getEditor().getViewState(), Locator.getInstance().getDisplay().getViewState());
+ }
+ }
}
diff --git a/android-app/AndroidManifest.xml b/android-app/AndroidManifest.xml
index aa2e97a3..46e3c58d 100644
--- a/android-app/AndroidManifest.xml
+++ b/android-app/AndroidManifest.xml
@@ -1,176 +1,277 @@
-
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
+
+
-
+
-
+
-
-
-
-
-
-
-
+
-
-
+
-
+
-
-
-
-
-
-
-
+
-
-
+
-
+
+
+
+
-
-
-
-
-
-
-
+
-
-
+
-
+
+
-
-
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
+
-
+
-
-
-
-
-
-
-
-
+
+
+
+
-
+
-
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app/pom.xml b/android-app/pom.xml
index e50157ac..acc0b41e 100644
--- a/android-app/pom.xml
+++ b/android-app/pom.xml
@@ -1,27 +1,27 @@
-
- org.solovyev.android
- calculatorpp-parent
- 1.6.3-SNAPSHOT
-
+
+ org.solovyev.android
+ calculatorpp-parent
+ 1.6.3-SNAPSHOT
+
- 4.0.0
+ 4.0.0
- org.solovyev.android
- calculatorpp-android-app
- apk
- Calculator++ Application
+ org.solovyev.android
+ calculatorpp-android-app
+ apk
+ Calculator++ Application
-
+
-
+
-
- org.solovyev.android
- calculatorpp-core
-
+
+ org.solovyev.android
+ calculatorpp-core
+ org.solovyev.android
@@ -35,263 +35,270 @@
apklib
-
- org.solovyev.android
- calculatorpp-android-app-onscreen
- apklib
-
+
+ org.solovyev.android
+ calculatorpp-android-app-onscreen
+ apklib
+
-
- org.solovyev
- common-core
-
+
+ org.solovyev
+ common-core
+
-
- org.solovyev
- common-text
-
+
+ org.solovyev
+ common-text
+
-
- org.solovyev.android
- android-common-all
- apklib
-
+
+ org.solovyev.android
+ android-common-all
+ apklib
+
-
- org.solovyev
- jscl
-
+
+ org.solovyev
+ jscl
+
-
-
- ch.acra
- acra
- 4.3.0
-
+
+
+ ch.acra
+ acra
+ 4.3.0
+
-
- com.google.android
- android
- provided
-
+
+ com.google.android
+ android
+ provided
+
-
- com.google.android
- support-v4
-
+
+ com.google.android
+ support-v4
+
-
- com.actionbarsherlock
- library
- apklib
-
+
+ com.actionbarsherlock
+ library
+ apklib
+
-
- net.sf.opencsv
- opencsv
- 2.0
- test
-
+
+ net.sf.opencsv
+ opencsv
+ 2.0
+ test
+
-
- org.mockito
- mockito-core
- 1.9.0
- test
-
+
+ org.mockito
+ mockito-core
+ 1.9.0
+ test
+
-
- org.simpleframework
- simple-xml
-
+
+ org.simpleframework
+ simple-xml
+
-
- admob
- admob
- 6.1.0
-
+
+ admob
+ admob
+ 6.1.0
+
-
- com.google.guava
- guava
-
+
+ com.google.guava
+ guava
+
-
- junit
- junit
- test
-
+
+ junit
+ junit
+ test
+
-
- com.intellij
- annotations
-
+
+ com.intellij
+ annotations
+
-
- com.pivotallabs
- robolectric
- 1.1
- test
-
+
+ com.pivotallabs
+ robolectric
+ 1.1
+ test
+
-
+
-
+
-
+
-
- com.jayway.maven.plugins.android.generation2
- android-maven-plugin
- true
-
-
- true
-
-
-
-
- manifestUpdate
- process-resources
-
- manifest-update
-
-
-
- alignApk
- package
-
- zipalign
-
-
-
-
+
+ com.jayway.maven.plugins.android.generation2
+ android-maven-plugin
+ true
+
+
+ true
+
+
+
+
+ manifestUpdate
+ process-resources
+
+ manifest-update
+
+
+
+ alignApk
+ package
+
+ zipalign
+
+
+
+
-
+
-
+
-
+
-
- release
-
-
-
- performRelease
- true
-
-
+
+ release
+
+
+
+ performRelease
+ true
+
+
-
-
+
+
-
- org.apache.maven.plugins
- maven-jarsigner-plugin
-
-
- signing
-
- sign
- verify
-
- package
- true
+
+ org.apache.maven.plugins
+ maven-jarsigner-plugin
+
+
+ signing
+
+ sign
+ verify
+
+ package
+ true
-
- true
-
- ${project.build.directory}/${project.artifactId}-${project.version}.apk
-
- true
-
+
+ true
+
+
+ ${project.build.directory}/${project.artifactId}-${project.version}.apk
+
+
+ true
+
-
-
-
+
+
+
-
-
- com.jayway.maven.plugins.android.generation2
- android-maven-plugin
- true
-
+
+
+ com.jayway.maven.plugins.android.generation2
+ android-maven-plugin
+ true
+
-
- false
-
+
+ false
+
-
- false
- true
- ${project.build.directory}/${project.artifactId}-${project.version}.apk
- ${project.build.directory}/${project.artifactId}-${project.version}-signed-aligned.apk
-
+
+ false
+ true
+ ${project.build.directory}/${project.artifactId}-${project.version}.apk
+
+
+ ${project.build.directory}/${project.artifactId}-${project.version}-signed-aligned.apk
+
+
-
- false
- true
-
+
+ false
+ true
+
-
- false
-
-
+
+ false
+
+
-
-
- manifestUpdate
- process-resources
-
- manifest-update
-
-
-
- alignApk
- package
-
- zipalign
-
-
-
-
+
+
+ manifestUpdate
+ process-resources
+
+ manifest-update
+
+
+
+ alignApk
+ package
+
+ zipalign
+
+
+
+
-
- org.codehaus.mojo
- build-helper-maven-plugin
-
-
-
- ${project.build.directory}/${project.artifactId}-${project.version}-signed-aligned.apk
- apk
- signed-aligned
-
-
- ${project.build.directory}/proguard/mapping.txt
- map
- release
-
-
-
-
-
- attach-signed-aligned
- package
-
- attach-artifact
-
-
-
-
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+
+
+
+
+ ${project.build.directory}/${project.artifactId}-${project.version}-signed-aligned.apk
+
+ apk
+ signed-aligned
+
+
+ ${project.build.directory}/proguard/mapping.txt
+ map
+ release
+
+
+
+
+
+ attach-signed-aligned
+ package
+
+ attach-artifact
+
+
+
+
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/android-app/proguard.cfg b/android-app/proguard.cfg
index ab03160b..d79b3051 100644
--- a/android-app/proguard.cfg
+++ b/android-app/proguard.cfg
@@ -47,7 +47,7 @@
}
-keep @org.simpleframework.xml.Root public class * {
- *;
+ *;
}
-dontwarn javax.xml.stream.**
@@ -113,11 +113,11 @@
# keep this class so that logging will show 'ACRA' and not a obfuscated name like 'a'.
# Note: if you are removing log messages elsewhere in this file then this isn't necessary
-keep class org.acra.ACRA {
- *;
+ *;
}
-keep class org.acra.ReportField {
- *;
+ *;
}
diff --git a/android-app/res/layout-land/cpp_app_keyboard.xml b/android-app/res/layout-land/cpp_app_keyboard.xml
index 123ad649..0de4c393 100644
--- a/android-app/res/layout-land/cpp_app_keyboard.xml
+++ b/android-app/res/layout-land/cpp_app_keyboard.xml
@@ -1,53 +1,77 @@
+ a:layout_width="match_parent"
+ a:layout_height="match_parent"
+ a:orientation="vertical">
-
+
-
-
-
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app/res/layout-land/cpp_app_keyboard_mobile.xml b/android-app/res/layout-land/cpp_app_keyboard_mobile.xml
index 7d837f30..27fd356a 100644
--- a/android-app/res/layout-land/cpp_app_keyboard_mobile.xml
+++ b/android-app/res/layout-land/cpp_app_keyboard_mobile.xml
@@ -1,53 +1,77 @@
+ a:layout_width="match_parent"
+ a:layout_height="match_parent"
+ a:orientation="vertical">
-
+
-
-
-
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app/res/layout-land/main_calculator.xml b/android-app/res/layout-land/main_calculator.xml
index 576a4df7..df436cb4 100644
--- a/android-app/res/layout-land/main_calculator.xml
+++ b/android-app/res/layout-land/main_calculator.xml
@@ -5,12 +5,11 @@
~ For more information, please, contact se.solovyev@gmail.com
~ or visit http://se.solovyev.org
-->
-
+
-
+
diff --git a/android-app/res/layout-land/main_calculator_mobile.xml b/android-app/res/layout-land/main_calculator_mobile.xml
index b82b9f61..5425f95f 100644
--- a/android-app/res/layout-land/main_calculator_mobile.xml
+++ b/android-app/res/layout-land/main_calculator_mobile.xml
@@ -5,12 +5,11 @@
~ For more information, please, contact se.solovyev@gmail.com
~ or visit http://se.solovyev.org
-->
-
+
-
+
diff --git a/android-app/res/layout-land/main_first_pane.xml b/android-app/res/layout-land/main_first_pane.xml
index c64ec051..110322e3 100644
--- a/android-app/res/layout-land/main_first_pane.xml
+++ b/android-app/res/layout-land/main_first_pane.xml
@@ -5,58 +5,65 @@
~ For more information, please, contact se.solovyev@gmail.com
~ or visit http://se.solovyev.org
-->
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/android-app/res/layout-land/main_first_pane_mobile.xml b/android-app/res/layout-land/main_first_pane_mobile.xml
index 2329187d..292df005 100644
--- a/android-app/res/layout-land/main_first_pane_mobile.xml
+++ b/android-app/res/layout-land/main_first_pane_mobile.xml
@@ -5,58 +5,65 @@
~ For more information, please, contact se.solovyev@gmail.com
~ or visit http://se.solovyev.org
-->
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/android-app/res/layout-large-land/cpp_app_keyboard.xml b/android-app/res/layout-large-land/cpp_app_keyboard.xml
index bd9d69db..1d7696e5 100644
--- a/android-app/res/layout-large-land/cpp_app_keyboard.xml
+++ b/android-app/res/layout-large-land/cpp_app_keyboard.xml
@@ -1,60 +1,90 @@
+ a:layout_width="match_parent"
+ a:layout_height="match_parent"
+ a:orientation="vertical">
-
+
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app/res/layout-large-land/main_calculator.xml b/android-app/res/layout-large-land/main_calculator.xml
index 72466751..a64416f2 100644
--- a/android-app/res/layout-large-land/main_calculator.xml
+++ b/android-app/res/layout-large-land/main_calculator.xml
@@ -5,53 +5,56 @@
~ For more information, please, contact se.solovyev@gmail.com
~ or visit http://se.solovyev.org
-->
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/android-app/res/layout-large/cpp_app_display.xml b/android-app/res/layout-large/cpp_app_display.xml
index 48c937a9..1972a194 100644
--- a/android-app/res/layout-large/cpp_app_display.xml
+++ b/android-app/res/layout-large/cpp_app_display.xml
@@ -7,22 +7,23 @@
-->
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_height="match_parent">
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/layout-large/cpp_app_editor.xml b/android-app/res/layout-large/cpp_app_editor.xml
index a5c40786..42895176 100644
--- a/android-app/res/layout-large/cpp_app_editor.xml
+++ b/android-app/res/layout-large/cpp_app_editor.xml
@@ -7,22 +7,23 @@
-->
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_height="match_parent">
-
+
+ a:id="@+id/calculator_editor"
+ style="@style/cpp_editor_style"
+ a:textIsSelectable="true"
+ a:singleLine="false"
+ a:scrollbars="vertical"
+ a:hint="@string/c_calc_editor_hint" />
\ No newline at end of file
diff --git a/android-app/res/layout-large/cpp_app_keyboard.xml b/android-app/res/layout-large/cpp_app_keyboard.xml
index a8a4af52..ac1d02c4 100644
--- a/android-app/res/layout-large/cpp_app_keyboard.xml
+++ b/android-app/res/layout-large/cpp_app_keyboard.xml
@@ -1,64 +1,92 @@
+ a:layout_width="match_parent"
+ a:layout_height="match_parent"
+ a:orientation="vertical">
-
+
-
-
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app/res/layout-large/main_calculator.xml b/android-app/res/layout-large/main_calculator.xml
index a83c88b5..12fcb52e 100644
--- a/android-app/res/layout-large/main_calculator.xml
+++ b/android-app/res/layout-large/main_calculator.xml
@@ -5,53 +5,56 @@
~ For more information, please, contact se.solovyev@gmail.com
~ or visit http://se.solovyev.org
-->
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/android-app/res/layout-xlarge-land/cpp_app_keyboard.xml b/android-app/res/layout-xlarge-land/cpp_app_keyboard.xml
index 205f6901..358006f5 100644
--- a/android-app/res/layout-xlarge-land/cpp_app_keyboard.xml
+++ b/android-app/res/layout-xlarge-land/cpp_app_keyboard.xml
@@ -1,51 +1,79 @@
+ a:layout_width="match_parent"
+ a:layout_height="match_parent"
+ a:orientation="vertical">
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app/res/layout-xlarge-land/main_calculator.xml b/android-app/res/layout-xlarge-land/main_calculator.xml
index debd4163..1abc2d08 100644
--- a/android-app/res/layout-xlarge-land/main_calculator.xml
+++ b/android-app/res/layout-xlarge-land/main_calculator.xml
@@ -5,53 +5,56 @@
~ For more information, please, contact se.solovyev@gmail.com
~ or visit http://se.solovyev.org
-->
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/android-app/res/layout-xlarge/cpp_app_display.xml b/android-app/res/layout-xlarge/cpp_app_display.xml
index 48c937a9..1972a194 100644
--- a/android-app/res/layout-xlarge/cpp_app_display.xml
+++ b/android-app/res/layout-xlarge/cpp_app_display.xml
@@ -7,22 +7,23 @@
-->
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_height="match_parent">
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/layout-xlarge/cpp_app_editor.xml b/android-app/res/layout-xlarge/cpp_app_editor.xml
index a5c40786..42895176 100644
--- a/android-app/res/layout-xlarge/cpp_app_editor.xml
+++ b/android-app/res/layout-xlarge/cpp_app_editor.xml
@@ -7,22 +7,23 @@
-->
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_height="match_parent">
-
+
+ a:id="@+id/calculator_editor"
+ style="@style/cpp_editor_style"
+ a:textIsSelectable="true"
+ a:singleLine="false"
+ a:scrollbars="vertical"
+ a:hint="@string/c_calc_editor_hint" />
\ No newline at end of file
diff --git a/android-app/res/layout-xlarge/cpp_app_keyboard.xml b/android-app/res/layout-xlarge/cpp_app_keyboard.xml
index 31262c45..a31f7f8b 100644
--- a/android-app/res/layout-xlarge/cpp_app_keyboard.xml
+++ b/android-app/res/layout-xlarge/cpp_app_keyboard.xml
@@ -1,68 +1,100 @@
+ a:layout_width="match_parent"
+ a:layout_height="match_parent"
+ a:orientation="vertical">
-
+
-
-
-
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app/res/layout-xlarge/main_calculator.xml b/android-app/res/layout-xlarge/main_calculator.xml
index 47e03f4f..5813c62a 100644
--- a/android-app/res/layout-xlarge/main_calculator.xml
+++ b/android-app/res/layout-xlarge/main_calculator.xml
@@ -5,53 +5,56 @@
~ For more information, please, contact se.solovyev@gmail.com
~ or visit http://se.solovyev.org
-->
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/android-app/res/layout/about_fragment.xml b/android-app/res/layout/about_fragment.xml
index 1f90b2c7..6e4ce686 100644
--- a/android-app/res/layout/about_fragment.xml
+++ b/android-app/res/layout/about_fragment.xml
@@ -7,27 +7,28 @@
-->
+ a:orientation="vertical"
+ a:layout_width="fill_parent"
+ a:layout_height="fill_parent"
+ a:background="#ff000000">
-
+
+ a:id="@+id/aboutTextView"
+ a:text="@string/c_about_content"
+ a:layout_height="fill_parent"
+ a:layout_width="fill_parent"
+ a:layout_gravity="top|center_horizontal"
+ a:layout_weight="1"
+ a:scrollbars="vertical"
+ style="@style/cpp_about_style" />
+ a:id="@+id/plot_view_container"
+ a:orientation="vertical"
+ a:layout_width="fill_parent"
+ a:layout_height="fill_parent">
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_app_button_copy.xml b/android-app/res/layout/cpp_app_button_copy.xml
index 62132a7d..607b3188 100644
--- a/android-app/res/layout/cpp_app_button_copy.xml
+++ b/android-app/res/layout/cpp_app_button_copy.xml
@@ -7,7 +7,7 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_copy"
+ a:src="@drawable/kb_copy"
+ style="?cpp_control_image_button_style"
+ a:onClick="copyButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_app_button_donate.xml b/android-app/res/layout/cpp_app_button_donate.xml
index b55b7e6e..c9992339 100644
--- a/android-app/res/layout/cpp_app_button_donate.xml
+++ b/android-app/res/layout/cpp_app_button_donate.xml
@@ -7,7 +7,7 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_like"
+ a:src="@drawable/kb_facebook"
+ style="?cpp_control_image_button_style"
+ a:onClick="likeButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_app_button_erase.xml b/android-app/res/layout/cpp_app_button_erase.xml
index f0ce3c6e..5e242277 100644
--- a/android-app/res/layout/cpp_app_button_erase.xml
+++ b/android-app/res/layout/cpp_app_button_erase.xml
@@ -7,7 +7,7 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_erase"
+ a:src="@drawable/kb_delete"
+ style="?cpp_control_image_button_style"
+ a:onClick="eraseButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_app_button_paste.xml b/android-app/res/layout/cpp_app_button_paste.xml
index 035740c6..e80a089a 100644
--- a/android-app/res/layout/cpp_app_button_paste.xml
+++ b/android-app/res/layout/cpp_app_button_paste.xml
@@ -7,7 +7,7 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_paste"
+ a:src="@drawable/kb_paste"
+ style="?cpp_control_image_button_style"
+ a:onClick="pasteButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_app_display.xml b/android-app/res/layout/cpp_app_display.xml
index 95879ff0..7d3fc1cd 100644
--- a/android-app/res/layout/cpp_app_display.xml
+++ b/android-app/res/layout/cpp_app_display.xml
@@ -6,12 +6,11 @@
~ or visit http://se.solovyev.org
-->
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_app_display_mobile.xml b/android-app/res/layout/cpp_app_display_mobile.xml
index cce9c30c..e8632f4d 100644
--- a/android-app/res/layout/cpp_app_display_mobile.xml
+++ b/android-app/res/layout/cpp_app_display_mobile.xml
@@ -6,12 +6,11 @@
~ or visit http://se.solovyev.org
-->
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_app_editor.xml b/android-app/res/layout/cpp_app_editor.xml
index 220b01fa..12ebcd65 100644
--- a/android-app/res/layout/cpp_app_editor.xml
+++ b/android-app/res/layout/cpp_app_editor.xml
@@ -7,18 +7,18 @@
-->
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_height="match_parent"
+ a:padding="@dimen/cpp_editor_padding">
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_app_editor_mobile.xml b/android-app/res/layout/cpp_app_editor_mobile.xml
index 7a7db9fe..5ac01026 100644
--- a/android-app/res/layout/cpp_app_editor_mobile.xml
+++ b/android-app/res/layout/cpp_app_editor_mobile.xml
@@ -7,18 +7,18 @@
-->
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_height="match_parent"
+ a:padding="@dimen/cpp_editor_padding">
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_app_keyboard.xml b/android-app/res/layout/cpp_app_keyboard.xml
index a69c25f5..9575c9cb 100644
--- a/android-app/res/layout/cpp_app_keyboard.xml
+++ b/android-app/res/layout/cpp_app_keyboard.xml
@@ -1,69 +1,94 @@
+ a:layout_width="match_parent"
+ a:layout_height="match_parent"
+ a:orientation="vertical">
-
+
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_app_keyboard_mobile.xml b/android-app/res/layout/cpp_app_keyboard_mobile.xml
index f5f41e98..e2d1b716 100644
--- a/android-app/res/layout/cpp_app_keyboard_mobile.xml
+++ b/android-app/res/layout/cpp_app_keyboard_mobile.xml
@@ -1,69 +1,94 @@
+ a:layout_width="match_parent"
+ a:layout_height="match_parent"
+ a:orientation="vertical">
-
+
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
+
-
+
-
+
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_dialog.xml b/android-app/res/layout/cpp_dialog.xml
index d0239197..7d8a72c2 100644
--- a/android-app/res/layout/cpp_dialog.xml
+++ b/android-app/res/layout/cpp_dialog.xml
@@ -1,8 +1,8 @@
+ a:id="@+id/dialog_layout"
+ style="?cpp_dialog_style"
+ a:orientation="vertical">
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_dialog_fragment.xml b/android-app/res/layout/cpp_dialog_fragment.xml
index 602b74da..c0caff0b 100644
--- a/android-app/res/layout/cpp_dialog_fragment.xml
+++ b/android-app/res/layout/cpp_dialog_fragment.xml
@@ -1,40 +1,40 @@
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_gravity="center_horizontal"
+ a:layout_height="match_parent"
+ a:orientation="vertical">
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_0.xml b/android-app/res/layout/cpp_drag_button_0.xml
index f377510d..d5f48258 100644
--- a/android-app/res/layout/cpp_drag_button_0.xml
+++ b/android-app/res/layout/cpp_drag_button_0.xml
@@ -7,11 +7,11 @@
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_0"
+ c:textUp="00"
+ a:text="0"
+ c:textDown="000"
+ c:directionTextScale="0.5"
+ style="?cpp_digit_button_style"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_1.xml b/android-app/res/layout/cpp_drag_button_1.xml
index af578994..8b3a1fc8 100644
--- a/android-app/res/layout/cpp_drag_button_1.xml
+++ b/android-app/res/layout/cpp_drag_button_1.xml
@@ -7,11 +7,11 @@
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_1"
+ a:text="1"
+ c:textUp="sin"
+ c:textLeft="A"
+ c:textDown="asin"
+ style="?cpp_digit_button_style"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_2.xml b/android-app/res/layout/cpp_drag_button_2.xml
index d52b1065..3b7fb84f 100644
--- a/android-app/res/layout/cpp_drag_button_2.xml
+++ b/android-app/res/layout/cpp_drag_button_2.xml
@@ -7,11 +7,11 @@
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_2"
+ a:text="2"
+ c:textUp="cos"
+ c:textLeft="B"
+ c:textDown="acos"
+ style="?cpp_digit_button_style"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_3.xml b/android-app/res/layout/cpp_drag_button_3.xml
index 4bdf9001..848c3b59 100644
--- a/android-app/res/layout/cpp_drag_button_3.xml
+++ b/android-app/res/layout/cpp_drag_button_3.xml
@@ -7,11 +7,11 @@
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_3"
+ a:text="3"
+ c:textUp="tan"
+ c:textLeft="C"
+ c:textDown="atan"
+ style="?cpp_digit_button_style"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_4.xml b/android-app/res/layout/cpp_drag_button_4.xml
index 8c40f283..ff4dcf0a 100644
--- a/android-app/res/layout/cpp_drag_button_4.xml
+++ b/android-app/res/layout/cpp_drag_button_4.xml
@@ -6,11 +6,11 @@
~ or visit http://se.solovyev.org
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_4"
+ a:text="4"
+ c:textUp="x"
+ c:textLeft="D"
+ c:textDown="y"
+ style="?cpp_digit_button_style"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_5.xml b/android-app/res/layout/cpp_drag_button_5.xml
index 92fce03c..5e59d46c 100644
--- a/android-app/res/layout/cpp_drag_button_5.xml
+++ b/android-app/res/layout/cpp_drag_button_5.xml
@@ -6,11 +6,11 @@
~ or visit http://se.solovyev.org
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_5"
+ a:text="5"
+ c:textUp="t"
+ c:textLeft="E"
+ c:textDown="j"
+ style="?cpp_digit_button_style"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_6.xml b/android-app/res/layout/cpp_drag_button_6.xml
index 0a4771d4..f8c91c2e 100644
--- a/android-app/res/layout/cpp_drag_button_6.xml
+++ b/android-app/res/layout/cpp_drag_button_6.xml
@@ -7,12 +7,12 @@
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ c:textUp="deg"
+ a:id="@id/cpp_button_6"
+ a:text="6"
+ c:textLeft="F"
+ c:textDown="rad"
+ c:directionTextScale="0.33;0.30;0.33;0.33"
+ style="?cpp_digit_button_style"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_7.xml b/android-app/res/layout/cpp_drag_button_7.xml
index 4a61b9e6..fa222559 100644
--- a/android-app/res/layout/cpp_drag_button_7.xml
+++ b/android-app/res/layout/cpp_drag_button_7.xml
@@ -7,11 +7,12 @@
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_7"
+ a:text="7"
+ c:textUp="i"
+ c:textLeft="0b:"
+ c:textDown="!"
+ c:directionTextScale="0.5;0.5;0.5;0.33"
+ style="?cpp_digit_button_style"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_8.xml b/android-app/res/layout/cpp_drag_button_8.xml
index fe59019f..7939be13 100644
--- a/android-app/res/layout/cpp_drag_button_8.xml
+++ b/android-app/res/layout/cpp_drag_button_8.xml
@@ -7,11 +7,12 @@
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_8"
+ a:text="8"
+ c:textUp="ln"
+ c:textLeft="0d:"
+ c:textDown="lg"
+ c:directionTextScale="0.5;0.5;0.5;0.33"
+ style="?cpp_digit_button_style"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_9.xml b/android-app/res/layout/cpp_drag_button_9.xml
index 54b5abd3..5714506d 100644
--- a/android-app/res/layout/cpp_drag_button_9.xml
+++ b/android-app/res/layout/cpp_drag_button_9.xml
@@ -7,11 +7,12 @@
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_9"
+ a:text="9"
+ c:textDown="e"
+ c:textLeft="0x:"
+ c:textUp="π"
+ c:directionTextScale="0.5;0.5;0.5;0.33"
+ style="?cpp_digit_button_style"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_clear.xml b/android-app/res/layout/cpp_drag_button_clear.xml
index d6ef49d3..6c88e667 100644
--- a/android-app/res/layout/cpp_drag_button_clear.xml
+++ b/android-app/res/layout/cpp_drag_button_clear.xml
@@ -7,12 +7,12 @@
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_clear"
+ c:textUp="dec"
+ a:text="@string/c_clear"
+ c:textDown="bin"
+ c:textLeft="hex"
+ a:textStyle="bold"
+ style="?cpp_control_image_button_style"
+ a:onClick="clearButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_division.xml b/android-app/res/layout/cpp_drag_button_division.xml
index e44543c9..1a90a3c9 100644
--- a/android-app/res/layout/cpp_drag_button_division.xml
+++ b/android-app/res/layout/cpp_drag_button_division.xml
@@ -7,11 +7,11 @@
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_division"
+ c:textUp="%"
+ a:text="/"
+ c:textDown="√"
+ c:directionTextScale="0.5"
+ style="?cpp_operation_button_style"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_dot.xml b/android-app/res/layout/cpp_drag_button_dot.xml
index cb85e707..ad595ee9 100644
--- a/android-app/res/layout/cpp_drag_button_dot.xml
+++ b/android-app/res/layout/cpp_drag_button_dot.xml
@@ -7,10 +7,10 @@
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_period"
+ a:text="."
+ c:textUp=","
+ c:directionTextScale="0.5"
+ style="?cpp_digit_button_style"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_empty.xml b/android-app/res/layout/cpp_drag_button_empty.xml
index 38d77b13..7364a8fa 100644
--- a/android-app/res/layout/cpp_drag_button_empty.xml
+++ b/android-app/res/layout/cpp_drag_button_empty.xml
@@ -5,6 +5,4 @@
~ For more information, please, contact se.solovyev@gmail.com
~ or visit http://se.solovyev.org
-->
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_equals.xml b/android-app/res/layout/cpp_drag_button_equals.xml
index 49e6ee34..8a71b13b 100644
--- a/android-app/res/layout/cpp_drag_button_equals.xml
+++ b/android-app/res/layout/cpp_drag_button_equals.xml
@@ -5,15 +5,14 @@
~ For more information, please, contact se.solovyev@gmail.com
~ or visit http://se.solovyev.org
-->
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_functions.xml b/android-app/res/layout/cpp_drag_button_functions.xml
index 86d7b691..866ca30d 100644
--- a/android-app/res/layout/cpp_drag_button_functions.xml
+++ b/android-app/res/layout/cpp_drag_button_functions.xml
@@ -7,11 +7,11 @@
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_functions"
+ c:directionTextScale="0.5"
+ c:textUp="+ƒ"
+ a:text="ƒ(x)"
+ a:textStyle="italic"
+ a:onClick="functionsButtonClickHandler"
+ style="?cpp_control_button_style" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_history.xml b/android-app/res/layout/cpp_drag_button_history.xml
index 8a72e7be..da3b618f 100644
--- a/android-app/res/layout/cpp_drag_button_history.xml
+++ b/android-app/res/layout/cpp_drag_button_history.xml
@@ -6,12 +6,12 @@
~ or visit http://se.solovyev.org
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_history"
+ a:text="@string/c_history_button"
+ c:textUp="@string/c_undo"
+ c:textDown="@string/c_redo"
+ c:directionTextScale="0.27"
+ style="?cpp_control_button_style"
+ a:textStyle="bold"
+ a:onClick="historyButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_left.xml b/android-app/res/layout/cpp_drag_button_left.xml
index e5ac610b..b826cada 100644
--- a/android-app/res/layout/cpp_drag_button_left.xml
+++ b/android-app/res/layout/cpp_drag_button_left.xml
@@ -7,10 +7,10 @@
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_left"
+ c:textUp="◀◀"
+ a:text="◀"
+ c:directionTextScale="0.5"
+ style="?cpp_control_button_style"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_multiplication.xml b/android-app/res/layout/cpp_drag_button_multiplication.xml
index e9b500c0..6a039212 100644
--- a/android-app/res/layout/cpp_drag_button_multiplication.xml
+++ b/android-app/res/layout/cpp_drag_button_multiplication.xml
@@ -7,12 +7,12 @@
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_multiplication"
+ a:text="×"
+ c:textUp="^"
+ c:textDown="^2"
+ c:textLeft="Π"
+ style="?cpp_operation_button_style"
+ c:directionTextScale="0.5"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_operators.xml b/android-app/res/layout/cpp_drag_button_operators.xml
index 75309b22..c87d1ca0 100644
--- a/android-app/res/layout/cpp_drag_button_operators.xml
+++ b/android-app/res/layout/cpp_drag_button_operators.xml
@@ -7,7 +7,7 @@
-->
\ No newline at end of file
+ a:id="@id/cpp_button_operators"
+ a:text="∂,…"
+ a:onClick="operatorsButtonClickHandler"
+ style="?cpp_control_button_style" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_plus.xml b/android-app/res/layout/cpp_drag_button_plus.xml
index 58b6a10b..b8c03d41 100644
--- a/android-app/res/layout/cpp_drag_button_plus.xml
+++ b/android-app/res/layout/cpp_drag_button_plus.xml
@@ -6,11 +6,11 @@
~ or visit http://se.solovyev.org
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_plus"
+ c:directionTextScale="0.5"
+ c:textUp="°"
+ c:textDown="E"
+ a:text="+"
+ style="?cpp_operation_button_style"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_right.xml b/android-app/res/layout/cpp_drag_button_right.xml
index 6eea3dd9..c0c896ad 100644
--- a/android-app/res/layout/cpp_drag_button_right.xml
+++ b/android-app/res/layout/cpp_drag_button_right.xml
@@ -7,10 +7,10 @@
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_right"
+ c:textUp="▶▶"
+ a:text="▶"
+ c:directionTextScale="0.5"
+ style="?cpp_control_button_style"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_round_brackets.xml b/android-app/res/layout/cpp_drag_button_round_brackets.xml
index 7a7409cc..b2128061 100644
--- a/android-app/res/layout/cpp_drag_button_round_brackets.xml
+++ b/android-app/res/layout/cpp_drag_button_round_brackets.xml
@@ -7,12 +7,12 @@
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_round_brackets"
+ c:textUp="("
+ a:text="()"
+ c:textDown=")"
+ c:textLeft="(…)"
+ c:directionTextScale="0.5;0.5;0.5;0.33"
+ style="?cpp_digit_button_style"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_subtraction.xml b/android-app/res/layout/cpp_drag_button_subtraction.xml
index 1beb5e6d..2c8ed7eb 100644
--- a/android-app/res/layout/cpp_drag_button_subtraction.xml
+++ b/android-app/res/layout/cpp_drag_button_subtraction.xml
@@ -6,10 +6,10 @@
~ or visit http://se.solovyev.org
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_subtraction"
+ c:textDown="∂,…"
+ a:text="-"
+ c:directionTextScale="0.5"
+ style="?cpp_operation_button_style"
+ a:onClick="digitButtonClickHandler" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_drag_button_vars.xml b/android-app/res/layout/cpp_drag_button_vars.xml
index d7494c35..2139aba6 100644
--- a/android-app/res/layout/cpp_drag_button_vars.xml
+++ b/android-app/res/layout/cpp_drag_button_vars.xml
@@ -7,11 +7,11 @@
-->
\ No newline at end of file
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:id="@id/cpp_button_vars"
+ c:directionTextScale="0.5"
+ c:textUp="+π"
+ a:text="π,…"
+ a:textStyle="italic"
+ a:onClick="varsButtonClickHandler"
+ style="?cpp_control_button_style" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_plot_fragment.xml b/android-app/res/layout/cpp_plot_fragment.xml
index fc690e01..ffc90bc2 100644
--- a/android-app/res/layout/cpp_plot_fragment.xml
+++ b/android-app/res/layout/cpp_plot_fragment.xml
@@ -1,17 +1,18 @@
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_height="match_parent">
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_plot_function_list_item.xml b/android-app/res/layout/cpp_plot_function_list_item.xml
index ac16cb80..fc950162 100644
--- a/android-app/res/layout/cpp_plot_function_list_item.xml
+++ b/android-app/res/layout/cpp_plot_function_list_item.xml
@@ -1,33 +1,33 @@
+ a:layout_width="match_parent"
+ a:layout_height="wrap_content"
+ a:orientation="horizontal">
-
+
-
+
-
+
+ a:id="@+id/cpp_plot_function_settings_button"
+ a:layout_width="0dp"
+ a:layout_height="wrap_content"
+ a:layout_weight="1"
+ a:src="@drawable/ab_settings" />
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_plot_function_settings_dialog.xml b/android-app/res/layout/cpp_plot_function_settings_dialog.xml
index 310c67b4..c7f5c9e7 100644
--- a/android-app/res/layout/cpp_plot_function_settings_dialog.xml
+++ b/android-app/res/layout/cpp_plot_function_settings_dialog.xml
@@ -1,7 +1,7 @@
+ a:id="@+id/dialog_layout"
+ style="?cpp_dialog_style">
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_plot_function_settings_fragment.xml b/android-app/res/layout/cpp_plot_function_settings_fragment.xml
index e317bedb..bb3472c0 100644
--- a/android-app/res/layout/cpp_plot_function_settings_fragment.xml
+++ b/android-app/res/layout/cpp_plot_function_settings_fragment.xml
@@ -1,53 +1,62 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_plot_functions_fragment.xml b/android-app/res/layout/cpp_plot_functions_fragment.xml
index 5a6b2fd6..7f55e848 100644
--- a/android-app/res/layout/cpp_plot_functions_fragment.xml
+++ b/android-app/res/layout/cpp_plot_functions_fragment.xml
@@ -1,43 +1,43 @@
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_height="match_parent">
-
+
-
-
-
-
-
-
-
+
+ a:layout_width="0dp"
+ a:layout_height="wrap_content"
+ a:layout_weight="3"
+ a:text="@string/cpp_function" />
-
+
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_plot_range_fragment.xml b/android-app/res/layout/cpp_plot_range_fragment.xml
index 15d0f0bb..ee68d096 100644
--- a/android-app/res/layout/cpp_plot_range_fragment.xml
+++ b/android-app/res/layout/cpp_plot_range_fragment.xml
@@ -1,109 +1,109 @@
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_gravity="center_horizontal"
+ a:layout_height="match_parent"
+ a:orientation="vertical">
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/cpp_purchase_dialog_fragment.xml b/android-app/res/layout/cpp_purchase_dialog_fragment.xml
index 17eda309..a18a6b13 100644
--- a/android-app/res/layout/cpp_purchase_dialog_fragment.xml
+++ b/android-app/res/layout/cpp_purchase_dialog_fragment.xml
@@ -1,25 +1,25 @@
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_gravity="center_horizontal"
+ a:layout_height="match_parent"
+ a:orientation="vertical">
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/display_error_message.xml b/android-app/res/layout/display_error_message.xml
index b1517a02..63bb9b73 100644
--- a/android-app/res/layout/display_error_message.xml
+++ b/android-app/res/layout/display_error_message.xml
@@ -7,23 +7,22 @@
-->
+ a:layout_width="fill_parent"
+ a:layout_height="fill_parent">
+ a:orientation="vertical"
+ a:layout_width="fill_parent"
+ a:layout_height="fill_parent"
+ a:scrollbars="vertical"
+ a:scrollbarAlwaysDrawVerticalTrack="true">
-
+
diff --git a/android-app/res/layout/drag_button_calibration.xml b/android-app/res/layout/drag_button_calibration.xml
index 120f6ea9..4528f83e 100644
--- a/android-app/res/layout/drag_button_calibration.xml
+++ b/android-app/res/layout/drag_button_calibration.xml
@@ -1,53 +1,61 @@
+ xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
+ a:orientation="vertical"
+ a:layout_width="fill_parent"
+ a:layout_height="fill_parent"
+ a:background="#ff000000">
+
+
+ a:layout_height="0dp">
-
+
-
+
-
+
-
-
-
+
-
+
diff --git a/android-app/res/layout/feedback.xml b/android-app/res/layout/feedback.xml
index 28554f71..1fb1055e 100644
--- a/android-app/res/layout/feedback.xml
+++ b/android-app/res/layout/feedback.xml
@@ -7,13 +7,14 @@
-->
+ a:layout_width="fill_parent"
+ a:layout_height="fill_parent">
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/function_add_param.xml b/android-app/res/layout/function_add_param.xml
index 8c1232c0..dab6661f 100644
--- a/android-app/res/layout/function_add_param.xml
+++ b/android-app/res/layout/function_add_param.xml
@@ -1,20 +1,20 @@
+ a:layout_height="wrap_content"
+ a:layout_width="match_parent"
+ a:orientation="horizontal">
-
+
-
+
diff --git a/android-app/res/layout/function_edit.xml b/android-app/res/layout/function_edit.xml
index c86f9091..6cce81dc 100644
--- a/android-app/res/layout/function_edit.xml
+++ b/android-app/res/layout/function_edit.xml
@@ -7,86 +7,97 @@
-->
+ a:layout_height="wrap_content"
+ a:layout_width="match_parent"
+ a:minWidth="300dp">
-
+
-
+
-
+
-
+
-
+ a:layout_height="wrap_content"
+ a:layout_width="match_parent" />
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/android-app/res/layout/function_edit_param.xml b/android-app/res/layout/function_edit_param.xml
index 8497312a..28f079df 100644
--- a/android-app/res/layout/function_edit_param.xml
+++ b/android-app/res/layout/function_edit_param.xml
@@ -1,37 +1,37 @@
+ a:layout_height="wrap_content"
+ a:layout_width="match_parent"
+ a:orientation="horizontal">
-
+
-
+
-
+
-
+
diff --git a/android-app/res/layout/help_faq_fragment.xml b/android-app/res/layout/help_faq_fragment.xml
index e6eaa1c0..59ded3cb 100644
--- a/android-app/res/layout/help_faq_fragment.xml
+++ b/android-app/res/layout/help_faq_fragment.xml
@@ -7,30 +7,32 @@
-->
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_height="match_parent">
-
+
-
+
-
+
-
+
-
+
diff --git a/android-app/res/layout/help_hints_fragment.xml b/android-app/res/layout/help_hints_fragment.xml
index 9ec48381..3d73dc29 100644
--- a/android-app/res/layout/help_hints_fragment.xml
+++ b/android-app/res/layout/help_hints_fragment.xml
@@ -6,29 +6,31 @@
~ or visit http://se.solovyev.org
-->
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_height="match_parent">
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/help_screens_fragment.xml b/android-app/res/layout/help_screens_fragment.xml
index 84bb7557..8915a39d 100644
--- a/android-app/res/layout/help_screens_fragment.xml
+++ b/android-app/res/layout/help_screens_fragment.xml
@@ -6,29 +6,31 @@
~ or visit http://se.solovyev.org
-->
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_height="match_parent">
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/history_edit.xml b/android-app/res/layout/history_edit.xml
index dab3d024..fdc6600e 100644
--- a/android-app/res/layout/history_edit.xml
+++ b/android-app/res/layout/history_edit.xml
@@ -7,45 +7,47 @@
-->
+ a:layout_width="fill_parent"
+ a:layout_height="fill_parent">
+ a:id="@+id/history_edit"
+ a:orientation="vertical"
+ a:layout_width="fill_parent"
+ a:layout_height="fill_parent"
+ a:scrollbars="vertical"
+ a:scrollbarAlwaysDrawVerticalTrack="true">
-
+
-
-
+
-
+
-
-
+
diff --git a/android-app/res/layout/history_fragment.xml b/android-app/res/layout/history_fragment.xml
index 85db40d4..b54f1d63 100644
--- a/android-app/res/layout/history_fragment.xml
+++ b/android-app/res/layout/history_fragment.xml
@@ -1,18 +1,19 @@
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_height="match_parent">
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/history_item.xml b/android-app/res/layout/history_item.xml
index d1bf122c..00375f43 100644
--- a/android-app/res/layout/history_item.xml
+++ b/android-app/res/layout/history_item.xml
@@ -7,35 +7,40 @@
-->
+ a:orientation="vertical"
+ style="?cpp_fragment_list_view_item_style"
+ a:layout_width="fill_parent"
+ a:layout_height="fill_parent">
-
+
-
+
-
+
+
+
+
-
-
-
-
+ a:layout_height="fill_parent"
+ style="@style/history_item" />
\ No newline at end of file
diff --git a/android-app/res/layout/main_calculator.xml b/android-app/res/layout/main_calculator.xml
index 176115b6..81a52749 100644
--- a/android-app/res/layout/main_calculator.xml
+++ b/android-app/res/layout/main_calculator.xml
@@ -6,39 +6,43 @@
~ or visit http://se.solovyev.org
-->
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/android-app/res/layout/main_calculator_mobile.xml b/android-app/res/layout/main_calculator_mobile.xml
index 4443b414..96cc2c6e 100644
--- a/android-app/res/layout/main_calculator_mobile.xml
+++ b/android-app/res/layout/main_calculator_mobile.xml
@@ -6,39 +6,43 @@
~ or visit http://se.solovyev.org
-->
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/android-app/res/layout/main_empty.xml b/android-app/res/layout/main_empty.xml
index 0f196828..726b4d6a 100644
--- a/android-app/res/layout/main_empty.xml
+++ b/android-app/res/layout/main_empty.xml
@@ -8,7 +8,7 @@
+ style="?cpp_main_layout_style"
+ a:orientation="vertical">
\ No newline at end of file
diff --git a/android-app/res/layout/main_empty_multi_pane.xml b/android-app/res/layout/main_empty_multi_pane.xml
index af4764cc..594d26d2 100644
--- a/android-app/res/layout/main_empty_multi_pane.xml
+++ b/android-app/res/layout/main_empty_multi_pane.xml
@@ -8,7 +8,7 @@
+ style="?cpp_main_multi_pane_layout_style"
+ a:orientation="vertical">
\ No newline at end of file
diff --git a/android-app/res/layout/math_entities_fragment.xml b/android-app/res/layout/math_entities_fragment.xml
index 85db40d4..b54f1d63 100644
--- a/android-app/res/layout/math_entities_fragment.xml
+++ b/android-app/res/layout/math_entities_fragment.xml
@@ -1,18 +1,19 @@
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_height="match_parent">
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/math_entity.xml b/android-app/res/layout/math_entity.xml
index 6c1ece7e..33ca71d0 100644
--- a/android-app/res/layout/math_entity.xml
+++ b/android-app/res/layout/math_entity.xml
@@ -7,22 +7,22 @@
-->
+ a:layout_height="wrap_content"
+ a:layout_width="match_parent"
+ style="?cpp_fragment_list_view_item_style"
+ a:paddingBottom="@dimen/cpp_pane_padding"
+ a:orientation="vertical">
-
-
+
-
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/matrix_edit_fragment.xml b/android-app/res/layout/matrix_edit_fragment.xml
index 7f2d115b..c96b77c0 100644
--- a/android-app/res/layout/matrix_edit_fragment.xml
+++ b/android-app/res/layout/matrix_edit_fragment.xml
@@ -2,58 +2,66 @@
+ xmlns:picker="http://schemas.android.com/apk/res-auto"
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_height="match_parent">
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/matrix_edit_fragment_item.xml b/android-app/res/layout/matrix_edit_fragment_item.xml
index 880d08b1..3c5e064b 100644
--- a/android-app/res/layout/matrix_edit_fragment_item.xml
+++ b/android-app/res/layout/matrix_edit_fragment_item.xml
@@ -1,12 +1,13 @@
+ a:layout_height="match_parent"
+ a:layout_width="match_parent">
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/notespp_announce.xml b/android-app/res/layout/notespp_announce.xml
index 41f949e9..ef41cacf 100644
--- a/android-app/res/layout/notespp_announce.xml
+++ b/android-app/res/layout/notespp_announce.xml
@@ -7,13 +7,14 @@
-->
+ a:layout_width="fill_parent"
+ a:layout_height="fill_parent">
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/release_notes_fragment.xml b/android-app/res/layout/release_notes_fragment.xml
index 5455c35e..e5cf3d40 100644
--- a/android-app/res/layout/release_notes_fragment.xml
+++ b/android-app/res/layout/release_notes_fragment.xml
@@ -7,19 +7,19 @@
-->
+ a:orientation="vertical"
+ a:layout_width="fill_parent"
+ a:layout_height="fill_parent"
+ a:background="#ff000000">
+ a:id="@+id/releaseNotesTextView"
+ a:layout_height="fill_parent"
+ a:layout_width="fill_parent"
+ a:layout_weight="1"
+ a:gravity="top|left"
+ a:scrollbars="vertical"
+ style="@style/cpp_about_style" />
+ a:orientation="vertical"
+ style="?cpp_fragment_list_view_item_style"
+ a:layout_width="fill_parent"
+ a:layout_height="fill_parent">
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/tabs.xml b/android-app/res/layout/tabs.xml
index 9f4c04f3..ccd3f4b6 100644
--- a/android-app/res/layout/tabs.xml
+++ b/android-app/res/layout/tabs.xml
@@ -7,24 +7,24 @@
-->
+ a:id="@android:id/tabhost"
+ a:layout_width="fill_parent"
+ a:layout_height="fill_parent">
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/layout/var_edit.xml b/android-app/res/layout/var_edit.xml
index 831d1557..8eb40ff0 100644
--- a/android-app/res/layout/var_edit.xml
+++ b/android-app/res/layout/var_edit.xml
@@ -7,75 +7,85 @@
-->
+ a:layout_height="wrap_content"
+ a:layout_width="match_parent"
+ a:minWidth="300dp">
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/android-app/res/layout/vars_fragment.xml b/android-app/res/layout/vars_fragment.xml
index 77521d86..1292d309 100644
--- a/android-app/res/layout/vars_fragment.xml
+++ b/android-app/res/layout/vars_fragment.xml
@@ -7,18 +7,19 @@
-->
+ a:id="@+id/main_fragment_layout"
+ style="?cpp_fragment_layout_style"
+ a:layout_width="match_parent"
+ a:layout_height="match_parent">
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/menu/functions_menu.xml b/android-app/res/menu/functions_menu.xml
index 6f1b93b0..b56037f9 100644
--- a/android-app/res/menu/functions_menu.xml
+++ b/android-app/res/menu/functions_menu.xml
@@ -8,8 +8,9 @@
\ No newline at end of file
diff --git a/android-app/res/menu/history_menu.xml b/android-app/res/menu/history_menu.xml
index cfe8d152..85d01a6b 100644
--- a/android-app/res/menu/history_menu.xml
+++ b/android-app/res/menu/history_menu.xml
@@ -8,8 +8,9 @@
\ No newline at end of file
diff --git a/android-app/res/menu/plot_menu.xml b/android-app/res/menu/plot_menu.xml
index 4c63cad5..11f59472 100644
--- a/android-app/res/menu/plot_menu.xml
+++ b/android-app/res/menu/plot_menu.xml
@@ -8,34 +8,40 @@
\ No newline at end of file
diff --git a/android-app/res/menu/vars_menu.xml b/android-app/res/menu/vars_menu.xml
index aa0edfc2..c1dd8388 100644
--- a/android-app/res/menu/vars_menu.xml
+++ b/android-app/res/menu/vars_menu.xml
@@ -8,8 +8,9 @@
\ No newline at end of file
diff --git a/android-app/res/values-large-hdpi/dimens.xml b/android-app/res/values-large-hdpi/dimens.xml
index 91a386b3..3d891448 100644
--- a/android-app/res/values-large-hdpi/dimens.xml
+++ b/android-app/res/values-large-hdpi/dimens.xml
@@ -1,10 +1,10 @@
- 20sp
- 40sp
+ 20sp
+ 40sp
- 20sp
- 40sp
+ 20sp
+ 40sp
- 24dp
- 25dp
+ 24dp
+ 25dp
\ No newline at end of file
diff --git a/android-app/res/values-large-mdpi/dimens.xml b/android-app/res/values-large-mdpi/dimens.xml
index 838675a5..3db904ce 100644
--- a/android-app/res/values-large-mdpi/dimens.xml
+++ b/android-app/res/values-large-mdpi/dimens.xml
@@ -1,10 +1,10 @@
- 25sp
- 45sp
+ 25sp
+ 45sp
- 20sp
- 35sp
+ 20sp
+ 35sp
- 35dp
- 45dp
+ 35dp
+ 45dp
\ No newline at end of file
diff --git a/android-app/res/values-large-tvdpi/dimens.xml b/android-app/res/values-large-tvdpi/dimens.xml
index 41fa14be..bffa29a6 100644
--- a/android-app/res/values-large-tvdpi/dimens.xml
+++ b/android-app/res/values-large-tvdpi/dimens.xml
@@ -1,10 +1,10 @@
- 30sp
- 40sp
+ 30sp
+ 40sp
- 30sp
- 35sp
+ 30sp
+ 35sp
- 33dp
- 30dp
+ 33dp
+ 30dp
\ No newline at end of file
diff --git a/android-app/res/values-large/dimens.xml b/android-app/res/values-large/dimens.xml
index 69b0be4a..2cb54d84 100644
--- a/android-app/res/values-large/dimens.xml
+++ b/android-app/res/values-large/dimens.xml
@@ -1,7 +1,7 @@
- 17sp
- 25sp
+ 17sp
+ 25sp
- 20sp
- 17sp
+ 20sp
+ 17sp
\ No newline at end of file
diff --git a/android-app/res/values-normal-hdpi/dimens.xml b/android-app/res/values-normal-hdpi/dimens.xml
index 83b8bd7f..da3f6a3a 100644
--- a/android-app/res/values-normal-hdpi/dimens.xml
+++ b/android-app/res/values-normal-hdpi/dimens.xml
@@ -1,4 +1,4 @@
- 30dp
- 20dp
+ 30dp
+ 20dp
\ No newline at end of file
diff --git a/android-app/res/values-normal-mdpi/dimens.xml b/android-app/res/values-normal-mdpi/dimens.xml
index 3e6b50e0..3758dbc2 100644
--- a/android-app/res/values-normal-mdpi/dimens.xml
+++ b/android-app/res/values-normal-mdpi/dimens.xml
@@ -1,4 +1,4 @@
- 24dp
- 25dp
+ 24dp
+ 25dp
\ No newline at end of file
diff --git a/android-app/res/values-normal-tvdpi/dimens.xml b/android-app/res/values-normal-tvdpi/dimens.xml
index 52bdcfd9..2b8dee57 100644
--- a/android-app/res/values-normal-tvdpi/dimens.xml
+++ b/android-app/res/values-normal-tvdpi/dimens.xml
@@ -1,4 +1,4 @@
- 33dp
- 25dp
+ 33dp
+ 25dp
\ No newline at end of file
diff --git a/android-app/res/values-normal-xhdpi/dimens.xml b/android-app/res/values-normal-xhdpi/dimens.xml
index 6fc0ffb7..ea318ccd 100644
--- a/android-app/res/values-normal-xhdpi/dimens.xml
+++ b/android-app/res/values-normal-xhdpi/dimens.xml
@@ -1,4 +1,4 @@
- 32dp
- 15dp
+ 32dp
+ 15dp
\ No newline at end of file
diff --git a/android-app/res/values-normal/dimens.xml b/android-app/res/values-normal/dimens.xml
index 7cdd5ca2..f0591947 100644
--- a/android-app/res/values-normal/dimens.xml
+++ b/android-app/res/values-normal/dimens.xml
@@ -1,13 +1,13 @@
- 15sp
- 20sp
+ 15sp
+ 20sp
- 20sp
- 15sp
+ 20sp
+ 15sp
- 30sp
- 30sp
+ 30sp
+ 30sp
- 30sp
- 30sp
+ 30sp
+ 30sp
\ No newline at end of file
diff --git a/android-app/res/values-small-hdpi/dimens.xml b/android-app/res/values-small-hdpi/dimens.xml
index 3d63c948..14f05ebf 100644
--- a/android-app/res/values-small-hdpi/dimens.xml
+++ b/android-app/res/values-small-hdpi/dimens.xml
@@ -1,4 +1,4 @@
- 22dp
- 14dp
+ 22dp
+ 14dp
\ No newline at end of file
diff --git a/android-app/res/values-small-xhdpi/dimens.xml b/android-app/res/values-small-xhdpi/dimens.xml
index e54b7a01..7bc58b61 100644
--- a/android-app/res/values-small-xhdpi/dimens.xml
+++ b/android-app/res/values-small-xhdpi/dimens.xml
@@ -1,4 +1,4 @@
- 20dp
- 10dp
+ 20dp
+ 10dp
\ No newline at end of file
diff --git a/android-app/res/values-small/dimens.xml b/android-app/res/values-small/dimens.xml
index 8aeef0dd..85f371a4 100644
--- a/android-app/res/values-small/dimens.xml
+++ b/android-app/res/values-small/dimens.xml
@@ -1,13 +1,13 @@
- 15sp
- 20sp
+ 15sp
+ 20sp
- 16sp
- 12sp
+ 16sp
+ 12sp
- 20sp
- 20sp
+ 20sp
+ 20sp
- 20sp
- 20sp
+ 20sp
+ 20sp
\ No newline at end of file
diff --git a/android-app/res/values-v14/dimens.xml b/android-app/res/values-v14/dimens.xml
index c505ddf9..1bd44cd5 100644
--- a/android-app/res/values-v14/dimens.xml
+++ b/android-app/res/values-v14/dimens.xml
@@ -1,3 +1,3 @@
- 0dp
+ 0dp
\ No newline at end of file
diff --git a/android-app/res/values-xlarge-hdpi/dimens.xml b/android-app/res/values-xlarge-hdpi/dimens.xml
index 3e0696cf..c21e3248 100644
--- a/android-app/res/values-xlarge-hdpi/dimens.xml
+++ b/android-app/res/values-xlarge-hdpi/dimens.xml
@@ -1,11 +1,11 @@
- 30sp
- 75sp
+ 30sp
+ 75sp
- 75sp
- 30sp
+ 75sp
+ 30sp
- 40dp
- 75dp
+ 40dp
+ 75dp
\ No newline at end of file
diff --git a/android-app/res/values-xlarge-mdpi/dimens.xml b/android-app/res/values-xlarge-mdpi/dimens.xml
index c15a0b3d..f1cac223 100644
--- a/android-app/res/values-xlarge-mdpi/dimens.xml
+++ b/android-app/res/values-xlarge-mdpi/dimens.xml
@@ -1,11 +1,11 @@
- 40sp
- 75sp
+ 40sp
+ 75sp
- 75sp
- 30sp
+ 75sp
+ 30sp
- 35dp
- 65dp
+ 35dp
+ 65dp
\ No newline at end of file
diff --git a/android-app/res/values-xlarge/dimens.xml b/android-app/res/values-xlarge/dimens.xml
index e4588f03..33f172d5 100644
--- a/android-app/res/values-xlarge/dimens.xml
+++ b/android-app/res/values-xlarge/dimens.xml
@@ -1,7 +1,7 @@
- 30sp
- 40sp
+ 30sp
+ 40sp
- 40sp
- 30sp
+ 40sp
+ 30sp
\ No newline at end of file
diff --git a/android-app/res/values/preferences.xml b/android-app/res/values/preferences.xml
index c5fe7155..1668649e 100644
--- a/android-app/res/values/preferences.xml
+++ b/android-app/res/values/preferences.xml
@@ -1,5 +1,4 @@
-
-
+ -->
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/xml/preferences_calculations.xml b/android-app/res/xml/preferences_calculations.xml
index fb77b55b..9e44c35f 100644
--- a/android-app/res/xml/preferences_calculations.xml
+++ b/android-app/res/xml/preferences_calculations.xml
@@ -1,80 +1,83 @@
+ xmlns:range="http://schemas.android.com/apk/res-auto">
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/xml/preferences_onscreen.xml b/android-app/res/xml/preferences_onscreen.xml
index f8497074..24d31726 100644
--- a/android-app/res/xml/preferences_onscreen.xml
+++ b/android-app/res/xml/preferences_onscreen.xml
@@ -2,20 +2,20 @@
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/xml/preferences_other.xml b/android-app/res/xml/preferences_other.xml
index fcd56d8d..68c88d4c 100644
--- a/android-app/res/xml/preferences_other.xml
+++ b/android-app/res/xml/preferences_other.xml
@@ -2,28 +2,27 @@
-
+
-
+
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app/res/xml/preferences_plot.xml b/android-app/res/xml/preferences_plot.xml
index f0ca8b95..4e6ebc57 100644
--- a/android-app/res/xml/preferences_plot.xml
+++ b/android-app/res/xml/preferences_plot.xml
@@ -2,15 +2,15 @@
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/android-app/src/main/java/org/solovyev/android/calculator/AbstractCalculatorHelper.java b/android-app/src/main/java/org/solovyev/android/calculator/AbstractCalculatorHelper.java
index 4a338910..b94855d4 100644
--- a/android-app/src/main/java/org/solovyev/android/calculator/AbstractCalculatorHelper.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/AbstractCalculatorHelper.java
@@ -33,223 +33,223 @@ import java.util.List;
*/
public abstract class AbstractCalculatorHelper implements SharedPreferences.OnSharedPreferenceChangeListener {
- @NotNull
- private CalculatorPreferences.Gui.Layout layout;
+ @NotNull
+ private CalculatorPreferences.Gui.Layout layout;
- @NotNull
- private CalculatorPreferences.Gui.Theme theme;
+ @NotNull
+ private CalculatorPreferences.Gui.Theme theme;
- @Nullable
- private Vibrator vibrator;
+ @Nullable
+ private Vibrator vibrator;
- @NotNull
- private final JListeners dpclRegister = Listeners.newHardRefListeners();
+ @NotNull
+ private final JListeners dpclRegister = Listeners.newHardRefListeners();
- @NotNull
- private String logTag = "CalculatorActivity";
+ @NotNull
+ private String logTag = "CalculatorActivity";
- protected AbstractCalculatorHelper() {
- }
+ protected AbstractCalculatorHelper() {
+ }
- protected AbstractCalculatorHelper(@NotNull String logTag) {
- this.logTag = logTag;
- }
+ protected AbstractCalculatorHelper(@NotNull String logTag) {
+ this.logTag = logTag;
+ }
- protected void onCreate(@NotNull Activity activity) {
- final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
+ protected void onCreate(@NotNull Activity activity) {
+ final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
- vibrator = (Vibrator) activity.getSystemService(Activity.VIBRATOR_SERVICE);
- layout = CalculatorPreferences.Gui.layout.getPreferenceNoError(preferences);
- theme = CalculatorPreferences.Gui.theme.getPreferenceNoError(preferences);
+ vibrator = (Vibrator) activity.getSystemService(Activity.VIBRATOR_SERVICE);
+ layout = CalculatorPreferences.Gui.layout.getPreferenceNoError(preferences);
+ theme = CalculatorPreferences.Gui.theme.getPreferenceNoError(preferences);
- preferences.registerOnSharedPreferenceChangeListener(this);
+ preferences.registerOnSharedPreferenceChangeListener(this);
- // let's disable locking of screen for monkeyrunner
- if (CalculatorApplication.isMonkeyRunner(activity)) {
- final KeyguardManager km = (KeyguardManager) activity.getSystemService(Context.KEYGUARD_SERVICE);
- km.newKeyguardLock(activity.getClass().getName()).disableKeyguard();
- }
- }
+ // let's disable locking of screen for monkeyrunner
+ if (CalculatorApplication.isMonkeyRunner(activity)) {
+ final KeyguardManager km = (KeyguardManager) activity.getSystemService(Context.KEYGUARD_SERVICE);
+ km.newKeyguardLock(activity.getClass().getName()).disableKeyguard();
+ }
+ }
- public void logDebug(@NotNull String message) {
- Log.d(logTag, message);
- }
+ public void logDebug(@NotNull String message) {
+ Log.d(logTag, message);
+ }
- public void logError(@NotNull String message) {
- Log.e(logTag, message);
- }
+ public void logError(@NotNull String message) {
+ Log.e(logTag, message);
+ }
- public void processButtons(@NotNull final Activity activity, @NotNull View root) {
- dpclRegister.removeListeners();
+ public void processButtons(@NotNull final Activity activity, @NotNull View root) {
+ dpclRegister.removeListeners();
- final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
- final SimpleOnDragListener.Preferences dragPreferences = SimpleOnDragListener.getPreferences(preferences, activity);
+ final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
+ final SimpleOnDragListener.Preferences dragPreferences = SimpleOnDragListener.getPreferences(preferences, activity);
- setOnDragListeners(root, dragPreferences, preferences);
+ setOnDragListeners(root, dragPreferences, preferences);
- final OnDragListener historyOnDragListener = new OnDragListenerVibrator(newOnDragListener(new HistoryDragProcessor(getCalculator()), dragPreferences), vibrator, preferences);
- final DragButton historyButton = getButton(root, R.id.cpp_button_history);
- if (historyButton != null) {
- historyButton.setOnDragListener(historyOnDragListener);
- }
+ final OnDragListener historyOnDragListener = new OnDragListenerVibrator(newOnDragListener(new HistoryDragProcessor(getCalculator()), dragPreferences), vibrator, preferences);
+ final DragButton historyButton = getButton(root, R.id.cpp_button_history);
+ if (historyButton != null) {
+ historyButton.setOnDragListener(historyOnDragListener);
+ }
- final DragButton subtractionButton = getButton(root, R.id.cpp_button_subtraction);
- if (subtractionButton != null) {
- subtractionButton.setOnDragListener(new OnDragListenerVibrator(newOnDragListener(new SimpleOnDragListener.DragProcessor() {
- @Override
- public boolean processDragEvent(@NotNull DragDirection dragDirection, @NotNull DragButton dragButton, @NotNull Point2d startPoint2d, @NotNull MotionEvent motionEvent) {
- if (dragDirection == DragDirection.down) {
- Locator.getInstance().getCalculator().fireCalculatorEvent(CalculatorEventType.show_operators, null);
- return true;
- }
- return false;
- }
- }, dragPreferences), vibrator, preferences));
- }
+ final DragButton subtractionButton = getButton(root, R.id.cpp_button_subtraction);
+ if (subtractionButton != null) {
+ subtractionButton.setOnDragListener(new OnDragListenerVibrator(newOnDragListener(new SimpleOnDragListener.DragProcessor() {
+ @Override
+ public boolean processDragEvent(@NotNull DragDirection dragDirection, @NotNull DragButton dragButton, @NotNull Point2d startPoint2d, @NotNull MotionEvent motionEvent) {
+ if (dragDirection == DragDirection.down) {
+ Locator.getInstance().getCalculator().fireCalculatorEvent(CalculatorEventType.show_operators, null);
+ return true;
+ }
+ return false;
+ }
+ }, dragPreferences), vibrator, preferences));
+ }
- final OnDragListener toPositionOnDragListener = new OnDragListenerVibrator(new SimpleOnDragListener(new CursorDragProcessor(), dragPreferences), vibrator, preferences);
+ final OnDragListener toPositionOnDragListener = new OnDragListenerVibrator(new SimpleOnDragListener(new CursorDragProcessor(), dragPreferences), vibrator, preferences);
- final DragButton rightButton = getButton(root, R.id.cpp_button_right);
- if (rightButton != null) {
- rightButton.setOnDragListener(toPositionOnDragListener);
- }
+ final DragButton rightButton = getButton(root, R.id.cpp_button_right);
+ if (rightButton != null) {
+ rightButton.setOnDragListener(toPositionOnDragListener);
+ }
- final DragButton leftButton = getButton(root, R.id.cpp_button_left);
- if (leftButton != null) {
- leftButton.setOnDragListener(toPositionOnDragListener);
- }
+ final DragButton leftButton = getButton(root, R.id.cpp_button_left);
+ if (leftButton != null) {
+ leftButton.setOnDragListener(toPositionOnDragListener);
+ }
- final DragButton equalsButton = getButton(root, R.id.cpp_button_equals);
- if (equalsButton != null) {
- equalsButton.setOnDragListener(new OnDragListenerVibrator(newOnDragListener(new EqualsDragProcessor(), dragPreferences), vibrator, preferences));
- }
+ final DragButton equalsButton = getButton(root, R.id.cpp_button_equals);
+ if (equalsButton != null) {
+ equalsButton.setOnDragListener(new OnDragListenerVibrator(newOnDragListener(new EqualsDragProcessor(), dragPreferences), vibrator, preferences));
+ }
- final AngleUnitsButton angleUnitsButton = (AngleUnitsButton) getButton(root, R.id.cpp_button_6);
- if (angleUnitsButton != null) {
- angleUnitsButton.setOnDragListener(new OnDragListenerVibrator(newOnDragListener(new CalculatorButtons.AngleUnitsChanger(activity), dragPreferences), vibrator, preferences));
- }
+ final AngleUnitsButton angleUnitsButton = (AngleUnitsButton) getButton(root, R.id.cpp_button_6);
+ if (angleUnitsButton != null) {
+ angleUnitsButton.setOnDragListener(new OnDragListenerVibrator(newOnDragListener(new CalculatorButtons.AngleUnitsChanger(activity), dragPreferences), vibrator, preferences));
+ }
- final NumeralBasesButton clearButton = (NumeralBasesButton) getButton(root, R.id.cpp_button_clear);
- if (clearButton != null) {
- clearButton.setOnDragListener(new OnDragListenerVibrator(newOnDragListener(new CalculatorButtons.NumeralBasesChanger(activity), dragPreferences), vibrator, preferences));
- }
+ final NumeralBasesButton clearButton = (NumeralBasesButton) getButton(root, R.id.cpp_button_clear);
+ if (clearButton != null) {
+ clearButton.setOnDragListener(new OnDragListenerVibrator(newOnDragListener(new CalculatorButtons.NumeralBasesChanger(activity), dragPreferences), vibrator, preferences));
+ }
- final DragButton varsButton = getButton(root, R.id.cpp_button_vars);
- if (varsButton != null) {
- varsButton.setOnDragListener(new OnDragListenerVibrator(newOnDragListener(new CalculatorButtons.VarsDragProcessor(activity), dragPreferences), vibrator, preferences));
- }
+ final DragButton varsButton = getButton(root, R.id.cpp_button_vars);
+ if (varsButton != null) {
+ varsButton.setOnDragListener(new OnDragListenerVibrator(newOnDragListener(new CalculatorButtons.VarsDragProcessor(activity), dragPreferences), vibrator, preferences));
+ }
- final DragButton functionsButton = getButton(root, R.id.cpp_button_functions);
- if (functionsButton != null) {
- functionsButton.setOnDragListener(new OnDragListenerVibrator(newOnDragListener(new CalculatorButtons.FunctionsDragProcessor(activity), dragPreferences), vibrator, preferences));
- }
+ final DragButton functionsButton = getButton(root, R.id.cpp_button_functions);
+ if (functionsButton != null) {
+ functionsButton.setOnDragListener(new OnDragListenerVibrator(newOnDragListener(new CalculatorButtons.FunctionsDragProcessor(activity), dragPreferences), vibrator, preferences));
+ }
- final DragButton roundBracketsButton = getButton(root, R.id.cpp_button_round_brackets);
- if (roundBracketsButton != null) {
- roundBracketsButton.setOnDragListener(new OnDragListenerVibrator(newOnDragListener(new CalculatorButtons.RoundBracketsDragProcessor(), dragPreferences), vibrator, preferences));
- }
+ final DragButton roundBracketsButton = getButton(root, R.id.cpp_button_round_brackets);
+ if (roundBracketsButton != null) {
+ roundBracketsButton.setOnDragListener(new OnDragListenerVibrator(newOnDragListener(new CalculatorButtons.RoundBracketsDragProcessor(), dragPreferences), vibrator, preferences));
+ }
- if (layout == CalculatorPreferences.Gui.Layout.simple) {
- toggleButtonDirectionText(root, R.id.cpp_button_1, false, DragDirection.up, DragDirection.down);
- toggleButtonDirectionText(root, R.id.cpp_button_2, false, DragDirection.up, DragDirection.down);
- toggleButtonDirectionText(root, R.id.cpp_button_3, false, DragDirection.up, DragDirection.down);
+ if (layout == CalculatorPreferences.Gui.Layout.simple) {
+ toggleButtonDirectionText(root, R.id.cpp_button_1, false, DragDirection.up, DragDirection.down);
+ toggleButtonDirectionText(root, R.id.cpp_button_2, false, DragDirection.up, DragDirection.down);
+ toggleButtonDirectionText(root, R.id.cpp_button_3, false, DragDirection.up, DragDirection.down);
- toggleButtonDirectionText(root, R.id.cpp_button_6, false, DragDirection.up, DragDirection.down);
- toggleButtonDirectionText(root, R.id.cpp_button_7, false, DragDirection.left, DragDirection.up, DragDirection.down);
- toggleButtonDirectionText(root, R.id.cpp_button_8, false, DragDirection.left, DragDirection.up, DragDirection.down);
+ toggleButtonDirectionText(root, R.id.cpp_button_6, false, DragDirection.up, DragDirection.down);
+ toggleButtonDirectionText(root, R.id.cpp_button_7, false, DragDirection.left, DragDirection.up, DragDirection.down);
+ toggleButtonDirectionText(root, R.id.cpp_button_8, false, DragDirection.left, DragDirection.up, DragDirection.down);
- toggleButtonDirectionText(root, R.id.cpp_button_clear, false, DragDirection.left, DragDirection.up, DragDirection.down);
+ toggleButtonDirectionText(root, R.id.cpp_button_clear, false, DragDirection.left, DragDirection.up, DragDirection.down);
- toggleButtonDirectionText(root, R.id.cpp_button_4, false, DragDirection.down);
- toggleButtonDirectionText(root, R.id.cpp_button_5, false, DragDirection.down);
+ toggleButtonDirectionText(root, R.id.cpp_button_4, false, DragDirection.down);
+ toggleButtonDirectionText(root, R.id.cpp_button_5, false, DragDirection.down);
- toggleButtonDirectionText(root, R.id.cpp_button_9, false, DragDirection.left);
+ toggleButtonDirectionText(root, R.id.cpp_button_9, false, DragDirection.left);
- toggleButtonDirectionText(root, R.id.cpp_button_multiplication, false, DragDirection.left);
- toggleButtonDirectionText(root, R.id.cpp_button_plus, false, DragDirection.down, DragDirection.up);
- }
+ toggleButtonDirectionText(root, R.id.cpp_button_multiplication, false, DragDirection.left);
+ toggleButtonDirectionText(root, R.id.cpp_button_plus, false, DragDirection.down, DragDirection.up);
+ }
- CalculatorButtons.processButtons(theme, layout, root);
- CalculatorButtons.toggleEqualsButton(preferences, activity);
- CalculatorButtons.initMultiplicationButton(root);
- NumeralBaseButtons.toggleNumericDigits(activity, preferences);
- }
+ CalculatorButtons.processButtons(theme, layout, root);
+ CalculatorButtons.toggleEqualsButton(preferences, activity);
+ CalculatorButtons.initMultiplicationButton(root);
+ NumeralBaseButtons.toggleNumericDigits(activity, preferences);
+ }
- private void toggleButtonDirectionText(@NotNull View root, int id, boolean showDirectionText, @NotNull DragDirection... dragDirections) {
- final View v = getButton(root, id);
- if (v instanceof DirectionDragButton ) {
- final DirectionDragButton button = (DirectionDragButton)v;
- for (DragDirection dragDirection : dragDirections) {
- button.showDirectionText(showDirectionText, dragDirection);
- }
- }
- }
+ private void toggleButtonDirectionText(@NotNull View root, int id, boolean showDirectionText, @NotNull DragDirection... dragDirections) {
+ final View v = getButton(root, id);
+ if (v instanceof DirectionDragButton) {
+ final DirectionDragButton button = (DirectionDragButton) v;
+ for (DragDirection dragDirection : dragDirections) {
+ button.showDirectionText(showDirectionText, dragDirection);
+ }
+ }
+ }
- @NotNull
- private Calculator getCalculator() {
- return Locator.getInstance().getCalculator();
- }
+ @NotNull
+ private Calculator getCalculator() {
+ return Locator.getInstance().getCalculator();
+ }
- private void setOnDragListeners(@NotNull View root, @NotNull SimpleOnDragListener.Preferences dragPreferences, @NotNull SharedPreferences preferences) {
- final OnDragListener onDragListener = new OnDragListenerVibrator(newOnDragListener(new DigitButtonDragProcessor(getKeyboard()), dragPreferences), vibrator, preferences);
+ private void setOnDragListeners(@NotNull View root, @NotNull SimpleOnDragListener.Preferences dragPreferences, @NotNull SharedPreferences preferences) {
+ final OnDragListener onDragListener = new OnDragListenerVibrator(newOnDragListener(new DigitButtonDragProcessor(getKeyboard()), dragPreferences), vibrator, preferences);
- final List dragButtonIds = new ArrayList();
+ final List dragButtonIds = new ArrayList();
- for (Field field : R.id.class.getDeclaredFields()) {
- int modifiers = field.getModifiers();
- if (Modifier.isFinal(modifiers) && Modifier.isStatic(modifiers)) {
- try {
- int viewId = field.getInt(R.id.class);
- final View view = root.findViewById(viewId);
- if (view instanceof DragButton) {
- dragButtonIds.add(viewId);
- }
- } catch (IllegalAccessException e) {
- Log.e(R.id.class.getName(), e.getMessage());
- }
- }
- }
+ for (Field field : R.id.class.getDeclaredFields()) {
+ int modifiers = field.getModifiers();
+ if (Modifier.isFinal(modifiers) && Modifier.isStatic(modifiers)) {
+ try {
+ int viewId = field.getInt(R.id.class);
+ final View view = root.findViewById(viewId);
+ if (view instanceof DragButton) {
+ dragButtonIds.add(viewId);
+ }
+ } catch (IllegalAccessException e) {
+ Log.e(R.id.class.getName(), e.getMessage());
+ }
+ }
+ }
- for (Integer dragButtonId : dragButtonIds) {
- final DragButton button = getButton(root, dragButtonId);
- if (button != null) {
- button.setOnDragListener(onDragListener);
- }
- }
- }
+ for (Integer dragButtonId : dragButtonIds) {
+ final DragButton button = getButton(root, dragButtonId);
+ if (button != null) {
+ button.setOnDragListener(onDragListener);
+ }
+ }
+ }
- @NotNull
- private CalculatorKeyboard getKeyboard() {
- return Locator.getInstance().getKeyboard();
- }
+ @NotNull
+ private CalculatorKeyboard getKeyboard() {
+ return Locator.getInstance().getKeyboard();
+ }
- @Nullable
- private T getButton(@NotNull View root, int buttonId) {
- return (T) root.findViewById(buttonId);
- }
+ @Nullable
+ private T getButton(@NotNull View root, int buttonId) {
+ return (T) root.findViewById(buttonId);
+ }
- @NotNull
- private SimpleOnDragListener newOnDragListener(@NotNull SimpleOnDragListener.DragProcessor dragProcessor,
- @NotNull SimpleOnDragListener.Preferences dragPreferences) {
- final SimpleOnDragListener onDragListener = new SimpleOnDragListener(dragProcessor, dragPreferences);
- dpclRegister.addListener(onDragListener);
- return onDragListener;
- }
+ @NotNull
+ private SimpleOnDragListener newOnDragListener(@NotNull SimpleOnDragListener.DragProcessor dragProcessor,
+ @NotNull SimpleOnDragListener.Preferences dragPreferences) {
+ final SimpleOnDragListener onDragListener = new SimpleOnDragListener(dragProcessor, dragPreferences);
+ dpclRegister.addListener(onDragListener);
+ return onDragListener;
+ }
- @Override
- public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
- if (key != null && key.startsWith("org.solovyev.android.calculator.DragButtonCalibrationActivity")) {
- final SimpleOnDragListener.Preferences dragPreferences = SimpleOnDragListener.getPreferences(preferences, CalculatorApplication.getInstance());
- for (DragPreferencesChangeListener dragPreferencesChangeListener : dpclRegister.getListeners()) {
- dragPreferencesChangeListener.onDragPreferencesChange(dragPreferences);
- }
- }
- }
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
+ if (key != null && key.startsWith("org.solovyev.android.calculator.DragButtonCalibrationActivity")) {
+ final SimpleOnDragListener.Preferences dragPreferences = SimpleOnDragListener.getPreferences(preferences, CalculatorApplication.getInstance());
+ for (DragPreferencesChangeListener dragPreferencesChangeListener : dpclRegister.getListeners()) {
+ dragPreferencesChangeListener.onDragPreferencesChange(dragPreferences);
+ }
+ }
+ }
- public void onDestroy(@NotNull Activity activity) {
- final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
+ public void onDestroy(@NotNull Activity activity) {
+ final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
- preferences.unregisterOnSharedPreferenceChangeListener(this);
- }
+ preferences.unregisterOnSharedPreferenceChangeListener(this);
+ }
}
diff --git a/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculator.java b/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculator.java
index 9fc3d854..b8d64497 100644
--- a/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculator.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculator.java
@@ -23,93 +23,93 @@ import java.util.List;
*/
public class AndroidCalculator implements Calculator, CalculatorEventListener, SharedPreferences.OnSharedPreferenceChangeListener {
- @NotNull
- private final CalculatorImpl calculator = new CalculatorImpl();
+ @NotNull
+ private final CalculatorImpl calculator = new CalculatorImpl();
- @NotNull
- private final Application context;
+ @NotNull
+ private final Application context;
- public AndroidCalculator(@NotNull Application application) {
- this.context = application;
- this.calculator.addCalculatorEventListener(this);
+ public AndroidCalculator(@NotNull Application application) {
+ this.context = application;
+ this.calculator.addCalculatorEventListener(this);
- PreferenceManager.getDefaultSharedPreferences(application).registerOnSharedPreferenceChangeListener(this);
- }
+ PreferenceManager.getDefaultSharedPreferences(application).registerOnSharedPreferenceChangeListener(this);
+ }
- public void init(@NotNull final Activity activity) {
- setEditor(activity);
- setDisplay(activity);
- }
+ public void init(@NotNull final Activity activity) {
+ setEditor(activity);
+ setDisplay(activity);
+ }
- public void setDisplay(@NotNull Activity activity) {
- final AndroidCalculatorDisplayView displayView = (AndroidCalculatorDisplayView) activity.findViewById(R.id.calculator_display);
- setDisplay(activity, displayView);
- }
+ public void setDisplay(@NotNull Activity activity) {
+ final AndroidCalculatorDisplayView displayView = (AndroidCalculatorDisplayView) activity.findViewById(R.id.calculator_display);
+ setDisplay(activity, displayView);
+ }
- public void setDisplay(@NotNull Context context, @NotNull AndroidCalculatorDisplayView displayView) {
- displayView.init(context);
- Locator.getInstance().getDisplay().setView(displayView);
- }
+ public void setDisplay(@NotNull Context context, @NotNull AndroidCalculatorDisplayView displayView) {
+ displayView.init(context);
+ Locator.getInstance().getDisplay().setView(displayView);
+ }
- public void setEditor(@NotNull Activity activity) {
- final AndroidCalculatorEditorView editorView = (AndroidCalculatorEditorView) activity.findViewById(R.id.calculator_editor);
- setEditor(activity, editorView);
- }
+ public void setEditor(@NotNull Activity activity) {
+ final AndroidCalculatorEditorView editorView = (AndroidCalculatorEditorView) activity.findViewById(R.id.calculator_editor);
+ setEditor(activity, editorView);
+ }
- public void setEditor(@NotNull Context context, @NotNull AndroidCalculatorEditorView editorView) {
- editorView.init(context);
- Locator.getInstance().getEditor().setView(editorView);
- }
+ public void setEditor(@NotNull Context context, @NotNull AndroidCalculatorEditorView editorView) {
+ editorView.init(context);
+ Locator.getInstance().getEditor().setView(editorView);
+ }
- /*
- **********************************************************************
- *
- * DELEGATED TO CALCULATOR
- *
- **********************************************************************
- */
+ /*
+ **********************************************************************
+ *
+ * DELEGATED TO CALCULATOR
+ *
+ **********************************************************************
+ */
- @Override
- @NotNull
- public CalculatorEventData evaluate(@NotNull JsclOperation operation, @NotNull String expression) {
- return calculator.evaluate(operation, expression);
- }
+ @Override
+ @NotNull
+ public CalculatorEventData evaluate(@NotNull JsclOperation operation, @NotNull String expression) {
+ return calculator.evaluate(operation, expression);
+ }
- @Override
- @NotNull
- public CalculatorEventData evaluate(@NotNull JsclOperation operation, @NotNull String expression, @NotNull Long sequenceId) {
- return calculator.evaluate(operation, expression, sequenceId);
- }
+ @Override
+ @NotNull
+ public CalculatorEventData evaluate(@NotNull JsclOperation operation, @NotNull String expression, @NotNull Long sequenceId) {
+ return calculator.evaluate(operation, expression, sequenceId);
+ }
- @Override
- public boolean isConversionPossible(@NotNull Generic generic, @NotNull NumeralBase from, @NotNull NumeralBase to) {
- return calculator.isConversionPossible(generic, from, to);
- }
+ @Override
+ public boolean isConversionPossible(@NotNull Generic generic, @NotNull NumeralBase from, @NotNull NumeralBase to) {
+ return calculator.isConversionPossible(generic, from, to);
+ }
- @Override
- @NotNull
- public CalculatorEventData convert(@NotNull Generic generic, @NotNull NumeralBase to) {
- return calculator.convert(generic, to);
- }
+ @Override
+ @NotNull
+ public CalculatorEventData convert(@NotNull Generic generic, @NotNull NumeralBase to) {
+ return calculator.convert(generic, to);
+ }
- @Override
- @NotNull
- public CalculatorEventData fireCalculatorEvent(@NotNull CalculatorEventType calculatorEventType, @Nullable Object data) {
- return calculator.fireCalculatorEvent(calculatorEventType, data);
- }
+ @Override
+ @NotNull
+ public CalculatorEventData fireCalculatorEvent(@NotNull CalculatorEventType calculatorEventType, @Nullable Object data) {
+ return calculator.fireCalculatorEvent(calculatorEventType, data);
+ }
- @NotNull
- @Override
- public CalculatorEventData fireCalculatorEvent(@NotNull CalculatorEventType calculatorEventType, @Nullable Object data, @NotNull Object source) {
- return calculator.fireCalculatorEvent(calculatorEventType, data, source);
- }
+ @NotNull
+ @Override
+ public CalculatorEventData fireCalculatorEvent(@NotNull CalculatorEventType calculatorEventType, @Nullable Object data, @NotNull Object source) {
+ return calculator.fireCalculatorEvent(calculatorEventType, data, source);
+ }
- @Override
- @NotNull
- public CalculatorEventData fireCalculatorEvent(@NotNull CalculatorEventType calculatorEventType, @Nullable Object data, @NotNull Long sequenceId) {
- return calculator.fireCalculatorEvent(calculatorEventType, data, sequenceId);
- }
+ @Override
+ @NotNull
+ public CalculatorEventData fireCalculatorEvent(@NotNull CalculatorEventType calculatorEventType, @Nullable Object data, @NotNull Long sequenceId) {
+ return calculator.fireCalculatorEvent(calculatorEventType, data, sequenceId);
+ }
@NotNull
@Override
@@ -118,113 +118,113 @@ public class AndroidCalculator implements Calculator, CalculatorEventListener, S
}
@Override
- public void init() {
- this.calculator.init();
+ public void init() {
+ this.calculator.init();
- final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
- this.calculator.setCalculateOnFly(CalculatorPreferences.Calculations.calculateOnFly.getPreference(prefs));
- }
+ final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+ this.calculator.setCalculateOnFly(CalculatorPreferences.Calculations.calculateOnFly.getPreference(prefs));
+ }
- @Override
- public void addCalculatorEventListener(@NotNull CalculatorEventListener calculatorEventListener) {
- calculator.addCalculatorEventListener(calculatorEventListener);
- }
+ @Override
+ public void addCalculatorEventListener(@NotNull CalculatorEventListener calculatorEventListener) {
+ calculator.addCalculatorEventListener(calculatorEventListener);
+ }
- @Override
- public void removeCalculatorEventListener(@NotNull CalculatorEventListener calculatorEventListener) {
- calculator.removeCalculatorEventListener(calculatorEventListener);
- }
+ @Override
+ public void removeCalculatorEventListener(@NotNull CalculatorEventListener calculatorEventListener) {
+ calculator.removeCalculatorEventListener(calculatorEventListener);
+ }
- @Override
- public void fireCalculatorEvent(@NotNull CalculatorEventData calculatorEventData, @NotNull CalculatorEventType calculatorEventType, @Nullable Object data) {
- calculator.fireCalculatorEvent(calculatorEventData, calculatorEventType, data);
- }
+ @Override
+ public void fireCalculatorEvent(@NotNull CalculatorEventData calculatorEventData, @NotNull CalculatorEventType calculatorEventType, @Nullable Object data) {
+ calculator.fireCalculatorEvent(calculatorEventData, calculatorEventType, data);
+ }
- @Override
- public void fireCalculatorEvents(@NotNull List calculatorEvents) {
- calculator.fireCalculatorEvents(calculatorEvents);
- }
+ @Override
+ public void fireCalculatorEvents(@NotNull List calculatorEvents) {
+ calculator.fireCalculatorEvents(calculatorEvents);
+ }
- @Override
- public void doHistoryAction(@NotNull HistoryAction historyAction) {
- calculator.doHistoryAction(historyAction);
- }
+ @Override
+ public void doHistoryAction(@NotNull HistoryAction historyAction) {
+ calculator.doHistoryAction(historyAction);
+ }
- @Override
- public void setCurrentHistoryState(@NotNull CalculatorHistoryState editorHistoryState) {
- calculator.setCurrentHistoryState(editorHistoryState);
- }
+ @Override
+ public void setCurrentHistoryState(@NotNull CalculatorHistoryState editorHistoryState) {
+ calculator.setCurrentHistoryState(editorHistoryState);
+ }
- @Override
- @NotNull
- public CalculatorHistoryState getCurrentHistoryState() {
- return calculator.getCurrentHistoryState();
- }
+ @Override
+ @NotNull
+ public CalculatorHistoryState getCurrentHistoryState() {
+ return calculator.getCurrentHistoryState();
+ }
- @Override
- public void evaluate() {
- calculator.evaluate();
- }
+ @Override
+ public void evaluate() {
+ calculator.evaluate();
+ }
- @Override
- public void evaluate(@NotNull Long sequenceId) {
- calculator.evaluate(sequenceId);
- }
+ @Override
+ public void evaluate(@NotNull Long sequenceId) {
+ calculator.evaluate(sequenceId);
+ }
- @Override
- public void simplify() {
- calculator.simplify();
- }
+ @Override
+ public void simplify() {
+ calculator.simplify();
+ }
- @Override
- public void onCalculatorEvent(@NotNull CalculatorEventData calculatorEventData, @NotNull CalculatorEventType calculatorEventType, @Nullable Object data) {
- switch (calculatorEventType) {
- case calculation_messages:
- CalculatorActivityLauncher.showCalculationMessagesDialog(CalculatorApplication.getInstance(), (List) data);
- break;
- case show_history:
- CalculatorActivityLauncher.showHistory(CalculatorApplication.getInstance());
- break;
- case show_history_detached:
- CalculatorActivityLauncher.showHistory(CalculatorApplication.getInstance(), true);
- break;
- case show_functions:
- CalculatorActivityLauncher.showFunctions(CalculatorApplication.getInstance());
- break;
- case show_functions_detached:
- CalculatorActivityLauncher.showFunctions(CalculatorApplication.getInstance(), true);
- break;
- case show_operators:
- CalculatorActivityLauncher.showOperators(CalculatorApplication.getInstance());
- break;
- case show_operators_detached:
- CalculatorActivityLauncher.showOperators(CalculatorApplication.getInstance(), true);
- break;
- case show_vars:
- CalculatorActivityLauncher.showVars(CalculatorApplication.getInstance());
- break;
- case show_vars_detached:
- CalculatorActivityLauncher.showVars(CalculatorApplication.getInstance(), true);
- break;
- case show_settings:
- CalculatorActivityLauncher.showSettings(CalculatorApplication.getInstance());
- break;
- case show_settings_detached:
- CalculatorActivityLauncher.showSettings(CalculatorApplication.getInstance(), true);
- break;
- case show_like_dialog:
- CalculatorActivityLauncher.likeButtonPressed(CalculatorApplication.getInstance());
- break;
- case open_app:
- CalculatorActivityLauncher.openApp(CalculatorApplication.getInstance());
- break;
- }
- }
+ @Override
+ public void onCalculatorEvent(@NotNull CalculatorEventData calculatorEventData, @NotNull CalculatorEventType calculatorEventType, @Nullable Object data) {
+ switch (calculatorEventType) {
+ case calculation_messages:
+ CalculatorActivityLauncher.showCalculationMessagesDialog(CalculatorApplication.getInstance(), (List) data);
+ break;
+ case show_history:
+ CalculatorActivityLauncher.showHistory(CalculatorApplication.getInstance());
+ break;
+ case show_history_detached:
+ CalculatorActivityLauncher.showHistory(CalculatorApplication.getInstance(), true);
+ break;
+ case show_functions:
+ CalculatorActivityLauncher.showFunctions(CalculatorApplication.getInstance());
+ break;
+ case show_functions_detached:
+ CalculatorActivityLauncher.showFunctions(CalculatorApplication.getInstance(), true);
+ break;
+ case show_operators:
+ CalculatorActivityLauncher.showOperators(CalculatorApplication.getInstance());
+ break;
+ case show_operators_detached:
+ CalculatorActivityLauncher.showOperators(CalculatorApplication.getInstance(), true);
+ break;
+ case show_vars:
+ CalculatorActivityLauncher.showVars(CalculatorApplication.getInstance());
+ break;
+ case show_vars_detached:
+ CalculatorActivityLauncher.showVars(CalculatorApplication.getInstance(), true);
+ break;
+ case show_settings:
+ CalculatorActivityLauncher.showSettings(CalculatorApplication.getInstance());
+ break;
+ case show_settings_detached:
+ CalculatorActivityLauncher.showSettings(CalculatorApplication.getInstance(), true);
+ break;
+ case show_like_dialog:
+ CalculatorActivityLauncher.likeButtonPressed(CalculatorApplication.getInstance());
+ break;
+ case open_app:
+ CalculatorActivityLauncher.openApp(CalculatorApplication.getInstance());
+ break;
+ }
+ }
- @Override
- public void onSharedPreferenceChanged(@NotNull SharedPreferences prefs, @NotNull String key) {
- if ( CalculatorPreferences.Calculations.calculateOnFly.getKey().equals(key) ) {
- this.calculator.setCalculateOnFly(CalculatorPreferences.Calculations.calculateOnFly.getPreference(prefs));
- }
- }
+ @Override
+ public void onSharedPreferenceChanged(@NotNull SharedPreferences prefs, @NotNull String key) {
+ if (CalculatorPreferences.Calculations.calculateOnFly.getKey().equals(key)) {
+ this.calculator.setCalculateOnFly(CalculatorPreferences.Calculations.calculateOnFly.getPreference(prefs));
+ }
+ }
}
diff --git a/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorClipboard.java b/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorClipboard.java
index 7352334e..acd89890 100644
--- a/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorClipboard.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorClipboard.java
@@ -12,32 +12,32 @@ import org.jetbrains.annotations.NotNull;
*/
public class AndroidCalculatorClipboard implements CalculatorClipboard {
- @NotNull
- private final Context context;
+ @NotNull
+ private final Context context;
- public AndroidCalculatorClipboard(@NotNull Application application) {
- this.context = application;
- }
+ public AndroidCalculatorClipboard(@NotNull Application application) {
+ this.context = application;
+ }
- @Override
- public String getText() {
- final ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
- if ( clipboard.hasText() ) {
- return String.valueOf(clipboard.getText());
- } else {
- return null;
- }
- }
+ @Override
+ public String getText() {
+ final ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
+ if (clipboard.hasText()) {
+ return String.valueOf(clipboard.getText());
+ } else {
+ return null;
+ }
+ }
- @Override
- public void setText(@NotNull String text) {
- final ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
- clipboard.setText(text);
- }
+ @Override
+ public void setText(@NotNull String text) {
+ final ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
+ clipboard.setText(text);
+ }
- @Override
- public void setText(@NotNull CharSequence text) {
- final ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
- clipboard.setText(text);
- }
+ @Override
+ public void setText(@NotNull CharSequence text) {
+ final ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
+ clipboard.setText(text);
+ }
}
diff --git a/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorKeyboard.java b/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorKeyboard.java
index 7b3fe6e0..1f436caf 100644
--- a/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorKeyboard.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorKeyboard.java
@@ -17,70 +17,70 @@ import org.solovyev.android.view.VibratorContainer;
*/
public class AndroidCalculatorKeyboard implements CalculatorKeyboard {
- @NotNull
- private final CalculatorKeyboard calculatorKeyboard;
+ @NotNull
+ private final CalculatorKeyboard calculatorKeyboard;
- @NotNull
- private final Context context;
+ @NotNull
+ private final Context context;
- private VibratorContainer vibrator;
+ private VibratorContainer vibrator;
- public AndroidCalculatorKeyboard(@NotNull Application application,
- @NotNull CalculatorKeyboard calculatorKeyboard) {
- this.context = application;
- this.calculatorKeyboard = calculatorKeyboard;
- }
+ public AndroidCalculatorKeyboard(@NotNull Application application,
+ @NotNull CalculatorKeyboard calculatorKeyboard) {
+ this.context = application;
+ this.calculatorKeyboard = calculatorKeyboard;
+ }
- @Override
- public void buttonPressed(@Nullable String text) {
- vibrate();
- calculatorKeyboard.buttonPressed(text);
- }
+ @Override
+ public void buttonPressed(@Nullable String text) {
+ vibrate();
+ calculatorKeyboard.buttonPressed(text);
+ }
- private void vibrate() {
- if (this.vibrator == null) {
- final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
- final Vibrator vibrator = (Vibrator) context.getSystemService(Activity.VIBRATOR_SERVICE);
+ private void vibrate() {
+ if (this.vibrator == null) {
+ final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+ final Vibrator vibrator = (Vibrator) context.getSystemService(Activity.VIBRATOR_SERVICE);
- this.vibrator = new VibratorContainer(vibrator, preferences, 0.5f);
- }
+ this.vibrator = new VibratorContainer(vibrator, preferences, 0.5f);
+ }
- this.vibrator.vibrate();
- }
+ this.vibrator.vibrate();
+ }
- @Override
- public void roundBracketsButtonPressed() {
- vibrate();
- calculatorKeyboard.roundBracketsButtonPressed();
- }
+ @Override
+ public void roundBracketsButtonPressed() {
+ vibrate();
+ calculatorKeyboard.roundBracketsButtonPressed();
+ }
- @Override
- public void pasteButtonPressed() {
- vibrate();
- calculatorKeyboard.pasteButtonPressed();
- }
+ @Override
+ public void pasteButtonPressed() {
+ vibrate();
+ calculatorKeyboard.pasteButtonPressed();
+ }
- @Override
- public void clearButtonPressed() {
- vibrate();
- calculatorKeyboard.clearButtonPressed();
- }
+ @Override
+ public void clearButtonPressed() {
+ vibrate();
+ calculatorKeyboard.clearButtonPressed();
+ }
- @Override
- public void copyButtonPressed() {
- vibrate();
- calculatorKeyboard.copyButtonPressed();
- }
+ @Override
+ public void copyButtonPressed() {
+ vibrate();
+ calculatorKeyboard.copyButtonPressed();
+ }
- @Override
- public void moveCursorLeft() {
- vibrate();
- calculatorKeyboard.moveCursorLeft();
- }
+ @Override
+ public void moveCursorLeft() {
+ vibrate();
+ calculatorKeyboard.moveCursorLeft();
+ }
- @Override
- public void moveCursorRight() {
- vibrate();
- calculatorKeyboard.moveCursorRight();
- }
+ @Override
+ public void moveCursorRight() {
+ vibrate();
+ calculatorKeyboard.moveCursorRight();
+ }
}
diff --git a/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorLogger.java b/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorLogger.java
index 452f1887..e9cdbf8d 100644
--- a/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorLogger.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorLogger.java
@@ -11,31 +11,31 @@ import org.jetbrains.annotations.Nullable;
*/
public class AndroidCalculatorLogger implements CalculatorLogger {
- @NotNull
- private static final String TAG = "Calculatorpp";
+ @NotNull
+ private static final String TAG = "Calculatorpp";
- @Override
- public void debug(@Nullable String tag, @NotNull String message) {
- Log.d(getTag(tag), message);
- }
+ @Override
+ public void debug(@Nullable String tag, @NotNull String message) {
+ Log.d(getTag(tag), message);
+ }
- @NotNull
- private String getTag(@Nullable String tag) {
- return tag != null ? TAG + "/" + tag : TAG;
- }
+ @NotNull
+ private String getTag(@Nullable String tag) {
+ return tag != null ? TAG + "/" + tag : TAG;
+ }
- @Override
- public void debug(@Nullable String tag, @Nullable String message, @NotNull Throwable e) {
- Log.d(getTag(tag), message, e);
- }
+ @Override
+ public void debug(@Nullable String tag, @Nullable String message, @NotNull Throwable e) {
+ Log.d(getTag(tag), message, e);
+ }
- @Override
- public void error(@Nullable String tag, @Nullable String message, @NotNull Throwable e) {
- Log.e(getTag(tag), message, e);
- }
+ @Override
+ public void error(@Nullable String tag, @Nullable String message, @NotNull Throwable e) {
+ Log.e(getTag(tag), message, e);
+ }
- @Override
- public void error(@Nullable String tag, @Nullable String message) {
- Log.e(getTag(tag), message);
- }
+ @Override
+ public void error(@Nullable String tag, @Nullable String message) {
+ Log.e(getTag(tag), message);
+ }
}
diff --git a/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorNotifier.java b/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorNotifier.java
index d47f3861..49bf3561 100644
--- a/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorNotifier.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorNotifier.java
@@ -19,58 +19,58 @@ import java.util.List;
*/
public class AndroidCalculatorNotifier implements CalculatorNotifier {
- @NotNull
- private final Application application;
+ @NotNull
+ private final Application application;
- @NotNull
- private final Handler uiHandler = new Handler();
+ @NotNull
+ private final Handler uiHandler = new Handler();
- private final boolean showDebugMessages;
+ private final boolean showDebugMessages;
- public AndroidCalculatorNotifier(@NotNull Application application) {
- this(application, false);
- }
+ public AndroidCalculatorNotifier(@NotNull Application application) {
+ this(application, false);
+ }
- public AndroidCalculatorNotifier(@NotNull Application application, boolean showDebugMessages) {
- assert Threads.isUiThread();
+ public AndroidCalculatorNotifier(@NotNull Application application, boolean showDebugMessages) {
+ assert Threads.isUiThread();
- this.application = application;
- this.showDebugMessages = showDebugMessages;
- }
+ this.application = application;
+ this.showDebugMessages = showDebugMessages;
+ }
- @Override
- public void showMessage(@NotNull Message message) {
- showMessageInUiThread(message.getLocalizedMessage());
- }
+ @Override
+ public void showMessage(@NotNull Message message) {
+ showMessageInUiThread(message.getLocalizedMessage());
+ }
- @Override
- public void showMessage(@NotNull Integer messageCode, @NotNull MessageType messageType, @NotNull List