commit 3e78218f35b9133162fde06f5fd4ff82c6841ea0
parent 7c963392e5f6fe1aa5ac33b813183339e964ec67
Author: Bohdan Potuzhnyi <bohdan.potuzhnyi@gmail.com>
Date: Fri, 23 Jan 2026 13:20:35 +0100
[merchant-terminal] update of the amount order screen for smartphones
Diffstat:
7 files changed, 557 insertions(+), 270 deletions(-)
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
@@ -11,7 +11,7 @@
<entry name="!?*.kt" />
<entry name="!?*.clj" />
</wildcardResourcePatterns>
- <bytecodeTargetLevel target="21">
+ <bytecodeTargetLevel target="17">
<module name="common_commonMain" target="1.6" />
<module name="common_commonTest" target="1.6" />
<module name="common_jvmMain" target="1.6" />
diff --git a/merchant-terminal/build.gradle b/merchant-terminal/build.gradle
@@ -13,8 +13,8 @@ android {
applicationId "net.taler.merchantpos"
minSdkVersion 23
targetSdkVersion 36
- versionCode 18
- versionName "1.3.0"
+ versionCode 19
+ versionName "1.3.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
buildConfigField("String", "BACKEND_API_VERSION", "\"20:0:8\"")
diff --git a/merchant-terminal/src/main/res/layout-sw600dp/fragment_amount_entry.xml b/merchant-terminal/src/main/res/layout-sw600dp/fragment_amount_entry.xml
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:padding="16dp">
+
+ <TextView
+ android:id="@+id/amountView"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:ellipsize="start"
+ android:gravity="end"
+ android:maxLines="1"
+ android:paddingHorizontal="12dp"
+ android:textAppearance="?attr/textAppearanceHeadlineLarge"
+ android:textSize="56sp"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintEnd_toStartOf="@+id/currencyLayout"
+ app:layout_constraintHorizontal_chainStyle="packed"
+ tools:text="12.34" />
+
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/currencyLayout"
+ style="@style/Widget.Material3.TextInputLayout.OutlinedBox.Dense"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ app:boxBackgroundMode="outline"
+ app:endIconMode="dropdown_menu"
+ app:layout_constraintTop_toTopOf="@+id/amountView"
+ app:layout_constraintBottom_toBottomOf="@+id/amountView"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/amountView">
+
+ <com.google.android.material.textfield.MaterialAutoCompleteTextView
+ android:id="@+id/currencyView"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:inputType="none"
+ android:paddingHorizontal="16dp"
+ tools:text="EUR" />
+ </com.google.android.material.textfield.TextInputLayout>
+
+ <androidx.constraintlayout.widget.Guideline
+ android:id="@+id/guidelineNumpadStart"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ app:layout_constraintGuide_percent="0.2" />
+
+ <androidx.constraintlayout.widget.Guideline
+ android:id="@+id/guidelineNumpadEnd"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ app:layout_constraintGuide_percent="0.8" />
+
+ <androidx.constraintlayout.widget.Guideline
+ android:id="@+id/guidelineCharge"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ app:layout_constraintGuide_percent="0.8" />
+
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:id="@+id/numpad"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_marginTop="16dp"
+ android:layout_marginBottom="12dp"
+ app:layout_constraintBottom_toTopOf="@+id/guidelineCharge"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintEnd_toStartOf="@+id/guidelineNumpadEnd"
+ app:layout_constraintStart_toEndOf="@+id/guidelineNumpadStart"
+ app:layout_constraintTop_toBottomOf="@+id/amountView">
+
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key1"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_margin="4dp"
+ android:text="1"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toStartOf="@+id/key2"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toTopOf="@+id/key4"
+ app:layout_constraintHorizontal_chainStyle="spread"
+ app:layout_constraintVertical_chainStyle="spread" />
+
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key2"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_margin="4dp"
+ android:text="2"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toStartOf="@+id/key3"
+ app:layout_constraintStart_toEndOf="@+id/key1"
+ app:layout_constraintTop_toTopOf="@+id/key1"
+ app:layout_constraintBottom_toBottomOf="@+id/key1" />
+
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key3"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_margin="4dp"
+ android:text="3"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/key2"
+ app:layout_constraintTop_toTopOf="@+id/key1"
+ app:layout_constraintBottom_toBottomOf="@+id/key1" />
+
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key4"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_margin="4dp"
+ android:text="4"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toStartOf="@+id/key5"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/key1"
+ app:layout_constraintBottom_toTopOf="@+id/key7"
+ app:layout_constraintHorizontal_chainStyle="spread" />
+
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key5"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_margin="4dp"
+ android:text="5"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toStartOf="@+id/key6"
+ app:layout_constraintStart_toEndOf="@+id/key4"
+ app:layout_constraintTop_toTopOf="@+id/key4"
+ app:layout_constraintBottom_toBottomOf="@+id/key4" />
+
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key6"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_margin="4dp"
+ android:text="6"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/key5"
+ app:layout_constraintTop_toTopOf="@+id/key4"
+ app:layout_constraintBottom_toBottomOf="@+id/key4" />
+
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key7"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_margin="4dp"
+ android:text="7"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toStartOf="@+id/key8"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/key4"
+ app:layout_constraintBottom_toTopOf="@+id/keyClear"
+ app:layout_constraintHorizontal_chainStyle="spread" />
+
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key8"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_margin="4dp"
+ android:text="8"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toStartOf="@+id/key9"
+ app:layout_constraintStart_toEndOf="@+id/key7"
+ app:layout_constraintTop_toTopOf="@+id/key7"
+ app:layout_constraintBottom_toBottomOf="@+id/key7" />
+
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key9"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_margin="4dp"
+ android:text="9"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/key8"
+ app:layout_constraintTop_toTopOf="@+id/key7"
+ app:layout_constraintBottom_toBottomOf="@+id/key7" />
+
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/keyClear"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_margin="4dp"
+ android:singleLine="true"
+ android:text="@string/amount_entry_clear"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="22sp"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toStartOf="@+id/key0"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/key7"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintHorizontal_chainStyle="spread" />
+
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key0"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_margin="4dp"
+ android:text="0"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toStartOf="@+id/keyBackspace"
+ app:layout_constraintStart_toEndOf="@+id/keyClear"
+ app:layout_constraintTop_toTopOf="@+id/keyClear"
+ app:layout_constraintBottom_toBottomOf="@+id/keyClear" />
+
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/keyBackspace"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_margin="4dp"
+ android:contentDescription="@string/amount_entry_backspace"
+ android:gravity="center"
+ android:padding="0dp"
+ android:singleLine="true"
+ android:text=""
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:icon="@drawable/ic_backspace"
+ app:iconGravity="textStart"
+ app:iconPadding="0dp"
+ app:iconSize="34dp"
+ app:iconTint="@color/amount_entry_key_text"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/key0"
+ app:layout_constraintTop_toTopOf="@+id/keyClear"
+ app:layout_constraintBottom_toBottomOf="@+id/keyClear" />
+ </androidx.constraintlayout.widget.ConstraintLayout>
+
+ <Button
+ android:id="@+id/chargeButton"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_marginBottom="8dp"
+ android:backgroundTint="@color/complete_button_bottom"
+ android:text="@string/amount_entry_create_order_charge"
+ android:textAllCaps="false"
+ android:textSize="20sp"
+ app:layout_constraintTop_toBottomOf="@+id/guidelineCharge"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toStartOf="@+id/guidelineNumpadEnd"
+ app:layout_constraintStart_toEndOf="@+id/guidelineNumpadStart" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/merchant-terminal/src/main/res/layout/dialog_mfa_challenge.xml b/merchant-terminal/src/main/res/layout/dialog_mfa_challenge.xml
@@ -1,19 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ This file is part of GNU Taler
- ~ (C) 2026 Taler Systems S.A.
- ~
- ~ GNU Taler is free software; you can redistribute it and/or modify it under the
- ~ terms of the GNU General Public License as published by the Free Software
- ~ Foundation; either version 3, or (at your option) any later version.
- ~
- ~ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
- ~ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- ~ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- ~
- ~ You should have received a copy of the GNU General Public License along with
- ~ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
- -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
diff --git a/merchant-terminal/src/main/res/layout/fragment_amount_entry.xml b/merchant-terminal/src/main/res/layout/fragment_amount_entry.xml
@@ -1,290 +1,291 @@
-<?xml version="1.0" encoding="utf-8"?><!--
- ~ This file is part of GNU Taler
- ~ (C) 2026 Taler Systems S.A.
- ~
- ~ GNU Taler is free software; you can redistribute it and/or modify it under the
- ~ terms of the GNU General Public License as published by the Free Software
- ~ Foundation; either version 3, or (at your option) any later version.
- ~
- ~ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
- ~ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- ~ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- ~
- ~ You should have received a copy of the GNU General Public License along with
- ~ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
- -->
+<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:padding="16dp">
+ android:layout_height="match_parent">
- <TextView
- android:id="@+id/amountView"
+ <androidx.constraintlayout.widget.Guideline
+ android:id="@+id/guidelineSplit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:ellipsize="start"
- android:gravity="end"
- android:maxLines="1"
- android:paddingHorizontal="12dp"
- android:textAppearance="?attr/textAppearanceHeadlineLarge"
- android:textSize="56sp"
+ android:orientation="vertical"
+ app:layout_constraintGuide_percent="0.3" />
+
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:id="@+id/amountPane"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:padding="16dp"
app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toStartOf="@+id/guidelineSplit"
app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintEnd_toStartOf="@+id/currencyLayout"
- app:layout_constraintHorizontal_chainStyle="packed"
- tools:text="12.34" />
+ app:layout_constraintBottom_toBottomOf="parent">
- <com.google.android.material.textfield.TextInputLayout
- android:id="@+id/currencyLayout"
- style="@style/Widget.Material3.TextInputLayout.OutlinedBox.Dense"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- app:boxBackgroundMode="outline"
- app:endIconMode="dropdown_menu"
- app:layout_constraintTop_toTopOf="@+id/amountView"
- app:layout_constraintBottom_toBottomOf="@+id/amountView"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toEndOf="@+id/amountView">
+ <TextView
+ android:id="@+id/amountView"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:ellipsize="start"
+ android:gravity="end"
+ android:maxLines="1"
+ android:paddingHorizontal="12dp"
+ android:textAppearance="?attr/textAppearanceHeadlineLarge"
+ android:textSize="56sp"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toTopOf="@+id/currencyLayout"
+ app:layout_constraintVertical_chainStyle="packed"
+ tools:text="12.34" />
- <com.google.android.material.textfield.MaterialAutoCompleteTextView
- android:id="@+id/currencyView"
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/currencyLayout"
+ style="@style/Widget.Material3.TextInputLayout.OutlinedBox.Dense"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:inputType="none"
- android:paddingHorizontal="16dp"
- tools:text="EUR" />
- </com.google.android.material.textfield.TextInputLayout>
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guidelineNumpadStart"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- app:layout_constraintGuide_percent="0.2" />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guidelineNumpadEnd"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- app:layout_constraintGuide_percent="0.8" />
+ app:boxBackgroundMode="outline"
+ app:endIconMode="dropdown_menu"
+ app:layout_constraintTop_toBottomOf="@+id/amountView"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent">
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guidelineCharge"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- app:layout_constraintGuide_percent="0.8" />
+ <com.google.android.material.textfield.MaterialAutoCompleteTextView
+ android:id="@+id/currencyView"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:inputType="none"
+ android:paddingHorizontal="16dp"
+ tools:text="EUR" />
+ </com.google.android.material.textfield.TextInputLayout>
+ </androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
- android:id="@+id/numpad"
+ android:id="@+id/keypadPane"
android:layout_width="0dp"
android:layout_height="0dp"
- android:layout_marginTop="16dp"
- android:layout_marginBottom="12dp"
- app:layout_constraintBottom_toTopOf="@+id/guidelineCharge"
+ android:padding="8dp"
+ app:layout_constraintStart_toStartOf="@+id/guidelineSplit"
app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintEnd_toStartOf="@+id/guidelineNumpadEnd"
- app:layout_constraintStart_toEndOf="@+id/guidelineNumpadStart"
- app:layout_constraintTop_toBottomOf="@+id/amountView">
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent">
- <com.google.android.material.button.MaterialButton
- android:id="@+id/key1"
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:id="@+id/numpad"
android:layout_width="0dp"
android:layout_height="0dp"
- android:layout_margin="4dp"
- android:text="1"
- android:textColor="@color/amount_entry_key_text"
- android:textSize="@dimen/amount_entry_key_text_size"
- app:backgroundTint="@color/amount_entry_key_background"
- app:layout_constraintEnd_toStartOf="@+id/key2"
- app:layout_constraintStart_toStartOf="parent"
+ android:layout_marginBottom="4dp"
app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintBottom_toTopOf="@+id/key4"
- app:layout_constraintHorizontal_chainStyle="spread"
- app:layout_constraintVertical_chainStyle="spread" />
+ app:layout_constraintBottom_toTopOf="@+id/chargeButton"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent">
- <com.google.android.material.button.MaterialButton
- android:id="@+id/key2"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_margin="4dp"
- android:text="2"
- android:textColor="@color/amount_entry_key_text"
- android:textSize="@dimen/amount_entry_key_text_size"
- app:backgroundTint="@color/amount_entry_key_background"
- app:layout_constraintEnd_toStartOf="@+id/key3"
- app:layout_constraintStart_toEndOf="@+id/key1"
- app:layout_constraintTop_toTopOf="@+id/key1"
- app:layout_constraintBottom_toBottomOf="@+id/key1" />
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key1"
+ style="@style/Widget.AmountEntry.Key"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_margin="2dp"
+ android:text="1"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toStartOf="@+id/key2"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toTopOf="@+id/key4"
+ app:layout_constraintHorizontal_chainStyle="spread"
+ app:layout_constraintVertical_chainStyle="spread" />
- <com.google.android.material.button.MaterialButton
- android:id="@+id/key3"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_margin="4dp"
- android:text="3"
- android:textColor="@color/amount_entry_key_text"
- android:textSize="@dimen/amount_entry_key_text_size"
- app:backgroundTint="@color/amount_entry_key_background"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toEndOf="@+id/key2"
- app:layout_constraintTop_toTopOf="@+id/key1"
- app:layout_constraintBottom_toBottomOf="@+id/key1" />
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key2"
+ style="@style/Widget.AmountEntry.Key"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_marginHorizontal="2dp"
+ android:text="2"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toStartOf="@+id/key3"
+ app:layout_constraintStart_toEndOf="@+id/key1"
+ app:layout_constraintTop_toTopOf="@+id/key1"
+ app:layout_constraintBottom_toBottomOf="@+id/key1" />
- <com.google.android.material.button.MaterialButton
- android:id="@+id/key4"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_margin="4dp"
- android:text="4"
- android:textColor="@color/amount_entry_key_text"
- android:textSize="@dimen/amount_entry_key_text_size"
- app:backgroundTint="@color/amount_entry_key_background"
- app:layout_constraintEnd_toStartOf="@+id/key5"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/key1"
- app:layout_constraintBottom_toTopOf="@+id/key7"
- app:layout_constraintHorizontal_chainStyle="spread" />
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key3"
+ style="@style/Widget.AmountEntry.Key"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_marginHorizontal="2dp"
+ android:text="3"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/key2"
+ app:layout_constraintTop_toTopOf="@+id/key1"
+ app:layout_constraintBottom_toBottomOf="@+id/key1" />
- <com.google.android.material.button.MaterialButton
- android:id="@+id/key5"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_margin="4dp"
- android:text="5"
- android:textColor="@color/amount_entry_key_text"
- android:textSize="@dimen/amount_entry_key_text_size"
- app:backgroundTint="@color/amount_entry_key_background"
- app:layout_constraintEnd_toStartOf="@+id/key6"
- app:layout_constraintStart_toEndOf="@+id/key4"
- app:layout_constraintTop_toTopOf="@+id/key4"
- app:layout_constraintBottom_toBottomOf="@+id/key4" />
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key4"
+ style="@style/Widget.AmountEntry.Key"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_margin="2dp"
+ android:text="4"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toStartOf="@+id/key5"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/key1"
+ app:layout_constraintBottom_toTopOf="@+id/key7"
+ app:layout_constraintHorizontal_chainStyle="spread" />
- <com.google.android.material.button.MaterialButton
- android:id="@+id/key6"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_margin="4dp"
- android:text="6"
- android:textColor="@color/amount_entry_key_text"
- android:textSize="@dimen/amount_entry_key_text_size"
- app:backgroundTint="@color/amount_entry_key_background"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toEndOf="@+id/key5"
- app:layout_constraintTop_toTopOf="@+id/key4"
- app:layout_constraintBottom_toBottomOf="@+id/key4" />
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key5"
+ style="@style/Widget.AmountEntry.Key"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_marginHorizontal="2dp"
+ android:text="5"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toStartOf="@+id/key6"
+ app:layout_constraintStart_toEndOf="@+id/key4"
+ app:layout_constraintTop_toTopOf="@+id/key4"
+ app:layout_constraintBottom_toBottomOf="@+id/key4" />
- <com.google.android.material.button.MaterialButton
- android:id="@+id/key7"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_margin="4dp"
- android:text="7"
- android:textColor="@color/amount_entry_key_text"
- android:textSize="@dimen/amount_entry_key_text_size"
- app:backgroundTint="@color/amount_entry_key_background"
- app:layout_constraintEnd_toStartOf="@+id/key8"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/key4"
- app:layout_constraintBottom_toTopOf="@+id/keyClear"
- app:layout_constraintHorizontal_chainStyle="spread" />
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key6"
+ style="@style/Widget.AmountEntry.Key"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_marginHorizontal="2dp"
+ android:text="6"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/key5"
+ app:layout_constraintTop_toTopOf="@+id/key4"
+ app:layout_constraintBottom_toBottomOf="@+id/key4" />
- <com.google.android.material.button.MaterialButton
- android:id="@+id/key8"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_margin="4dp"
- android:text="8"
- android:textColor="@color/amount_entry_key_text"
- android:textSize="@dimen/amount_entry_key_text_size"
- app:backgroundTint="@color/amount_entry_key_background"
- app:layout_constraintEnd_toStartOf="@+id/key9"
- app:layout_constraintStart_toEndOf="@+id/key7"
- app:layout_constraintTop_toTopOf="@+id/key7"
- app:layout_constraintBottom_toBottomOf="@+id/key7" />
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key7"
+ style="@style/Widget.AmountEntry.Key"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_margin="2dp"
+ android:text="7"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toStartOf="@+id/key8"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/key4"
+ app:layout_constraintBottom_toTopOf="@+id/keyClear"
+ app:layout_constraintHorizontal_chainStyle="spread" />
- <com.google.android.material.button.MaterialButton
- android:id="@+id/key9"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_margin="4dp"
- android:text="9"
- android:textColor="@color/amount_entry_key_text"
- android:textSize="@dimen/amount_entry_key_text_size"
- app:backgroundTint="@color/amount_entry_key_background"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toEndOf="@+id/key8"
- app:layout_constraintTop_toTopOf="@+id/key7"
- app:layout_constraintBottom_toBottomOf="@+id/key7" />
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key8"
+ style="@style/Widget.AmountEntry.Key"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_marginHorizontal="2dp"
+ android:text="8"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toStartOf="@+id/key9"
+ app:layout_constraintStart_toEndOf="@+id/key7"
+ app:layout_constraintTop_toTopOf="@+id/key7"
+ app:layout_constraintBottom_toBottomOf="@+id/key7" />
- <com.google.android.material.button.MaterialButton
- android:id="@+id/keyClear"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_margin="4dp"
- android:singleLine="true"
- android:text="@string/amount_entry_clear"
- android:textColor="@color/amount_entry_key_text"
- android:textSize="22sp"
- app:backgroundTint="@color/amount_entry_key_background"
- app:layout_constraintEnd_toStartOf="@+id/key0"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/key7"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintHorizontal_chainStyle="spread" />
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key9"
+ style="@style/Widget.AmountEntry.Key"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_marginHorizontal="2dp"
+ android:text="9"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/key8"
+ app:layout_constraintTop_toTopOf="@+id/key7"
+ app:layout_constraintBottom_toBottomOf="@+id/key7" />
- <com.google.android.material.button.MaterialButton
- android:id="@+id/key0"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_margin="4dp"
- android:text="0"
- android:textColor="@color/amount_entry_key_text"
- android:textSize="@dimen/amount_entry_key_text_size"
- app:backgroundTint="@color/amount_entry_key_background"
- app:layout_constraintEnd_toStartOf="@+id/keyBackspace"
- app:layout_constraintStart_toEndOf="@+id/keyClear"
- app:layout_constraintTop_toTopOf="@+id/keyClear"
- app:layout_constraintBottom_toBottomOf="@+id/keyClear" />
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/keyClear"
+ style="@style/Widget.AmountEntry.Key"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_margin="2dp"
+ android:singleLine="true"
+ android:text="@string/amount_entry_clear"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="22sp"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toStartOf="@+id/key0"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/key7"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintHorizontal_chainStyle="spread" />
+
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/key0"
+ style="@style/Widget.AmountEntry.Key"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_marginHorizontal="2dp"
+ android:text="0"
+ android:textColor="@color/amount_entry_key_text"
+ android:textSize="@dimen/amount_entry_key_text_size"
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:layout_constraintEnd_toStartOf="@+id/keyBackspace"
+ app:layout_constraintStart_toEndOf="@+id/keyClear"
+ app:layout_constraintTop_toTopOf="@+id/keyClear"
+ app:layout_constraintBottom_toBottomOf="@+id/keyClear" />
+
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/keyBackspace"
+ style="@style/Widget.AmountEntry.Key"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_marginHorizontal="2dp"
+ android:contentDescription="@string/amount_entry_backspace"
+ android:gravity="center"
+ android:singleLine="true"
+ android:text=""
+ app:backgroundTint="@color/amount_entry_key_background"
+ app:icon="@drawable/ic_backspace"
+ app:iconGravity="textStart"
+ app:iconPadding="0dp"
+ app:iconSize="34dp"
+ app:iconTint="@color/amount_entry_key_text"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/key0"
+ app:layout_constraintTop_toTopOf="@+id/keyClear"
+ app:layout_constraintBottom_toBottomOf="@+id/keyClear" />
+ </androidx.constraintlayout.widget.ConstraintLayout>
- <com.google.android.material.button.MaterialButton
- android:id="@+id/keyBackspace"
+ <Button
+ android:id="@+id/chargeButton"
android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_margin="4dp"
- android:contentDescription="@string/amount_entry_backspace"
- android:gravity="center"
- android:padding="0dp"
- android:singleLine="true"
- android:text=""
- app:backgroundTint="@color/amount_entry_key_background"
- app:icon="@drawable/ic_backspace"
- app:iconGravity="textStart"
- app:iconPadding="0dp"
- app:iconSize="34dp"
- app:iconTint="@color/amount_entry_key_text"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toEndOf="@+id/key0"
- app:layout_constraintTop_toTopOf="@+id/keyClear"
- app:layout_constraintBottom_toBottomOf="@+id/keyClear" />
+ android:layout_height="wrap_content"
+ android:backgroundTint="@color/complete_button_bottom"
+ android:text="@string/amount_entry_create_order_charge"
+ android:textAllCaps="false"
+ android:textSize="20sp"
+ app:layout_constraintTop_toBottomOf="@+id/numpad"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
- <Button
- android:id="@+id/chargeButton"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_marginBottom="8dp"
- android:backgroundTint="@color/complete_button_bottom"
- android:text="@string/amount_entry_create_order_charge"
- android:textAllCaps="false"
- android:textSize="20sp"
- app:layout_constraintTop_toBottomOf="@+id/guidelineCharge"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toStartOf="@+id/guidelineNumpadEnd"
- app:layout_constraintStart_toEndOf="@+id/guidelineNumpadStart" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
+</androidx.constraintlayout.widget.ConstraintLayout>
+\ No newline at end of file
diff --git a/merchant-terminal/src/main/res/values-night/styles.xml b/merchant-terminal/src/main/res/values-night/styles.xml
@@ -15,5 +15,17 @@
<item name="android:windowLightNavigationBar" tools:targetApi="o_mr1">false</item>
</style>
+ <style name="Widget.AmountEntry.Key" parent="Widget.Material3.Button">
+ <item name="android:minWidth">0dp</item>
+ <item name="android:minHeight">0dp</item>
+
+ <item name="android:insetLeft">0dp</item>
+ <item name="android:insetRight">0dp</item>
+ <item name="android:insetTop">0dp</item>
+ <item name="android:insetBottom">0dp</item>
+
+ <item name="android:padding">0dp</item>
+ </style>
+
</resources>
diff --git a/merchant-terminal/src/main/res/values/styles.xml b/merchant-terminal/src/main/res/values/styles.xml
@@ -95,4 +95,16 @@
<item name="android:statusBarColor">@color/colorPrimary</item>
</style>
+ <style name="Widget.AmountEntry.Key" parent="Widget.Material3.Button">
+ <item name="android:minWidth">0dp</item>
+ <item name="android:minHeight">0dp</item>
+
+ <item name="android:insetLeft">0dp</item>
+ <item name="android:insetRight">0dp</item>
+ <item name="android:insetTop">0dp</item>
+ <item name="android:insetBottom">0dp</item>
+
+ <item name="android:padding">0dp</item>
+ </style>
+
</resources>