Add Compose previews for reading and orientation mode dialogs

This commit is contained in:
arkon 2023-10-24 22:16:03 -04:00
parent 092d930175
commit 0a0b686119
2 changed files with 82 additions and 34 deletions

View file

@ -15,13 +15,13 @@ import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import eu.kanade.domain.manga.model.orientationType import eu.kanade.domain.manga.model.orientationType
import eu.kanade.presentation.components.AdaptiveSheet import eu.kanade.presentation.components.AdaptiveSheet
import eu.kanade.presentation.theme.TachiyomiTheme
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.ui.reader.setting.OrientationType import eu.kanade.tachiyomi.ui.reader.setting.OrientationType
import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsScreenModel import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsScreenModel
import tachiyomi.presentation.core.components.SettingsIconGrid import tachiyomi.presentation.core.components.SettingsIconGrid
import tachiyomi.presentation.core.components.material.IconToggleButton import tachiyomi.presentation.core.components.material.IconToggleButton
import tachiyomi.presentation.core.util.ThemePreviews
private val orientationTypeOptions = OrientationType.entries.map { it.stringRes to it }
@Composable @Composable
fun OrientationModeSelectDialog( fun OrientationModeSelectDialog(
@ -33,22 +33,46 @@ fun OrientationModeSelectDialog(
val orientationType = remember(manga) { OrientationType.fromPreference(manga?.orientationType?.toInt()) } val orientationType = remember(manga) { OrientationType.fromPreference(manga?.orientationType?.toInt()) }
AdaptiveSheet(onDismissRequest = onDismissRequest) { AdaptiveSheet(onDismissRequest = onDismissRequest) {
Box(modifier = Modifier.padding(vertical = 16.dp)) { DialogContent(
SettingsIconGrid(R.string.rotation_type) { orientationType = orientationType,
items(orientationTypeOptions) { (stringRes, mode) -> onChangeOrientation = {
IconToggleButton( screenModel.onChangeOrientation(it)
checked = mode == orientationType, onChange(it.stringRes)
onCheckedChange = { onDismissRequest()
screenModel.onChangeOrientation(mode) },
onChange(stringRes) )
onDismissRequest() }
}, }
modifier = Modifier.fillMaxWidth(),
imageVector = ImageVector.vectorResource(mode.iconRes), @Composable
title = stringResource(stringRes), private fun DialogContent(
) orientationType: OrientationType,
} onChangeOrientation: (OrientationType) -> Unit,
) {
Box(modifier = Modifier.padding(vertical = 16.dp)) {
SettingsIconGrid(R.string.rotation_type) {
items(OrientationType.entries) { mode ->
IconToggleButton(
checked = mode == orientationType,
onCheckedChange = {
onChangeOrientation(mode)
},
modifier = Modifier.fillMaxWidth(),
imageVector = ImageVector.vectorResource(mode.iconRes),
title = stringResource(mode.stringRes),
)
} }
} }
} }
} }
@ThemePreviews
@Composable
private fun DialogContentPreview() {
TachiyomiTheme {
DialogContent(
orientationType = OrientationType.DEFAULT,
onChangeOrientation = {},
)
}
}

View file

@ -15,14 +15,14 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource import androidx.compose.ui.res.vectorResource
import eu.kanade.domain.manga.model.readingModeType import eu.kanade.domain.manga.model.readingModeType
import eu.kanade.presentation.components.AdaptiveSheet import eu.kanade.presentation.components.AdaptiveSheet
import eu.kanade.presentation.theme.TachiyomiTheme
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsScreenModel import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsScreenModel
import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
import tachiyomi.presentation.core.components.SettingsIconGrid import tachiyomi.presentation.core.components.SettingsIconGrid
import tachiyomi.presentation.core.components.material.IconToggleButton import tachiyomi.presentation.core.components.material.IconToggleButton
import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.components.material.padding
import tachiyomi.presentation.core.util.ThemePreviews
private val readingModeOptions = ReadingModeType.entries.map { it.stringRes to it }
@Composable @Composable
fun ReadingModeSelectDialog( fun ReadingModeSelectDialog(
@ -34,22 +34,46 @@ fun ReadingModeSelectDialog(
val readingMode = remember(manga) { ReadingModeType.fromPreference(manga?.readingModeType?.toInt()) } val readingMode = remember(manga) { ReadingModeType.fromPreference(manga?.readingModeType?.toInt()) }
AdaptiveSheet(onDismissRequest = onDismissRequest) { AdaptiveSheet(onDismissRequest = onDismissRequest) {
Box(modifier = Modifier.padding(vertical = MaterialTheme.padding.medium)) { DialogContent(
SettingsIconGrid(R.string.pref_category_reading_mode) { readingMode = readingMode,
items(readingModeOptions) { (stringRes, mode) -> onChangeReadingMode = {
IconToggleButton( screenModel.onChangeReadingMode(it)
checked = mode == readingMode, onChange(it.stringRes)
onCheckedChange = { onDismissRequest()
screenModel.onChangeReadingMode(mode) },
onChange(stringRes) )
onDismissRequest() }
}, }
modifier = Modifier.fillMaxWidth(),
imageVector = ImageVector.vectorResource(mode.iconRes), @Composable
title = stringResource(stringRes), private fun DialogContent(
) readingMode: ReadingModeType,
} onChangeReadingMode: (ReadingModeType) -> Unit,
) {
Box(modifier = Modifier.padding(vertical = MaterialTheme.padding.medium)) {
SettingsIconGrid(R.string.pref_category_reading_mode) {
items(ReadingModeType.entries) { mode ->
IconToggleButton(
checked = mode == readingMode,
onCheckedChange = {
onChangeReadingMode(mode)
},
modifier = Modifier.fillMaxWidth(),
imageVector = ImageVector.vectorResource(mode.iconRes),
title = stringResource(mode.stringRes),
)
} }
} }
} }
} }
@ThemePreviews
@Composable
private fun DialogContentPreview() {
TachiyomiTheme {
DialogContent(
readingMode = ReadingModeType.DEFAULT,
onChangeReadingMode = {},
)
}
}