🛠️ Fix issues with Paragraph Indentation

* Fixed indent is not even for all paragraphs in Justify text alignment
* Disabled indent for END and CENTER text alignments
This commit is contained in:
Acclorite 2024-09-10 21:17:43 +03:00
parent 287e92b0d2
commit e70848a9cf
3 changed files with 33 additions and 22 deletions

View file

@ -82,6 +82,7 @@ import ua.acclorite.book_story.presentation.screens.reader.components.app_bar.Re
import ua.acclorite.book_story.presentation.screens.reader.components.readerFastColorPresetChange import ua.acclorite.book_story.presentation.screens.reader.components.readerFastColorPresetChange
import ua.acclorite.book_story.presentation.screens.reader.components.settings_bottom_sheet.ReaderSettingsBottomSheet import ua.acclorite.book_story.presentation.screens.reader.components.settings_bottom_sheet.ReaderSettingsBottomSheet
import ua.acclorite.book_story.presentation.screens.reader.data.ReaderEvent import ua.acclorite.book_story.presentation.screens.reader.data.ReaderEvent
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.data.ReaderTextAlignment
@Composable @Composable
fun ReaderScreenRoot(screen: Screen.Reader) { fun ReaderScreenRoot(screen: Screen.Reader) {
@ -250,12 +251,17 @@ private fun ReaderScreen(lazyListState: LazyListState) {
false -> FontStyle.Normal false -> FontStyle.Normal
} }
} }
val paragraphIndentation = remember(mainState.value.paragraphIndentation) { val paragraphIndentation = remember(
var indentation = "" mainState.value.paragraphIndentation,
repeat(mainState.value.paragraphIndentation) { mainState.value.textAlignment
indentation += " " ) {
if (
mainState.value.textAlignment == ReaderTextAlignment.CENTER ||
mainState.value.textAlignment == ReaderTextAlignment.END
) {
return@remember 0.sp
} }
indentation (mainState.value.paragraphIndentation * 6).sp
} }
val density = LocalDensity.current val density = LocalDensity.current

View file

@ -15,10 +15,10 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.style.LineBreak import androidx.compose.ui.text.style.LineBreak
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextIndent
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.TextUnit import androidx.compose.ui.unit.TextUnit
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
@ -59,7 +59,7 @@ fun LazyItemScope.ReaderTextParagraph(
fontSize: TextUnit, fontSize: TextUnit,
letterSpacing: TextUnit, letterSpacing: TextUnit,
sidePadding: Dp, sidePadding: Dp,
paragraphIndentation: String, paragraphIndentation: TextUnit,
fullscreenMode: Boolean, fullscreenMode: Boolean,
doubleClickTranslationEnabled: Boolean, doubleClickTranslationEnabled: Boolean,
toolbarHidden: Boolean toolbarHidden: Boolean
@ -81,10 +81,7 @@ fun LazyItemScope.ReaderTextParagraph(
} }
) { ) {
BasicText( BasicText(
text = buildAnnotatedString { text = line,
append(paragraphIndentation)
append(line)
},
modifier = Modifier.then( modifier = Modifier.then(
if ( if (
doubleClickTranslationEnabled && doubleClickTranslationEnabled &&
@ -128,6 +125,7 @@ fun LazyItemScope.ReaderTextParagraph(
ReaderTextAlignment.CENTER -> TextAlign.Center ReaderTextAlignment.CENTER -> TextAlign.Center
ReaderTextAlignment.END -> TextAlign.End ReaderTextAlignment.END -> TextAlign.End
}, },
textIndent = TextIndent(firstLine = paragraphIndentation),
fontStyle = fontStyle, fontStyle = fontStyle,
letterSpacing = letterSpacing, letterSpacing = letterSpacing,
fontSize = fontSize, fontSize = fontSize,

View file

@ -6,6 +6,8 @@ import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
import ua.acclorite.book_story.presentation.data.MainEvent import ua.acclorite.book_story.presentation.data.MainEvent
import ua.acclorite.book_story.presentation.screens.settings.components.SliderWithTitle import ua.acclorite.book_story.presentation.screens.settings.components.SliderWithTitle
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.data.ReaderTextAlignment
import ua.acclorite.book_story.presentation.ui.ExpandingTransition
/** /**
* Paragraph Indentation setting. * Paragraph Indentation setting.
@ -16,15 +18,20 @@ fun ParagraphIndentationSetting() {
val state = LocalMainViewModel.current.state val state = LocalMainViewModel.current.state
val onMainEvent = LocalMainViewModel.current.onEvent val onMainEvent = LocalMainViewModel.current.onEvent
SliderWithTitle( ExpandingTransition(
value = state.value.paragraphIndentation to "pt", visible = state.value.textAlignment != ReaderTextAlignment.CENTER &&
fromValue = 0, state.value.textAlignment != ReaderTextAlignment.END
toValue = 10, ) {
title = stringResource(id = R.string.paragraph_indentation_option), SliderWithTitle(
onValueChange = { value = state.value.paragraphIndentation to "pt",
onMainEvent( fromValue = 0,
MainEvent.OnChangeParagraphIndentation(it) toValue = 12,
) title = stringResource(id = R.string.paragraph_indentation_option),
} onValueChange = {
) onMainEvent(
MainEvent.OnChangeParagraphIndentation(it)
)
}
)
}
} }