Rework on the wheel picker (#8559)
* Rework the wheel picker doesn't need for the animation to stop to change the value * fix --------- Co-authored-by: arkon <arkon@users.noreply.github.com>
This commit is contained in:
@@ -1,15 +1,12 @@
|
||||
package eu.kanade.presentation.more.settings.screen
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.compose.foundation.BorderStroke
|
||||
import androidx.compose.foundation.layout.BoxWithConstraints
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Surface
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.runtime.Composable
|
||||
@@ -23,7 +20,6 @@ import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.alpha
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.pluralStringResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
@@ -35,10 +31,11 @@ import androidx.core.content.ContextCompat
|
||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import cafe.adriel.voyager.navigator.Navigator
|
||||
import cafe.adriel.voyager.navigator.currentOrThrow
|
||||
import com.commandiron.wheel_picker_compose.WheelPicker
|
||||
import eu.kanade.domain.category.interactor.ResetCategoryFlags
|
||||
import eu.kanade.domain.library.service.LibraryPreferences
|
||||
import eu.kanade.presentation.category.visualName
|
||||
import eu.kanade.presentation.components.WheelPicker
|
||||
import eu.kanade.presentation.components.WheelPickerDefaults
|
||||
import eu.kanade.presentation.more.settings.Preference
|
||||
import eu.kanade.presentation.more.settings.widget.TriStateListDialog
|
||||
import eu.kanade.presentation.util.collectAsState
|
||||
@@ -337,12 +334,7 @@ object SettingsLibraryScreen : SearchableSettings {
|
||||
modifier = modifier,
|
||||
contentAlignment = Alignment.Center,
|
||||
) {
|
||||
Surface(
|
||||
modifier = Modifier.size(maxWidth, maxHeight / 3),
|
||||
shape = MaterialTheme.shapes.large,
|
||||
color = MaterialTheme.colorScheme.primary.copy(alpha = 0.2f),
|
||||
border = BorderStroke(1.dp, MaterialTheme.colorScheme.primary),
|
||||
) {}
|
||||
WheelPickerDefaults.Background(size = DpSize(maxWidth, maxHeight))
|
||||
|
||||
val size = DpSize(width = maxWidth / 2, height = 128.dp)
|
||||
Row {
|
||||
@@ -350,48 +342,24 @@ object SettingsLibraryScreen : SearchableSettings {
|
||||
size = size,
|
||||
count = 11,
|
||||
startIndex = portraitValue,
|
||||
onScrollFinished = {
|
||||
onPortraitChange(it)
|
||||
null
|
||||
},
|
||||
) { index, snappedIndex ->
|
||||
ColumnPickerLabel(index = index, snappedIndex = snappedIndex)
|
||||
onSelectionChanged = onPortraitChange,
|
||||
backgroundContent = null,
|
||||
) { index ->
|
||||
WheelPickerDefaults.Item(text = getColumnValue(value = index))
|
||||
}
|
||||
WheelPicker(
|
||||
size = size,
|
||||
count = 11,
|
||||
startIndex = landscapeValue,
|
||||
onScrollFinished = {
|
||||
onLandscapeChange(it)
|
||||
null
|
||||
},
|
||||
) { index, snappedIndex ->
|
||||
ColumnPickerLabel(index = index, snappedIndex = snappedIndex)
|
||||
onSelectionChanged = onLandscapeChange,
|
||||
backgroundContent = null,
|
||||
) { index ->
|
||||
WheelPickerDefaults.Item(text = getColumnValue(value = index))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun ColumnPickerLabel(
|
||||
index: Int,
|
||||
snappedIndex: Int,
|
||||
) {
|
||||
Text(
|
||||
modifier = Modifier.alpha(
|
||||
when (snappedIndex) {
|
||||
index + 1 -> 0.2f
|
||||
index -> 1f
|
||||
index - 1 -> 0.2f
|
||||
else -> 0.2f
|
||||
},
|
||||
),
|
||||
text = getColumnValue(index),
|
||||
style = MaterialTheme.typography.titleMedium,
|
||||
maxLines = 1,
|
||||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
@ReadOnlyComposable
|
||||
private fun getColumnValue(value: Int): String {
|
||||
|
||||
Reference in New Issue
Block a user