🚀 Cutout Padding option
* Added "Cutout padding" option in Reader * If true, applies padding to cutout area (independently of screen orientation)
This commit is contained in:
parent
4f20d0a461
commit
3fa6e2a054
9 changed files with 66 additions and 2 deletions
|
|
@ -29,6 +29,7 @@ object DataStoreConstants {
|
|||
val PARAGRAPH_INDENTATION = booleanPreferencesKey("paragraph_indentation")
|
||||
val TEXT_ALIGNMENT = stringPreferencesKey("text_alignment")
|
||||
val LETTER_SPACING = intPreferencesKey("letter_spacing")
|
||||
val CUTOUT_PADDING = booleanPreferencesKey("cutout_padding")
|
||||
|
||||
// Browse settings
|
||||
val BROWSE_FILES_STRUCTURE = stringPreferencesKey("browse_files_structure")
|
||||
|
|
|
|||
|
|
@ -32,4 +32,5 @@ sealed class MainEvent {
|
|||
data class OnChangeDoublePressExit(val bool: Boolean) : MainEvent()
|
||||
data class OnChangeLetterSpacing(val spacing: Int) : MainEvent()
|
||||
data class OnChangeAbsoluteDark(val bool: Boolean) : MainEvent()
|
||||
data class OnChangeCutoutPadding(val bool: Boolean) : MainEvent()
|
||||
}
|
||||
|
|
@ -69,6 +69,7 @@ data class MainState(
|
|||
val fastColorPresetChange: Boolean = provideDefaultValue { true },
|
||||
val textAlignment: ReaderTextAlignment = provideDefaultValue { ReaderTextAlignment.START },
|
||||
val letterSpacing: Int = provideDefaultValue { 0 },
|
||||
val cutoutPadding: Boolean = provideDefaultValue { false },
|
||||
|
||||
// Browse Settings
|
||||
val browseFilesStructure: BrowseFilesStructure = provideDefaultValue {
|
||||
|
|
@ -214,6 +215,10 @@ data class MainState(
|
|||
letterSpacing = provideValue(
|
||||
LETTER_SPACING
|
||||
) { letterSpacing },
|
||||
|
||||
cutoutPadding = provideValue(
|
||||
CUTOUT_PADDING
|
||||
) { cutoutPadding },
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -387,6 +387,20 @@ class MainViewModel @Inject constructor(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
is MainEvent.OnChangeCutoutPadding -> {
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
setDatastore.execute(
|
||||
DataStoreConstants.CUTOUT_PADDING,
|
||||
event.bool
|
||||
)
|
||||
updateStateWithSavedHandle {
|
||||
it.copy(
|
||||
cutoutPadding = event.bool
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -68,13 +68,11 @@ import ua.acclorite.book_story.presentation.core.navigation.Screen
|
|||
import ua.acclorite.book_story.presentation.core.util.showToast
|
||||
import ua.acclorite.book_story.presentation.screens.history.data.HistoryEvent
|
||||
import ua.acclorite.book_story.presentation.screens.library.data.LibraryEvent
|
||||
import ua.acclorite.book_story.presentation.screens.reader.components.ReaderEndItem
|
||||
import ua.acclorite.book_story.presentation.screens.reader.components.ReaderTextParagraph
|
||||
import ua.acclorite.book_story.presentation.screens.reader.components.app_bar.ReaderBottomBar
|
||||
import ua.acclorite.book_story.presentation.screens.reader.components.app_bar.ReaderTopBar
|
||||
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.start_item.ReaderStartItem
|
||||
import ua.acclorite.book_story.presentation.screens.reader.data.ReaderEvent
|
||||
|
||||
@Composable
|
||||
|
|
@ -326,6 +324,11 @@ private fun ReaderScreen(lazyListState: LazyListState) {
|
|||
)
|
||||
.showToast(context = context, longToast = false)
|
||||
}
|
||||
)
|
||||
.then(
|
||||
if (mainState.value.cutoutPadding) Modifier.padding(
|
||||
WindowInsets.displayCutout.asPaddingValues()
|
||||
) else Modifier
|
||||
),
|
||||
verticalArrangement = Arrangement.spacedBy(paragraphHeight),
|
||||
contentPadding = PaddingValues(
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
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.SwitchWithTitle
|
||||
|
||||
/**
|
||||
* Cutout Padding setting.
|
||||
* If true, applies padding to cutout area.
|
||||
*/
|
||||
@Composable
|
||||
fun CutoutPaddingSetting() {
|
||||
val state = LocalMainViewModel.current.state
|
||||
val onMainEvent = LocalMainViewModel.current.onEvent
|
||||
|
||||
SwitchWithTitle(
|
||||
selected = state.value.cutoutPadding,
|
||||
title = stringResource(id = R.string.cutout_padding_option),
|
||||
description = stringResource(id = R.string.cutout_padding_option_desc),
|
||||
onClick = {
|
||||
onMainEvent(
|
||||
MainEvent.OnChangeCutoutPadding(
|
||||
!state.value.cutoutPadding
|
||||
)
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
|
@ -16,6 +16,7 @@ import androidx.compose.ui.unit.coerceAtLeast
|
|||
import androidx.compose.ui.unit.dp
|
||||
import ua.acclorite.book_story.R
|
||||
import ua.acclorite.book_story.presentation.core.components.CategoryTitle
|
||||
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
|
||||
|
||||
/**
|
||||
|
|
@ -51,6 +52,10 @@ fun LazyListScope.PaddingSubcategory(
|
|||
SidePaddingSetting()
|
||||
}
|
||||
|
||||
item {
|
||||
CutoutPaddingSetting()
|
||||
}
|
||||
|
||||
item {
|
||||
Spacer(
|
||||
modifier = Modifier.height(bottomPadding)
|
||||
|
|
|
|||
|
|
@ -237,6 +237,8 @@
|
|||
<string name="fast_color_preset_change_option_desc">Проведіть вліво або вправо, щоб змінити пресет кольорів</string>
|
||||
<string name="text_alignment_option">Розташування текста</string>
|
||||
<string name="letter_spacing_option">Відстань між літерами</string>
|
||||
<string name="cutout_padding_option">Відступ від виїмки</string>
|
||||
<string name="cutout_padding_option_desc">Застосуйте відступ до ділянки виїмки</string>
|
||||
|
||||
<!-- Browse -->
|
||||
<string name="browse_files_structure_option">Структура файлів</string>
|
||||
|
|
|
|||
|
|
@ -254,6 +254,8 @@
|
|||
<string name="fast_color_preset_change_option_desc">Swipe left or right to change color preset</string>
|
||||
<string name="text_alignment_option">Text alignment</string>
|
||||
<string name="letter_spacing_option">Letter spacing</string>
|
||||
<string name="cutout_padding_option">Cutout padding</string>
|
||||
<string name="cutout_padding_option_desc">Apply padding to cutout area</string>
|
||||
|
||||
<!-- Browse -->
|
||||
<string name="browse_files_structure_option">Files structure</string>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue