🚀 Add divider to Subcategories

* Added divider to the end of each subcategory
* Created SettingsSubcategory composable, which manages subcategory's appearance
This commit is contained in:
Acclorite 2024-09-08 14:27:36 +03:00
parent 998de11536
commit 2dbd70e439
18 changed files with 261 additions and 388 deletions

View file

@ -58,6 +58,7 @@ fun BrowseFilterBottomSheet() {
LazyColumn(Modifier.fillMaxSize()) { LazyColumn(Modifier.fillMaxSize()) {
BrowseGeneralSubcategory( BrowseGeneralSubcategory(
showTitle = false, showTitle = false,
showDivider = false,
topPadding = 16.dp, topPadding = 16.dp,
bottomPadding = 8.dp + it bottomPadding = 8.dp + it
) )
@ -68,6 +69,7 @@ fun BrowseFilterBottomSheet() {
LazyColumn(Modifier.fillMaxSize()) { LazyColumn(Modifier.fillMaxSize()) {
BrowseFilterSubcategory( BrowseFilterSubcategory(
showTitle = false, showTitle = false,
showDivider = false,
topPadding = 16.dp, topPadding = 16.dp,
bottomPadding = 8.dp + it bottomPadding = 8.dp + it
) )
@ -78,6 +80,7 @@ fun BrowseFilterBottomSheet() {
LazyColumn(Modifier.fillMaxSize()) { LazyColumn(Modifier.fillMaxSize()) {
BrowseSortSubcategory( BrowseSortSubcategory(
showTitle = false, showTitle = false,
showDivider = false,
topPadding = 16.dp, topPadding = 16.dp,
bottomPadding = 8.dp + it bottomPadding = 8.dp + it
) )

View file

@ -93,6 +93,7 @@ fun ReaderSettingsBottomSheet() {
) )
MiscSubcategory( MiscSubcategory(
titleColor = { MaterialTheme.colorScheme.onSurface }, titleColor = { MaterialTheme.colorScheme.onSurface },
showDivider = false,
topPadding = 22.dp, topPadding = 22.dp,
bottomPadding = 8.dp + it bottomPadding = 8.dp + it
) )
@ -113,6 +114,7 @@ fun ReaderSettingsBottomSheet() {
) )
TranslatorSubcategory( TranslatorSubcategory(
titleColor = { MaterialTheme.colorScheme.onSurface }, titleColor = { MaterialTheme.colorScheme.onSurface },
showDivider = false,
topPadding = 22.dp, topPadding = 22.dp,
bottomPadding = 8.dp + it bottomPadding = 8.dp + it
) )
@ -123,6 +125,7 @@ fun ReaderSettingsBottomSheet() {
LazyColumn(Modifier.fillMaxSize()) { LazyColumn(Modifier.fillMaxSize()) {
ColorsSubcategory( ColorsSubcategory(
showTitle = false, showTitle = false,
showDivider = false,
backgroundColor = { MaterialTheme.colorScheme.surfaceContainer }, backgroundColor = { MaterialTheme.colorScheme.surfaceContainer },
topPadding = 16.dp, topPadding = 16.dp,
bottomPadding = 8.dp + it bottomPadding = 8.dp + it

View file

@ -0,0 +1,67 @@
@file:Suppress("FunctionName")
package ua.acclorite.book_story.presentation.screens.settings.components
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.material3.HorizontalDivider
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.coerceAtLeast
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.presentation.core.components.CategoryTitle
/**
* Settings Subcategory.
* Root for all Subcategories.
*
* @param titleColor The color of the title.
* @param title The title.
* @param showTitle Whether title should be shown.
* @param showDivider Whether divider at the end of the category should be shown.
* @param topPadding Top padding.
* @param bottomPadding Bottom padding.
* @param content Settings to be placed inside this subcategory.
*/
fun LazyListScope.SettingsSubcategory(
titleColor: @Composable () -> Color,
title: @Composable () -> String,
showTitle: Boolean,
showDivider: Boolean,
topPadding: Dp,
bottomPadding: Dp,
content: LazyListScope.() -> Unit
) {
item {
if (showTitle) {
CategoryTitle(
title = title.invoke(),
color = titleColor.invoke(),
modifier = Modifier
.padding(
top = topPadding,
bottom = 8.dp
)
)
} else {
Spacer(
modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp))
)
}
}
content()
item {
if (showDivider) {
Spacer(modifier = Modifier.height(10.dp))
HorizontalDivider()
}
Spacer(modifier = Modifier.height(bottomPadding))
}
}

View file

@ -31,6 +31,7 @@ fun LazyListScope.AppearanceSettingsCategory(
) )
ColorsSubcategory( ColorsSubcategory(
titleColor = titleColor, titleColor = titleColor,
showDivider = false,
topPadding = 22.dp, topPadding = 22.dp,
bottomPadding = bottomPadding bottomPadding = bottomPadding
) )

View file

@ -2,20 +2,14 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.subcategories package ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.subcategories
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.coerceAtLeast
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.components.CategoryTitle import ua.acclorite.book_story.presentation.screens.settings.components.SettingsSubcategory
import ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings.ColorPresetSetting import ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings.ColorPresetSetting
import ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings.FastColorPresetChangeSetting import ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings.FastColorPresetChangeSetting
@ -28,38 +22,24 @@ fun LazyListScope.ColorsSubcategory(
title: @Composable () -> String = { stringResource(id = R.string.colors_appearance_settings) }, title: @Composable () -> String = { stringResource(id = R.string.colors_appearance_settings) },
backgroundColor: @Composable () -> Color = { MaterialTheme.colorScheme.surfaceContainerLow }, backgroundColor: @Composable () -> Color = { MaterialTheme.colorScheme.surfaceContainerLow },
showTitle: Boolean = true, showTitle: Boolean = true,
showDivider: Boolean = true,
topPadding: Dp, topPadding: Dp,
bottomPadding: Dp bottomPadding: Dp
) { ) {
item { SettingsSubcategory(
if (showTitle) { titleColor = titleColor,
CategoryTitle( title = title,
title = title.invoke(), showTitle = showTitle,
color = titleColor.invoke(), showDivider = showDivider,
modifier = Modifier topPadding = topPadding,
.padding( bottomPadding = bottomPadding
top = topPadding, ) {
bottom = 8.dp item {
) ColorPresetSetting(backgroundColor = backgroundColor.invoke())
) }
} else {
Spacer( item {
modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp)) FastColorPresetChangeSetting()
)
} }
} }
item {
ColorPresetSetting(backgroundColor = backgroundColor.invoke())
}
item {
FastColorPresetChangeSetting()
}
item {
Spacer(
modifier = Modifier.height(bottomPadding)
)
}
} }

View file

@ -2,20 +2,14 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.subcategories package ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.subcategories
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.coerceAtLeast
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.components.CategoryTitle import ua.acclorite.book_story.presentation.screens.settings.components.SettingsSubcategory
import ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings.AbsoluteDarkSetting import ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings.AbsoluteDarkSetting
import ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings.DarkThemeSetting import ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings.DarkThemeSetting
import ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings.PureDarkSetting import ua.acclorite.book_story.presentation.screens.settings.nested.appearance.components.settings.PureDarkSetting
@ -30,50 +24,36 @@ fun LazyListScope.ThemePreferencesSubcategory(
titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary }, titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary },
title: @Composable () -> String = { stringResource(id = R.string.theme_appearance_settings) }, title: @Composable () -> String = { stringResource(id = R.string.theme_appearance_settings) },
showTitle: Boolean = true, showTitle: Boolean = true,
showDivider: Boolean = true,
topPadding: Dp, topPadding: Dp,
bottomPadding: Dp bottomPadding: Dp
) { ) {
item { SettingsSubcategory(
if (showTitle) { titleColor = titleColor,
CategoryTitle( title = title,
title = title.invoke(), showTitle = showTitle,
color = titleColor.invoke(), showDivider = showDivider,
modifier = Modifier topPadding = topPadding,
.padding( bottomPadding = bottomPadding
top = topPadding, ) {
bottom = 8.dp item {
) DarkThemeSetting()
) }
} else {
Spacer( item {
modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp)) ThemeSetting()
) }
item {
ThemeContrastSetting()
}
item {
PureDarkSetting()
}
item {
AbsoluteDarkSetting()
} }
} }
item {
DarkThemeSetting()
}
item {
ThemeSetting()
}
item {
ThemeContrastSetting()
}
item {
PureDarkSetting()
}
item {
AbsoluteDarkSetting()
}
item {
Spacer(
modifier = Modifier.height(bottomPadding)
)
}
} }

View file

@ -29,6 +29,7 @@ fun LazyListScope.BrowseSettingsCategory(
bottomPadding = 0.dp bottomPadding = 0.dp
) )
BrowseSortSubcategory( BrowseSortSubcategory(
showDivider = false,
topPadding = 22.dp, topPadding = 22.dp,
bottomPadding = bottomPadding bottomPadding = bottomPadding
) )

