Merge pull request #1462 from fansangg/fix/share-layout-page-anim

fix: 修复共用布局下翻页动画文案读取错误
This commit is contained in:
Kudomaga
2026-06-16 00:41:40 +08:00
committed by GitHub
2 changed files with 54 additions and 29 deletions
@@ -1542,6 +1542,7 @@ class ReadBookViewModel(
private fun buildStyleConfig(): ReadBookStyleConfig { private fun buildStyleConfig(): ReadBookStyleConfig {
val config = ReadBookConfig val config = ReadBookConfig
val actualConfig = config.config
val dur = config.durConfig val dur = config.durConfig
return ReadBookStyleConfig( return ReadBookStyleConfig(
styleSelect = config.styleSelect, styleSelect = config.styleSelect,
@@ -1560,8 +1561,8 @@ class ReadBookViewModel(
textColor = dur.getTextColor(), textColor = dur.getTextColor(),
textColorNight = dur.getTextColorNight(), textColorNight = dur.getTextColorNight(),
textColorEInk = dur.getTextColorEInk(), textColorEInk = dur.getTextColorEInk(),
pageAnim = dur.getPageAnim(), pageAnim = actualConfig.getPageAnim(),
pageAnimEInk = dur.getPageAnimEInk(), pageAnimEInk = actualConfig.getPageAnimEInk(),
shareLayout = config.shareLayout, shareLayout = config.shareLayout,
configCount = config.configList.size, configCount = config.configList.size,
) )
@@ -28,9 +28,15 @@ import androidx.compose.material.icons.filled.LightMode
import androidx.compose.material.icons.filled.SpaceBar import androidx.compose.material.icons.filled.SpaceBar
import androidx.compose.material.icons.filled.TextFields import androidx.compose.material.icons.filled.TextFields
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.PlainTooltip
import androidx.compose.material3.TooltipAnchorPosition
import androidx.compose.material3.TooltipBox
import androidx.compose.material3.TooltipDefaults
import androidx.compose.material3.rememberTooltipState
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
@@ -174,36 +180,54 @@ fun GlobalThemePage(
.fillMaxWidth() .fillMaxWidth()
.padding(start = 12.dp, end = 12.dp, bottom = 12.dp), .padding(start = 12.dp, end = 12.dp, bottom = 12.dp),
) { ) {
NormalCard( TooltipBox(
onClick = { positionProvider = TooltipDefaults.rememberTooltipPositionProvider(
val newShareLayout = !shareLayout TooltipAnchorPosition.Above
onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.ShareLayout(newShareLayout)))
onShareLayoutChange(newShareLayout)
},
modifier = Modifier
.width(40.dp)
.height(56.dp),
cornerRadius = 8.dp,
containerColor = if (shareLayout) {
LegadoTheme.colorScheme.secondaryContainer
} else {
LegadoTheme.colorScheme.surfaceContainerLow
},
border = BorderStroke(
1.dp,
LegadoTheme.colorScheme.secondaryContainer.copy(alpha = 0.5f)
), ),
contentColor = if (shareLayout) LegadoTheme.colorScheme.onSecondaryContainer else null tooltip = {
PlainTooltip(
containerColor = LegadoTheme.colorScheme.surfaceContainerLow,
contentColor = LegadoTheme.colorScheme.onSurface,
) {
AppText(
text = stringResource(R.string.share_layout),
style = LegadoTheme.typography.bodyMedium,
)
}
},
state = rememberTooltipState(),
) { ) {
Box( NormalCard(
modifier = Modifier.fillMaxSize(), onClick = {
contentAlignment = Alignment.Center val newShareLayout = !shareLayout
onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.ShareLayout(newShareLayout)))
onShareLayoutChange(newShareLayout)
},
modifier = Modifier
.width(40.dp)
.height(56.dp),
cornerRadius = 8.dp,
containerColor = if (shareLayout) {
LegadoTheme.colorScheme.secondaryContainer
} else {
LegadoTheme.colorScheme.surfaceContainerLow
},
border = BorderStroke(
1.dp,
LegadoTheme.colorScheme.secondaryContainer.copy(alpha = 0.5f)
),
contentColor = if (shareLayout) LegadoTheme.colorScheme.onSecondaryContainer else null
) { ) {
Icon( Box(
Icons.Default.GridView, modifier = Modifier.fillMaxSize(),
contentDescription = null, contentAlignment = Alignment.Center
modifier = Modifier.size(20.dp), ) {
) Icon(
Icons.Default.GridView,
contentDescription = stringResource(R.string.share_layout),
modifier = Modifier.size(20.dp),
)
}
} }
} }
val styleListState = rememberLazyListState() val styleListState = rememberLazyListState()