🚀 Vertical Padding option
* Added "Vertical padding" option in Reader * Slider, from 0pt to 24pt (1pt = 4.5dp) * Applies vertical padding to Reader
This commit is contained in:
parent
89b319ee65
commit
11e21bf60b
9 changed files with 63 additions and 1 deletions
|
|
@ -21,6 +21,7 @@ object DataStoreConstants {
|
|||
val DOUBLE_CLICK_TRANSLATION = booleanPreferencesKey("double_click_translation")
|
||||
val FAST_COLOR_PRESET_CHANGE = booleanPreferencesKey("fast_color_preset_change")
|
||||
val SIDE_PADDING = intPreferencesKey("side_padding")
|
||||
val VERTICAL_PADDING = intPreferencesKey("vertical_padding")
|
||||
val FONT = stringPreferencesKey("font")
|
||||
val IS_ITALIC = booleanPreferencesKey("font_style")
|
||||
val FONT_SIZE = intPreferencesKey("font_size")
|
||||
|
|
|
|||
|
|
@ -35,4 +35,5 @@ sealed class MainEvent {
|
|||
data class OnChangeCutoutPadding(val bool: Boolean) : MainEvent()
|
||||
data class OnChangeFullscreen(val bool: Boolean) : MainEvent()
|
||||
data class OnChangeKeepScreenOn(val bool: Boolean) : MainEvent()
|
||||
data class OnChangeVerticalPadding(val padding: Int) : MainEvent()
|
||||
}
|
||||
|
|
@ -65,6 +65,7 @@ data class MainState(
|
|||
val paragraphHeight: Int = provideDefaultValue { 8 },
|
||||
val paragraphIndentation: Boolean = provideDefaultValue { false },
|
||||
val sidePadding: Int = provideDefaultValue { 6 },
|
||||
val verticalPadding: Int = provideDefaultValue { 0 },
|
||||
val doubleClickTranslation: Boolean = provideDefaultValue { false },
|
||||
val fastColorPresetChange: Boolean = provideDefaultValue { true },
|
||||
val textAlignment: ReaderTextAlignment = provideDefaultValue { ReaderTextAlignment.START },
|
||||
|
|
@ -229,6 +230,10 @@ data class MainState(
|
|||
keepScreenOn = provideValue(
|
||||
KEEP_SCREEN_ON
|
||||
) { keepScreenOn },
|
||||
|
||||
verticalPadding = provideValue(
|
||||
VERTICAL_PADDING
|
||||
) { verticalPadding },
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -429,6 +429,20 @@ class MainViewModel @Inject constructor(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
is MainEvent.OnChangeVerticalPadding -> {
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
setDatastore.execute(
|
||||
DataStoreConstants.VERTICAL_PADDING,
|
||||
event.padding
|
||||
)
|
||||
updateStateWithSavedHandle {
|
||||
it.copy(
|
||||
verticalPadding = event.padding
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -232,6 +232,9 @@ private fun ReaderScreen(lazyListState: LazyListState) {
|
|||
val sidePadding = remember(mainState.value.sidePadding) {
|
||||
(mainState.value.sidePadding * 3).dp
|
||||
}
|
||||
val verticalPadding = remember(mainState.value.verticalPadding) {
|
||||
(mainState.value.verticalPadding * 4.5f).dp
|
||||
}
|
||||
val paragraphHeight = remember(mainState.value.paragraphHeight) {
|
||||
(mainState.value.paragraphHeight * 3).dp
|
||||
}
|
||||
|
|
@ -425,7 +428,8 @@ private fun ReaderScreen(lazyListState: LazyListState) {
|
|||
.showToast(context = context, longToast = false)
|
||||
}
|
||||
)
|
||||
.padding(contentPadding),
|
||||
.padding(contentPadding)
|
||||
.padding(vertical = verticalPadding),
|
||||
verticalArrangement = Arrangement.spacedBy(paragraphHeight),
|
||||
contentPadding = PaddingValues(
|
||||
top = (WindowInsets.displayCutout.asPaddingValues()
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import ua.acclorite.book_story.R
|
||||
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
||||
import ua.acclorite.book_story.presentation.data.MainEvent
|
||||
import ua.acclorite.book_story.presentation.screens.settings.components.SliderWithTitle
|
||||
|
||||
/**
|
||||
* Vertical Padding setting.
|
||||
* Changes Reader's vertical padding.
|
||||
*/
|
||||
@Composable
|
||||
fun VerticalPaddingSetting() {
|
||||
val state = LocalMainViewModel.current.state
|
||||
val onMainEvent = LocalMainViewModel.current.onEvent
|
||||
|
||||
SliderWithTitle(
|
||||
value = state.value.verticalPadding to "pt",
|
||||
fromValue = 0,
|
||||
toValue = 24,
|
||||
title = stringResource(id = R.string.vertical_padding_option),
|
||||
onValueChange = {
|
||||
onMainEvent(
|
||||
MainEvent.OnChangeVerticalPadding(it)
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
|
@ -12,6 +12,7 @@ import ua.acclorite.book_story.R
|
|||
import ua.acclorite.book_story.presentation.screens.settings.components.SettingsSubcategory
|
||||
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.CutoutPaddingSetting
|
||||
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.SidePaddingSetting
|
||||
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.VerticalPaddingSetting
|
||||
|
||||
/**
|
||||
* Padding subcategory.
|
||||
|
|
@ -37,6 +38,10 @@ fun LazyListScope.PaddingSubcategory(
|
|||
SidePaddingSetting()
|
||||
}
|
||||
|
||||
item {
|
||||
VerticalPaddingSetting()
|
||||
}
|
||||
|
||||
item {
|
||||
CutoutPaddingSetting()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -230,6 +230,7 @@
|
|||
<string name="background_color_option">Колір фона</string>
|
||||
<string name="font_color_option">Колір шрифта</string>
|
||||
<string name="side_padding_option">Бокові відступи</string>
|
||||
<string name="vertical_padding_option">Вертикальні відступи</string>
|
||||
<string name="double_click_translation_option">Переклад подвійним кліком</string>
|
||||
<string name="double_click_translation_option_desc">Двічі клацніть на абзац, щоб перекласти його</string>
|
||||
<string name="fast_color_preset_change_option">Швидка зміна пресета кольорів</string>
|
||||
|
|
|
|||
|
|
@ -247,6 +247,7 @@
|
|||
<string name="background_color_option">Background color</string>
|
||||
<string name="font_color_option">Font color</string>
|
||||
<string name="side_padding_option">Side padding</string>
|
||||
<string name="vertical_padding_option">Vertical padding</string>
|
||||
<string name="double_click_translation_option">Double click translation</string>
|
||||
<string name="double_click_translation_option_desc">Double click on paragraph to translate it</string>
|
||||
<string name="fast_color_preset_change_option">Fast color preset change</string>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue