🚀 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 DOUBLE_CLICK_TRANSLATION = booleanPreferencesKey("double_click_translation")
|
||||||
val FAST_COLOR_PRESET_CHANGE = booleanPreferencesKey("fast_color_preset_change")
|
val FAST_COLOR_PRESET_CHANGE = booleanPreferencesKey("fast_color_preset_change")
|
||||||
val SIDE_PADDING = intPreferencesKey("side_padding")
|
val SIDE_PADDING = intPreferencesKey("side_padding")
|
||||||
|
val VERTICAL_PADDING = intPreferencesKey("vertical_padding")
|
||||||
val FONT = stringPreferencesKey("font")
|
val FONT = stringPreferencesKey("font")
|
||||||
val IS_ITALIC = booleanPreferencesKey("font_style")
|
val IS_ITALIC = booleanPreferencesKey("font_style")
|
||||||
val FONT_SIZE = intPreferencesKey("font_size")
|
val FONT_SIZE = intPreferencesKey("font_size")
|
||||||
|
|
|
||||||
|
|
@ -35,4 +35,5 @@ sealed class MainEvent {
|
||||||
data class OnChangeCutoutPadding(val bool: Boolean) : MainEvent()
|
data class OnChangeCutoutPadding(val bool: Boolean) : MainEvent()
|
||||||
data class OnChangeFullscreen(val bool: Boolean) : MainEvent()
|
data class OnChangeFullscreen(val bool: Boolean) : MainEvent()
|
||||||
data class OnChangeKeepScreenOn(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 paragraphHeight: Int = provideDefaultValue { 8 },
|
||||||
val paragraphIndentation: Boolean = provideDefaultValue { false },
|
val paragraphIndentation: Boolean = provideDefaultValue { false },
|
||||||
val sidePadding: Int = provideDefaultValue { 6 },
|
val sidePadding: Int = provideDefaultValue { 6 },
|
||||||
|
val verticalPadding: Int = provideDefaultValue { 0 },
|
||||||
val doubleClickTranslation: Boolean = provideDefaultValue { false },
|
val doubleClickTranslation: Boolean = provideDefaultValue { false },
|
||||||
val fastColorPresetChange: Boolean = provideDefaultValue { true },
|
val fastColorPresetChange: Boolean = provideDefaultValue { true },
|
||||||
val textAlignment: ReaderTextAlignment = provideDefaultValue { ReaderTextAlignment.START },
|
val textAlignment: ReaderTextAlignment = provideDefaultValue { ReaderTextAlignment.START },
|
||||||
|
|
@ -229,6 +230,10 @@ data class MainState(
|
||||||
keepScreenOn = provideValue(
|
keepScreenOn = provideValue(
|
||||||
KEEP_SCREEN_ON
|
KEEP_SCREEN_ON
|
||||||
) { keepScreenOn },
|
) { 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) {
|
val sidePadding = remember(mainState.value.sidePadding) {
|
||||||
(mainState.value.sidePadding * 3).dp
|
(mainState.value.sidePadding * 3).dp
|
||||||
}
|
}
|
||||||
|
val verticalPadding = remember(mainState.value.verticalPadding) {
|
||||||
|
(mainState.value.verticalPadding * 4.5f).dp
|
||||||
|
}
|
||||||
val paragraphHeight = remember(mainState.value.paragraphHeight) {
|
val paragraphHeight = remember(mainState.value.paragraphHeight) {
|
||||||
(mainState.value.paragraphHeight * 3).dp
|
(mainState.value.paragraphHeight * 3).dp
|
||||||
}
|
}
|
||||||
|
|
@ -425,7 +428,8 @@ private fun ReaderScreen(lazyListState: LazyListState) {
|
||||||
.showToast(context = context, longToast = false)
|
.showToast(context = context, longToast = false)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.padding(contentPadding),
|
.padding(contentPadding)
|
||||||
|
.padding(vertical = verticalPadding),
|
||||||
verticalArrangement = Arrangement.spacedBy(paragraphHeight),
|
verticalArrangement = Arrangement.spacedBy(paragraphHeight),
|
||||||
contentPadding = PaddingValues(
|
contentPadding = PaddingValues(
|
||||||
top = (WindowInsets.displayCutout.asPaddingValues()
|
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.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.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.SidePaddingSetting
|
||||||
|
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.VerticalPaddingSetting
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Padding subcategory.
|
* Padding subcategory.
|
||||||
|
|
@ -37,6 +38,10 @@ fun LazyListScope.PaddingSubcategory(
|
||||||
SidePaddingSetting()
|
SidePaddingSetting()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
item {
|
||||||
|
VerticalPaddingSetting()
|
||||||
|
}
|
||||||
|
|
||||||
item {
|
item {
|
||||||
CutoutPaddingSetting()
|
CutoutPaddingSetting()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -230,6 +230,7 @@
|
||||||
<string name="background_color_option">Колір фона</string>
|
<string name="background_color_option">Колір фона</string>
|
||||||
<string name="font_color_option">Колір шрифта</string>
|
<string name="font_color_option">Колір шрифта</string>
|
||||||
<string name="side_padding_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">Переклад подвійним кліком</string>
|
||||||
<string name="double_click_translation_option_desc">Двічі клацніть на абзац, щоб перекласти його</string>
|
<string name="double_click_translation_option_desc">Двічі клацніть на абзац, щоб перекласти його</string>
|
||||||
<string name="fast_color_preset_change_option">Швидка зміна пресета кольорів</string>
|
<string name="fast_color_preset_change_option">Швидка зміна пресета кольорів</string>
|
||||||
|
|
|
||||||
|
|
@ -247,6 +247,7 @@
|
||||||
<string name="background_color_option">Background color</string>
|
<string name="background_color_option">Background color</string>
|
||||||
<string name="font_color_option">Font color</string>
|
<string name="font_color_option">Font color</string>
|
||||||
<string name="side_padding_option">Side padding</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">Double click translation</string>
|
||||||
<string name="double_click_translation_option_desc">Double click on paragraph to translate it</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>
|
<string name="fast_color_preset_change_option">Fast color preset change</string>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue