add auto lock
All checks were successful
Auto Tag on Version Change / check-version (push) Successful in 3s

This commit is contained in:
2026-05-15 02:58:51 +05:00
parent 81a67b2406
commit 246ebf0196
4 changed files with 119 additions and 0 deletions

View File

@@ -2,6 +2,8 @@ package sh.sar.basedbank.ui.home
import android.content.Intent
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.view.Menu
import android.view.MenuItem
import android.view.View
@@ -42,6 +44,16 @@ class HomeActivity : AppCompatActivity() {
private lateinit var binding: ActivityHomeBinding
private val viewModel: HomeViewModel by viewModels()
private val autolockHandler = Handler(Looper.getMainLooper())
private val autolockRunnable = Runnable {
val securitySet = getSharedPreferences("prefs", MODE_PRIVATE)
.getString("security_method", null) != null
if (securitySet) {
startActivity(Intent(this, sh.sar.basedbank.LockActivity::class.java))
finish()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityHomeBinding.inflate(layoutInflater)
@@ -133,6 +145,28 @@ class HomeActivity : AppCompatActivity() {
.commit()
}
override fun onResume() {
super.onResume()
resetAutolockTimer()
}
override fun onPause() {
super.onPause()
autolockHandler.removeCallbacks(autolockRunnable)
}
override fun onUserInteraction() {
super.onUserInteraction()
resetAutolockTimer()
}
private fun resetAutolockTimer() {
autolockHandler.removeCallbacks(autolockRunnable)
val timeout = getSharedPreferences("prefs", MODE_PRIVATE)
.getLong("autolock_timeout", 60_000L)
if (timeout > 0) autolockHandler.postDelayed(autolockRunnable, timeout)
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.toolbar_menu, menu)
return true

View File

@@ -60,6 +60,27 @@ class SettingsFragment : Fragment() {
setApplicationLocales(LocaleListCompat.forLanguageTags(tag))
}
// Auto-lock
val savedTimeout = prefs.getLong("autolock_timeout", 60_000L)
binding.autolockToggle.check(when (savedTimeout) {
0L -> R.id.btnAutolockOff
30_000L -> R.id.btnAutolock30s
180_000L -> R.id.btnAutolock3m
300_000L -> R.id.btnAutolock5m
else -> R.id.btnAutolock1m
})
binding.autolockToggle.addOnButtonCheckedListener { _, checkedId, isChecked ->
if (!isChecked) return@addOnButtonCheckedListener
val timeout = when (checkedId) {
R.id.btnAutolockOff -> 0L
R.id.btnAutolock30s -> 30_000L
R.id.btnAutolock3m -> 180_000L
R.id.btnAutolock5m -> 300_000L
else -> 60_000L
}
prefs.edit().putLong("autolock_timeout", timeout).apply()
}
// Change lock
binding.btnChangeLock.setOnClickListener {
(requireActivity() as HomeActivity).showWithBackStack(