diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/TransferFragment.kt b/app/src/main/java/sh/sar/basedbank/ui/home/TransferFragment.kt index d24a877..be1c034 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/TransferFragment.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/TransferFragment.kt @@ -498,6 +498,29 @@ class TransferFragment : Fragment() { updateTransferButton() } + /** + * Freezes the amount at a merchant's preset value. Unlike disabling the field this keeps it + * at full colour — it's the figure being paid, so it should read clearly — and a lock icon + * says why it can't be typed into. + */ + internal fun setAmountLocked(locked: Boolean) { + binding.etAmount.apply { + isFocusable = !locked + isFocusableInTouchMode = !locked + isCursorVisible = !locked + isLongClickable = !locked + if (locked) clearFocus() + } + binding.tilAmount.apply { + if (locked) { + endIconMode = com.google.android.material.textfield.TextInputLayout.END_ICON_CUSTOM + endIconDrawable = ContextCompat.getDrawable(requireContext(), R.drawable.ic_lock) + } else { + endIconMode = com.google.android.material.textfield.TextInputLayout.END_ICON_NONE + } + } + } + internal fun startLookupLoading() { val spinner = CircularProgressDrawable(requireContext()).apply { setStyle(CircularProgressDrawable.DEFAULT) @@ -1669,6 +1692,7 @@ class TransferFragment : Fragment() { binding.tilFrom.visibility = View.VISIBLE binding.tilAmount.prefixText = null binding.tilAmount.isEnabled = true + setAmountLocked(false) binding.tilRemarks.isEnabled = true binding.tilRemarks.alpha = 1f binding.etAmount.setText("") diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/transfer/BmlTransferHandler.kt b/app/src/main/java/sh/sar/basedbank/ui/home/transfer/BmlTransferHandler.kt index 9dd1b6d..a8bd22d 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/transfer/BmlTransferHandler.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/transfer/BmlTransferHandler.kt @@ -174,7 +174,7 @@ class BmlTransferHandler( if (qrInfo == null) return draft.bmlQrInfo = null draft.bmlGatewayQr = false - binding.tilAmount.isEnabled = true + fragment.setAmountLocked(false) binding.tilRemarks.isEnabled = true binding.tilRemarks.alpha = 1f binding.etAmount.setText("") @@ -293,7 +293,7 @@ class BmlTransferHandler( // Pre-fill amount if dynamic QR if (info.amount > 0.0) { binding.etAmount.setText("%.2f".format(info.amount)) - binding.tilAmount.isEnabled = false + fragment.setAmountLocked(true) } // Remarks not applicable for merchant QR payments diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/transfer/MfaisaTransferHandler.kt b/app/src/main/java/sh/sar/basedbank/ui/home/transfer/MfaisaTransferHandler.kt index 0bcbb5b..8a6509f 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/transfer/MfaisaTransferHandler.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/transfer/MfaisaTransferHandler.kt @@ -199,7 +199,7 @@ class MfaisaTransferHandler( fun clearQrMerchant() { if (qrInfo == null) return qrInfo = null - binding.tilAmount.isEnabled = true + fragment.setAmountLocked(false) binding.tilRemarks.isEnabled = true binding.tilRemarks.alpha = 1f binding.etAmount.setText("") @@ -288,7 +288,7 @@ class MfaisaTransferHandler( val dynamicAmount = merchant.txnAmount?.toDoubleOrNull() if (dynamicAmount != null && dynamicAmount > 0.0) { binding.etAmount.setText("%.2f".format(dynamicAmount)) - binding.tilAmount.isEnabled = false + fragment.setAmountLocked(true) } onRecipientChanged()