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