|
|
@@ -5,8 +5,6 @@ import androidx.compose.foundation.layout.Arrangement
|
|
|
import androidx.compose.foundation.layout.Box
|
|
|
import androidx.compose.foundation.layout.Column
|
|
|
import androidx.compose.foundation.layout.PaddingValues
|
|
|
-import androidx.compose.foundation.layout.Row
|
|
|
-import androidx.compose.foundation.layout.consumeWindowInsets
|
|
|
import androidx.compose.foundation.layout.fillMaxSize
|
|
|
import androidx.compose.foundation.layout.fillMaxWidth
|
|
|
import androidx.compose.foundation.layout.heightIn
|
|
|
@@ -22,8 +20,8 @@ import androidx.compose.material.icons.filled.Person
|
|
|
import androidx.compose.material.icons.filled.RecordVoiceOver
|
|
|
import androidx.compose.material.icons.filled.Refresh
|
|
|
import androidx.compose.material.icons.filled.Warning
|
|
|
-import androidx.compose.material3.ExperimentalMaterial3Api
|
|
|
import androidx.compose.material3.CircularProgressIndicator
|
|
|
+import androidx.compose.material3.ExperimentalMaterial3Api
|
|
|
import androidx.compose.material3.ListItem
|
|
|
import androidx.compose.material3.ListItemDefaults
|
|
|
import androidx.compose.runtime.Composable
|
|
|
@@ -31,17 +29,18 @@ import androidx.compose.runtime.LaunchedEffect
|
|
|
import androidx.compose.ui.Alignment
|
|
|
import androidx.compose.ui.Modifier
|
|
|
import androidx.compose.ui.draw.clip
|
|
|
+import androidx.compose.ui.input.nestedscroll.nestedScroll
|
|
|
import androidx.compose.ui.platform.LocalContext
|
|
|
import androidx.compose.ui.res.stringResource
|
|
|
import androidx.compose.ui.unit.dp
|
|
|
import io.legado.app.R
|
|
|
import io.legado.app.domain.model.readaloud.ReadAloudVoice
|
|
|
import io.legado.app.ui.theme.LegadoTheme
|
|
|
+import io.legado.app.ui.theme.adaptiveContentPadding
|
|
|
import io.legado.app.ui.widget.components.AppScaffold
|
|
|
import io.legado.app.ui.widget.components.card.GlassCard
|
|
|
import io.legado.app.ui.widget.components.icon.AppIcon
|
|
|
import io.legado.app.ui.widget.components.modalBottomSheet.AppModalBottomSheet
|
|
|
-import io.legado.app.ui.widget.components.settingItem.SettingItem
|
|
|
import io.legado.app.ui.widget.components.settingItem.TinySettingItem
|
|
|
import io.legado.app.ui.widget.components.text.AnimatedTextLine
|
|
|
import io.legado.app.ui.widget.components.text.AppText
|
|
|
@@ -50,9 +49,9 @@ import io.legado.app.ui.widget.components.topbar.GlassTopAppBarDefaults
|
|
|
import io.legado.app.ui.widget.components.topbar.TopBarActionButton
|
|
|
import io.legado.app.ui.widget.components.topbar.TopBarNavigationButton
|
|
|
import io.legado.app.utils.toastOnUi
|
|
|
+import kotlinx.collections.immutable.ImmutableList
|
|
|
import kotlinx.coroutines.flow.Flow
|
|
|
import kotlinx.coroutines.flow.collectLatest
|
|
|
-import kotlinx.collections.immutable.ImmutableList
|
|
|
|
|
|
@OptIn(ExperimentalMaterial3Api::class)
|
|
|
@Composable
|
|
|
@@ -75,6 +74,7 @@ fun BookVoiceCastingScreen(
|
|
|
}
|
|
|
|
|
|
AppScaffold(
|
|
|
+ modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
|
|
|
topBar = {
|
|
|
GlassMediumFlexibleTopAppBar(
|
|
|
title = stringResource(R.string.book_voice_casting),
|
|
|
@@ -110,10 +110,8 @@ fun BookVoiceCastingScreen(
|
|
|
else -> VoiceCastingList(
|
|
|
state = state,
|
|
|
onIntent = onIntent,
|
|
|
- modifier = Modifier
|
|
|
- .fillMaxSize()
|
|
|
- .padding(paddingValues)
|
|
|
- .consumeWindowInsets(paddingValues),
|
|
|
+ contentPadding = paddingValues,
|
|
|
+ modifier = Modifier.fillMaxSize(),
|
|
|
)
|
|
|
}
|
|
|
}
|
|
|
@@ -129,13 +127,17 @@ fun BookVoiceCastingScreen(
|
|
|
private fun VoiceCastingList(
|
|
|
state: BookVoiceCastingUiState,
|
|
|
onIntent: (BookVoiceCastingIntent) -> Unit,
|
|
|
+ contentPadding: PaddingValues,
|
|
|
modifier: Modifier = Modifier,
|
|
|
) {
|
|
|
val specialItems = state.items.filter { it.kind != CastingSubjectKind.Character }
|
|
|
val characters = state.items.filter { it.kind == CastingSubjectKind.Character }
|
|
|
LazyColumn(
|
|
|
modifier = modifier,
|
|
|
- contentPadding = PaddingValues(16.dp),
|
|
|
+ contentPadding = adaptiveContentPadding(
|
|
|
+ top = contentPadding.calculateTopPadding() + 8.dp,
|
|
|
+ bottom = contentPadding.calculateBottomPadding() + 16.dp,
|
|
|
+ ),
|
|
|
verticalArrangement = Arrangement.spacedBy(8.dp),
|
|
|
) {
|
|
|
item(contentType = "intro") {
|