From 440db13a0f12712c63ea6cde61b133560312deb9 Mon Sep 17 00:00:00 2001 From: Shihaam Abdul Rahman Date: Fri, 25 Sep 2026 04:35:31 +0500 Subject: [PATCH] also add search button to keyboard in transfer page to feild and move focus to amount feild on search search or to field fill --- .../sar/basedbank/ui/home/TransferFragment.kt | 39 +++++++++++++++---- .../home/transfer/FahipayTransferHandler.kt | 1 + .../ui/home/transfer/MfaisaTransferHandler.kt | 1 + app/src/main/res/layout/fragment_transfer.xml | 3 +- 4 files changed, 36 insertions(+), 8 deletions(-) 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 bf2f125..2a7d4a9 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 @@ -342,6 +342,7 @@ class TransferFragment : Fragment() { val colorHex = bundle.getString(ContactPickerSheetFragment.KEY_COLOR) ?: "#607D8B" val imageHash = bundle.getString(ContactPickerSheetFragment.KEY_IMAGE_HASH) prefillToDirectly(accountNumber, label, subtitle, colorHex, imageHash) + focusAmount() if (selectedAccount == null) { val defaultNum = CredentialStore(requireContext()).getDefaultAccountNumber() if (defaultNum != null) { @@ -726,13 +727,12 @@ class TransferFragment : Fragment() { } private fun setupAccountLookup() { - binding.tilTo.setEndIconOnClickListener { - // M-Faisa source uses an entirely different lookup path (phone → basicBeneDetails) - if (selectedAccount?.bank == "MFAISA") { - mfaisaHandler().searchRecipient(binding.etTo.text?.toString().orEmpty()) - } else { - lookupAccount() - } + binding.tilTo.setEndIconOnClickListener { searchTo() } + binding.etTo.setOnEditorActionListener { _, actionId, _ -> + if (actionId == android.view.inputmethod.EditorInfo.IME_ACTION_SEARCH) { + searchTo() + true + } else false } binding.btnClearToInfo.setOnClickListener { @@ -774,6 +774,28 @@ class TransferFragment : Fragment() { setupContactDropdown() } + private fun searchTo() { + // M-Faisa source uses an entirely different lookup path (phone → basicBeneDetails) + if (selectedAccount?.bank == "MFAISA") { + mfaisaHandler().searchRecipient(binding.etTo.text?.toString().orEmpty()) + } else { + lookupAccount() + } + } + + /** Moves focus to the amount field and brings up the keyboard once a recipient is resolved. */ + internal fun focusAmount() { + val et = binding.etAmount + // Posted so it runs after the To-row visibility changes and any closing picker sheet + et.post { + if (_binding == null) return@post + et.requestFocus() + et.setSelection(et.text?.length ?: 0) + val imm = requireContext().getSystemService(Context.INPUT_METHOD_SERVICE) as android.view.inputmethod.InputMethodManager + imm.showSoftInput(et, android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT) + } + } + /** Live "search contacts as you type" dropdown on the To field (shown once 3+ chars are entered). */ private fun setupContactDropdown() { val adapter = ContactDropdownAdapter(requireContext()) { selectedAccount?.bank == "MFAISA" } @@ -793,6 +815,7 @@ class TransferFragment : Fragment() { colorHex = contact.bankColor, imageHash = contact.customerImgHash ) + focusAmount() } } @@ -831,6 +854,7 @@ class TransferFragment : Fragment() { colorHex = matchedContact.bankColor, imageHash = matchedContact.customerImgHash ) + focusAmount() return } @@ -922,6 +946,7 @@ class TransferFragment : Fragment() { binding.cardToInfo.visibility = View.VISIBLE updateTransferButton() saveToRecents(info) + focusAmount() when { matchedAcc?.profileImageHash != null -> diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/transfer/FahipayTransferHandler.kt b/app/src/main/java/sh/sar/basedbank/ui/home/transfer/FahipayTransferHandler.kt index ba29b08..525d091 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/transfer/FahipayTransferHandler.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/transfer/FahipayTransferHandler.kt @@ -194,5 +194,6 @@ class FahipayTransferHandler( colorHex = "#FF6B00", imageHash = null ) + fragment.focusAmount() } } 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 1926223..8a3f2d7 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 @@ -121,6 +121,7 @@ class MfaisaTransferHandler( } else { recipient = result showResolvedRecipient(result) + fragment.focusAmount() } } catch (_: MfaisaRecipientNotFoundException) { binding.tilTo.error = "No M-Faisa wallet found for this number" diff --git a/app/src/main/res/layout/fragment_transfer.xml b/app/src/main/res/layout/fragment_transfer.xml index 64ff153..d0a5a61 100644 --- a/app/src/main/res/layout/fragment_transfer.xml +++ b/app/src/main/res/layout/fragment_transfer.xml @@ -156,7 +156,8 @@ android:inputType="textNoSuggestions" android:maxLines="1" android:completionThreshold="3" - android:dropDownHeight="wrap_content" /> + android:dropDownHeight="wrap_content" + android:imeOptions="actionSearch" />