redesign pin and pattern UI, add settings for changing lock and enable/disable biometrics and add button to lock app from any screen

This commit is contained in:
2026-05-15 02:52:20 +05:00
parent 8d1869bafa
commit 81a67b2406
10 changed files with 219 additions and 49 deletions
@@ -2,6 +2,8 @@ package sh.sar.basedbank.ui.home
import android.content.Intent
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.Toast
import androidx.activity.viewModels
@@ -131,6 +133,21 @@ class HomeActivity : AppCompatActivity() {
.commit()
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.toolbar_menu, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == R.id.action_lock) {
startActivity(Intent(this, sh.sar.basedbank.LockActivity::class.java))
finish()
return true
}
return super.onOptionsItemSelected(item)
}
private fun autoRefresh(
mibCreds: CredentialStore.MibCredentials?,
bmlCreds: CredentialStore.BmlCredentials?,
@@ -7,10 +7,12 @@ import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatDelegate
import androidx.appcompat.app.AppCompatDelegate.setApplicationLocales
import androidx.biometric.BiometricManager
import androidx.core.os.LocaleListCompat
import androidx.fragment.app.Fragment
import sh.sar.basedbank.R
import sh.sar.basedbank.databinding.FragmentSettingsBinding
import sh.sar.basedbank.ui.onboarding.SecuritySetupFragment
class SettingsFragment : Fragment() {
@@ -25,7 +27,7 @@ class SettingsFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val prefs = requireContext().getSharedPreferences("prefs", Context.MODE_PRIVATE)
// Set initial selection
// Theme
val saved = prefs.getString("theme", "system")
val initialId = when (saved) {
"light" -> R.id.btnThemeLight
@@ -57,6 +59,24 @@ class SettingsFragment : Fragment() {
val tag = if (checkedId == R.id.btnLangDhivehi) "dv" else "en"
setApplicationLocales(LocaleListCompat.forLanguageTags(tag))
}
// Change lock
binding.btnChangeLock.setOnClickListener {
(requireActivity() as HomeActivity).showWithBackStack(
SecuritySetupFragment.newInstance(changeMode = true)
)
}
// Biometrics toggle — only show if device supports it
val canUseBiometrics = BiometricManager.from(requireContext())
.canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_WEAK) == BiometricManager.BIOMETRIC_SUCCESS
if (canUseBiometrics) {
binding.rowBiometrics.visibility = View.VISIBLE
binding.switchBiometrics.isChecked = prefs.getBoolean("biometrics_enabled", false)
binding.switchBiometrics.setOnCheckedChangeListener { _, isChecked ->
prefs.edit().putBoolean("biometrics_enabled", isChecked).apply()
}
}
}
override fun onResume() {