diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt b/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt
index 793b827..04631c9 100644
--- a/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt
+++ b/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt
@@ -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
diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/SettingsFragment.kt b/app/src/main/java/sh/sar/basedbank/ui/home/SettingsFragment.kt
index 8126e39..fdcc173 100644
--- a/app/src/main/java/sh/sar/basedbank/ui/home/SettingsFragment.kt
+++ b/app/src/main/java/sh/sar/basedbank/ui/home/SettingsFragment.kt
@@ -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(
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
index 5bb5cd8..f9ab945 100644
--- a/app/src/main/res/layout/fragment_settings.xml
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -100,6 +100,64 @@
android:layout_height="wrap_content"
android:text="@string/settings_change_lock" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Security
Change PIN / Pattern
Use Biometrics
+ Auto-lock
+ Off
+ 30s
+ 1m
+ 3m
+ 5m
Theme
System
Light