add auto lock
All checks were successful
Auto Tag on Version Change / check-version (push) Successful in 3s
All checks were successful
Auto Tag on Version Change / check-version (push) Successful in 3s
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user