From f5d9e531186d0f28dc2f6033d4c36c6d0206df0c Mon Sep 17 00:00:00 2001 From: riz081 Date: Mon, 23 Jun 2025 20:42:33 +0700 Subject: [PATCH] Safepoint Transaction-1 --- .../CreateTransactionActivity.java | 59 ++- .../layout/activity_create_transaction.xml | 471 ++++++++++-------- 2 files changed, 308 insertions(+), 222 deletions(-) diff --git a/app/src/main/java/com/example/bdkipoc/transaction/CreateTransactionActivity.java b/app/src/main/java/com/example/bdkipoc/transaction/CreateTransactionActivity.java index 6b1386e..8e3a4b5 100644 --- a/app/src/main/java/com/example/bdkipoc/transaction/CreateTransactionActivity.java +++ b/app/src/main/java/com/example/bdkipoc/transaction/CreateTransactionActivity.java @@ -9,13 +9,13 @@ import android.view.View; import android.widget.Button; import android.widget.FrameLayout; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; import com.example.bdkipoc.R; import com.example.bdkipoc.transaction.managers.CardScannerManager; @@ -29,7 +29,7 @@ import java.util.Locale; import com.example.bdkipoc.kredit.CreditCardActivity; /** - * CreateTransactionActivity - Refactored with Manager Classes + * CreateTransactionActivity - Updated UI to match screenshot design * Handles amount input and card scanning in one screen * Located in transaction package */ @@ -46,9 +46,11 @@ public class CreateTransactionActivity extends AppCompatActivity implements private Button btnConfirm; private Button btnToggleMode; private ProgressBar progressBar; + private LinearLayout backNavigation; - // Amount Input Keypad - private Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn0, btn00, btnClear; + // Amount Input Keypad (now TextViews) + private TextView btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn0, btn00; + private ImageView btnClear; // State Management private String transactionAmount = "0"; @@ -77,22 +79,15 @@ public class CreateTransactionActivity extends AppCompatActivity implements } private void initViews() { - // Setup Toolbar - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - if (getSupportActionBar() != null) { - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - getSupportActionBar().setTitle("Input Nominal Transaksi"); - } - // Initialize amount input UI components tvAmountDisplay = findViewById(R.id.tv_amount_display); tvModeIndicator = findViewById(R.id.tv_mode_indicator); btnConfirm = findViewById(R.id.btn_confirm); btnToggleMode = findViewById(R.id.btn_toggle_mode); progressBar = findViewById(R.id.progress_bar); + backNavigation = findViewById(R.id.back_navigation); - // Initialize keypad buttons + // Initialize keypad buttons (now TextViews) btn1 = findViewById(R.id.btn_1); btn2 = findViewById(R.id.btn_2); btn3 = findViewById(R.id.btn_3); @@ -126,10 +121,16 @@ public class CreateTransactionActivity extends AppCompatActivity implements } private void setupListeners() { - // Keypad number listeners + // Back navigation listener + backNavigation.setOnClickListener(v -> { + cleanup(); + finish(); + }); + + // Keypad number listeners for TextViews View.OnClickListener numberClickListener = v -> { - Button btn = (Button) v; - String number = btn.getText().toString(); + TextView textView = (TextView) v; + String number = textView.getText().toString(); appendToAmount(number); }; @@ -145,13 +146,13 @@ public class CreateTransactionActivity extends AppCompatActivity implements btn0.setOnClickListener(numberClickListener); btn00.setOnClickListener(numberClickListener); - // Clear button + // Clear button (ImageView) btnClear.setOnClickListener(v -> clearAmount()); // Confirm button - shows modal and starts scanning btnConfirm.setOnClickListener(v -> handleConfirmAmount()); - // Toggle mode button + // Toggle mode button (hidden but functional) btnToggleMode.setOnClickListener(v -> toggleEMVMode()); // Modal overlay click to close (only if not processing) @@ -184,11 +185,18 @@ public class CreateTransactionActivity extends AppCompatActivity implements private void updateAmountDisplay() { if (tvAmountDisplay != null) { - long amountCents = Long.parseLong(transactionAmount); - double amountRupiah = amountCents / 100.0; - NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("id", "ID")); - String formattedAmount = formatter.format(amountRupiah); - tvAmountDisplay.setText(formattedAmount); + if (transactionAmount.equals("0")) { + tvAmountDisplay.setText(""); + } else { + // Format the number with thousand separators but without currency symbol + long amountCents = Long.parseLong(transactionAmount); + + // Format as integer with thousand separators + NumberFormat formatter = NumberFormat.getNumberInstance(new Locale("id", "ID")); + String formattedAmount = formatter.format(amountCents); + + tvAmountDisplay.setText(formattedAmount); + } } } @@ -465,10 +473,9 @@ public class CreateTransactionActivity extends AppCompatActivity implements } @Override - public boolean onSupportNavigateUp() { + public void onBackPressed() { cleanup(); - finish(); - return true; + super.onBackPressed(); } @Override diff --git a/app/src/main/res/layout/activity_create_transaction.xml b/app/src/main/res/layout/activity_create_transaction.xml index 5f20624..5bd7e52 100644 --- a/app/src/main/res/layout/activity_create_transaction.xml +++ b/app/src/main/res/layout/activity_create_transaction.xml @@ -4,220 +4,298 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/colorBackground" - tools:context=".kredit.CreateTransactionActivity"> + android:background="#FFFFFF" + tools:context=".transaction.CreateTransactionActivity"> + android:fillViewport="true" + android:overScrollMode="never" + android:scrollbars="none" + android:background="#FFFFFF"> - + + + + + + + + + + android:orientation="horizontal" + android:gravity="center_vertical" + android:layout_marginStart="16dp" + android:layout_marginBottom="5dp" + android:background="?attr/selectableItemBackgroundBorderless" + android:padding="8dp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/red_status_bar"> - - + + + + + + + + + + - + android:padding="20dp"> - - - - - - - - - - - - - - - - - -