|
@@ -79,9 +79,14 @@ fun ReadStyleTextTitleContent(
|
|
|
)
|
|
)
|
|
|
val pagerState = rememberPagerState(pageCount = { 3 })
|
|
val pagerState = rememberPagerState(pageCount = { 3 })
|
|
|
var selectedTab by remember { mutableIntStateOf(0) }
|
|
var selectedTab by remember { mutableIntStateOf(0) }
|
|
|
|
|
+ var clickScrollCount by remember { mutableIntStateOf(0) }
|
|
|
|
|
|
|
|
LaunchedEffect(pagerState) {
|
|
LaunchedEffect(pagerState) {
|
|
|
- snapshotFlow { pagerState.settledPage }.collect { selectedTab = it }
|
|
|
|
|
|
|
+ snapshotFlow { pagerState.currentPage }.collect { page ->
|
|
|
|
|
+ if (clickScrollCount == 0) {
|
|
|
|
|
+ selectedTab = page
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
ReadStyleTextTitleContent(
|
|
ReadStyleTextTitleContent(
|
|
@@ -95,11 +100,16 @@ fun ReadStyleTextTitleContent(
|
|
|
onOpenTitleFontSelect = onOpenTitleFontSelect,
|
|
onOpenTitleFontSelect = onOpenTitleFontSelect,
|
|
|
animateToPage = { page ->
|
|
animateToPage = { page ->
|
|
|
selectedTab = page
|
|
selectedTab = page
|
|
|
|
|
+ clickScrollCount++
|
|
|
scope.launch {
|
|
scope.launch {
|
|
|
- pagerState.animateScrollToPage(
|
|
|
|
|
- page = page,
|
|
|
|
|
- animationSpec = tween(durationMillis = 300, easing = FastOutSlowInEasing)
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ pagerState.animateScrollToPage(
|
|
|
|
|
+ page = page,
|
|
|
|
|
+ animationSpec = tween(durationMillis = 300, easing = FastOutSlowInEasing)
|
|
|
|
|
+ )
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ clickScrollCount = (clickScrollCount - 1).coerceAtLeast(0)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
modifier = modifier,
|
|
modifier = modifier,
|
|
@@ -144,25 +154,28 @@ internal fun ReadStyleTextTitleContent(
|
|
|
.clipToBounds()
|
|
.clipToBounds()
|
|
|
.pagerHeight(animatedHeight),
|
|
.pagerHeight(animatedHeight),
|
|
|
) { page ->
|
|
) { page ->
|
|
|
- val pageModifier = Modifier.onSizeChanged { size ->
|
|
|
|
|
- pageHeights[page] = size.height
|
|
|
|
|
- }
|
|
|
|
|
- when (page) {
|
|
|
|
|
- 0 -> TextEffectsPage(
|
|
|
|
|
- onOpenShadowSet = onOpenShadowSet,
|
|
|
|
|
- onOpenUnderlineConfig = onOpenUnderlineConfig,
|
|
|
|
|
- onOpenHighlightRule = onOpenHighlightRule,
|
|
|
|
|
- onOpenFontSelect = onOpenFontSelect,
|
|
|
|
|
- modifier = pageModifier,
|
|
|
|
|
- onIntent = onIntent,
|
|
|
|
|
- )
|
|
|
|
|
-
|
|
|
|
|
- 1 -> LayoutSpacingPage(modifier = pageModifier, onIntent = onIntent)
|
|
|
|
|
- 2 -> TitleSettingsPage(
|
|
|
|
|
- onOpenTitleFontSelect = onOpenTitleFontSelect,
|
|
|
|
|
- modifier = pageModifier,
|
|
|
|
|
- onIntent = onIntent,
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ Box(
|
|
|
|
|
+ modifier = Modifier
|
|
|
|
|
+ .fillMaxWidth()
|
|
|
|
|
+ .onSizeChanged { size ->
|
|
|
|
|
+ pageHeights[page] = size.height
|
|
|
|
|
+ }
|
|
|
|
|
+ ) {
|
|
|
|
|
+ when (page) {
|
|
|
|
|
+ 0 -> TextEffectsPage(
|
|
|
|
|
+ onOpenShadowSet = onOpenShadowSet,
|
|
|
|
|
+ onOpenUnderlineConfig = onOpenUnderlineConfig,
|
|
|
|
|
+ onOpenHighlightRule = onOpenHighlightRule,
|
|
|
|
|
+ onOpenFontSelect = onOpenFontSelect,
|
|
|
|
|
+ onIntent = onIntent,
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+ 1 -> LayoutSpacingPage(onIntent = onIntent)
|
|
|
|
|
+ 2 -> TitleSettingsPage(
|
|
|
|
|
+ onOpenTitleFontSelect = onOpenTitleFontSelect,
|
|
|
|
|
+ onIntent = onIntent,
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -181,11 +194,10 @@ internal fun LayoutSpacingPage(
|
|
|
var indentCount by remember { mutableIntStateOf(ReadBookConfig.paragraphIndent.length) }
|
|
var indentCount by remember { mutableIntStateOf(ReadBookConfig.paragraphIndent.length) }
|
|
|
|
|
|
|
|
Column(
|
|
Column(
|
|
|
- modifier = Modifier
|
|
|
|
|
|
|
+ modifier = modifier
|
|
|
.fillMaxWidth()
|
|
.fillMaxWidth()
|
|
|
.padding(horizontal = 16.dp)
|
|
.padding(horizontal = 16.dp)
|
|
|
- .verticalScroll(rememberScrollState())
|
|
|
|
|
- .then(modifier),
|
|
|
|
|
|
|
+ .verticalScroll(rememberScrollState()),
|
|
|
) {
|
|
) {
|
|
|
Text(
|
|
Text(
|
|
|
text = stringResource(R.string.read_config_body_spacing),
|
|
text = stringResource(R.string.read_config_body_spacing),
|
|
@@ -255,11 +267,10 @@ internal fun TextEffectsPage(
|
|
|
var colorPickerInitial by remember { mutableIntStateOf(0) }
|
|
var colorPickerInitial by remember { mutableIntStateOf(0) }
|
|
|
|
|
|
|
|
Column(
|
|
Column(
|
|
|
- modifier = Modifier
|
|
|
|
|
|
|
+ modifier = modifier
|
|
|
.fillMaxWidth()
|
|
.fillMaxWidth()
|
|
|
.padding(horizontal = 16.dp)
|
|
.padding(horizontal = 16.dp)
|
|
|
- .verticalScroll(rememberScrollState())
|
|
|
|
|
- .then(modifier),
|
|
|
|
|
|
|
+ .verticalScroll(rememberScrollState()),
|
|
|
) {
|
|
) {
|
|
|
Text(
|
|
Text(
|
|
|
text = stringResource(R.string.text_typeface),
|
|
text = stringResource(R.string.text_typeface),
|
|
@@ -421,11 +432,10 @@ internal fun TitleSettingsPage(
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
Column(
|
|
Column(
|
|
|
- modifier = Modifier
|
|
|
|
|
|
|
+ modifier = modifier
|
|
|
.fillMaxWidth()
|
|
.fillMaxWidth()
|
|
|
.padding(horizontal = 16.dp)
|
|
.padding(horizontal = 16.dp)
|
|
|
- .verticalScroll(rememberScrollState())
|
|
|
|
|
- .then(modifier),
|
|
|
|
|
|
|
+ .verticalScroll(rememberScrollState()),
|
|
|
) {
|
|
) {
|
|
|
TinyDropdownSettingItem(
|
|
TinyDropdownSettingItem(
|
|
|
title = stringResource(R.string.body_title),
|
|
title = stringResource(R.string.body_title),
|