diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/PreferenceWidgets.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/PreferenceWidgets.kt index b5db57c83..a1d45d4ec 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/settings/PreferenceWidgets.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/PreferenceWidgets.kt @@ -90,10 +90,10 @@ fun SwitchPreference(title: String, summary: String? = null, value: KMutableProp } @Composable -fun IntSliderPreference(maxValue: Int, minValue: Int = 0, step: Int = maxValue - minValue - 1, title: String, value: KMutableProperty0, enabled: Boolean = true) { +fun IntSliderPreference(maxValue: Int, minValue: Int = 0, step: Int = maxValue - minValue - 1, title: String, summary: String? = null, value: KMutableProperty0, enabled: Boolean = true) { var v by remember { mutableIntStateOf(value.get()) } fun set(float: Float) = value.set(float.roundToInt().also { v = it }) - SliderPref(title = title, defaultValue = v.toFloat(), onValueChangeFinished = ::set, valueRange = minValue.toFloat()..maxValue.toFloat(), showValue = true, showInteger = true, steps = step, enabled = enabled) + SliderPref(title = title, summary = summary, defaultValue = v.toFloat(), onValueChangeFinished = ::set, valueRange = minValue.toFloat()..maxValue.toFloat(), showValue = true, showInteger = true, steps = step, enabled = enabled) } @Composable diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/SecurityScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/SecurityScreen.kt index 46ca44c1d..09202c4d6 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/settings/SecurityScreen.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/SecurityScreen.kt @@ -18,6 +18,8 @@ import androidx.compose.ui.res.stringResource import com.hippo.ehviewer.R import com.hippo.ehviewer.Settings import com.hippo.ehviewer.ui.LocalNavController +import com.hippo.ehviewer.ui.compose.observed +import com.hippo.ehviewer.ui.compose.rememberedAccessor import com.hippo.ehviewer.ui.isAuthenticationSupported @Composable @@ -43,10 +45,13 @@ fun SecurityScreen() { value = Settings::security, enabled = LocalContext.current.isAuthenticationSupported(), ) + val securityDelay = Settings::securityDelay.observed + val summary = if (securityDelay.value == 0) stringResource(id = R.string.settings_privacy_require_unlock_delay_summary_immediately) else stringResource(id = R.string.settings_privacy_require_unlock_delay_summary, securityDelay.value) IntSliderPreference( maxValue = 30, title = stringResource(id = R.string.settings_privacy_require_unlock_delay), - value = Settings::securityDelay, + summary = summary, + value = securityDelay.rememberedAccessor, enabled = LocalContext.current.isAuthenticationSupported(), ) SwitchPreference( diff --git a/app/src/main/java/com/jamal/composeprefs3/ui/prefs/SliderPref.kt b/app/src/main/java/com/jamal/composeprefs3/ui/prefs/SliderPref.kt index b4a650526..d2a87b39d 100644 --- a/app/src/main/java/com/jamal/composeprefs3/ui/prefs/SliderPref.kt +++ b/app/src/main/java/com/jamal/composeprefs3/ui/prefs/SliderPref.kt @@ -24,6 +24,7 @@ import kotlin.math.roundToInt fun SliderPref( title: String, modifier: Modifier = Modifier, + summary: String? = null, defaultValue: Float = 0f, onValueChangeFinished: ((Float) -> Unit)? = null, valueRange: ClosedFloatingPointRange = 0f..1f, @@ -41,6 +42,7 @@ fun SliderPref( TextPref( title = title, modifier = modifier, + summary = summary, textColor = textColor, minimalHeight = true, leadingIcon = leadingIcon,