Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fbcef700 authored by Hans Boehm's avatar Hans Boehm
Browse files

Fix strings, stability bug, easy UI & correctness issues

Bug: 20625562
Bug: 20649711
Bug: 20561890
Bug: 20561528
Bug: 20442590
Bug: 15473140
Bug: 20503008
Bug: 20503007

- Improve timeout text.

- Recalculate when Calculator is rotated, e.g. in error state, thus
  reproducing message.  It's unclear this is good enough, but it's
  better.

- Fix square root parsing.

- Fix concatenation of numbers when pasting by adding explicit
  multiplication.

- Display divide by zero error differently from other domain errors.

- Improved advanced keypad layout of portrait-mode tablet calculator.

- Improved overflow menu order.  (More to be done.)

- Report zero division as zero division when we can recognize it.

- Switch to floating menus for copy/paste.

Change-Id: I3875414f293e62a59b0e41f0de822f29bd5ac6a6
parent 08e8f322
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <include layout="@layout/pad_advanced" />
    <include layout="@layout/pad_advanced_tablet_port" />

    <LinearLayout style="@style/PadLinearLayoutStyle">

+136 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
  Copyright (C) 2014 The Android Open Source Project

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
  -->

<com.android.calculator2.CalculatorPadLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pad_advanced"
    style="@style/PadLayoutStyle.Advanced"
    android:background="@color/pad_advanced_background_color">

    <Button
        android:id="@+id/fun_sin"
        style="@style/PadButtonStyle.Advanced"
        android:contentDescription="@string/desc_fun_sin"
        android:onClick="onButtonClick"
        android:text="@string/fun_sin" />

    <Button
        android:id="@+id/fun_cos"
        style="@style/PadButtonStyle.Advanced"
        android:contentDescription="@string/desc_fun_cos"
        android:onClick="onButtonClick"
        android:text="@string/fun_cos" />

    <Button
        android:id="@+id/fun_tan"
        style="@style/PadButtonStyle.Advanced"
        android:contentDescription="@string/desc_fun_tan"
        android:onClick="onButtonClick"
        android:text="@string/fun_tan" />

    <Button
        android:id="@+id/fun_ln"
        style="@style/PadButtonStyle.Advanced"
        android:contentDescription="@string/desc_fun_ln"
        android:onClick="onButtonClick"
        android:text="@string/fun_ln" />

    <Button
        android:id="@+id/fun_log"
        style="@style/PadButtonStyle.Advanced"
        android:contentDescription="@string/desc_fun_log"
        android:onClick="onButtonClick"
        android:text="@string/fun_log" />

    <Button
        android:id="@+id/op_fact"
        style="@style/PadButtonStyle.Advanced"
        android:contentDescription="@string/desc_op_fact"
        android:onClick="onButtonClick"
        android:text="@string/op_fact" />

    <Button
        android:id="@+id/fun_arcsin"
        style="@style/PadButtonStyle.Advanced"
        android:contentDescription="@string/desc_fun_arcsin"
        android:onClick="onButtonClick"
        android:text="@string/fun_arcsin" />

    <Button
        android:id="@+id/fun_arccos"
        style="@style/PadButtonStyle.Advanced"
        android:contentDescription="@string/desc_fun_arccos"
        android:onClick="onButtonClick"
        android:text="@string/fun_arccos" />

    <Button
        android:id="@+id/fun_arctan"
        style="@style/PadButtonStyle.Advanced"
        android:contentDescription="@string/desc_fun_arctan"
        android:onClick="onButtonClick"
        android:text="@string/fun_arctan" />

    <Button
        android:id="@+id/const_pi"
        style="@style/PadButtonStyle.Advanced"
        android:contentDescription="@string/desc_const_pi"
        android:onClick="onButtonClick"
        android:text="@string/const_pi" />

    <Button
        android:id="@+id/const_e"
        style="@style/PadButtonStyle.Advanced"
        android:contentDescription="@string/desc_const_e"
        android:onClick="onButtonClick"
        android:text="@string/const_e" />

    <Button
        android:id="@+id/op_pow"
        style="@style/PadButtonStyle.Advanced"
        android:contentDescription="@string/desc_op_pow"
        android:onClick="onButtonClick"
        android:text="@string/op_pow" />

    <Button
        android:id="@+id/lparen"
        style="@style/PadButtonStyle.Advanced"
        android:contentDescription="@string/desc_lparen"
        android:onClick="onButtonClick"
        android:text="@string/lparen" />

    <Button
        android:id="@+id/rparen"
        style="@style/PadButtonStyle.Advanced"
        android:contentDescription="@string/desc_rparen"
        android:onClick="onButtonClick"
        android:text="@string/rparen" />

    <Button
        android:id="@+id/op_sqrt"
        style="@style/PadButtonStyle.Advanced"
        android:contentDescription="@string/desc_op_sqrt"
        android:onClick="onButtonClick"
        android:text="@string/op_sqrt" />

    <Button
        android:id="@+id/mode_deg_rad"
        style="@style/PadButtonStyle.Advanced"
        android:contentDescription="@string/desc_mode_rad"
        android:onClick="onButtonClick"
        android:textAllCaps="true" />

</com.android.calculator2.CalculatorPadLayout>
+6 −6
Original line number Diff line number Diff line
@@ -19,16 +19,16 @@

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/menu_help"
        android:title="@string/help"/>

    <item android:id="@+id/menu_about"
        android:title="@string/about"/>

    <item android:id="@+id/menu_leading"
        android:title="@string/leading"/>

    <item android:id="@+id/menu_fraction"
        android:title="@string/fraction"/>

    <item android:id="@+id/menu_help"
        android:title="@string/help"/>

    <item android:id="@+id/menu_about"
        android:title="@string/about"/>

</menu>
+9 −8
Original line number Diff line number Diff line
@@ -22,12 +22,14 @@

    <!-- Error displayed when expression evaluates a function at undefined point. [CHAR_LIMIT=14] -->
    <string name="error_nan">Not a number</string>
    <!-- Error displayed when expression contains a syntax error. [CHAR_LIMIT=14] -->
    <string name="error_syntax">Malformed expression</string>
    <!-- Error displayed when evaluation is manually aborted. [CHAR_LIMIT=14] -->
    <!-- Error displayed when expression contains a syntax error. [CHAR_LIMIT=16] -->
    <string name="error_syntax">Bad expression</string>
    <!-- Error displayed when evaluation is manually aborted. [CHAR_LIMIT=16] -->
    <string name="error_aborted">Aborted</string>
    <!-- Error displayed when excessive precision is required. [CHAR_LIMIT=14] -->
    <!-- Error displayed when excessive precision is required. [CHAR_LIMIT=16] -->
    <string name="error_overflow">Infinite?</string>
    <!-- Error displayed when we diagnose a division by zero.  [CHAR_LIMIT=16] -->
    <string name="error_zero_divide">Division by 0</string>

    <!-- Decimal separator (e.g. "1.23"). [CHAR_LIMIT=1] -->
    <string name="dec_point">.</string>
@@ -142,7 +144,6 @@
    <!-- Toast shown when text is copied to the clipboard. -->
    <string name="text_copied_toast">Text copied.</string>

    <!-- TODO: Revisit everything below here -->
    <!-- Displayed briefly to indicate not-yet-computed digit. -->
    <string name="guessed_digit">"?"</string>
    <!-- Dialog message when a computation is cancelled by the user. -->
@@ -150,17 +151,17 @@
    <!-- Button label to dismiss informative text message. -->
    <string name="dismiss">Dismiss</string>
    <!-- Dialog message when a computation times out. -->
    <string name="timeout">Timed out trying to compute an infinite or huge number</string>
    <string name="timeout">That\'s too hard! Undefined or infinite value?</string>
    <!-- Button label for "remove timeout" button. -->
    <string name="ok_remove_timeout">OK, but longer timeouts, please!</string>
    <!-- Help menu entry for context menu. -->
    <string name="help">Help!</string>
    <string name="help">Help</string>
    <!-- Content description for overflow menu button. -->
    <string name="overflow_menu_description">overflow menu</string>
    <!-- The help message that's displayed in response to pushing the above button. -->
    <string name="help_message">Use the keys to enter a standard arithmetic expression. It\'s fine to omit multiplication symbols and trailing parentheses.  Long press delete key to clear. Drag the display to see more digits.\n\nComputations involving infinite values may take forever.  Wait for the timeout or touch a button to terminate computation.</string>
    <!-- Help message addendum for pager. -->
    <string name="help_pager">\n\nSwipe the keyboard to the left to see additional functions.</string>
    <string name="help_pager">\n\nSwipe the operator pad to the left to see additional functions.</string>
    <!-- About menu entry; leads mostly to (English language!) copyright notice.  -->
    <string name="about">About &amp; Copyright</string>
    <!-- Overflow menu entry to display result including leading digits. -->
+7 −1
Original line number Diff line number Diff line
@@ -170,10 +170,16 @@ public class BoundedRational {
        return new BoundedRational(num,den).maybeReduce();
    }

    public static class ZeroDivisionException extends ArithmeticException {
        public ZeroDivisionException() {
            super("Division by zero");
        }
    }

    static BoundedRational inverse(BoundedRational r) {
        if (r == null) return null;
        if (r.mNum.equals(BigInteger.ZERO)) {
            throw new ArithmeticException("Divide by Zero");
            throw new ZeroDivisionException();
        }
        return new BoundedRational(r.mDen, r.mNum);
    }
Loading