(cherry picked from commit 3ebf39bd55cffbf5dc4bfe1c39e91aa22fa93777) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt # app/src/main/res/values/arrays.xml
156 lines
5.6 KiB
Kotlin
156 lines
5.6 KiB
Kotlin
package eu.kanade.presentation.reader
|
|
|
|
import androidx.compose.foundation.background
|
|
import androidx.compose.foundation.isSystemInDarkTheme
|
|
import androidx.compose.foundation.layout.Arrangement
|
|
import androidx.compose.foundation.layout.Row
|
|
import androidx.compose.foundation.layout.fillMaxWidth
|
|
import androidx.compose.foundation.layout.padding
|
|
import androidx.compose.material.icons.Icons
|
|
import androidx.compose.material.icons.outlined.FormatListNumbered
|
|
import androidx.compose.material.icons.outlined.Public
|
|
import androidx.compose.material.icons.outlined.Settings
|
|
import androidx.compose.material.icons.outlined.Share
|
|
import androidx.compose.material3.Icon
|
|
import androidx.compose.material3.IconButton
|
|
import androidx.compose.material3.MaterialTheme
|
|
import androidx.compose.material3.surfaceColorAtElevation
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.ui.Alignment
|
|
import androidx.compose.ui.Modifier
|
|
import androidx.compose.ui.res.painterResource
|
|
import androidx.compose.ui.res.stringResource
|
|
import androidx.compose.ui.unit.dp
|
|
import eu.kanade.tachiyomi.R
|
|
import eu.kanade.tachiyomi.ui.reader.setting.OrientationType
|
|
import eu.kanade.tachiyomi.ui.reader.setting.ReaderBottomButton
|
|
import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
|
|
|
|
@Composable
|
|
fun BottomReaderBar(
|
|
// SY -->
|
|
enabledButtons: Set<String>,
|
|
// SY <--
|
|
readingMode: ReadingModeType,
|
|
onClickReadingMode: () -> Unit,
|
|
orientationMode: OrientationType,
|
|
onClickOrientationMode: () -> Unit,
|
|
cropEnabled: Boolean,
|
|
onClickCropBorder: () -> Unit,
|
|
onClickSettings: () -> Unit,
|
|
// SY -->
|
|
isHttpSource: Boolean,
|
|
dualPageSplitEnabled: Boolean,
|
|
doublePages: Boolean,
|
|
onClickChapterList: () -> Unit,
|
|
onClickWebView: () -> Unit,
|
|
onClickShare: () -> Unit,
|
|
onClickPageLayout: () -> Unit,
|
|
onClickShiftPage: () -> Unit,
|
|
// SY <--
|
|
) {
|
|
// Match with toolbar background color set in ReaderActivity
|
|
val backgroundColor = MaterialTheme.colorScheme
|
|
.surfaceColorAtElevation(3.dp)
|
|
.copy(alpha = if (isSystemInDarkTheme()) 0.9f else 0.95f)
|
|
|
|
Row(
|
|
modifier = Modifier
|
|
.fillMaxWidth()
|
|
.background(backgroundColor)
|
|
.padding(8.dp),
|
|
horizontalArrangement = Arrangement.SpaceEvenly,
|
|
verticalAlignment = Alignment.CenterVertically,
|
|
) {
|
|
// SY -->
|
|
if (ReaderBottomButton.ViewChapters.isIn(enabledButtons)) {
|
|
IconButton(onClick = onClickChapterList) {
|
|
Icon(
|
|
imageVector = Icons.Outlined.FormatListNumbered,
|
|
contentDescription = stringResource(R.string.chapters),
|
|
)
|
|
}
|
|
}
|
|
|
|
if (ReaderBottomButton.WebView.isIn(enabledButtons) && isHttpSource) {
|
|
IconButton(onClick = onClickWebView) {
|
|
Icon(
|
|
imageVector = Icons.Outlined.Public,
|
|
contentDescription = stringResource(R.string.action_open_in_web_view),
|
|
)
|
|
}
|
|
}
|
|
|
|
if (ReaderBottomButton.Share.isIn(enabledButtons) && isHttpSource) {
|
|
IconButton(onClick = onClickShare) {
|
|
Icon(
|
|
imageVector = Icons.Outlined.Share,
|
|
contentDescription = stringResource(R.string.action_share),
|
|
)
|
|
}
|
|
}
|
|
|
|
if (ReaderBottomButton.ReadingMode.isIn(enabledButtons)) {
|
|
IconButton(onClick = onClickReadingMode) {
|
|
Icon(
|
|
painter = painterResource(readingMode.iconRes),
|
|
contentDescription = stringResource(R.string.viewer),
|
|
)
|
|
}
|
|
}
|
|
|
|
val cropBorders = when (readingMode) {
|
|
ReadingModeType.WEBTOON -> ReaderBottomButton.CropBordersWebtoon
|
|
ReadingModeType.CONTINUOUS_VERTICAL -> ReaderBottomButton.CropBordersContinuesVertical
|
|
else -> ReaderBottomButton.CropBordersPager
|
|
}
|
|
if (cropBorders.isIn(enabledButtons)) {
|
|
IconButton(onClick = onClickCropBorder) {
|
|
Icon(
|
|
painter = painterResource(if (cropEnabled) R.drawable.ic_crop_24dp else R.drawable.ic_crop_off_24dp),
|
|
contentDescription = stringResource(R.string.pref_crop_borders),
|
|
)
|
|
}
|
|
}
|
|
|
|
if (ReaderBottomButton.Rotation.isIn(enabledButtons)) {
|
|
IconButton(onClick = onClickOrientationMode) {
|
|
Icon(
|
|
painter = painterResource(orientationMode.iconRes),
|
|
contentDescription = stringResource(R.string.pref_rotation_type),
|
|
)
|
|
}
|
|
}
|
|
|
|
if (
|
|
!dualPageSplitEnabled &&
|
|
ReaderBottomButton.PageLayout.isIn(enabledButtons) &&
|
|
ReadingModeType.isPagerType(readingMode.flagValue)
|
|
) {
|
|
IconButton(onClick = onClickPageLayout) {
|
|
Icon(
|
|
painter = painterResource(R.drawable.ic_book_open_variant_24dp),
|
|
contentDescription = stringResource(R.string.page_layout),
|
|
)
|
|
}
|
|
}
|
|
|
|
if (doublePages) {
|
|
IconButton(onClick = onClickShiftPage) {
|
|
Icon(
|
|
painter = painterResource(R.drawable.ic_page_next_outline_24dp),
|
|
contentDescription = stringResource(R.string.shift_double_pages),
|
|
)
|
|
}
|
|
}
|
|
|
|
IconButton(onClick = onClickSettings) {
|
|
Icon(
|
|
imageVector = Icons.Outlined.Settings,
|
|
contentDescription = stringResource(R.string.action_settings),
|
|
)
|
|
}
|
|
// SY <--
|
|
}
|
|
}
|