refactor: rename and refactor ButtonItem
This commit is contained in:
parent
69689b8be6
commit
0fa8041d5c
40 changed files with 316 additions and 415 deletions
|
|
@ -6,7 +6,11 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.presentation.browse.model
|
package ua.acclorite.book_story.presentation.browse.model
|
||||||
|
|
||||||
|
import androidx.annotation.StringRes
|
||||||
|
import ua.acclorite.book_story.R
|
||||||
|
|
||||||
enum class BrowseLayout {
|
|
||||||
LIST, GRID
|
enum class BrowseLayout(@StringRes val title: Int) {
|
||||||
|
LIST(R.string.layout_list),
|
||||||
|
GRID(R.string.layout_grid)
|
||||||
}
|
}
|
||||||
|
|
@ -6,7 +6,10 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.presentation.library.model
|
package ua.acclorite.book_story.presentation.library.model
|
||||||
|
|
||||||
|
import androidx.annotation.StringRes
|
||||||
|
import ua.acclorite.book_story.R
|
||||||
|
|
||||||
enum class LibraryLayout {
|
enum class LibraryLayout(@StringRes val title: Int) {
|
||||||
GRID, LIST
|
GRID(R.string.layout_grid),
|
||||||
|
LIST(R.string.layout_list)
|
||||||
}
|
}
|
||||||
|
|
@ -6,7 +6,12 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.presentation.library.model
|
package ua.acclorite.book_story.presentation.library.model
|
||||||
|
|
||||||
|
import androidx.annotation.StringRes
|
||||||
|
import ua.acclorite.book_story.R
|
||||||
|
|
||||||
enum class LibraryTitlePosition {
|
|
||||||
OFF, BELOW, INSIDE
|
enum class LibraryTitlePosition(@StringRes val title: Int) {
|
||||||
|
OFF(R.string.library_title_position_off),
|
||||||
|
BELOW(R.string.library_title_position_below),
|
||||||
|
INSIDE(R.string.library_title_position_inside)
|
||||||
}
|
}
|
||||||
|
|
@ -6,10 +6,12 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.presentation.reader.model
|
package ua.acclorite.book_story.presentation.reader.model
|
||||||
|
|
||||||
|
import androidx.annotation.StringRes
|
||||||
|
import ua.acclorite.book_story.R
|
||||||
|
|
||||||
enum class ReaderColorEffects {
|
enum class ReaderColorEffects(@StringRes val title: Int) {
|
||||||
OFF,
|
OFF(R.string.color_effects_off),
|
||||||
GRAYSCALE,
|
GRAYSCALE(R.string.color_effects_grayscale),
|
||||||
FONT,
|
FONT(R.string.color_effects_font),
|
||||||
BACKGROUND
|
BACKGROUND(R.string.color_effects_background)
|
||||||
}
|
}
|
||||||
|
|
@ -6,12 +6,14 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.presentation.reader.model
|
package ua.acclorite.book_story.presentation.reader.model
|
||||||
|
|
||||||
|
import androidx.annotation.StringRes
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
|
import ua.acclorite.book_story.R
|
||||||
|
|
||||||
enum class ReaderFontThickness(val thickness: FontWeight) {
|
enum class ReaderFontThickness(val thickness: FontWeight, @StringRes val title: Int) {
|
||||||
THIN(FontWeight.Thin),
|
THIN(FontWeight.Thin, R.string.font_thickness_thin),
|
||||||
EXTRA_LIGHT(FontWeight.ExtraLight),
|
EXTRA_LIGHT(FontWeight.ExtraLight, R.string.font_thickness_extra_light),
|
||||||
LIGHT(FontWeight.Light),
|
LIGHT(FontWeight.Light, R.string.font_thickness_light),
|
||||||
NORMAL(FontWeight.Normal),
|
NORMAL(FontWeight.Normal, R.string.font_thickness_normal),
|
||||||
MEDIUM(FontWeight.Medium)
|
MEDIUM(FontWeight.Medium, R.string.font_thickness_medium)
|
||||||
}
|
}
|
||||||
|
|
@ -6,9 +6,11 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.presentation.reader.model
|
package ua.acclorite.book_story.presentation.reader.model
|
||||||
|
|
||||||
|
import androidx.annotation.StringRes
|
||||||
|
import ua.acclorite.book_story.R
|
||||||
|
|
||||||
enum class ReaderHorizontalGesture {
|
enum class ReaderHorizontalGesture(@StringRes val title: Int) {
|
||||||
OFF,
|
OFF(R.string.horizontal_gesture_off),
|
||||||
ON,
|
ON(R.string.horizontal_gesture_on),
|
||||||
INVERSE
|
INVERSE(R.string.horizontal_gesture_inverse)
|
||||||
}
|
}
|
||||||
|
|
@ -6,8 +6,11 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.presentation.reader.model
|
package ua.acclorite.book_story.presentation.reader.model
|
||||||
|
|
||||||
|
import androidx.annotation.StringRes
|
||||||
|
import ua.acclorite.book_story.R
|
||||||
|
|
||||||
enum class ReaderProgressCount {
|
|
||||||
PERCENTAGE,
|
enum class ReaderProgressCount(@StringRes val title: Int) {
|
||||||
QUANTITY
|
PERCENTAGE(R.string.progress_count_percentage),
|
||||||
|
QUANTITY(R.string.progress_count_quantity)
|
||||||
}
|
}
|
||||||
|
|
@ -7,12 +7,32 @@
|
||||||
package ua.acclorite.book_story.presentation.reader.model
|
package ua.acclorite.book_story.presentation.reader.model
|
||||||
|
|
||||||
import android.content.pm.ActivityInfo
|
import android.content.pm.ActivityInfo
|
||||||
|
import androidx.annotation.StringRes
|
||||||
|
import ua.acclorite.book_story.R
|
||||||
|
|
||||||
enum class ReaderScreenOrientation(val code: Int) {
|
enum class ReaderScreenOrientation(val code: Int, @StringRes val title: Int) {
|
||||||
DEFAULT(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED),
|
DEFAULT(
|
||||||
FREE(ActivityInfo.SCREEN_ORIENTATION_USER),
|
ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED,
|
||||||
PORTRAIT(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT),
|
R.string.default_string
|
||||||
LANDSCAPE(ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE),
|
),
|
||||||
LOCKED_PORTRAIT(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT),
|
FREE(
|
||||||
LOCKED_LANDSCAPE(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE),
|
ActivityInfo.SCREEN_ORIENTATION_USER,
|
||||||
|
R.string.screen_orientation_free
|
||||||
|
),
|
||||||
|
PORTRAIT(
|
||||||
|
ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT,
|
||||||
|
R.string.screen_orientation_portrait
|
||||||
|
),
|
||||||
|
LANDSCAPE(
|
||||||
|
ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE,
|
||||||
|
R.string.screen_orientation_landscape
|
||||||
|
),
|
||||||
|
LOCKED_PORTRAIT(
|
||||||
|
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT,
|
||||||
|
R.string.screen_orientation_locked_portrait
|
||||||
|
),
|
||||||
|
LOCKED_LANDSCAPE(
|
||||||
|
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE,
|
||||||
|
R.string.screen_orientation_locked_landscape
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -6,11 +6,13 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.presentation.reader.model
|
package ua.acclorite.book_story.presentation.reader.model
|
||||||
|
|
||||||
|
import androidx.annotation.StringRes
|
||||||
import androidx.compose.ui.text.style.TextAlign
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
|
import ua.acclorite.book_story.R
|
||||||
|
|
||||||
enum class ReaderTextAlignment(val textAlignment: TextAlign) {
|
enum class ReaderTextAlignment(val textAlignment: TextAlign, @StringRes val title: Int) {
|
||||||
START(TextAlign.Start),
|
START(TextAlign.Start, R.string.alignment_start),
|
||||||
JUSTIFY(TextAlign.Justify),
|
JUSTIFY(TextAlign.Justify, R.string.alignment_justify),
|
||||||
CENTER(TextAlign.Center),
|
CENTER(TextAlign.Center, R.string.alignment_center),
|
||||||
END(TextAlign.End)
|
END(TextAlign.End, R.string.alignment_end)
|
||||||
}
|
}
|
||||||
|
|
@ -12,7 +12,6 @@ import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.mutableIntStateOf
|
import androidx.compose.runtime.mutableIntStateOf
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.text.TextStyle
|
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import kotlinx.parcelize.IgnoredOnParcel
|
import kotlinx.parcelize.IgnoredOnParcel
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
|
|
@ -25,7 +24,7 @@ import ua.acclorite.book_story.presentation.settings.SettingsEvent
|
||||||
import ua.acclorite.book_story.presentation.settings.SettingsModel
|
import ua.acclorite.book_story.presentation.settings.SettingsModel
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalActivity
|
import ua.acclorite.book_story.ui.common.helpers.LocalActivity
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
import ua.acclorite.book_story.ui.navigator.LocalNavigator
|
import ua.acclorite.book_story.ui.navigator.LocalNavigator
|
||||||
import ua.acclorite.book_story.ui.start.StartContent
|
import ua.acclorite.book_story.ui.start.StartContent
|
||||||
|
|
||||||
|
|
@ -60,10 +59,9 @@ object StartScreen : Screen, Parcelable {
|
||||||
|
|
||||||
val languages = remember(settings.language.value) {
|
val languages = remember(settings.language.value) {
|
||||||
CoreData.languages.sortedBy { it.second }.map {
|
CoreData.languages.sortedBy { it.second }.map {
|
||||||
ButtonItem(
|
ListItem(
|
||||||
id = it.first,
|
item = it.first,
|
||||||
title = it.second,
|
title = it.second,
|
||||||
textStyle = TextStyle(),
|
|
||||||
selected = it.first == settings.language.lastValue
|
selected = it.first == settings.language.lastValue
|
||||||
)
|
)
|
||||||
}.sortedBy { it.title }
|
}.sortedBy { it.title }
|
||||||
|
|
|
||||||
|
|
@ -19,20 +19,17 @@ import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.unit.Dp
|
import androidx.compose.ui.unit.Dp
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ua.acclorite.book_story.ui.common.components.common.StyledText
|
import ua.acclorite.book_story.ui.common.components.common.StyledText
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
import ua.acclorite.book_story.ui.settings.components.SettingsSubcategoryTitle
|
import ua.acclorite.book_story.ui.settings.components.SettingsSubcategoryTitle
|
||||||
|
|
||||||
/**
|
|
||||||
* Chips with title. Use list of [ButtonItem]s to display chips.
|
|
||||||
*/
|
|
||||||
@Composable
|
@Composable
|
||||||
fun ChipsWithTitle(
|
fun <T> ChipsWithTitle(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
title: String,
|
title: String,
|
||||||
chips: List<ButtonItem>,
|
chips: List<ListItem<T>>,
|
||||||
horizontalPadding: Dp = 18.dp,
|
horizontalPadding: Dp = 18.dp,
|
||||||
verticalPadding: Dp = 8.dp,
|
verticalPadding: Dp = 8.dp,
|
||||||
onClick: (ButtonItem) -> Unit
|
onClick: (T) -> Unit
|
||||||
) {
|
) {
|
||||||
Column(
|
Column(
|
||||||
modifier
|
modifier
|
||||||
|
|
@ -53,14 +50,14 @@ fun ChipsWithTitle(
|
||||||
label = {
|
label = {
|
||||||
StyledText(
|
StyledText(
|
||||||
text = item.title,
|
text = item.title,
|
||||||
style = item.textStyle,
|
style = item.textStyle(),
|
||||||
maxLines = 1
|
maxLines = 1
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
onClick = { onClick(item) },
|
onClick = { onClick(item.item) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -44,31 +44,18 @@ import androidx.compose.ui.unit.dp
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.ui.common.components.common.AnimatedVisibility
|
import ua.acclorite.book_story.ui.common.components.common.AnimatedVisibility
|
||||||
import ua.acclorite.book_story.ui.common.components.common.StyledText
|
import ua.acclorite.book_story.ui.common.components.common.StyledText
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
import ua.acclorite.book_story.ui.settings.components.SettingsSubcategoryTitle
|
import ua.acclorite.book_story.ui.settings.components.SettingsSubcategoryTitle
|
||||||
|
|
||||||
/**
|
|
||||||
* Segmented Button with Title.
|
|
||||||
* Uses custom implementation(material3 one has many flaws).
|
|
||||||
* Contains [buttons].
|
|
||||||
*
|
|
||||||
* @param modifier Modifier.
|
|
||||||
* @param title Title of the buttons.
|
|
||||||
* @param buttons [ButtonItem]s.
|
|
||||||
* @param enabled Whether button is enabled.
|
|
||||||
* @param horizontalPadding Horizontal item padding.
|
|
||||||
* @param verticalPadding Vertical item padding.
|
|
||||||
* @param onClick OnClick callback.
|
|
||||||
*/
|
|
||||||
@Composable
|
@Composable
|
||||||
fun SegmentedButtonWithTitle(
|
fun <T> SegmentedButtonWithTitle(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
title: String,
|
title: String,
|
||||||
buttons: List<ButtonItem>,
|
buttons: List<ListItem<T>>,
|
||||||
enabled: Boolean = true,
|
enabled: Boolean = true,
|
||||||
horizontalPadding: Dp = 18.dp,
|
horizontalPadding: Dp = 18.dp,
|
||||||
verticalPadding: Dp = 8.dp,
|
verticalPadding: Dp = 8.dp,
|
||||||
onClick: (ButtonItem) -> Unit
|
onClick: (T) -> Unit
|
||||||
) {
|
) {
|
||||||
Column(
|
Column(
|
||||||
modifier
|
modifier
|
||||||
|
|
@ -91,9 +78,9 @@ fun SegmentedButtonWithTitle(
|
||||||
)
|
)
|
||||||
.padding(0.5.dp)
|
.padding(0.5.dp)
|
||||||
) {
|
) {
|
||||||
buttons.forEachIndexed { index, buttonItem ->
|
buttons.forEachIndexed { index, item ->
|
||||||
SegmentedButton(
|
SegmentedButton(
|
||||||
button = buttonItem,
|
button = item,
|
||||||
enabled = enabled,
|
enabled = enabled,
|
||||||
shape = when (index) {
|
shape = when (index) {
|
||||||
buttons.lastIndex -> RoundedCornerShape(
|
buttons.lastIndex -> RoundedCornerShape(
|
||||||
|
|
@ -108,7 +95,7 @@ fun SegmentedButtonWithTitle(
|
||||||
|
|
||||||
else -> RoundedCornerShape(0)
|
else -> RoundedCornerShape(0)
|
||||||
},
|
},
|
||||||
onClick = { onClick(buttonItem) }
|
onClick = { onClick(item.item) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -117,19 +104,9 @@ fun SegmentedButtonWithTitle(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Custom Segmented button.
|
|
||||||
* Adjusts width based on component name.
|
|
||||||
*
|
|
||||||
* @param button [ButtonItem].
|
|
||||||
* @param enabled Whether can be clicked.
|
|
||||||
* @param shape Shape of the button. For proper implementation should have 100% corners on first and last buttons(start and end).
|
|
||||||
* @param colors [SegmentedButtonColors].
|
|
||||||
* @param onClick OnClick callback.
|
|
||||||
*/
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun SegmentedButton(
|
private fun <T> SegmentedButton(
|
||||||
button: ButtonItem,
|
button: ListItem<T>,
|
||||||
enabled: Boolean,
|
enabled: Boolean,
|
||||||
shape: RoundedCornerShape,
|
shape: RoundedCornerShape,
|
||||||
colors: SegmentedButtonColors = SegmentedButtonDefaults.colors(),
|
colors: SegmentedButtonColors = SegmentedButtonDefaults.colors(),
|
||||||
|
|
@ -181,7 +158,7 @@ private fun SegmentedButton(
|
||||||
|
|
||||||
StyledText(
|
StyledText(
|
||||||
text = button.title,
|
text = button.title,
|
||||||
style = button.textStyle.copy(
|
style = button.textStyle().copy(
|
||||||
color = if (button.selected) colors.activeContentColor
|
color = if (button.selected) colors.activeContentColor
|
||||||
else colors.inactiveContentColor
|
else colors.inactiveContentColor
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -33,20 +33,6 @@ import ua.acclorite.book_story.ui.common.components.common.StyledText
|
||||||
import ua.acclorite.book_story.ui.settings.components.SettingsSubcategoryTitle
|
import ua.acclorite.book_story.ui.settings.components.SettingsSubcategoryTitle
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
/**
|
|
||||||
* Slider with title.
|
|
||||||
*
|
|
||||||
* @param modifier Modifier.
|
|
||||||
* @param value Value to be displayed, in pair with [String] which is the type of value(e.g. "pt")
|
|
||||||
* @param valuePlaceholder Placeholder of the value(e.g. "Default", instead of the "1pt")
|
|
||||||
* @param showPlaceholder Whether placeholder should be shown.
|
|
||||||
* @param fromValue From where user can pick value.
|
|
||||||
* @param toValue To where user can pick value.
|
|
||||||
* @param title Title of this slider.
|
|
||||||
* @param horizontalPadding Horizontal item padding.
|
|
||||||
* @param verticalPadding Vertical item padding.
|
|
||||||
* @param onValueChange Callback when value changes.
|
|
||||||
*/
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun SliderWithTitle(
|
fun SliderWithTitle(
|
||||||
|
|
@ -127,19 +113,6 @@ fun SliderWithTitle(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Slider with title.
|
|
||||||
*
|
|
||||||
* @param modifier Modifier.
|
|
||||||
* @param value Value to be displayed, in pair with [String] which is the type of value(e.g. "pt")
|
|
||||||
* @param valuePlaceholder Placeholder of the value(e.g. "Default", instead of the "1pt")
|
|
||||||
* @param showPlaceholder Whether placeholder should be shown.
|
|
||||||
* @param toValue To where user can pick value.
|
|
||||||
* @param title Title of this slider.
|
|
||||||
* @param horizontalPadding Horizontal item padding.
|
|
||||||
* @param verticalPadding Vertical item padding.
|
|
||||||
* @param onValueChange Callback when value changes.
|
|
||||||
*/
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun SliderWithTitle(
|
fun SliderWithTitle(
|
||||||
|
|
|
||||||
|
|
@ -25,16 +25,6 @@ import androidx.compose.ui.unit.Dp
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ua.acclorite.book_story.ui.common.components.common.StyledText
|
import ua.acclorite.book_story.ui.common.components.common.StyledText
|
||||||
|
|
||||||
/**
|
|
||||||
* Checkbox with title.
|
|
||||||
*
|
|
||||||
* @param selected Whether [Switch] has checked state.
|
|
||||||
* @param title Title.
|
|
||||||
* @param description Optional description.
|
|
||||||
* @param horizontalPadding Horizontal padding.
|
|
||||||
* @param verticalPadding Vertical padding.
|
|
||||||
* @param onClick Triggers when user clicks anywhere on this composable.
|
|
||||||
*/
|
|
||||||
@Composable
|
@Composable
|
||||||
fun SwitchWithTitle(
|
fun SwitchWithTitle(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,15 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.common.model
|
package ua.acclorite.book_story.ui.common.model
|
||||||
|
|
||||||
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
import androidx.compose.ui.text.TextStyle
|
import androidx.compose.ui.text.TextStyle
|
||||||
|
|
||||||
@Immutable
|
@Immutable
|
||||||
data class ButtonItem(
|
data class ListItem<T>(
|
||||||
val id: String,
|
val item: T,
|
||||||
val title: String,
|
val title: String,
|
||||||
val textStyle: TextStyle,
|
val textStyle: @Composable () -> TextStyle = { MaterialTheme.typography.labelLarge },
|
||||||
val selected: Boolean
|
val selected: Boolean
|
||||||
)
|
)
|
||||||
|
|
@ -6,13 +6,12 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.settings.appearance.theme_preferences.components
|
package ua.acclorite.book_story.ui.settings.appearance.theme_preferences.components
|
||||||
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
import ua.acclorite.book_story.ui.theme.model.DarkTheme
|
import ua.acclorite.book_story.ui.theme.model.DarkTheme
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -21,19 +20,15 @@ fun DarkThemeOption() {
|
||||||
|
|
||||||
SegmentedButtonWithTitle(
|
SegmentedButtonWithTitle(
|
||||||
title = stringResource(id = R.string.dark_theme_option),
|
title = stringResource(id = R.string.dark_theme_option),
|
||||||
buttons = DarkTheme.entries.map {
|
buttons = DarkTheme.entries.map { item ->
|
||||||
ButtonItem(
|
ListItem(
|
||||||
it.name,
|
item = item,
|
||||||
title = when (it) {
|
title = stringResource(id = item.title),
|
||||||
DarkTheme.OFF -> stringResource(id = R.string.dark_theme_off)
|
selected = item == settings.darkTheme.value
|
||||||
DarkTheme.ON -> stringResource(id = R.string.dark_theme_on)
|
|
||||||
DarkTheme.FOLLOW_SYSTEM -> stringResource(id = R.string.dark_theme_follow_system)
|
|
||||||
},
|
|
||||||
textStyle = MaterialTheme.typography.labelLarge,
|
|
||||||
selected = it == settings.darkTheme.value
|
|
||||||
)
|
)
|
||||||
|
},
|
||||||
|
onClick = { item ->
|
||||||
|
settings.darkTheme.update(item)
|
||||||
}
|
}
|
||||||
) {
|
)
|
||||||
settings.darkTheme.update(DarkTheme.valueOf(it.id))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
@ -6,13 +6,12 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.settings.appearance.theme_preferences.components
|
package ua.acclorite.book_story.ui.settings.appearance.theme_preferences.components
|
||||||
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
import ua.acclorite.book_story.ui.theme.ExpandingTransition
|
import ua.acclorite.book_story.ui.theme.ExpandingTransition
|
||||||
import ua.acclorite.book_story.ui.theme.model.PureDark
|
import ua.acclorite.book_story.ui.theme.model.PureDark
|
||||||
|
|
||||||
|
|
@ -23,20 +22,16 @@ fun PureDarkOption() {
|
||||||
ExpandingTransition(visible = settings.darkTheme.value.isDark()) {
|
ExpandingTransition(visible = settings.darkTheme.value.isDark()) {
|
||||||
SegmentedButtonWithTitle(
|
SegmentedButtonWithTitle(
|
||||||
title = stringResource(id = R.string.pure_dark_option),
|
title = stringResource(id = R.string.pure_dark_option),
|
||||||
buttons = PureDark.entries.map {
|
buttons = PureDark.entries.map { item ->
|
||||||
ButtonItem(
|
ListItem(
|
||||||
id = it.toString(),
|
item = item,
|
||||||
title = when (it) {
|
title = stringResource(id = item.title),
|
||||||
PureDark.OFF -> stringResource(id = R.string.pure_dark_off)
|
selected = item == settings.pureDark.value
|
||||||
PureDark.ON -> stringResource(id = R.string.pure_dark_on)
|
|
||||||
PureDark.SAVER -> stringResource(id = R.string.pure_dark_power_saver)
|
|
||||||
},
|
|
||||||
textStyle = MaterialTheme.typography.labelLarge,
|
|
||||||
selected = it == settings.pureDark.value
|
|
||||||
)
|
)
|
||||||
|
},
|
||||||
|
onClick = { item ->
|
||||||
|
settings.pureDark.update(item)
|
||||||
}
|
}
|
||||||
) {
|
)
|
||||||
settings.pureDark.update(PureDark.valueOf(it.id))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -6,7 +6,6 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.settings.appearance.theme_preferences.components
|
package ua.acclorite.book_story.ui.settings.appearance.theme_preferences.components
|
||||||
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
|
|
@ -16,7 +15,7 @@ import androidx.compose.ui.res.stringResource
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
import ua.acclorite.book_story.ui.theme.BookStoryTheme
|
import ua.acclorite.book_story.ui.theme.BookStoryTheme
|
||||||
import ua.acclorite.book_story.ui.theme.ExpandingTransition
|
import ua.acclorite.book_story.ui.theme.ExpandingTransition
|
||||||
import ua.acclorite.book_story.ui.theme.model.ThemeContrast
|
import ua.acclorite.book_story.ui.theme.model.ThemeContrast
|
||||||
|
|
@ -42,21 +41,17 @@ fun ThemeContrastOption() {
|
||||||
SegmentedButtonWithTitle(
|
SegmentedButtonWithTitle(
|
||||||
title = stringResource(id = R.string.theme_contrast_option),
|
title = stringResource(id = R.string.theme_contrast_option),
|
||||||
enabled = settings.theme.value.hasThemeContrast,
|
enabled = settings.theme.value.hasThemeContrast,
|
||||||
buttons = ThemeContrast.entries.map {
|
buttons = ThemeContrast.entries.map { item ->
|
||||||
ButtonItem(
|
ListItem(
|
||||||
id = it.toString(),
|
item = item,
|
||||||
title = when (it) {
|
title = stringResource(id = item.title),
|
||||||
ThemeContrast.STANDARD -> stringResource(id = R.string.theme_contrast_standard)
|
selected = item == settings.themeContrast.value
|
||||||
ThemeContrast.MEDIUM -> stringResource(id = R.string.theme_contrast_medium)
|
|
||||||
ThemeContrast.HIGH -> stringResource(id = R.string.theme_contrast_high)
|
|
||||||
},
|
|
||||||
textStyle = MaterialTheme.typography.labelLarge,
|
|
||||||
selected = it == settings.themeContrast.value
|
|
||||||
)
|
)
|
||||||
|
},
|
||||||
|
onClick = { item ->
|
||||||
|
settings.themeContrast.update(item)
|
||||||
}
|
}
|
||||||
) {
|
)
|
||||||
settings.themeContrast.update(ThemeContrast.valueOf(it.id))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -6,14 +6,13 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.settings.browse.display.components
|
package ua.acclorite.book_story.ui.settings.browse.display.components
|
||||||
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.presentation.browse.model.BrowseLayout
|
import ua.acclorite.book_story.presentation.browse.model.BrowseLayout
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun BrowseLayoutOption() {
|
fun BrowseLayoutOption() {
|
||||||
|
|
@ -21,18 +20,15 @@ fun BrowseLayoutOption() {
|
||||||
|
|
||||||
SegmentedButtonWithTitle(
|
SegmentedButtonWithTitle(
|
||||||
title = stringResource(id = R.string.layout_option),
|
title = stringResource(id = R.string.layout_option),
|
||||||
buttons = BrowseLayout.entries.map {
|
buttons = BrowseLayout.entries.map { item ->
|
||||||
ButtonItem(
|
ListItem(
|
||||||
it.toString(),
|
item = item,
|
||||||
when (it) {
|
title = stringResource(id = item.title),
|
||||||
BrowseLayout.LIST -> stringResource(id = R.string.layout_list)
|
selected = item == settings.browseLayout.value
|
||||||
BrowseLayout.GRID -> stringResource(id = R.string.layout_grid)
|
|
||||||
},
|
|
||||||
MaterialTheme.typography.labelLarge,
|
|
||||||
it == settings.browseLayout.value
|
|
||||||
)
|
)
|
||||||
|
},
|
||||||
|
onClick = { item ->
|
||||||
|
settings.browseLayout.update(item)
|
||||||
}
|
}
|
||||||
) {
|
)
|
||||||
settings.browseLayout.update(BrowseLayout.valueOf(it.id))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
@ -6,7 +6,6 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.settings.general.components
|
package ua.acclorite.book_story.ui.settings.general.components
|
||||||
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
|
|
@ -16,7 +15,7 @@ import ua.acclorite.book_story.presentation.settings.SettingsEvent
|
||||||
import ua.acclorite.book_story.presentation.settings.SettingsModel
|
import ua.acclorite.book_story.presentation.settings.SettingsModel
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.ChipsWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.ChipsWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun AppLanguageOption() {
|
fun AppLanguageOption() {
|
||||||
|
|
@ -25,15 +24,15 @@ fun AppLanguageOption() {
|
||||||
|
|
||||||
ChipsWithTitle(
|
ChipsWithTitle(
|
||||||
title = stringResource(id = R.string.language_option),
|
title = stringResource(id = R.string.language_option),
|
||||||
chips = CoreData.languages.sortedBy { it.second }.map {
|
chips = CoreData.languages.sortedBy { it.second }.map { item ->
|
||||||
ButtonItem(
|
ListItem(
|
||||||
it.first,
|
item = item.first,
|
||||||
it.second,
|
title = item.second,
|
||||||
MaterialTheme.typography.labelLarge,
|
selected = item.first == settings.language.value
|
||||||
it.first == settings.language.value
|
|
||||||
)
|
)
|
||||||
|
},
|
||||||
|
onClick = { item ->
|
||||||
|
settingsModel.onEvent(SettingsEvent.OnUpdateLanguage(item))
|
||||||
}
|
}
|
||||||
) {
|
)
|
||||||
settingsModel.onEvent(SettingsEvent.OnUpdateLanguage(it.id))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
@ -6,14 +6,13 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.settings.library.display.components
|
package ua.acclorite.book_story.ui.settings.library.display.components
|
||||||
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.presentation.library.model.LibraryLayout
|
import ua.acclorite.book_story.presentation.library.model.LibraryLayout
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun LibraryLayoutOption() {
|
fun LibraryLayoutOption() {
|
||||||
|
|
@ -21,18 +20,15 @@ fun LibraryLayoutOption() {
|
||||||
|
|
||||||
SegmentedButtonWithTitle(
|
SegmentedButtonWithTitle(
|
||||||
title = stringResource(id = R.string.layout_option),
|
title = stringResource(id = R.string.layout_option),
|
||||||
buttons = LibraryLayout.entries.map {
|
buttons = LibraryLayout.entries.map { item ->
|
||||||
ButtonItem(
|
ListItem(
|
||||||
it.toString(),
|
item = item,
|
||||||
when (it) {
|
title = stringResource(id = item.title),
|
||||||
LibraryLayout.LIST -> stringResource(id = R.string.layout_list)
|
selected = item == settings.libraryLayout.value
|
||||||
LibraryLayout.GRID -> stringResource(id = R.string.layout_grid)
|
|
||||||
},
|
|
||||||
MaterialTheme.typography.labelLarge,
|
|
||||||
it == settings.libraryLayout.value
|
|
||||||
)
|
)
|
||||||
|
},
|
||||||
|
onClick = { item ->
|
||||||
|
settings.libraryLayout.update(item)
|
||||||
}
|
}
|
||||||
) {
|
)
|
||||||
settings.libraryLayout.update(LibraryLayout.valueOf(it.id))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
@ -6,7 +6,6 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.settings.library.display.components
|
package ua.acclorite.book_story.ui.settings.library.display.components
|
||||||
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
|
|
@ -14,7 +13,7 @@ import ua.acclorite.book_story.presentation.library.model.LibraryLayout
|
||||||
import ua.acclorite.book_story.presentation.library.model.LibraryTitlePosition
|
import ua.acclorite.book_story.presentation.library.model.LibraryTitlePosition
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.ChipsWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.ChipsWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
import ua.acclorite.book_story.ui.theme.ExpandingTransition
|
import ua.acclorite.book_story.ui.theme.ExpandingTransition
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -24,20 +23,16 @@ fun LibraryTitlePositionOption() {
|
||||||
ExpandingTransition(visible = settings.libraryLayout.value == LibraryLayout.GRID) {
|
ExpandingTransition(visible = settings.libraryLayout.value == LibraryLayout.GRID) {
|
||||||
ChipsWithTitle(
|
ChipsWithTitle(
|
||||||
title = stringResource(id = R.string.title_position_option),
|
title = stringResource(id = R.string.title_position_option),
|
||||||
chips = LibraryTitlePosition.entries.map {
|
chips = LibraryTitlePosition.entries.map { item ->
|
||||||
ButtonItem(
|
ListItem(
|
||||||
it.name,
|
item = item,
|
||||||
when (it) {
|
title = stringResource(id = item.title),
|
||||||
LibraryTitlePosition.OFF -> stringResource(id = R.string.library_title_position_off)
|
selected = item == settings.libraryTitlePosition.value
|
||||||
LibraryTitlePosition.BELOW -> stringResource(id = R.string.library_title_position_below)
|
|
||||||
LibraryTitlePosition.INSIDE -> stringResource(id = R.string.library_title_position_inside)
|
|
||||||
},
|
|
||||||
MaterialTheme.typography.labelLarge,
|
|
||||||
it == settings.libraryTitlePosition.value
|
|
||||||
)
|
)
|
||||||
|
},
|
||||||
|
onClick = { item ->
|
||||||
|
settings.libraryTitlePosition.update(item)
|
||||||
}
|
}
|
||||||
) {
|
)
|
||||||
settings.libraryTitlePosition.update(LibraryTitlePosition.valueOf(it.id))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -6,14 +6,13 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.settings.reader.chapters.components
|
package ua.acclorite.book_story.ui.settings.reader.chapters.components
|
||||||
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.presentation.reader.model.ReaderTextAlignment
|
import ua.acclorite.book_story.presentation.reader.model.ReaderTextAlignment
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun ChapterTitleAlignmentOption() {
|
fun ChapterTitleAlignmentOption() {
|
||||||
|
|
@ -21,21 +20,15 @@ fun ChapterTitleAlignmentOption() {
|
||||||
|
|
||||||
SegmentedButtonWithTitle(
|
SegmentedButtonWithTitle(
|
||||||
title = stringResource(id = R.string.chapter_title_alignment_option),
|
title = stringResource(id = R.string.chapter_title_alignment_option),
|
||||||
buttons = ReaderTextAlignment.entries.map {
|
buttons = ReaderTextAlignment.entries.map { item ->
|
||||||
ButtonItem(
|
ListItem(
|
||||||
id = it.toString(),
|
item = item,
|
||||||
title = when (it) {
|
title = stringResource(id = item.title),
|
||||||
ReaderTextAlignment.START -> stringResource(id = R.string.alignment_start)
|
selected = item == settings.chapterTitleAlignment.value
|
||||||
ReaderTextAlignment.JUSTIFY -> stringResource(id = R.string.alignment_justify)
|
|
||||||
ReaderTextAlignment.CENTER -> stringResource(id = R.string.alignment_center)
|
|
||||||
ReaderTextAlignment.END -> stringResource(id = R.string.alignment_end)
|
|
||||||
},
|
|
||||||
textStyle = MaterialTheme.typography.labelLarge,
|
|
||||||
selected = it == settings.chapterTitleAlignment.value
|
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
onClick = {
|
onClick = { item ->
|
||||||
settings.chapterTitleAlignment.update(ReaderTextAlignment.valueOf(it.id))
|
settings.chapterTitleAlignment.update(item)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -12,7 +12,7 @@ import androidx.compose.ui.res.stringResource
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.ChipsWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.ChipsWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
import ua.acclorite.book_story.ui.reader.data.ReaderData
|
import ua.acclorite.book_story.ui.reader.data.ReaderData
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -21,21 +21,20 @@ fun FontFamilyOption() {
|
||||||
|
|
||||||
ChipsWithTitle(
|
ChipsWithTitle(
|
||||||
title = stringResource(id = R.string.font_family_option),
|
title = stringResource(id = R.string.font_family_option),
|
||||||
chips = ReaderData.fonts.map {
|
chips = ReaderData.fonts.map { item ->
|
||||||
ButtonItem(
|
ListItem(
|
||||||
id = it.id,
|
item = item,
|
||||||
title = it.fontName.asString(),
|
title = item.fontName.asString(),
|
||||||
textStyle = MaterialTheme.typography.labelLarge.copy(
|
textStyle = {
|
||||||
fontFamily = it.font
|
MaterialTheme.typography.labelLarge.copy(
|
||||||
),
|
fontFamily = item.font
|
||||||
selected = it == settings.fontFamily.value
|
)
|
||||||
|
},
|
||||||
|
selected = item == settings.fontFamily.value
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
onClick = {
|
onClick = { item ->
|
||||||
settings.fontFamily.update(
|
settings.fontFamily.update(item)
|
||||||
ReaderData.fonts.find { font -> font.id == it.id }
|
|
||||||
?: ReaderData.fonts[0]
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -13,7 +13,7 @@ import androidx.compose.ui.text.font.FontStyle
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun FontStyleOption() {
|
fun FontStyleOption() {
|
||||||
|
|
@ -22,32 +22,31 @@ fun FontStyleOption() {
|
||||||
SegmentedButtonWithTitle(
|
SegmentedButtonWithTitle(
|
||||||
title = stringResource(id = R.string.font_style_option),
|
title = stringResource(id = R.string.font_style_option),
|
||||||
buttons = listOf(
|
buttons = listOf(
|
||||||
ButtonItem(
|
ListItem(
|
||||||
id = "normal",
|
item = false,
|
||||||
title = stringResource(id = R.string.font_style_normal),
|
title = stringResource(id = R.string.font_style_normal),
|
||||||
textStyle = MaterialTheme.typography.labelLarge.copy(
|
textStyle = {
|
||||||
fontFamily = settings.fontFamily.value.font,
|
MaterialTheme.typography.labelLarge.copy(
|
||||||
fontStyle = FontStyle.Normal
|
fontFamily = settings.fontFamily.value.font,
|
||||||
),
|
fontStyle = FontStyle.Normal
|
||||||
|
)
|
||||||
|
},
|
||||||
selected = !settings.italic.value
|
selected = !settings.italic.value
|
||||||
),
|
),
|
||||||
ButtonItem(
|
ListItem(
|
||||||
id = "italic",
|
item = true,
|
||||||
title = stringResource(id = R.string.font_style_italic),
|
title = stringResource(id = R.string.font_style_italic),
|
||||||
textStyle = MaterialTheme.typography.labelLarge.copy(
|
textStyle = {
|
||||||
fontFamily = settings.fontFamily.value.font,
|
MaterialTheme.typography.labelLarge.copy(
|
||||||
fontStyle = FontStyle.Italic
|
fontFamily = settings.fontFamily.value.font,
|
||||||
),
|
fontStyle = FontStyle.Italic
|
||||||
|
)
|
||||||
|
},
|
||||||
selected = settings.italic.value
|
selected = settings.italic.value
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
onClick = {
|
onClick = { item ->
|
||||||
settings.italic.update(
|
settings.italic.update(item)
|
||||||
when (it.id) {
|
|
||||||
"italic" -> true
|
|
||||||
else -> false
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -13,7 +13,7 @@ import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.presentation.reader.model.ReaderFontThickness
|
import ua.acclorite.book_story.presentation.reader.model.ReaderFontThickness
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.ChipsWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.ChipsWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun FontThicknessOption() {
|
fun FontThicknessOption() {
|
||||||
|
|
@ -21,25 +21,21 @@ fun FontThicknessOption() {
|
||||||
|
|
||||||
ChipsWithTitle(
|
ChipsWithTitle(
|
||||||
title = stringResource(id = R.string.font_thickness_option),
|
title = stringResource(id = R.string.font_thickness_option),
|
||||||
chips = ReaderFontThickness.entries.map {
|
chips = ReaderFontThickness.entries.map { item ->
|
||||||
ButtonItem(
|
ListItem(
|
||||||
id = it.toString(),
|
item = item,
|
||||||
title = when (it) {
|
title = stringResource(id = item.title),
|
||||||
ReaderFontThickness.THIN -> stringResource(id = R.string.font_thickness_thin)
|
textStyle = {
|
||||||
ReaderFontThickness.EXTRA_LIGHT -> stringResource(id = R.string.font_thickness_extra_light)
|
MaterialTheme.typography.labelLarge.copy(
|
||||||
ReaderFontThickness.LIGHT -> stringResource(id = R.string.font_thickness_light)
|
fontFamily = settings.fontFamily.value.font,
|
||||||
ReaderFontThickness.NORMAL -> stringResource(id = R.string.font_thickness_normal)
|
fontWeight = item.thickness
|
||||||
ReaderFontThickness.MEDIUM -> stringResource(id = R.string.font_thickness_medium)
|
)
|
||||||
},
|
},
|
||||||
textStyle = MaterialTheme.typography.labelLarge.copy(
|
selected = item == settings.fontThickness.value
|
||||||
fontFamily = settings.fontFamily.value.font,
|
|
||||||
fontWeight = it.thickness
|
|
||||||
),
|
|
||||||
selected = it == settings.fontThickness.value
|
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
onClick = {
|
onClick = { item ->
|
||||||
settings.fontThickness.update(ReaderFontThickness.valueOf(it.id))
|
settings.fontThickness.update(item)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -6,13 +6,12 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.settings.reader.images.components
|
package ua.acclorite.book_story.ui.settings.reader.images.components
|
||||||
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
import ua.acclorite.book_story.ui.theme.ExpandingTransition
|
import ua.acclorite.book_story.ui.theme.ExpandingTransition
|
||||||
import ua.acclorite.book_story.ui.theme.model.HorizontalAlignment
|
import ua.acclorite.book_story.ui.theme.model.HorizontalAlignment
|
||||||
|
|
||||||
|
|
@ -23,20 +22,15 @@ fun ImagesAlignmentOption() {
|
||||||
ExpandingTransition(visible = settings.images.value) {
|
ExpandingTransition(visible = settings.images.value) {
|
||||||
SegmentedButtonWithTitle(
|
SegmentedButtonWithTitle(
|
||||||
title = stringResource(id = R.string.images_alignment_option),
|
title = stringResource(id = R.string.images_alignment_option),
|
||||||
buttons = HorizontalAlignment.entries.map {
|
buttons = HorizontalAlignment.entries.map { item ->
|
||||||
ButtonItem(
|
ListItem(
|
||||||
id = it.name,
|
item = item,
|
||||||
title = when (it) {
|
title = stringResource(id = item.title),
|
||||||
HorizontalAlignment.START -> stringResource(id = R.string.alignment_start)
|
selected = item == settings.imagesAlignment.value
|
||||||
HorizontalAlignment.CENTER -> stringResource(id = R.string.alignment_center)
|
|
||||||
HorizontalAlignment.END -> stringResource(id = R.string.alignment_end)
|
|
||||||
},
|
|
||||||
textStyle = MaterialTheme.typography.labelLarge,
|
|
||||||
selected = it == settings.imagesAlignment.value
|
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
onClick = {
|
onClick = { item ->
|
||||||
settings.imagesAlignment.update(HorizontalAlignment.valueOf(it.id))
|
settings.imagesAlignment.update(item)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,14 +6,13 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.settings.reader.images.components
|
package ua.acclorite.book_story.ui.settings.reader.images.components
|
||||||
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.presentation.reader.model.ReaderColorEffects
|
import ua.acclorite.book_story.presentation.reader.model.ReaderColorEffects
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.ChipsWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.ChipsWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
import ua.acclorite.book_story.ui.theme.ExpandingTransition
|
import ua.acclorite.book_story.ui.theme.ExpandingTransition
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -23,21 +22,15 @@ fun ImagesColorEffectsOption() {
|
||||||
ExpandingTransition(visible = settings.images.value) {
|
ExpandingTransition(visible = settings.images.value) {
|
||||||
ChipsWithTitle(
|
ChipsWithTitle(
|
||||||
title = stringResource(id = R.string.images_color_effects_option),
|
title = stringResource(id = R.string.images_color_effects_option),
|
||||||
chips = ReaderColorEffects.entries.map {
|
chips = ReaderColorEffects.entries.map { item ->
|
||||||
ButtonItem(
|
ListItem(
|
||||||
id = it.name,
|
item = item,
|
||||||
title = when (it) {
|
title = stringResource(id = item.title),
|
||||||
ReaderColorEffects.OFF -> stringResource(R.string.color_effects_off)
|
selected = item == settings.imagesColorEffects.value
|
||||||
ReaderColorEffects.GRAYSCALE -> stringResource(R.string.color_effects_grayscale)
|
|
||||||
ReaderColorEffects.FONT -> stringResource(R.string.color_effects_font)
|
|
||||||
ReaderColorEffects.BACKGROUND -> stringResource(R.string.color_effects_background)
|
|
||||||
},
|
|
||||||
textStyle = MaterialTheme.typography.labelLarge,
|
|
||||||
selected = it == settings.imagesColorEffects.value
|
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
onClick = {
|
onClick = { item ->
|
||||||
settings.imagesColorEffects.update(ReaderColorEffects.valueOf(it.id))
|
settings.imagesColorEffects.update(item)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,12 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.settings.reader.progress.components
|
package ua.acclorite.book_story.ui.settings.reader.progress.components
|
||||||
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
import ua.acclorite.book_story.ui.theme.ExpandingTransition
|
import ua.acclorite.book_story.ui.theme.ExpandingTransition
|
||||||
import ua.acclorite.book_story.ui.theme.model.HorizontalAlignment
|
import ua.acclorite.book_story.ui.theme.model.HorizontalAlignment
|
||||||
|
|
||||||
|
|
@ -23,20 +22,15 @@ fun ProgressBarAlignmentOption() {
|
||||||
ExpandingTransition(visible = settings.progressBar.value) {
|
ExpandingTransition(visible = settings.progressBar.value) {
|
||||||
SegmentedButtonWithTitle(
|
SegmentedButtonWithTitle(
|
||||||
title = stringResource(id = R.string.progress_bar_alignment_option),
|
title = stringResource(id = R.string.progress_bar_alignment_option),
|
||||||
buttons = HorizontalAlignment.entries.map {
|
buttons = HorizontalAlignment.entries.map { item ->
|
||||||
ButtonItem(
|
ListItem(
|
||||||
id = it.name,
|
item = item,
|
||||||
title = when (it) {
|
title = stringResource(id = item.title),
|
||||||
HorizontalAlignment.START -> stringResource(id = R.string.alignment_start)
|
selected = item == settings.progressBarAlignment.value
|
||||||
HorizontalAlignment.CENTER -> stringResource(id = R.string.alignment_center)
|
|
||||||
HorizontalAlignment.END -> stringResource(id = R.string.alignment_end)
|
|
||||||
},
|
|
||||||
textStyle = MaterialTheme.typography.labelLarge,
|
|
||||||
selected = it == settings.progressBarAlignment.value
|
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
onClick = {
|
onClick = { item ->
|
||||||
settings.progressBarAlignment.update(HorizontalAlignment.valueOf(it.id))
|
settings.progressBarAlignment.update(item)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,14 +6,13 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.settings.reader.progress.components
|
package ua.acclorite.book_story.ui.settings.reader.progress.components
|
||||||
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.presentation.reader.model.ReaderProgressCount
|
import ua.acclorite.book_story.presentation.reader.model.ReaderProgressCount
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun ProgressCountOption() {
|
fun ProgressCountOption() {
|
||||||
|
|
@ -21,19 +20,15 @@ fun ProgressCountOption() {
|
||||||
|
|
||||||
SegmentedButtonWithTitle(
|
SegmentedButtonWithTitle(
|
||||||
title = stringResource(id = R.string.progress_count_option),
|
title = stringResource(id = R.string.progress_count_option),
|
||||||
buttons = ReaderProgressCount.entries.map {
|
buttons = ReaderProgressCount.entries.map { item ->
|
||||||
ButtonItem(
|
ListItem(
|
||||||
id = it.name,
|
item = item,
|
||||||
title = when (it) {
|
title = stringResource(id = item.title),
|
||||||
ReaderProgressCount.PERCENTAGE -> stringResource(id = R.string.progress_count_percentage)
|
selected = item == settings.progressCount.value
|
||||||
ReaderProgressCount.QUANTITY -> stringResource(id = R.string.progress_count_quantity)
|
|
||||||
},
|
|
||||||
textStyle = MaterialTheme.typography.labelLarge,
|
|
||||||
selected = it == settings.progressCount.value
|
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
onClick = {
|
onClick = { item ->
|
||||||
settings.progressCount.update(ReaderProgressCount.valueOf(it.id))
|
settings.progressCount.update(item)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -6,14 +6,13 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.settings.reader.reading_mode.components
|
package ua.acclorite.book_story.ui.settings.reader.reading_mode.components
|
||||||
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.presentation.reader.model.ReaderHorizontalGesture
|
import ua.acclorite.book_story.presentation.reader.model.ReaderHorizontalGesture
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.ChipsWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.ChipsWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun HorizontalGestureOption() {
|
fun HorizontalGestureOption() {
|
||||||
|
|
@ -21,20 +20,15 @@ fun HorizontalGestureOption() {
|
||||||
|
|
||||||
ChipsWithTitle(
|
ChipsWithTitle(
|
||||||
title = stringResource(id = R.string.horizontal_gesture_option),
|
title = stringResource(id = R.string.horizontal_gesture_option),
|
||||||
chips = ReaderHorizontalGesture.entries.map {
|
chips = ReaderHorizontalGesture.entries.map { item ->
|
||||||
ButtonItem(
|
ListItem(
|
||||||
id = it.name,
|
item = item,
|
||||||
title = when (it) {
|
title = stringResource(id = item.title),
|
||||||
ReaderHorizontalGesture.OFF -> stringResource(R.string.horizontal_gesture_off)
|
selected = item == settings.horizontalGesture.value
|
||||||
ReaderHorizontalGesture.ON -> stringResource(R.string.horizontal_gesture_on)
|
|
||||||
ReaderHorizontalGesture.INVERSE -> stringResource(R.string.horizontal_gesture_inverse)
|
|
||||||
},
|
|
||||||
textStyle = MaterialTheme.typography.labelLarge,
|
|
||||||
selected = it == settings.horizontalGesture.value
|
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
onClick = {
|
onClick = { item ->
|
||||||
settings.horizontalGesture.update(ReaderHorizontalGesture.valueOf(it.id))
|
settings.horizontalGesture.update(item)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -6,14 +6,13 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.settings.reader.system.components
|
package ua.acclorite.book_story.ui.settings.reader.system.components
|
||||||
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.presentation.reader.model.ReaderScreenOrientation
|
import ua.acclorite.book_story.presentation.reader.model.ReaderScreenOrientation
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.ChipsWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.ChipsWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun ScreenOrientationOption() {
|
fun ScreenOrientationOption() {
|
||||||
|
|
@ -21,23 +20,15 @@ fun ScreenOrientationOption() {
|
||||||
|
|
||||||
ChipsWithTitle(
|
ChipsWithTitle(
|
||||||
title = stringResource(id = R.string.screen_orientation_option),
|
title = stringResource(id = R.string.screen_orientation_option),
|
||||||
chips = ReaderScreenOrientation.entries.map {
|
chips = ReaderScreenOrientation.entries.map { item ->
|
||||||
ButtonItem(
|
ListItem(
|
||||||
id = it.name,
|
item = item,
|
||||||
title = when (it) {
|
title = stringResource(id = item.title),
|
||||||
ReaderScreenOrientation.FREE -> stringResource(id = R.string.screen_orientation_free)
|
selected = item == settings.screenOrientation.value
|
||||||
ReaderScreenOrientation.PORTRAIT -> stringResource(id = R.string.screen_orientation_portrait)
|
|
||||||
ReaderScreenOrientation.LANDSCAPE -> stringResource(id = R.string.screen_orientation_landscape)
|
|
||||||
ReaderScreenOrientation.LOCKED_PORTRAIT -> stringResource(id = R.string.screen_orientation_locked_portrait)
|
|
||||||
ReaderScreenOrientation.LOCKED_LANDSCAPE -> stringResource(id = R.string.screen_orientation_locked_landscape)
|
|
||||||
else -> stringResource(id = R.string.default_string)
|
|
||||||
},
|
|
||||||
textStyle = MaterialTheme.typography.labelLarge,
|
|
||||||
selected = it == settings.screenOrientation.value
|
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
onClick = {
|
onClick = { item ->
|
||||||
settings.screenOrientation.update(ReaderScreenOrientation.valueOf(it.id))
|
settings.screenOrientation.update(item)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -6,14 +6,13 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.settings.reader.text.components
|
package ua.acclorite.book_story.ui.settings.reader.text.components
|
||||||
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.presentation.reader.model.ReaderTextAlignment
|
import ua.acclorite.book_story.presentation.reader.model.ReaderTextAlignment
|
||||||
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
import ua.acclorite.book_story.ui.common.components.settings.SegmentedButtonWithTitle
|
||||||
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
import ua.acclorite.book_story.ui.common.helpers.LocalSettings
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun TextAlignmentOption() {
|
fun TextAlignmentOption() {
|
||||||
|
|
@ -21,21 +20,15 @@ fun TextAlignmentOption() {
|
||||||
|
|
||||||
SegmentedButtonWithTitle(
|
SegmentedButtonWithTitle(
|
||||||
title = stringResource(id = R.string.text_alignment_option),
|
title = stringResource(id = R.string.text_alignment_option),
|
||||||
buttons = ReaderTextAlignment.entries.map {
|
buttons = ReaderTextAlignment.entries.map { item ->
|
||||||
ButtonItem(
|
ListItem(
|
||||||
id = it.toString(),
|
item = item,
|
||||||
title = when (it) {
|
title = stringResource(id = item.title),
|
||||||
ReaderTextAlignment.START -> stringResource(id = R.string.alignment_start)
|
selected = item == settings.textAlignment.value
|
||||||
ReaderTextAlignment.JUSTIFY -> stringResource(id = R.string.alignment_justify)
|
|
||||||
ReaderTextAlignment.CENTER -> stringResource(id = R.string.alignment_center)
|
|
||||||
ReaderTextAlignment.END -> stringResource(id = R.string.alignment_end)
|
|
||||||
},
|
|
||||||
textStyle = MaterialTheme.typography.labelLarge,
|
|
||||||
selected = it == settings.textAlignment.value
|
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
onClick = {
|
onClick = { item ->
|
||||||
settings.textAlignment.update(ReaderTextAlignment.valueOf(it.id))
|
settings.textAlignment.update(item)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -12,13 +12,13 @@ import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import ua.acclorite.book_story.presentation.navigator.StackEvent
|
import ua.acclorite.book_story.presentation.navigator.StackEvent
|
||||||
import ua.acclorite.book_story.presentation.start.StartScreen
|
import ua.acclorite.book_story.presentation.start.StartScreen
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun StartContent(
|
fun StartContent(
|
||||||
currentPage: Int,
|
currentPage: Int,
|
||||||
stackEvent: StackEvent,
|
stackEvent: StackEvent,
|
||||||
languages: List<ButtonItem>,
|
languages: List<ListItem<String>>,
|
||||||
updateLanguage: (String) -> Unit,
|
updateLanguage: (String) -> Unit,
|
||||||
navigateForward: () -> Unit,
|
navigateForward: () -> Unit,
|
||||||
navigateBack: () -> Unit,
|
navigateBack: () -> Unit,
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,13 @@ package ua.acclorite.book_story.ui.start
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import ua.acclorite.book_story.presentation.navigator.StackEvent
|
import ua.acclorite.book_story.presentation.navigator.StackEvent
|
||||||
import ua.acclorite.book_story.presentation.start.StartScreen
|
import ua.acclorite.book_story.presentation.start.StartScreen
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun StartSettings(
|
fun StartSettings(
|
||||||
currentPage: Int,
|
currentPage: Int,
|
||||||
stackEvent: StackEvent,
|
stackEvent: StackEvent,
|
||||||
languages: List<ButtonItem>,
|
languages: List<ListItem<String>>,
|
||||||
updateLanguage: (String) -> Unit,
|
updateLanguage: (String) -> Unit,
|
||||||
navigateForward: () -> Unit
|
navigateForward: () -> Unit
|
||||||
) {
|
) {
|
||||||
|
|
|
||||||
|
|
@ -18,11 +18,11 @@ import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.ui.common.components.dialog.SelectableDialogItem
|
import ua.acclorite.book_story.ui.common.components.dialog.SelectableDialogItem
|
||||||
import ua.acclorite.book_story.ui.common.model.ButtonItem
|
import ua.acclorite.book_story.ui.common.model.ListItem
|
||||||
import ua.acclorite.book_story.ui.settings.components.SettingsSubcategoryTitle
|
import ua.acclorite.book_story.ui.settings.components.SettingsSubcategoryTitle
|
||||||
|
|
||||||
fun LazyListScope.StartSettingsLayoutGeneral(
|
fun LazyListScope.StartSettingsLayoutGeneral(
|
||||||
languages: List<ButtonItem>,
|
languages: List<ListItem<String>>,
|
||||||
updateLanguage: (String) -> Unit,
|
updateLanguage: (String) -> Unit,
|
||||||
) {
|
) {
|
||||||
item {
|
item {
|
||||||
|
|
@ -34,13 +34,13 @@ fun LazyListScope.StartSettingsLayoutGeneral(
|
||||||
Spacer(modifier = Modifier.height(12.dp))
|
Spacer(modifier = Modifier.height(12.dp))
|
||||||
}
|
}
|
||||||
|
|
||||||
items(languages, key = { it.id }) {
|
items(languages, key = { it.item }) {
|
||||||
SelectableDialogItem(
|
SelectableDialogItem(
|
||||||
selected = it.selected,
|
selected = it.selected,
|
||||||
title = it.title,
|
title = it.title,
|
||||||
horizontalPadding = 18.dp
|
horizontalPadding = 18.dp
|
||||||
) {
|
) {
|
||||||
updateLanguage(it.id)
|
updateLanguage(it.item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,15 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.theme.model
|
package ua.acclorite.book_story.ui.theme.model
|
||||||
|
|
||||||
|
import androidx.annotation.StringRes
|
||||||
import androidx.compose.foundation.isSystemInDarkTheme
|
import androidx.compose.foundation.isSystemInDarkTheme
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import ua.acclorite.book_story.R
|
||||||
|
|
||||||
enum class DarkTheme {
|
enum class DarkTheme(@StringRes val title: Int) {
|
||||||
FOLLOW_SYSTEM,
|
FOLLOW_SYSTEM(R.string.dark_theme_follow_system),
|
||||||
OFF,
|
OFF(R.string.dark_theme_off),
|
||||||
ON;
|
ON(R.string.dark_theme_on);
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun isDark(): Boolean {
|
fun isDark(): Boolean {
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,12 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.theme.model
|
package ua.acclorite.book_story.ui.theme.model
|
||||||
|
|
||||||
|
import androidx.annotation.StringRes
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
|
import ua.acclorite.book_story.R
|
||||||
|
|
||||||
enum class HorizontalAlignment(val alignment: Alignment) {
|
enum class HorizontalAlignment(val alignment: Alignment, @StringRes val title: Int) {
|
||||||
START(Alignment.Companion.CenterStart),
|
START(Alignment.Companion.CenterStart, R.string.alignment_start),
|
||||||
CENTER(Alignment.Companion.Center),
|
CENTER(Alignment.Companion.Center, R.string.alignment_center),
|
||||||
END(Alignment.Companion.CenterEnd)
|
END(Alignment.Companion.CenterEnd, R.string.alignment_end)
|
||||||
}
|
}
|
||||||
|
|
@ -8,12 +8,14 @@ package ua.acclorite.book_story.ui.theme.model
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.PowerManager
|
import android.os.PowerManager
|
||||||
|
import androidx.annotation.StringRes
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import ua.acclorite.book_story.R
|
||||||
|
|
||||||
enum class PureDark {
|
enum class PureDark(@StringRes val title: Int) {
|
||||||
OFF,
|
OFF(R.string.pure_dark_off),
|
||||||
ON,
|
ON(R.string.pure_dark_on),
|
||||||
SAVER;
|
SAVER(R.string.pure_dark_power_saver);
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun isPureDark(context: Context): Boolean {
|
fun isPureDark(context: Context): Boolean {
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,12 @@
|
||||||
|
|
||||||
package ua.acclorite.book_story.ui.theme.model
|
package ua.acclorite.book_story.ui.theme.model
|
||||||
|
|
||||||
|
import androidx.annotation.StringRes
|
||||||
|
import ua.acclorite.book_story.R
|
||||||
|
|
||||||
enum class ThemeContrast {
|
|
||||||
STANDARD,
|
enum class ThemeContrast(@StringRes val title: Int) {
|
||||||
MEDIUM,
|
STANDARD(R.string.theme_contrast_standard),
|
||||||
HIGH
|
MEDIUM(R.string.theme_contrast_medium),
|
||||||
|
HIGH(R.string.theme_contrast_high)
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue