🚀 Perception Expander option
* Added Perception Expander option in Reader * May improve your reading speed when you focus on text in the center Resolves: #72
This commit is contained in:
parent
d0c79879ad
commit
d6bfb4eb2d
14 changed files with 303 additions and 0 deletions
|
|
@ -34,6 +34,9 @@ object DataStoreConstants {
|
||||||
val FULLSCREEN = booleanPreferencesKey("fullscreen")
|
val FULLSCREEN = booleanPreferencesKey("fullscreen")
|
||||||
val KEEP_SCREEN_ON = booleanPreferencesKey("keep_screen_on")
|
val KEEP_SCREEN_ON = booleanPreferencesKey("keep_screen_on")
|
||||||
val HIDE_BARS_ON_FAST_SCROLL = booleanPreferencesKey("hide_bars_on_fast_scroll")
|
val HIDE_BARS_ON_FAST_SCROLL = booleanPreferencesKey("hide_bars_on_fast_scroll")
|
||||||
|
val PERCEPTION_EXPANDER = booleanPreferencesKey("perception_expander")
|
||||||
|
val PERCEPTION_EXPANDER_PADDING = intPreferencesKey("perception_expander_padding")
|
||||||
|
val PERCEPTION_EXPANDER_THICKNESS = intPreferencesKey("perception_expander_thickness")
|
||||||
|
|
||||||
// Browse settings
|
// Browse settings
|
||||||
val BROWSE_FILES_STRUCTURE = stringPreferencesKey("browse_files_structure")
|
val BROWSE_FILES_STRUCTURE = stringPreferencesKey("browse_files_structure")
|
||||||
|
|
|
||||||
|
|
@ -37,4 +37,7 @@ sealed class MainEvent {
|
||||||
data class OnChangeKeepScreenOn(val bool: Boolean) : MainEvent()
|
data class OnChangeKeepScreenOn(val bool: Boolean) : MainEvent()
|
||||||
data class OnChangeVerticalPadding(val padding: Int) : MainEvent()
|
data class OnChangeVerticalPadding(val padding: Int) : MainEvent()
|
||||||
data class OnChangeHideBarsOnFastScroll(val bool: Boolean) : MainEvent()
|
data class OnChangeHideBarsOnFastScroll(val bool: Boolean) : MainEvent()
|
||||||
|
data class OnChangePerceptionExpander(val bool: Boolean) : MainEvent()
|
||||||
|
data class OnChangePerceptionExpanderPadding(val padding: Int) : MainEvent()
|
||||||
|
data class OnChangePerceptionExpanderThickness(val thickness: Int) : MainEvent()
|
||||||
}
|
}
|
||||||
|
|
@ -74,6 +74,9 @@ data class MainState(
|
||||||
val fullscreen: Boolean = provideDefaultValue { true },
|
val fullscreen: Boolean = provideDefaultValue { true },
|
||||||
val keepScreenOn: Boolean = provideDefaultValue { true },
|
val keepScreenOn: Boolean = provideDefaultValue { true },
|
||||||
val hideBarsOnFastScroll: Boolean = provideDefaultValue { true },
|
val hideBarsOnFastScroll: Boolean = provideDefaultValue { true },
|
||||||
|
val perceptionExpander: Boolean = provideDefaultValue { false },
|
||||||
|
val perceptionExpanderPadding: Int = provideDefaultValue { 5 },
|
||||||
|
val perceptionExpanderThickness: Int = provideDefaultValue { 4 },
|
||||||
|
|
||||||
// Browse Settings
|
// Browse Settings
|
||||||
val browseFilesStructure: BrowseFilesStructure = provideDefaultValue {
|
val browseFilesStructure: BrowseFilesStructure = provideDefaultValue {
|
||||||
|
|
@ -239,6 +242,18 @@ data class MainState(
|
||||||
hideBarsOnFastScroll = provideValue(
|
hideBarsOnFastScroll = provideValue(
|
||||||
HIDE_BARS_ON_FAST_SCROLL
|
HIDE_BARS_ON_FAST_SCROLL
|
||||||
) { hideBarsOnFastScroll },
|
) { hideBarsOnFastScroll },
|
||||||
|
|
||||||
|
perceptionExpander = provideValue(
|
||||||
|
PERCEPTION_EXPANDER
|
||||||
|
) { perceptionExpander },
|
||||||
|
|
||||||
|
perceptionExpanderPadding = provideValue(
|
||||||
|
PERCEPTION_EXPANDER_PADDING
|
||||||
|
) { perceptionExpanderPadding },
|
||||||
|
|
||||||
|
perceptionExpanderThickness = provideValue(
|
||||||
|
PERCEPTION_EXPANDER_THICKNESS
|
||||||
|
) { perceptionExpanderThickness },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -460,6 +460,48 @@ class MainViewModel @Inject constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
is MainEvent.OnChangePerceptionExpander -> {
|
||||||
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
|
setDatastore.execute(
|
||||||
|
DataStoreConstants.PERCEPTION_EXPANDER,
|
||||||
|
event.bool
|
||||||
|
)
|
||||||
|
updateStateWithSavedHandle {
|
||||||
|
it.copy(
|
||||||
|
perceptionExpander = event.bool
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
is MainEvent.OnChangePerceptionExpanderPadding -> {
|
||||||
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
|
setDatastore.execute(
|
||||||
|
DataStoreConstants.PERCEPTION_EXPANDER_PADDING,
|
||||||
|
event.padding
|
||||||
|
)
|
||||||
|
updateStateWithSavedHandle {
|
||||||
|
it.copy(
|
||||||
|
perceptionExpanderPadding = event.padding
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
is MainEvent.OnChangePerceptionExpanderThickness -> {
|
||||||
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
|
setDatastore.execute(
|
||||||
|
DataStoreConstants.PERCEPTION_EXPANDER_THICKNESS,
|
||||||
|
event.thickness
|
||||||
|
)
|
||||||
|
updateStateWithSavedHandle {
|
||||||
|
it.copy(
|
||||||
|
perceptionExpanderThickness = event.thickness
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,7 @@ 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.library.data.LibraryEvent
|
||||||
import ua.acclorite.book_story.presentation.screens.reader.components.ReaderChapter
|
import ua.acclorite.book_story.presentation.screens.reader.components.ReaderChapter
|
||||||
import ua.acclorite.book_story.presentation.screens.reader.components.ReaderChaptersDrawer
|
import ua.acclorite.book_story.presentation.screens.reader.components.ReaderChaptersDrawer
|
||||||
|
import ua.acclorite.book_story.presentation.screens.reader.components.ReaderPerceptionExpander
|
||||||
import ua.acclorite.book_story.presentation.screens.reader.components.ReaderTextParagraph
|
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.ReaderBottomBar
|
||||||
import ua.acclorite.book_story.presentation.screens.reader.components.app_bar.ReaderTopBar
|
import ua.acclorite.book_story.presentation.screens.reader.components.app_bar.ReaderTopBar
|
||||||
|
|
@ -267,6 +268,17 @@ private fun ReaderScreen(lazyListState: LazyListState) {
|
||||||
}
|
}
|
||||||
(mainState.value.paragraphIndentation * 6).sp
|
(mainState.value.paragraphIndentation * 6).sp
|
||||||
}
|
}
|
||||||
|
val perceptionExpanderPadding = remember(
|
||||||
|
sidePadding,
|
||||||
|
mainState.value.perceptionExpanderPadding
|
||||||
|
) {
|
||||||
|
sidePadding + (mainState.value.perceptionExpanderPadding * 8).dp
|
||||||
|
}
|
||||||
|
val perceptionExpanderThickness = remember(
|
||||||
|
mainState.value.perceptionExpanderThickness
|
||||||
|
) {
|
||||||
|
(mainState.value.perceptionExpanderThickness * 0.25f).dp
|
||||||
|
}
|
||||||
|
|
||||||
val density = LocalDensity.current
|
val density = LocalDensity.current
|
||||||
val layoutDirection = LocalLayoutDirection.current
|
val layoutDirection = LocalLayoutDirection.current
|
||||||
|
|
@ -499,6 +511,13 @@ private fun ReaderScreen(lazyListState: LazyListState) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ReaderPerceptionExpander(
|
||||||
|
perceptionExpander = mainState.value.perceptionExpander,
|
||||||
|
sidePadding = perceptionExpanderPadding,
|
||||||
|
thickness = perceptionExpanderThickness,
|
||||||
|
lineColor = fontColor.value
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state.value.loading || state.value.errorMessage != null) {
|
if (state.value.loading || state.value.errorMessage != null) {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
package ua.acclorite.book_story.presentation.screens.reader.components
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
import androidx.compose.foundation.layout.Row
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.material3.VerticalDivider
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.platform.LocalConfiguration
|
||||||
|
import androidx.compose.ui.unit.Dp
|
||||||
|
import androidx.compose.ui.unit.coerceAtMost
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
|
import ua.acclorite.book_story.presentation.ui.DefaultTransition
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reader Perception Expander.
|
||||||
|
* Shows two vertical lines on both sides which separate text.
|
||||||
|
* This can help you improve reading speed by focusing only on central side.
|
||||||
|
*
|
||||||
|
* @param perceptionExpander Whether perception expander is enabled.
|
||||||
|
* @param sidePadding Side padding applied on top of side text padding.
|
||||||
|
* @param thickness Thickness of the line.
|
||||||
|
* @param lineColor Color of the line.
|
||||||
|
*/
|
||||||
|
@Composable
|
||||||
|
fun ReaderPerceptionExpander(
|
||||||
|
perceptionExpander: Boolean,
|
||||||
|
sidePadding: Dp,
|
||||||
|
thickness: Dp,
|
||||||
|
lineColor: Color
|
||||||
|
) {
|
||||||
|
DefaultTransition(visible = perceptionExpander) {
|
||||||
|
Row(
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxSize()
|
||||||
|
.padding(
|
||||||
|
horizontal = sidePadding.coerceAtMost(
|
||||||
|
LocalConfiguration.current.screenWidthDp.run {
|
||||||
|
this / 2f - (this * 0.1f)
|
||||||
|
}.dp
|
||||||
|
)
|
||||||
|
),
|
||||||
|
horizontalArrangement = Arrangement.SpaceBetween
|
||||||
|
) {
|
||||||
|
repeat(2) {
|
||||||
|
VerticalDivider(
|
||||||
|
color = lineColor,
|
||||||
|
thickness = thickness
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -28,6 +28,7 @@ import ua.acclorite.book_story.presentation.screens.settings.nested.appearance.c
|
||||||
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.FontSubcategory
|
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.FontSubcategory
|
||||||
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.MiscSubcategory
|
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.MiscSubcategory
|
||||||
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.PaddingSubcategory
|
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.PaddingSubcategory
|
||||||
|
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.ReadingSpeedSubcategory
|
||||||
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.TextSubcategory
|
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.TextSubcategory
|
||||||
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.TranslatorSubcategory
|
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.TranslatorSubcategory
|
||||||
|
|
||||||
|
|
@ -92,6 +93,11 @@ fun ReaderSettingsBottomSheet() {
|
||||||
topPadding = 22.dp,
|
topPadding = 22.dp,
|
||||||
bottomPadding = 0.dp
|
bottomPadding = 0.dp
|
||||||
)
|
)
|
||||||
|
ReadingSpeedSubcategory(
|
||||||
|
titleColor = { MaterialTheme.colorScheme.onSurface },
|
||||||
|
topPadding = 22.dp,
|
||||||
|
bottomPadding = 0.dp
|
||||||
|
)
|
||||||
MiscSubcategory(
|
MiscSubcategory(
|
||||||
titleColor = { MaterialTheme.colorScheme.onSurface },
|
titleColor = { MaterialTheme.colorScheme.onSurface },
|
||||||
showDivider = false,
|
showDivider = false,
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import ua.acclorite.book_story.presentation.core.components.CategoryTitle
|
||||||
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.FontSubcategory
|
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.FontSubcategory
|
||||||
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.MiscSubcategory
|
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.MiscSubcategory
|
||||||
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.PaddingSubcategory
|
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.PaddingSubcategory
|
||||||
|
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.ReadingSpeedSubcategory
|
||||||
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.TextSubcategory
|
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.TextSubcategory
|
||||||
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.TranslatorSubcategory
|
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories.TranslatorSubcategory
|
||||||
|
|
||||||
|
|
@ -43,6 +44,11 @@ fun LazyListScope.ReaderSettingsCategory(
|
||||||
topPadding = 22.dp,
|
topPadding = 22.dp,
|
||||||
bottomPadding = 0.dp
|
bottomPadding = 0.dp
|
||||||
)
|
)
|
||||||
|
ReadingSpeedSubcategory(
|
||||||
|
titleColor = titleColor,
|
||||||
|
topPadding = 22.dp,
|
||||||
|
bottomPadding = 0.dp
|
||||||
|
)
|
||||||
TranslatorSubcategory(
|
TranslatorSubcategory(
|
||||||
titleColor = titleColor,
|
titleColor = titleColor,
|
||||||
topPadding = 22.dp,
|
topPadding = 22.dp,
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Perception Expander Padding setting.
|
||||||
|
* Changes side padding applied to lines.
|
||||||
|
*/
|
||||||
|
@Composable
|
||||||
|
fun PerceptionExpanderPaddingSetting() {
|
||||||
|
val state = LocalMainViewModel.current.state
|
||||||
|
val onMainEvent = LocalMainViewModel.current.onEvent
|
||||||
|
|
||||||
|
SliderWithTitle(
|
||||||
|
value = state.value.perceptionExpanderPadding to "pt",
|
||||||
|
fromValue = 0,
|
||||||
|
toValue = 24,
|
||||||
|
title = stringResource(id = R.string.perception_expander_padding_option),
|
||||||
|
onValueChange = {
|
||||||
|
onMainEvent(
|
||||||
|
MainEvent.OnChangePerceptionExpanderPadding(it)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Perception Expander setting.
|
||||||
|
* If true, shows vertical lines in Reader, which makes you read faster.
|
||||||
|
*/
|
||||||
|
@Composable
|
||||||
|
fun PerceptionExpanderSetting() {
|
||||||
|
val state = LocalMainViewModel.current.state
|
||||||
|
val onMainEvent = LocalMainViewModel.current.onEvent
|
||||||
|
|
||||||
|
SwitchWithTitle(
|
||||||
|
selected = state.value.perceptionExpander,
|
||||||
|
title = stringResource(id = R.string.perception_expander_option),
|
||||||
|
description = stringResource(id = R.string.perception_expander_option_desc),
|
||||||
|
onClick = {
|
||||||
|
onMainEvent(
|
||||||
|
MainEvent.OnChangePerceptionExpander(
|
||||||
|
!state.value.perceptionExpander
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Perception Expander Thickness setting.
|
||||||
|
* Changes thickness of the line.
|
||||||
|
*/
|
||||||
|
@Composable
|
||||||
|
fun PerceptionExpanderThicknessSetting() {
|
||||||
|
val state = LocalMainViewModel.current.state
|
||||||
|
val onMainEvent = LocalMainViewModel.current.onEvent
|
||||||
|
|
||||||
|
SliderWithTitle(
|
||||||
|
value = state.value.perceptionExpanderThickness to "pt",
|
||||||
|
fromValue = 1,
|
||||||
|
toValue = 12,
|
||||||
|
title = stringResource(id = R.string.perception_expander_thickness_option),
|
||||||
|
onValueChange = {
|
||||||
|
onMainEvent(
|
||||||
|
MainEvent.OnChangePerceptionExpanderThickness(it)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
@file:Suppress("FunctionName")
|
||||||
|
|
||||||
|
package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories
|
||||||
|
|
||||||
|
import androidx.compose.foundation.lazy.LazyListScope
|
||||||
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.res.stringResource
|
||||||
|
import androidx.compose.ui.unit.Dp
|
||||||
|
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.PerceptionExpanderPaddingSetting
|
||||||
|
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.PerceptionExpanderSetting
|
||||||
|
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.PerceptionExpanderThicknessSetting
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reading Speed subcategory.
|
||||||
|
* Contains all settings that can improve your reading speed.
|
||||||
|
*/
|
||||||
|
fun LazyListScope.ReadingSpeedSubcategory(
|
||||||
|
titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary },
|
||||||
|
title: @Composable () -> String = { stringResource(id = R.string.reading_speed_reader_settings) },
|
||||||
|
showTitle: Boolean = true,
|
||||||
|
showDivider: Boolean = true,
|
||||||
|
topPadding: Dp,
|
||||||
|
bottomPadding: Dp
|
||||||
|
) {
|
||||||
|
SettingsSubcategory(
|
||||||
|
titleColor = titleColor,
|
||||||
|
title = title,
|
||||||
|
showTitle = showTitle,
|
||||||
|
showDivider = showDivider,
|
||||||
|
topPadding = topPadding,
|
||||||
|
bottomPadding = bottomPadding
|
||||||
|
) {
|
||||||
|
item {
|
||||||
|
PerceptionExpanderSetting()
|
||||||
|
}
|
||||||
|
|
||||||
|
item {
|
||||||
|
PerceptionExpanderPaddingSetting()
|
||||||
|
}
|
||||||
|
|
||||||
|
item {
|
||||||
|
PerceptionExpanderThicknessSetting()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -199,6 +199,7 @@
|
||||||
<string name="translator_reader_settings">Перекладач</string>
|
<string name="translator_reader_settings">Перекладач</string>
|
||||||
<string name="padding_reader_settings">Відступи</string>
|
<string name="padding_reader_settings">Відступи</string>
|
||||||
<string name="misc_reader_settings">Інше</string>
|
<string name="misc_reader_settings">Інше</string>
|
||||||
|
<string name="reading_speed_reader_settings">Швидкість читання</string>
|
||||||
<string name="theme_appearance_settings">Налаштування теми</string>
|
<string name="theme_appearance_settings">Налаштування теми</string>
|
||||||
<string name="colors_appearance_settings">Кольори</string>
|
<string name="colors_appearance_settings">Кольори</string>
|
||||||
<string name="general_browse_settings">Головні</string>
|
<string name="general_browse_settings">Головні</string>
|
||||||
|
|
@ -243,6 +244,12 @@
|
||||||
<string name="fullscreen_option_desc">Сховати системні панелі та прибрати відступи</string>
|
<string name="fullscreen_option_desc">Сховати системні панелі та прибрати відступи</string>
|
||||||
<string name="keep_screen_on_option">Тримати екран увімкненим</string>
|
<string name="keep_screen_on_option">Тримати екран увімкненим</string>
|
||||||
<string name="hide_bars_on_fast_scroll_option">Ховати панелі при швидкому прокручуванні</string>
|
<string name="hide_bars_on_fast_scroll_option">Ховати панелі при швидкому прокручуванні</string>
|
||||||
|
<string name="perception_expander_option">Розширення сприйняття</string>
|
||||||
|
<string name="perception_expander_option_desc">
|
||||||
|
Збільшіть швидкість вашого читання, читаючи менше слів напряму
|
||||||
|
</string>
|
||||||
|
<string name="perception_expander_padding_option">Відступи розширення сприйняття</string>
|
||||||
|
<string name="perception_expander_thickness_option">Товщина лінії розширення сприйняття</string>
|
||||||
|
|
||||||
<!-- Browse -->
|
<!-- Browse -->
|
||||||
<string name="browse_files_structure_option">Структура файлів</string>
|
<string name="browse_files_structure_option">Структура файлів</string>
|
||||||
|
|
|
||||||
|
|
@ -202,6 +202,7 @@
|
||||||
<string name="translator_reader_settings">Translator</string>
|
<string name="translator_reader_settings">Translator</string>
|
||||||
<string name="padding_reader_settings">Padding</string>
|
<string name="padding_reader_settings">Padding</string>
|
||||||
<string name="misc_reader_settings">Misc</string>
|
<string name="misc_reader_settings">Misc</string>
|
||||||
|
<string name="reading_speed_reader_settings">Reading speed</string>
|
||||||
<string name="theme_appearance_settings">Theme preferences</string>
|
<string name="theme_appearance_settings">Theme preferences</string>
|
||||||
<string name="colors_appearance_settings">Colors</string>
|
<string name="colors_appearance_settings">Colors</string>
|
||||||
<string name="general_browse_settings">General</string>
|
<string name="general_browse_settings">General</string>
|
||||||
|
|
@ -246,6 +247,12 @@
|
||||||
<string name="fullscreen_option_desc">Hide system bars and remove padding</string>
|
<string name="fullscreen_option_desc">Hide system bars and remove padding</string>
|
||||||
<string name="keep_screen_on_option">Keep screen on</string>
|
<string name="keep_screen_on_option">Keep screen on</string>
|
||||||
<string name="hide_bars_on_fast_scroll_option">Hide bars on fast scroll</string>
|
<string name="hide_bars_on_fast_scroll_option">Hide bars on fast scroll</string>
|
||||||
|
<string name="perception_expander_option">Perception expander</string>
|
||||||
|
<string name="perception_expander_option_desc">
|
||||||
|
Increase your reading speed by reading less words directly
|
||||||
|
</string>
|
||||||
|
<string name="perception_expander_padding_option">Perception expander padding</string>
|
||||||
|
<string name="perception_expander_thickness_option">Perception expander line thickness</string>
|
||||||
|
|
||||||
<!-- Browse -->
|
<!-- Browse -->
|
||||||
<string name="browse_files_structure_option">Files structure</string>
|
<string name="browse_files_structure_option">Files structure</string>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue