Merge branch 'lineage-21.0' of https://github.com/LineageOS/android_packages_apps_ExactCalculator into leaf-3.2

Change-Id: I6f2decb7c57dcbcea209fcb032ae599d55f8a33d
diff --git a/res/layout-land/input_pad.xml b/res/layout-land/input_pad.xml
index 5ac6b57..e216d37 100644
--- a/res/layout-land/input_pad.xml
+++ b/res/layout-land/input_pad.xml
@@ -13,38 +13,15 @@
     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"
diff --git a/res/layout/input_pad.xml b/res/layout/input_pad.xml
index b20cd35..9dc2b72 100644
--- a/res/layout/input_pad.xml
+++ b/res/layout/input_pad.xml
@@ -13,37 +13,14 @@
     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"
diff --git a/src/com/android/calculator2/Calculator.java b/src/com/android/calculator2/Calculator.java
index d0afdd1..fb59668 100644
--- a/src/com/android/calculator2/Calculator.java
+++ b/src/com/android/calculator2/Calculator.java
@@ -50,6 +50,7 @@
 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 @@
 
 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 @@
 
     private TextView mModeView;
     private CalculatorFormula mFormulaText;
+    private HapticButton mDeleteButton;
     private CalculatorResult mResultText;
     private HorizontalScrollView mFormulaContainer;
     private MotionLayout mMainCalculator;
@@ -320,6 +323,7 @@
         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 @@
 
         mFormulaText.setOnTextSizeChangeListener(this);
         mFormulaText.addTextChangedListener(mFormulaTextWatcher);
+        mDeleteButton.setOnLongClickListener(this);
 
         if (savedInstanceState != null) {
             restoreInstanceState(savedInstanceState);
@@ -716,9 +721,6 @@
             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 @@
                 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 @@
                 ? 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) {