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(

View File

@@ -100,6 +100,64 @@
android:layout_height="wrap_content"
android:text="@string/settings_change_lock" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/settings_autolock"
android:textAppearance="?attr/textAppearanceBodyLarge"
android:textColor="?attr/colorOnSurface"
android:layout_marginTop="16dp"
android:layout_marginBottom="8dp" />
<com.google.android.material.button.MaterialButtonToggleGroup
android:id="@+id/autolockToggle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:singleSelection="true"
app:selectionRequired="true">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnAutolockOff"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/autolock_off" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnAutolock30s"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/autolock_30s" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnAutolock1m"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/autolock_1m" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnAutolock3m"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/autolock_3m" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnAutolock5m"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/autolock_5m" />
</com.google.android.material.button.MaterialButtonToggleGroup>
<LinearLayout
android:id="@+id/rowBiometrics"
android:layout_width="match_parent"

View File

@@ -89,6 +89,12 @@
<string name="settings_security">Security</string>
<string name="settings_change_lock">Change PIN / Pattern</string>
<string name="settings_biometrics">Use Biometrics</string>
<string name="settings_autolock">Auto-lock</string>
<string name="autolock_off">Off</string>
<string name="autolock_30s">30s</string>
<string name="autolock_1m">1m</string>
<string name="autolock_3m">3m</string>
<string name="autolock_5m">5m</string>
<string name="theme">Theme</string>
<string name="theme_system">System</string>
<string name="theme_light">Light</string>