diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/DataStoreConstants.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/DataStoreConstants.kt index 539005c2..456acf62 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/DataStoreConstants.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/DataStoreConstants.kt @@ -54,6 +54,7 @@ object DataStoreConstants { val IMAGES_WIDTH = doublePreferencesKey("images_width") val IMAGES_COLOR_EFFECTS = stringPreferencesKey("images_color_effects") val PROGRESS_BAR = booleanPreferencesKey("progress_bar") + val PROGRESS_BAR_PADDING = intPreferencesKey("progress_bar_padding") // Browse settings val BROWSE_FILES_STRUCTURE = stringPreferencesKey("browse_files_structure") diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderContent.kt b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderContent.kt index 868d3863..776cbfc1 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderContent.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderContent.kt @@ -54,6 +54,7 @@ fun ReaderContent( highlightedReadingThickness: FontWeight, progress: String, progressBar: Boolean, + progressBarPadding: Dp, paragraphHeight: Dp, sidePadding: Dp, bottomBarPadding: Dp, @@ -126,6 +127,7 @@ fun ReaderContent( highlightedReadingThickness = highlightedReadingThickness, progress = progress, progressBar = progressBar, + progressBarPadding = progressBarPadding, paragraphHeight = paragraphHeight, sidePadding = sidePadding, bottomBarPadding = bottomBarPadding, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderLayout.kt b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderLayout.kt index af8c6321..7901a534 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderLayout.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderLayout.kt @@ -54,6 +54,7 @@ fun ReaderLayout( highlightedReadingThickness: FontWeight, progress: String, progressBar: Boolean, + progressBarPadding: Dp, paragraphHeight: Dp, sidePadding: Dp, backgroundColor: Color, @@ -219,7 +220,9 @@ fun ReaderLayout( ) { ReaderProgressBar( progress = progress, - fontColor = fontColor + progressBarPadding = progressBarPadding, + fontColor = fontColor, + sidePadding = sidePadding ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderProgressBar.kt b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderProgressBar.kt index 312fa218..ba552e75 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderProgressBar.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderProgressBar.kt @@ -11,17 +11,22 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.style.TextOverflow -import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.Dp @Composable fun ReaderProgressBar( progress: String, - fontColor: Color + progressBarPadding: Dp, + fontColor: Color, + sidePadding: Dp ) { Box( Modifier .fillMaxWidth() - .padding(14.dp), + .padding( + horizontal = sidePadding, + vertical = progressBarPadding + ), contentAlignment = Alignment.Center ) { DisableSelection { diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderScaffold.kt b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderScaffold.kt index c48aeba7..a09b7042 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderScaffold.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/reader/ReaderScaffold.kt @@ -58,6 +58,7 @@ fun ReaderScaffold( highlightedReadingThickness: FontWeight, progress: String, progressBar: Boolean, + progressBarPadding: Dp, paragraphHeight: Dp, sidePadding: Dp, bottomBarPadding: Dp, @@ -157,6 +158,7 @@ fun ReaderScaffold( highlightedReadingThickness = highlightedReadingThickness, progress = progress, progressBar = progressBar, + progressBarPadding = progressBarPadding, paragraphHeight = paragraphHeight, sidePadding = sidePadding, backgroundColor = backgroundColor, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/progress/ProgressSubcategory.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/progress/ProgressSubcategory.kt index b0121676..db56049b 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/progress/ProgressSubcategory.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/progress/ProgressSubcategory.kt @@ -10,6 +10,7 @@ import androidx.compose.ui.res.stringResource import ua.acclorite.book_story.R import ua.acclorite.book_story.presentation.settings.components.SettingsSubcategory import ua.acclorite.book_story.presentation.settings.reader.progress.components.ProgressBarOption +import ua.acclorite.book_story.presentation.settings.reader.progress.components.ProgressBarPaddingOption fun LazyListScope.ProgressSubcategory( titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary }, @@ -26,5 +27,9 @@ fun LazyListScope.ProgressSubcategory( item { ProgressBarOption() } + + item { + ProgressBarPaddingOption() + } } } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/progress/components/ProgressBarPaddingOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/progress/components/ProgressBarPaddingOption.kt new file mode 100644 index 00000000..3ad08f13 --- /dev/null +++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/reader/progress/components/ProgressBarPaddingOption.kt @@ -0,0 +1,31 @@ +package ua.acclorite.book_story.presentation.settings.reader.progress.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.res.stringResource +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import ua.acclorite.book_story.R +import ua.acclorite.book_story.presentation.core.components.settings.SliderWithTitle +import ua.acclorite.book_story.ui.main.MainEvent +import ua.acclorite.book_story.ui.main.MainModel +import ua.acclorite.book_story.ui.theme.ExpandingTransition + +@Composable +fun ProgressBarPaddingOption() { + val mainModel = hiltViewModel() + val state = mainModel.state.collectAsStateWithLifecycle() + + ExpandingTransition(visible = state.value.progressBar) { + SliderWithTitle( + value = state.value.progressBarPadding to "pt", + fromValue = 1, + toValue = 12, + title = stringResource(id = R.string.progress_bar_padding_option), + onValueChange = { + mainModel.onEvent( + MainEvent.OnChangeProgressBarPadding(it) + ) + } + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/ui/main/MainEvent.kt b/app/src/main/java/ua/acclorite/book_story/ui/main/MainEvent.kt index 95067b26..b0ef1406 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/main/MainEvent.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/main/MainEvent.kt @@ -56,4 +56,5 @@ sealed class MainEvent { data class OnChangeImagesWidth(val value: Float) : MainEvent() data class OnChangeImagesColorEffects(val value: String) : MainEvent() data class OnChangeProgressBar(val value: Boolean) : MainEvent() + data class OnChangeProgressBarPadding(val value: Int) : MainEvent() } \ No newline at end of file diff --git a/app/src/main/java/ua/acclorite/book_story/ui/main/MainModel.kt b/app/src/main/java/ua/acclorite/book_story/ui/main/MainModel.kt index 55c476ee..21d336ff 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/main/MainModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/main/MainModel.kt @@ -472,6 +472,14 @@ class MainModel @Inject constructor( it.copy(progressBar = this) } ) + + is MainEvent.OnChangeProgressBarPadding -> handleDatastoreUpdate( + key = DataStoreConstants.PROGRESS_BAR_PADDING, + value = event.value, + updateState = { + it.copy(progressBarPadding = this) + } + ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/ui/main/MainState.kt b/app/src/main/java/ua/acclorite/book_story/ui/main/MainState.kt index 4fa4a4f5..6aad87aa 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/main/MainState.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/main/MainState.kt @@ -103,6 +103,7 @@ data class MainState( val imagesWidth: Float = provideDefaultValue { 0.8f }, val imagesColorEffects: ReaderColorEffects = provideDefaultValue { ReaderColorEffects.OFF }, val progressBar: Boolean = provideDefaultValue { false }, + val progressBarPadding: Int = provideDefaultValue { 4 }, // Browse Settings val browseFilesStructure: BrowseFilesStructure = provideDefaultValue { @@ -344,6 +345,10 @@ data class MainState( progressBar = provideValue( PROGRESS_BAR ) { progressBar }, + + progressBarPadding = provideValue( + PROGRESS_BAR_PADDING + ) { progressBarPadding }, ) } } diff --git a/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderScreen.kt b/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderScreen.kt index c70448a7..b84f1061 100644 --- a/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderScreen.kt +++ b/app/src/main/java/ua/acclorite/book_story/ui/reader/ReaderScreen.kt @@ -221,6 +221,9 @@ data class ReaderScreen(val bookId: Int) : Screen, Parcelable { ) } } + val progressBarPadding = remember(mainState.value.progressBarPadding) { + (mainState.value.progressBarPadding * 3).dp + } val layoutDirection = LocalLayoutDirection.current val cutoutInsets = WindowInsets.displayCutout @@ -391,6 +394,7 @@ data class ReaderScreen(val bookId: Int) : Screen, Parcelable { highlightedReadingThickness = highlightedReadingThickness, progress = progress.value, progressBar = mainState.value.progressBar, + progressBarPadding = progressBarPadding, paragraphHeight = paragraphHeight, sidePadding = sidePadding, bottomBarPadding = bottomBarPadding, diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index f806a11a..95c07a66 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -205,6 +205,7 @@ Розмір Ефекти кольору Панель прогресу + Поля Структура файлів diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 77f1c61b..3a36cce6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -260,6 +260,7 @@ Size Color effects Progress bar + Margins Files structure