you can now hold to copy text from recipts even in full screen mode

This commit is contained in:
2026-05-21 01:04:23 +05:00
parent 58f1b9fd6f
commit f03e23062b
@@ -330,36 +330,48 @@ class TransferReceiptFragment : Fragment() {
} }
private fun showFullScreenReceipt() { private fun showFullScreenReceipt() {
captureReceiptBitmap { bitmap -> val ctx = requireContext()
if (bitmap == null) return@captureReceiptBitmap val bank = arguments?.getString(ARG_BANK, "MIB") ?: "MIB"
val ctx = requireContext() val dialog = Dialog(ctx, android.R.style.Theme_Black_NoTitleBar_Fullscreen)
val dialog = Dialog(ctx, android.R.style.Theme_Black_NoTitleBar_Fullscreen)
val iv = android.widget.ImageView(ctx).apply { val scrollView = android.widget.ScrollView(ctx).apply {
setImageBitmap(bitmap) setBackgroundColor(Color.BLACK)
scaleType = android.widget.ImageView.ScaleType.FIT_CENTER }
setBackgroundColor(Color.BLACK)
} val cardView = if (bank == "MIB") {
iv.setOnClickListener { dialog.dismiss() } val binding = FragmentReceiptMibBinding.inflate(layoutInflater)
dialog.setContentView(iv) bindMib(binding)
val actWin = requireActivity().window binding.receiptCard
val prevColor = actWin.statusBarColor } else {
val insetsCtrl = androidx.core.view.WindowInsetsControllerCompat(actWin, actWin.decorView) val binding = FragmentReceiptBmlBinding.inflate(layoutInflater)
actWin.statusBarColor = Color.BLACK bindBml(binding)
insetsCtrl.isAppearanceLightStatusBars = false binding.receiptCard
dialog.setOnDismissListener { }
actWin.statusBarColor = prevColor (cardView.parent as? ViewGroup)?.removeView(cardView)
val isLight = (resources.configuration.uiMode and cardView.setOnClickListener { dialog.dismiss() }
android.content.res.Configuration.UI_MODE_NIGHT_MASK) == scrollView.addView(cardView)
android.content.res.Configuration.UI_MODE_NIGHT_NO scrollView.setOnTouchListener { _, _ -> dialog.dismiss(); true }
insetsCtrl.isAppearanceLightStatusBars = isLight
} dialog.setContentView(scrollView)
dialog.show()
dialog.window?.let { win -> val actWin = requireActivity().window
androidx.core.view.WindowCompat.setDecorFitsSystemWindows(win, false) val prevColor = actWin.statusBarColor
androidx.core.view.WindowInsetsControllerCompat(win, iv).apply { val insetsCtrl = androidx.core.view.WindowInsetsControllerCompat(actWin, actWin.decorView)
hide(androidx.core.view.WindowInsetsCompat.Type.systemBars()) actWin.statusBarColor = Color.BLACK
systemBarsBehavior = androidx.core.view.WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE insetsCtrl.isAppearanceLightStatusBars = false
} dialog.setOnDismissListener {
actWin.statusBarColor = prevColor
val isLight = (resources.configuration.uiMode and
android.content.res.Configuration.UI_MODE_NIGHT_MASK) ==
android.content.res.Configuration.UI_MODE_NIGHT_NO
insetsCtrl.isAppearanceLightStatusBars = isLight
}
dialog.show()
dialog.window?.let { win ->
androidx.core.view.WindowCompat.setDecorFitsSystemWindows(win, false)
androidx.core.view.WindowInsetsControllerCompat(win, scrollView).apply {
hide(androidx.core.view.WindowInsetsCompat.Type.systemBars())
systemBarsBehavior = androidx.core.view.WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
} }
} }
} }