🛠️ Change "Visibility animation" to Switch

* Changed from Slider (0-100) to Switch (off-on)
This commit is contained in:
Acclorite 2025-03-11 19:52:08 +02:00
parent 8981c92df3
commit 1c0e259179
11 changed files with 21 additions and 20 deletions

View file

@ -50,7 +50,7 @@ object DataStoreConstants {
val HORIZONTAL_GESTURE = stringPreferencesKey("horizontal_gesture")
val HORIZONTAL_GESTURE_SCROLL = doublePreferencesKey("horizontal_gesture_scroll")
val HORIZONTAL_GESTURE_SENSITIVITY = doublePreferencesKey("horizontal_gesture_sensitivity")
val HORIZONTAL_GESTURE_ALPHA_ANIM = doublePreferencesKey("horizontal_gesture_alpha_anim")
val HORIZONTAL_GESTURE_ALPHA_ANIM = booleanPreferencesKey("horizontal_gesture_alpha_anim_bool")
val BOTTOM_BAR_PADDING = intPreferencesKey("bottom_bar_padding")
val HIGHLIGHTED_READING = booleanPreferencesKey("highlighted_reading")
val HIGHLIGHTED_READING_THICKNESS = intPreferencesKey("highlighted_reading_thickness")

View file

@ -57,7 +57,7 @@ fun ReaderContent(
horizontalGesture: ReaderHorizontalGesture,
horizontalGestureScroll: Float,
horizontalGestureSensitivity: Dp,
horizontalGestureAlphaAnim: Float,
horizontalGestureAlphaAnim: Boolean,
highlightedReading: Boolean,
highlightedReadingThickness: FontWeight,
progress: String,

View file

@ -34,7 +34,7 @@ fun Modifier.readerHorizontalGesture(
horizontalGesture: ReaderHorizontalGesture,
horizontalGestureScroll: Float,
horizontalGestureSensitivity: Dp,
horizontalGestureAlphaAnim: Float,
horizontalGestureAlphaAnim: Boolean,
isLoading: Boolean
): Modifier {
if (horizontalGesture == ReaderHorizontalGesture.OFF || isLoading) return this
@ -71,9 +71,9 @@ fun Modifier.readerHorizontalGesture(
@Composable
fun calculateAlpha(): Float {
return animateFloatAsState(
1f - abs(with(density) { horizontalOffset.floatValue.toDp() }.value)
if (!alphaAnim.value) 1f
else 1f - abs(with(density) { horizontalOffset.floatValue.toDp() }.value)
.div(sensitivity.value.value)
.times(alphaAnim.value)
).value
}

View file

@ -57,7 +57,7 @@ fun ReaderLayout(
horizontalGesture: ReaderHorizontalGesture,
horizontalGestureScroll: Float,
horizontalGestureSensitivity: Dp,
horizontalGestureAlphaAnim: Float,
horizontalGestureAlphaAnim: Boolean,
highlightedReading: Boolean,
highlightedReadingThickness: FontWeight,
progress: String,

View file

@ -61,7 +61,7 @@ fun ReaderScaffold(
horizontalGesture: ReaderHorizontalGesture,
horizontalGestureScroll: Float,
horizontalGestureSensitivity: Dp,
horizontalGestureAlphaAnim: Float,
horizontalGestureAlphaAnim: Boolean,
highlightedReading: Boolean,
highlightedReadingThickness: FontWeight,
progress: String,

View file

@ -12,7 +12,7 @@ import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import ua.acclorite.book_story.R
import ua.acclorite.book_story.domain.reader.ReaderHorizontalGesture
import ua.acclorite.book_story.presentation.core.components.settings.SliderWithTitle
import ua.acclorite.book_story.presentation.core.components.settings.SwitchWithTitle
import ua.acclorite.book_story.ui.main.MainEvent
import ua.acclorite.book_story.ui.main.MainModel
import ua.acclorite.book_story.ui.theme.ExpandingTransition
@ -28,13 +28,14 @@ fun HorizontalGestureAlphaAnimOption() {
else -> true
}
) {
SliderWithTitle(
value = state.value.horizontalGestureAlphaAnim to "%",
toValue = 100,
SwitchWithTitle(
selected = state.value.horizontalGestureAlphaAnim,
title = stringResource(id = R.string.horizontal_gesture_alpha_anim_option),
onValueChange = {
onClick = {
mainModel.onEvent(
MainEvent.OnChangeHorizontalGestureAlphaAnim(it)
MainEvent.OnChangeHorizontalGestureAlphaAnim(
!state.value.horizontalGestureAlphaAnim
)
)
}
)

View file

@ -65,5 +65,5 @@ sealed class MainEvent {
data class OnChangeBrowsePinnedPaths(val value: String) : MainEvent()
data class OnChangeFontThickness(val value: String) : MainEvent()
data class OnChangeProgressCount(val value: String) : MainEvent()
data class OnChangeHorizontalGestureAlphaAnim(val value: Float) : MainEvent()
data class OnChangeHorizontalGestureAlphaAnim(val value: Boolean) : MainEvent()
}

View file

@ -501,9 +501,9 @@ class MainModel @Inject constructor(
is MainEvent.OnChangeHorizontalGestureAlphaAnim -> handleDatastoreUpdate(
key = DataStoreConstants.HORIZONTAL_GESTURE_ALPHA_ANIM,
value = event.value.toDouble(),
value = event.value,
updateState = {
it.copy(horizontalGestureAlphaAnim = this.toFloat())
it.copy(horizontalGestureAlphaAnim = this)
}
)
}

View file

@ -100,7 +100,7 @@ data class MainState(
},
val horizontalGestureScroll: Float = provideDefaultValue { 0.7f },
val horizontalGestureSensitivity: Float = provideDefaultValue { 0.6f },
val horizontalGestureAlphaAnim: Float = provideDefaultValue { 1f },
val horizontalGestureAlphaAnim: Boolean = provideDefaultValue { true },
val bottomBarPadding: Int = provideDefaultValue { 0 },
val highlightedReading: Boolean = provideDefaultValue { false },
val highlightedReadingThickness: Int = provideDefaultValue { 2 },
@ -367,7 +367,7 @@ data class MainState(
) { progressCount },
horizontalGestureAlphaAnim = provideValue(
HORIZONTAL_GESTURE_ALPHA_ANIM, convert = { toFloat() }
HORIZONTAL_GESTURE_ALPHA_ANIM
) { horizontalGestureAlphaAnim },
)
}

View file

@ -186,7 +186,7 @@
<string name="horizontal_gesture_option">Горизонтальний жест</string>
<string name="horizontal_gesture_scroll_option">Частка прокрутки</string>
<string name="horizontal_gesture_sensitivity_option">Чутливість</string>
<string name="horizontal_gesture_alpha_anim_option">Анімувати видимість</string>
<string name="horizontal_gesture_alpha_anim_option">Анімація видимості</string>
<string name="bottom_bar_padding_option">Відступ нижньої панелі</string>
<string name="highlighted_reading_option">Підсвічування слів</string>
<string name="highlighted_reading_option_desc">Підсвічувати початок кожного слова</string>

View file

@ -217,7 +217,7 @@
<string name="horizontal_gesture_option">Horizontal gesture</string>
<string name="horizontal_gesture_scroll_option">Scroll fraction</string>
<string name="horizontal_gesture_sensitivity_option">Sensitivity</string>
<string name="horizontal_gesture_alpha_anim_option">Animate visibility</string>
<string name="horizontal_gesture_alpha_anim_option">Visibility animation</string>
<string name="bottom_bar_padding_option">Bottom bar margin</string>
<string name="highlighted_reading_option">Highlight words</string>
<string name="highlighted_reading_option_desc">Highlight the beginning of each word</string>