Make reader bottom sheet scrollable and fix insets

This commit is contained in:
FooIbar committed 2024-03-14 16:05:08 +08:00
1 parent 866fff3e45
commit fd3c87be22
6 files changed
+32 -20

No files matched your search

@@ -2,7 +2,10 @@ package com.hippo.ehviewer.ui.reader
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Brightness5
import androidx.compose.material3.Icon
@@ -25,7 +28,7 @@ import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.asMutableState
@Composable
fun ColorFilterSetting() = Column {
fun ColorFilterSetting() = Column(modifier = Modifier.verticalScroll(rememberScrollState()).navigationBarsPadding()) {
val customBrightness = Settings.customBrightness.asMutableState()
SwitchChoice(
title = stringResource(id = R.string.pref_custom_brightness),
@@ -2,8 +2,12 @@ package com.hippo.ehviewer.ui.reader
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringArrayResource
import androidx.compose.ui.res.stringResource
import com.hippo.ehviewer.R
@@ -11,7 +15,7 @@ import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.asMutableState
@Composable
fun ReaderGeneralSetting() = Column {
fun ReaderGeneralSetting() = Column(modifier = Modifier.verticalScroll(rememberScrollState()).navigationBarsPadding()) {
SpinnerChoice(
title = stringResource(id = R.string.pref_reader_theme),
entries = stringArrayResource(id = R.array.reader_themes),
@@ -4,8 +4,11 @@ import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.Crossfade
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@@ -21,7 +24,7 @@ import com.hippo.ehviewer.collectAsState
import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
@Composable
fun ReaderModeSetting() = Column {
fun ReaderModeSetting() = Column(modifier = Modifier.verticalScroll(rememberScrollState()).navigationBarsPadding()) {
SpinnerChoice(
title = stringResource(id = R.string.pref_category_reading_mode),
entries = stringArrayResource(id = R.array.viewers_selector),
@@ -4,10 +4,10 @@ import androidx.compose.animation.animateColorAsState
import androidx.compose.foundation.background
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.statusBarsIgnoringVisibility
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.material3.BottomSheetDefaults
@@ -112,7 +112,7 @@ fun ReaderScreen(info: BaseGalleryInfo, page: Int = -1, navigator: DestinationsN
ModalBottomSheet(
onDismissRequest = { dispose() },
sheetState = state,
windowInsets = WindowInsets(0),
windowInsets = WindowInsets.statusBarsIgnoringVisibility,
) {
ReaderPageSheetMeta(
retry = { pageLoader.retryPage(page.index) },
@@ -123,7 +123,6 @@ fun ReaderScreen(info: BaseGalleryInfo, page: Int = -1, navigator: DestinationsN
saveTo = { launchIO { with(pageLoader) { saveTo(page) } } },
dismiss = { launch { state.hide().also { dispose() } } },
)
Spacer(modifier = Modifier.navigationBarsPadding())
}
}
}
@@ -183,12 +182,12 @@ fun ReaderScreen(info: BaseGalleryInfo, page: Int = -1, navigator: DestinationsN
// Yeah, I know color state should not be read here, but we have to do it...
scrimColor = scrim,
dragHandle = null,
windowInsets = WindowInsets(0),
windowInsets = WindowInsets.statusBarsIgnoringVisibility,
) {
SettingsPager(modifier = Modifier.fillMaxSize()) { page ->
isColorFilter = page == 2
appbarVisible = !isColorFilter
}
Spacer(modifier = Modifier.navigationBarsPadding())
}
}
}
@@ -43,10 +43,9 @@ import androidx.annotation.RequiresApi
import androidx.annotation.StringRes
import androidx.compose.animation.animateColorAsState
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.statusBarsIgnoringVisibility
import androidx.compose.material3.BottomSheetDefaults
import androidx.compose.material3.LocalTextStyle
import androidx.compose.material3.MaterialTheme
@@ -319,13 +318,12 @@ class ReaderActivity : EhActivity() {
dragHandle = null,
// Yeah, I know color state should not be read here, but we have to do it...
scrimColor = scrim,
windowInsets = WindowInsets(0),
windowInsets = WindowInsets.statusBarsIgnoringVisibility,
) {
SettingsPager(modifier = Modifier.fillMaxSize()) { page ->
isColorFilter = page == 2
setMenuVisibility(!isColorFilter)
}
Spacer(modifier = Modifier.navigationBarsPadding())
}
}
}
@@ -650,10 +648,9 @@ class ReaderActivity : EhActivity() {
dialogState.dialog {
ModalBottomSheet(
onDismissRequest = { it.cancel() },
windowInsets = WindowInsets(0),
windowInsets = WindowInsets.statusBarsIgnoringVisibility,
) {
ReaderPageSheet(page) { it.cancel() }
Spacer(modifier = Modifier.navigationBarsPadding())
}
}
}
@@ -2,12 +2,16 @@ package eu.kanade.tachiyomi.ui.reader
import androidx.annotation.StringRes
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.FileCopy
import androidx.compose.material.icons.filled.Refresh
@@ -47,12 +51,14 @@ fun ReaderPageSheetMeta(
Spacer(modifier = Modifier.size(32.dp))
Text(text = stringResource(id = text))
}
Item(icon = Icons.Default.Refresh, text = R.string.refresh, onClick = retry)
Item(icon = Icons.Default.Refresh, text = R.string.refresh_original, onClick = retryOrigin)
Item(icon = Icons.Default.Share, text = R.string.action_share, onClick = share)
Item(icon = Icons.Default.FileCopy, text = R.string.action_copy, onClick = copy)
Item(icon = Icons.Default.Save, text = R.string.action_save, onClick = save)
Item(icon = Icons.Default.Save, text = R.string.action_save_to, onClick = saveTo)
Column(modifier = Modifier.verticalScroll(rememberScrollState()).navigationBarsPadding()) {
Item(icon = Icons.Default.Refresh, text = R.string.refresh, onClick = retry)
Item(icon = Icons.Default.Refresh, text = R.string.refresh_original, onClick = retryOrigin)
Item(icon = Icons.Default.Share, text = R.string.action_share, onClick = share)
Item(icon = Icons.Default.FileCopy, text = R.string.action_copy, onClick = copy)
Item(icon = Icons.Default.Save, text = R.string.action_save, onClick = save)
Item(icon = Icons.Default.Save, text = R.string.action_save_to, onClick = saveTo)
}
}
@Composable