From 169c3c144cbc275376b2ab108958068085fa36df Mon Sep 17 00:00:00 2001 From: Shihaam Abdul Rahman Date: Sat, 26 Sep 2026 06:58:27 +0500 Subject: [PATCH] redesigned full screen for MIB recipt --- .../ui/home/TransferReceiptFragment.kt | 60 ++++++++++++ .../res/drawable/ic_mib_receipt_close.xml | 18 ++++ .../layout/dialog_receipt_fullscreen_mib.xml | 96 +++++++++++++++++++ .../main/res/layout/fragment_receipt_mib.xml | 1 + app/src/main/res/values-night/colors.xml | 1 + app/src/main/res/values/colors.xml | 2 + 6 files changed, 178 insertions(+) create mode 100644 app/src/main/res/drawable/ic_mib_receipt_close.xml create mode 100644 app/src/main/res/layout/dialog_receipt_fullscreen_mib.xml diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/TransferReceiptFragment.kt b/app/src/main/java/sh/sar/basedbank/ui/home/TransferReceiptFragment.kt index a071425..c6f67bf 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/TransferReceiptFragment.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/TransferReceiptFragment.kt @@ -35,6 +35,7 @@ import sh.sar.basedbank.BasedBankApp import sh.sar.basedbank.R import sh.sar.basedbank.api.mib.MibContactsClient import sh.sar.basedbank.databinding.DialogReceiptFullscreenBmlBinding +import sh.sar.basedbank.databinding.DialogReceiptFullscreenMibBinding import sh.sar.basedbank.databinding.FragmentReceiptBmlBinding import sh.sar.basedbank.databinding.FragmentReceiptMfaisaBinding import sh.sar.basedbank.databinding.FragmentReceiptMibBinding @@ -486,6 +487,7 @@ class TransferReceiptFragment : Fragment() { val ctx = requireContext() val bank = arguments?.getString(ARG_BANK, "MIB") ?: "MIB" if (bank == "BML") { showBmlFullScreenReceipt(); return } + if (bank == "MIB") { showMibFullScreenReceipt(); return } val dialog = Dialog(ctx, android.R.style.Theme_Black_NoTitleBar_Fullscreen) val scrollView = android.widget.ScrollView(ctx).apply { @@ -587,6 +589,64 @@ class TransferReceiptFragment : Fragment() { dialog.show() } + /** + * MIB full-screen receipt: edge-to-edge card whose green header runs under the + * (visible) status bar, a floating close button top-right just below the status bar, + * and MIB-styled Share/Save buttons pinned to the bottom. Follows the app theme. + */ + private fun showMibFullScreenReceipt() { + val ctx = requireContext() + val dialog = Dialog(ctx, R.style.Theme_BasedBank) + val page = DialogReceiptFullscreenMibBinding.inflate(layoutInflater) + + val cardBinding = FragmentReceiptMibBinding.inflate(layoutInflater).also { bindMib(it) } + val card = cardBinding.receiptCard + (card.parent as? ViewGroup)?.removeView(card) + page.cardHolder.addView(card, ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT + )) + + page.btnClose.setOnClickListener { dialog.dismiss() } + page.btnShareFull.setOnClickListener { shareReceipt() } + page.btnSaveFull.setOnClickListener { saveReceipt() } + + val header = cardBinding.receiptHeader + val headerBaseHeight = header.layoutParams.height + val headerBasePadding = header.paddingTop + val closeBaseMargin = (page.btnClose.layoutParams as ViewGroup.MarginLayoutParams).topMargin + val bottomBasePadding = page.bottomBar.paddingBottom + ViewCompat.setOnApplyWindowInsetsListener(page.root) { _, insets -> + val bars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + // Grow the green header under the status bar, keeping its content below it + header.layoutParams = header.layoutParams.apply { height = headerBaseHeight + bars.top } + header.updatePadding(top = headerBasePadding + bars.top) + page.btnClose.layoutParams = (page.btnClose.layoutParams as ViewGroup.MarginLayoutParams) + .apply { topMargin = closeBaseMargin + bars.top } + page.bottomBar.updatePadding(bottom = bottomBasePadding + bars.bottom) + page.root.updatePadding(left = bars.left, right = bars.right) + insets + } + + dialog.setContentView(page.root) + dialog.window?.let { win -> + win.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT) + androidx.core.view.WindowCompat.setDecorFitsSystemWindows(win, false) + @Suppress("DEPRECATION") + win.statusBarColor = Color.TRANSPARENT + @Suppress("DEPRECATION") + win.navigationBarColor = Color.TRANSPARENT + val isLight = (resources.configuration.uiMode and + android.content.res.Configuration.UI_MODE_NIGHT_MASK) == + android.content.res.Configuration.UI_MODE_NIGHT_NO + androidx.core.view.WindowInsetsControllerCompat(win, win.decorView).apply { + // Status bar sits over the green header, so always use light icons + isAppearanceLightStatusBars = false + isAppearanceLightNavigationBars = isLight + } + } + dialog.show() + } + private fun copyOnLongClick(vararg views: android.widget.TextView) { for (tv in views) { tv.setOnLongClickListener { diff --git a/app/src/main/res/drawable/ic_mib_receipt_close.xml b/app/src/main/res/drawable/ic_mib_receipt_close.xml new file mode 100644 index 0000000..05c8dce --- /dev/null +++ b/app/src/main/res/drawable/ic_mib_receipt_close.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/layout/dialog_receipt_fullscreen_mib.xml b/app/src/main/res/layout/dialog_receipt_fullscreen_mib.xml new file mode 100644 index 0000000..dc0e6b3 --- /dev/null +++ b/app/src/main/res/layout/dialog_receipt_fullscreen_mib.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_receipt_mib.xml b/app/src/main/res/layout/fragment_receipt_mib.xml index 6e6635b..95daa5f 100644 --- a/app/src/main/res/layout/fragment_receipt_mib.xml +++ b/app/src/main/res/layout/fragment_receipt_mib.xml @@ -25,6 +25,7 @@ diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index 7eac7fa..2a92fbb 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -15,4 +15,5 @@ #FFFFFF #33335C #FFFFFF + #000000 diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index c5277b9..4939a69 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -23,4 +23,6 @@ #CAC4D0 #000000 #1EA833 + #FFFFFF + #006FFC