View file

@ -2,20 +2,14 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.subcategories package ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.subcategories
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.coerceAtLeast
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.components.CategoryTitle import ua.acclorite.book_story.presentation.screens.settings.components.SettingsSubcategory
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings.BrowseFilterSetting import ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings.BrowseFilterSetting
/** /**
@ -26,32 +20,18 @@ fun LazyListScope.BrowseFilterSubcategory(
titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary }, titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary },
title: @Composable () -> String = { stringResource(id = R.string.filter_browse_settings) }, title: @Composable () -> String = { stringResource(id = R.string.filter_browse_settings) },
showTitle: Boolean = true, showTitle: Boolean = true,
showDivider: Boolean = true,
topPadding: Dp, topPadding: Dp,
bottomPadding: Dp bottomPadding: Dp
) { ) {
item { SettingsSubcategory(
if (showTitle) { titleColor = titleColor,
CategoryTitle( title = title,
title = title.invoke(), showTitle = showTitle,
color = titleColor.invoke(), showDivider = showDivider,
modifier = Modifier topPadding = topPadding,
.padding( bottomPadding = bottomPadding
top = topPadding, ) {
bottom = 8.dp BrowseFilterSetting()
)
)
} else {
Spacer(
modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp))
)
}
}
BrowseFilterSetting()
item {
Spacer(
modifier = Modifier.height(bottomPadding)
)
} }
} }

View file

@ -2,20 +2,14 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.subcategories package ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.subcategories
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.coerceAtLeast
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.components.CategoryTitle import ua.acclorite.book_story.presentation.screens.settings.components.SettingsSubcategory
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings.BrowseFilesStructureSetting import ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings.BrowseFilesStructureSetting
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings.BrowseGridSizeSetting import ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings.BrowseGridSizeSetting
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings.BrowseLayoutSetting import ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings.BrowseLayoutSetting
@ -29,46 +23,32 @@ fun LazyListScope.BrowseGeneralSubcategory(
titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary }, titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary },
title: @Composable () -> String = { stringResource(id = R.string.general_browse_settings) }, title: @Composable () -> String = { stringResource(id = R.string.general_browse_settings) },
showTitle: Boolean = true, showTitle: Boolean = true,
showDivider: Boolean = true,
topPadding: Dp, topPadding: Dp,
bottomPadding: Dp bottomPadding: Dp
) { ) {
item { SettingsSubcategory(
if (showTitle) { titleColor = titleColor,
CategoryTitle( title = title,
title = title.invoke(), showTitle = showTitle,
color = titleColor.invoke(), showDivider = showDivider,
modifier = Modifier topPadding = topPadding,
.padding( bottomPadding = bottomPadding
top = topPadding, ) {
bottom = 8.dp item {
) BrowseFilesStructureSetting()
) }
} else {
Spacer( item {
modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp)) BrowsePinFavoriteDirectoriesSetting()
) }
item {
BrowseLayoutSetting()
}
item {
BrowseGridSizeSetting()
} }
} }
item {
BrowseFilesStructureSetting()
}
item {
BrowsePinFavoriteDirectoriesSetting()
}
item {
BrowseLayoutSetting()
}
item {
BrowseGridSizeSetting()
}
item {
Spacer(
modifier = Modifier.height(bottomPadding)
)
}
} }

View file

@ -2,20 +2,14 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.subcategories package ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.subcategories
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.coerceAtLeast
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.components.CategoryTitle import ua.acclorite.book_story.presentation.screens.settings.components.SettingsSubcategory
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings.BrowseSortOrderSetting import ua.acclorite.book_story.presentation.screens.settings.nested.browse.components.settings.BrowseSortOrderSetting
/** /**
@ -26,32 +20,18 @@ fun LazyListScope.BrowseSortSubcategory(
titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary }, titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary },
title: @Composable () -> String = { stringResource(id = R.string.sort_browse_settings) }, title: @Composable () -> String = { stringResource(id = R.string.sort_browse_settings) },
showTitle: Boolean = true, showTitle: Boolean = true,
showDivider: Boolean = true,
topPadding: Dp, topPadding: Dp,
bottomPadding: Dp bottomPadding: Dp
) { ) {
item { SettingsSubcategory(
if (showTitle) { titleColor = titleColor,
CategoryTitle( title = title,
title = title.invoke(), showTitle = showTitle,
color = titleColor.invoke(), showDivider = showDivider,
modifier = Modifier topPadding = topPadding,
.padding( bottomPadding = bottomPadding
top = topPadding, ) {
bottom = 8.dp BrowseSortOrderSetting()
)
)
} else {
Spacer(
modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp))
)
}
}
BrowseSortOrderSetting()
item {
Spacer(
modifier = Modifier.height(bottomPadding)
)
} }
} }

View file

@ -25,9 +25,7 @@ fun LazyListScope.GeneralSettingsCategory(
bottomPadding: Dp = 48.dp bottomPadding: Dp = 48.dp
) { ) {
item { item {
Spacer( Spacer(modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp)))
modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp))
)
} }
item { item {
@ -43,8 +41,6 @@ fun LazyListScope.GeneralSettingsCategory(
} }
item { item {
Spacer( Spacer(modifier = Modifier.height(bottomPadding))
modifier = Modifier.height(bottomPadding)
)
} }
} }

View file

@ -50,6 +50,7 @@ fun LazyListScope.ReaderSettingsCategory(
) )
MiscSubcategory( MiscSubcategory(
titleColor = titleColor, titleColor = titleColor,
showDivider = false,
topPadding = 22.dp, topPadding = 22.dp,
bottomPadding = bottomPadding bottomPadding = bottomPadding
) )

View file

@ -2,20 +2,14 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.coerceAtLeast
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.components.CategoryTitle import ua.acclorite.book_story.presentation.screens.settings.components.SettingsSubcategory
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.FontFamilySetting import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.FontFamilySetting
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.FontSizeSetting import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.FontSizeSetting
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.FontStyleSetting import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.FontStyleSetting
@ -29,46 +23,32 @@ fun LazyListScope.FontSubcategory(
titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary }, titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary },
title: @Composable () -> String = { stringResource(id = R.string.font_reader_settings) }, title: @Composable () -> String = { stringResource(id = R.string.font_reader_settings) },
showTitle: Boolean = true, showTitle: Boolean = true,
showDivider: Boolean = true,
topPadding: Dp, topPadding: Dp,
bottomPadding: Dp bottomPadding: Dp
) { ) {
item { SettingsSubcategory(
if (showTitle) { titleColor = titleColor,
CategoryTitle( title = title,
title = title.invoke(), showTitle = showTitle,
color = titleColor.invoke(), showDivider = showDivider,
modifier = Modifier topPadding = topPadding,
.padding( bottomPadding = bottomPadding
top = topPadding, ) {
bottom = 8.dp item {
) FontFamilySetting()
) }
} else {
Spacer( item {
modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp)) FontStyleSetting()
) }
item {
FontSizeSetting()
}
item {
LetterSpacingSetting()
} }
} }
item {
FontFamilySetting()
}
item {
FontStyleSetting()
}
item {
FontSizeSetting()
}
item {
LetterSpacingSetting()
}
item {
Spacer(
modifier = Modifier.height(bottomPadding)
)
}
} }

View file

@ -2,20 +2,14 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.coerceAtLeast
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.components.CategoryTitle import ua.acclorite.book_story.presentation.screens.settings.components.SettingsSubcategory
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.FullscreenSetting import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.FullscreenSetting
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.KeepScreenOnSetting import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.KeepScreenOnSetting
@ -27,38 +21,24 @@ fun LazyListScope.MiscSubcategory(
titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary }, titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary },
title: @Composable () -> String = { stringResource(id = R.string.misc_reader_settings) }, title: @Composable () -> String = { stringResource(id = R.string.misc_reader_settings) },
showTitle: Boolean = true, showTitle: Boolean = true,
showDivider: Boolean = true,
topPadding: Dp, topPadding: Dp,
bottomPadding: Dp bottomPadding: Dp
) { ) {
item { SettingsSubcategory(
if (showTitle) { titleColor = titleColor,
CategoryTitle( title = title,
title = title.invoke(), showTitle = showTitle,
color = titleColor.invoke(), showDivider = showDivider,
modifier = Modifier topPadding = topPadding,
.padding( bottomPadding = bottomPadding
top = topPadding, ) {
bottom = 8.dp item {
) FullscreenSetting()
) }
} else {
Spacer( item {
modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp)) KeepScreenOnSetting()
)
} }
} }
item {
FullscreenSetting()
}
item {
KeepScreenOnSetting()
}
item {
Spacer(
modifier = Modifier.height(bottomPadding)
)
}
} }

View file

@ -2,20 +2,14 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.coerceAtLeast
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.components.CategoryTitle import ua.acclorite.book_story.presentation.screens.settings.components.SettingsSubcategory
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.CutoutPaddingSetting import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.CutoutPaddingSetting
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.SidePaddingSetting import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.SidePaddingSetting
@ -27,38 +21,24 @@ fun LazyListScope.PaddingSubcategory(
titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary }, titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary },
title: @Composable () -> String = { stringResource(id = R.string.padding_reader_settings) }, title: @Composable () -> String = { stringResource(id = R.string.padding_reader_settings) },
showTitle: Boolean = true, showTitle: Boolean = true,
showDivider: Boolean = true,
topPadding: Dp, topPadding: Dp,
bottomPadding: Dp bottomPadding: Dp
) { ) {
item { SettingsSubcategory(
if (showTitle) { titleColor = titleColor,
CategoryTitle( title = title,
title = title.invoke(), showTitle = showTitle,
color = titleColor.invoke(), showDivider = showDivider,
modifier = Modifier topPadding = topPadding,
.padding( bottomPadding = bottomPadding
top = topPadding, ) {
bottom = 8.dp item {
) SidePaddingSetting()
) }
} else {
Spacer( item {
modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp)) CutoutPaddingSetting()
)
} }
} }
item {
SidePaddingSetting()
}
item {
CutoutPaddingSetting()
}
item {
Spacer(
modifier = Modifier.height(bottomPadding)
)
}
} }

View file

@ -2,20 +2,14 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.coerceAtLeast
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.components.CategoryTitle import ua.acclorite.book_story.presentation.screens.settings.components.SettingsSubcategory
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.LineHeightSetting import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.LineHeightSetting
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.ParagraphHeightSetting import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.ParagraphHeightSetting
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.ParagraphIndentationSetting import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.ParagraphIndentationSetting
@ -29,46 +23,32 @@ fun LazyListScope.TextSubcategory(
titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary }, titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary },
title: @Composable () -> String = { stringResource(id = R.string.text_reader_settings) }, title: @Composable () -> String = { stringResource(id = R.string.text_reader_settings) },
showTitle: Boolean = true, showTitle: Boolean = true,
showDivider: Boolean = true,
topPadding: Dp, topPadding: Dp,
bottomPadding: Dp bottomPadding: Dp
) { ) {
item { SettingsSubcategory(
if (showTitle) { titleColor = titleColor,
CategoryTitle( title = title,
title = title.invoke(), showTitle = showTitle,
color = titleColor.invoke(), showDivider = showDivider,
modifier = Modifier topPadding = topPadding,
.padding( bottomPadding = bottomPadding
top = topPadding, ) {
bottom = 8.dp item {
) TextAlignmentSetting()
) }
} else {
Spacer( item {
modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp)) LineHeightSetting()
) }
item {
ParagraphHeightSetting()
}
item {
ParagraphIndentationSetting()
} }
} }
item {
TextAlignmentSetting()
}
item {
LineHeightSetting()
}
item {
ParagraphHeightSetting()
}
item {
ParagraphIndentationSetting()
}
item {
Spacer(
modifier = Modifier.height(bottomPadding)
)
}
} }

View file

@ -2,20 +2,14 @@
package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories package ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.subcategories
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.coerceAtLeast
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.R import ua.acclorite.book_story.R
import ua.acclorite.book_story.presentation.core.components.CategoryTitle import ua.acclorite.book_story.presentation.screens.settings.components.SettingsSubcategory
import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.DoubleClickTranslationSetting import ua.acclorite.book_story.presentation.screens.settings.nested.reader.components.settings.DoubleClickTranslationSetting
/** /**
@ -26,34 +20,20 @@ fun LazyListScope.TranslatorSubcategory(
titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary }, titleColor: @Composable () -> Color = { MaterialTheme.colorScheme.primary },
title: @Composable () -> String = { stringResource(id = R.string.translator_reader_settings) }, title: @Composable () -> String = { stringResource(id = R.string.translator_reader_settings) },
showTitle: Boolean = true, showTitle: Boolean = true,
showDivider: Boolean = true,
topPadding: Dp, topPadding: Dp,
bottomPadding: Dp bottomPadding: Dp
) { ) {
item { SettingsSubcategory(
if (showTitle) { titleColor = titleColor,
CategoryTitle( title = title,
title = title.invoke(), showTitle = showTitle,
color = titleColor.invoke(), showDivider = showDivider,
modifier = Modifier topPadding = topPadding,
.padding( bottomPadding = bottomPadding
top = topPadding, ) {
bottom = 8.dp item {
) DoubleClickTranslationSetting()
)
} else {
Spacer(
modifier = Modifier.height((topPadding - 8.dp).coerceAtLeast(0.dp))
)
} }
} }
item {
DoubleClickTranslationSetting()
}
item {
Spacer(
modifier = Modifier.height(bottomPadding)
)
}
} }

View file

@ -12,6 +12,7 @@ import ua.acclorite.book_story.presentation.screens.settings.nested.appearance.c
fun LazyListScope.startAppearanceScreen() { fun LazyListScope.startAppearanceScreen() {
ThemePreferencesSubcategory( ThemePreferencesSubcategory(
title = { stringResource(id = R.string.start_theme_preferences) }, title = { stringResource(id = R.string.start_theme_preferences) },
showDivider = false,
topPadding = 16.dp, topPadding = 16.dp,
bottomPadding = 8.dp bottomPadding = 8.dp
) )