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

Commit 737dfc62 authored by Joey's avatar Joey
Browse files

ExactCalculator: bring back separate parentheses buttons

A single parenthesis button does not allow to write all possible
valid expressions that the calculator supports.

Example expression that could not be written:
  1*((2+3)*(4+5)+pi)!

To make space for the two buttons, move back the clear button
to the long-press action of the delete button.

Reverts: 9691e2fe
Reverts: 3daf951a

Change-Id: I8fe696e23d75545a1ee23641448ea31ce31da0c0
parent c63de70e
Loading
Loading
Loading
Loading
+2 −26
Original line number Diff line number Diff line
@@ -12,39 +12,16 @@
    android:layout_height="match_parent"
    android:background="?colorSurface">

    <com.android.calculator2.HapticButton
        android:id="@+id/clr"
        style="@style/PadButtonStyle.Caps"
        android:contentDescription="@string/desc_clr"
        android:text="@string/clr"
        android:theme="@style/Theme.Button.Clear"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@id/columnGuide4"
        app:layout_constraintTop_toBottomOf="@id/rowGuide3" />

    <com.android.calculator2.HapticButton
        android:id="@+id/paren"
        style="@style/PadButtonStyle"
        android:contentDescription="@string/desc_paren"
        android:text="@string/paren"
        android:theme="@style/Theme.Button.Operator"
        app:layout_constraintBottom_toTopOf="@id/rowGuide3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@id/columnGuide4"
        app:layout_constraintTop_toTopOf="@id/rowGuide2" />

    <com.android.calculator2.HapticButton
        android:id="@+id/lparen"
        style="@style/PadButtonStyle"
        android:contentDescription="@string/desc_lparen"
        android:text="@string/lparen"
        android:theme="@style/Theme.Button.Operator"
        android:visibility="gone"
        app:layout_constraintBottom_toTopOf="@id/rowGuide3"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@id/columnGuide4"
        app:layout_constraintTop_toTopOf="@id/rowGuide2" />
        app:layout_constraintTop_toBottomOf="@id/rowGuide3" />

    <com.android.calculator2.HapticButton
        android:id="@+id/rparen"
@@ -52,7 +29,6 @@
        android:contentDescription="@string/desc_rparen"
        android:text="@string/rparen"
        android:theme="@style/Theme.Button.Operator"
        android:visibility="gone"
        app:layout_constraintBottom_toTopOf="@id/rowGuide3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@id/columnGuide4"
+2 −26
Original line number Diff line number Diff line
@@ -12,38 +12,15 @@
    android:layout_height="match_parent"
    android:background="?colorSurface">

    <com.android.calculator2.HapticButton
        android:id="@+id/clr"
        style="@style/PadButtonStyle.Caps"
        android:contentDescription="@string/desc_clr"
        android:text="@string/clr"
        android:theme="@style/Theme.Button.Clear"
        app:layout_constraintBottom_toTopOf="@id/rowGuide1"
        app:layout_constraintEnd_toStartOf="@id/columnGuide1"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <com.android.calculator2.HapticButton
        android:id="@+id/paren"
        style="@style/PadButtonStyle"
        android:contentDescription="@string/desc_paren"
        android:text="@string/paren"
        android:theme="@style/Theme.Button.Operator"
        app:layout_constraintBottom_toTopOf="@id/rowGuide1"
        app:layout_constraintEnd_toStartOf="@id/columnGuide2"
        app:layout_constraintStart_toStartOf="@id/columnGuide1"
        app:layout_constraintTop_toTopOf="parent" />

    <com.android.calculator2.HapticButton
        android:id="@+id/lparen"
        style="@style/PadButtonStyle"
        android:contentDescription="@string/desc_lparen"
        android:text="@string/lparen"
        android:theme="@style/Theme.Button.Operator"
        android:visibility="gone"
        app:layout_constraintBottom_toTopOf="@id/rowGuide1"
        app:layout_constraintEnd_toStartOf="@id/columnGuide2"
        app:layout_constraintStart_toStartOf="@id/columnGuide1"
        app:layout_constraintEnd_toStartOf="@id/columnGuide1"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <com.android.calculator2.HapticButton
@@ -52,7 +29,6 @@
        android:contentDescription="@string/desc_rparen"
        android:text="@string/rparen"
        android:theme="@style/Theme.Button.Operator"
        android:visibility="gone"
        app:layout_constraintBottom_toTopOf="@id/rowGuide1"
        app:layout_constraintEnd_toStartOf="@id/columnGuide2"
        app:layout_constraintStart_toStartOf="@id/columnGuide1"
+16 −16
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.view.ViewTreeObserver;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.HorizontalScrollView;
@@ -77,7 +78,8 @@ import java.text.DecimalFormatSymbols;

public class Calculator extends AppCompatActivity
        implements OnTextSizeChangeListener, AlertDialogFragment.OnClickListener,
        Evaluator.EvaluationListener /* for main result */ {
        Evaluator.EvaluationListener, /* for main result */
        OnLongClickListener {

    private static final String TAG = "Calculator";
    /**
@@ -219,6 +221,7 @@ public class Calculator extends AppCompatActivity

    private TextView mModeView;
    private CalculatorFormula mFormulaText;
    private HapticButton mDeleteButton;
    private CalculatorResult mResultText;
    private HorizontalScrollView mFormulaContainer;
    private MotionLayout mMainCalculator;
@@ -320,6 +323,7 @@ public class Calculator extends AppCompatActivity
        mMainCalculator = findViewById(R.id.main_calculator);
        mModeView = (TextView) findViewById(R.id.mode);
        mFormulaText = (CalculatorFormula) findViewById(R.id.formula);
        mDeleteButton = (HapticButton) findViewById(R.id.del);
        mResultText = (CalculatorResult) findViewById(R.id.result);
        mFormulaContainer = (HorizontalScrollView) findViewById(R.id.formula_scroll_view);
        mEvaluator = Evaluator.getInstance(this);
@@ -383,6 +387,7 @@ public class Calculator extends AppCompatActivity

        mFormulaText.setOnTextSizeChangeListener(this);
        mFormulaText.addTextChangedListener(mFormulaTextWatcher);
        mDeleteButton.setOnLongClickListener(this);

        if (savedInstanceState != null) {
            restoreInstanceState(savedInstanceState);
@@ -716,9 +721,6 @@ public class Calculator extends AppCompatActivity
            onEquals();
        } else if (id == R.id.del) {
            onDelete();
        } else if (id == R.id.clr) {
            onClear();
            return;  // Toolbar visibility adjusted at end of animation.
        } else if (id == R.id.toggle_inv) {
            final boolean selected = !mInverseToggle.isSelected();
            mInverseToggle.setSelected(selected);
@@ -744,18 +746,6 @@ public class Calculator extends AppCompatActivity
                evaluateInstantIfNecessary();
            }
            return;
        } else if (id == R.id.paren) {
            String expr = mEvaluator.getExprAsString(0);
            int openCount = expr.length() - expr.replace(KeyMaps.toString(this, R.id.lparen), "")
                    .length();
            int closeCount = expr.length() - expr.replace(KeyMaps.toString(this, R.id.rparen), "")
                    .length();

            if (openCount > closeCount && !expr.endsWith(KeyMaps.toString(this, R.id.lparen))) {
                addChars(KeyMaps.toString(this, R.id.rparen), true);
            } else {
                addChars(KeyMaps.toString(this, R.id.lparen), true);
            }
        } else {
            cancelIfEvaluating(false);
            if (haveUnprocessed()) {
@@ -782,6 +772,16 @@ public class Calculator extends AppCompatActivity
                ? getString(R.string.desc_formula) : null);
    }

    @Override
    public boolean onLongClick(View view) {
        if (view.getId() == R.id.del) {
            onClear();
            return true;
        }
        return false;
    }


    // Initial evaluation completed successfully.  Initiate display.
    public void onEvaluate(long index, int initDisplayPrec, int msd, int leastDigPos,
            String truncatedWholeNumber) {