🛠️ Remove customItems()
* Removed and replaced customItems() with default items()
This commit is contained in:
parent
dcd2e2e69e
commit
272d44d70d
21 changed files with 59 additions and 87 deletions
|
|
@ -1,43 +0,0 @@
|
||||||
package ua.acclorite.book_story.presentation.core.components
|
|
||||||
|
|
||||||
import androidx.compose.foundation.lazy.LazyItemScope
|
|
||||||
import androidx.compose.foundation.lazy.LazyListScope
|
|
||||||
import androidx.compose.foundation.lazy.grid.LazyGridItemScope
|
|
||||||
import androidx.compose.foundation.lazy.grid.LazyGridScope
|
|
||||||
import androidx.compose.runtime.Composable
|
|
||||||
|
|
||||||
fun <T> LazyListScope.customItems(
|
|
||||||
items: List<T>,
|
|
||||||
key: (T) -> Any?,
|
|
||||||
content: @Composable LazyItemScope.(T) -> Unit
|
|
||||||
) {
|
|
||||||
for (it in items) {
|
|
||||||
item(key = key(it)) {
|
|
||||||
content(it)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> LazyListScope.customItemsIndexed(
|
|
||||||
items: List<T>,
|
|
||||||
key: (T, Int) -> Any?,
|
|
||||||
content: @Composable LazyItemScope.(Int, T) -> Unit
|
|
||||||
) {
|
|
||||||
for ((index, item) in items.withIndex()) {
|
|
||||||
item(key = key(item, index)) {
|
|
||||||
content(index, item)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <T> LazyGridScope.customItems(
|
|
||||||
items: List<T>,
|
|
||||||
key: (T) -> Any?,
|
|
||||||
content: @Composable LazyGridItemScope.(T) -> Unit
|
|
||||||
) {
|
|
||||||
for (it in items) {
|
|
||||||
item(key = key(it)) {
|
|
||||||
content(it)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.lazy.LazyRow
|
import androidx.compose.foundation.lazy.LazyRow
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
@ -13,7 +14,6 @@ import androidx.compose.ui.unit.Dp
|
||||||
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.presentation.core.components.LocalAboutViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalAboutViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
|
||||||
import ua.acclorite.book_story.presentation.core.constants.Constants
|
import ua.acclorite.book_story.presentation.core.constants.Constants
|
||||||
import ua.acclorite.book_story.presentation.core.util.showToast
|
import ua.acclorite.book_story.presentation.core.util.showToast
|
||||||
import ua.acclorite.book_story.presentation.screens.about.data.AboutEvent
|
import ua.acclorite.book_story.presentation.screens.about.data.AboutEvent
|
||||||
|
|
@ -39,7 +39,7 @@ fun AboutBadges(verticalPadding: Dp = 18.dp) {
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
horizontalArrangement = Arrangement.spacedBy(13.dp)
|
horizontalArrangement = Arrangement.spacedBy(13.dp)
|
||||||
) {
|
) {
|
||||||
customItems(Constants.ABOUT_BADGES, key = { it.id }) { badge ->
|
items(Constants.ABOUT_BADGES, key = { it.id }) { badge ->
|
||||||
AboutBadgeItem(badge = badge) {
|
AboutBadgeItem(badge = badge) {
|
||||||
when (badge.id) {
|
when (badge.id) {
|
||||||
"tryzub" -> {
|
"tryzub" -> {
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.navigationBars
|
import androidx.compose.foundation.layout.navigationBars
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.windowInsetsPadding
|
import androidx.compose.foundation.layout.windowInsetsPadding
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.LargeTopAppBar
|
import androidx.compose.material3.LargeTopAppBar
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
|
@ -21,7 +22,6 @@ import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn
|
||||||
import ua.acclorite.book_story.presentation.core.components.GoBackButton
|
import ua.acclorite.book_story.presentation.core.components.GoBackButton
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalAboutViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalAboutViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState
|
import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
|
||||||
import ua.acclorite.book_story.presentation.core.constants.Constants
|
import ua.acclorite.book_story.presentation.core.constants.Constants
|
||||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||||
import ua.acclorite.book_story.presentation.core.util.showToast
|
import ua.acclorite.book_story.presentation.core.util.showToast
|
||||||
|
|
@ -70,7 +70,7 @@ private fun CreditsScreen() {
|
||||||
.padding(top = paddingValues.calculateTopPadding()),
|
.padding(top = paddingValues.calculateTopPadding()),
|
||||||
state = scrollState.second
|
state = scrollState.second
|
||||||
) {
|
) {
|
||||||
customItems(Constants.CREDITS, key = { it.name }) {
|
items(Constants.CREDITS, key = { it.name }) {
|
||||||
CreditItem(credit = it) {
|
CreditItem(credit = it) {
|
||||||
it.website?.let { website ->
|
it.website?.let { website ->
|
||||||
onEvent(
|
onEvent(
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.navigationBars
|
import androidx.compose.foundation.layout.navigationBars
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.windowInsetsPadding
|
import androidx.compose.foundation.layout.windowInsetsPadding
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.outlined.Language
|
import androidx.compose.material.icons.outlined.Language
|
||||||
|
|
@ -37,7 +38,6 @@ import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn
|
||||||
import ua.acclorite.book_story.presentation.core.components.GoBackButton
|
import ua.acclorite.book_story.presentation.core.components.GoBackButton
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalLicenseInfoViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalLicenseInfoViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState
|
import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
|
||||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||||
import ua.acclorite.book_story.presentation.core.navigation.Screen
|
import ua.acclorite.book_story.presentation.core.navigation.Screen
|
||||||
import ua.acclorite.book_story.presentation.core.util.showToast
|
import ua.acclorite.book_story.presentation.core.util.showToast
|
||||||
|
|
@ -147,7 +147,7 @@ private fun LicenseInfoScreen() {
|
||||||
Spacer(modifier = Modifier.height(12.dp))
|
Spacer(modifier = Modifier.height(12.dp))
|
||||||
}
|
}
|
||||||
|
|
||||||
customItems(
|
items(
|
||||||
licenses ?: emptyList(),
|
licenses ?: emptyList(),
|
||||||
key = { it.name }
|
key = { it.name }
|
||||||
) { license ->
|
) { license ->
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.navigationBars
|
import androidx.compose.foundation.layout.navigationBars
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.windowInsetsPadding
|
import androidx.compose.foundation.layout.windowInsetsPadding
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.LargeTopAppBar
|
import androidx.compose.material3.LargeTopAppBar
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
|
@ -29,7 +30,6 @@ import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn
|
||||||
import ua.acclorite.book_story.presentation.core.components.GoBackButton
|
import ua.acclorite.book_story.presentation.core.components.GoBackButton
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalLicensesViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalLicensesViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState
|
import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
|
||||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||||
import ua.acclorite.book_story.presentation.core.navigation.Screen
|
import ua.acclorite.book_story.presentation.core.navigation.Screen
|
||||||
import ua.acclorite.book_story.presentation.screens.about.nested.licenses.components.LicenseItem
|
import ua.acclorite.book_story.presentation.screens.about.nested.licenses.components.LicenseItem
|
||||||
|
|
@ -93,7 +93,7 @@ private fun LicensesScreen() {
|
||||||
Spacer(modifier = Modifier.height(12.dp))
|
Spacer(modifier = Modifier.height(12.dp))
|
||||||
}
|
}
|
||||||
|
|
||||||
customItems(state.value.licenses, key = { it.uniqueId }) {
|
items(state.value.licenses, key = { it.uniqueId }) {
|
||||||
LicenseItem(library = it) {
|
LicenseItem(library = it) {
|
||||||
onNavigate {
|
onNavigate {
|
||||||
navigate(Screen.About.LicenseInfo(it.uniqueId))
|
navigate(Screen.About.LicenseInfo(it.uniqueId))
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package ua.acclorite.book_story.presentation.screens.book_info.components.dialog
|
package ua.acclorite.book_story.presentation.screens.book_info.components.dialog
|
||||||
|
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.automirrored.outlined.DriveFileMove
|
import androidx.compose.material.icons.automirrored.outlined.DriveFileMove
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
|
@ -12,7 +13,6 @@ import ua.acclorite.book_story.domain.model.Category
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalBookInfoViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalBookInfoViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalHistoryViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalHistoryViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
|
||||||
import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithLazyColumn
|
import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithLazyColumn
|
||||||
import ua.acclorite.book_story.presentation.core.components.custom_dialog.SelectableDialogItem
|
import ua.acclorite.book_story.presentation.core.components.custom_dialog.SelectableDialogItem
|
||||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||||
|
|
@ -70,7 +70,7 @@ fun BookInfoMoveDialog() {
|
||||||
},
|
},
|
||||||
withDivider = false,
|
withDivider = false,
|
||||||
items = {
|
items = {
|
||||||
customItems(categories, key = { it.name }) {
|
items(categories, key = { it.name }) {
|
||||||
val category = when (it) {
|
val category = when (it) {
|
||||||
Category.READING -> stringResource(id = R.string.reading_tab)
|
Category.READING -> stringResource(id = R.string.reading_tab)
|
||||||
Category.ALREADY_READ -> stringResource(id = R.string.already_read_tab)
|
Category.ALREADY_READ -> stringResource(id = R.string.already_read_tab)
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.AddChart
|
import androidx.compose.material.icons.filled.AddChart
|
||||||
import androidx.compose.material3.CircularProgressIndicator
|
import androidx.compose.material3.CircularProgressIndicator
|
||||||
|
|
@ -19,12 +20,12 @@ import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.domain.model.NullableBook
|
import ua.acclorite.book_story.domain.model.NullableBook
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalBrowseViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalBrowseViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
|
||||||
import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithLazyColumn
|
import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithLazyColumn
|
||||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||||
import ua.acclorite.book_story.presentation.core.util.showToast
|
import ua.acclorite.book_story.presentation.core.util.showToast
|
||||||
import ua.acclorite.book_story.presentation.screens.browse.data.BrowseEvent
|
import ua.acclorite.book_story.presentation.screens.browse.data.BrowseEvent
|
||||||
import ua.acclorite.book_story.presentation.screens.library.data.LibraryEvent
|
import ua.acclorite.book_story.presentation.screens.library.data.LibraryEvent
|
||||||
|
import java.util.UUID
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adding dialog.
|
* Adding dialog.
|
||||||
|
|
@ -84,7 +85,10 @@ fun BrowseAddingDialog() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
customItems(state.value.selectedBooks, key = { it.first.fileName }) { book ->
|
items(
|
||||||
|
state.value.selectedBooks,
|
||||||
|
key = { it.first.fileName ?: UUID.randomUUID() }
|
||||||
|
) { book ->
|
||||||
BrowseAddingDialogItem(
|
BrowseAddingDialogItem(
|
||||||
result = book
|
result = book
|
||||||
) {
|
) {
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,12 @@ import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.lazy.grid.GridCells
|
import androidx.compose.foundation.lazy.grid.GridCells
|
||||||
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
||||||
|
import androidx.compose.foundation.lazy.grid.items
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ua.acclorite.book_story.domain.model.SelectableFile
|
import ua.acclorite.book_story.domain.model.SelectableFile
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalBrowseViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalBrowseViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
|
||||||
import ua.acclorite.book_story.presentation.core.components.header
|
import ua.acclorite.book_story.presentation.core.components.header
|
||||||
import ua.acclorite.book_story.presentation.screens.browse.components.layout.BrowseItem
|
import ua.acclorite.book_story.presentation.screens.browse.components.layout.BrowseItem
|
||||||
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseLayout
|
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseLayout
|
||||||
|
|
@ -39,7 +39,7 @@ fun BrowseGridLayout(
|
||||||
Spacer(modifier = Modifier.height(8.dp))
|
Spacer(modifier = Modifier.height(8.dp))
|
||||||
}
|
}
|
||||||
|
|
||||||
customItems(
|
items(
|
||||||
filteredFiles,
|
filteredFiles,
|
||||||
key = { it.fileOrDirectory.path }
|
key = { it.fileOrDirectory.path }
|
||||||
) { selectableFile ->
|
) { selectableFile ->
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,12 @@ import androidx.compose.foundation.layout.Spacer
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ua.acclorite.book_story.domain.model.SelectableFile
|
import ua.acclorite.book_story.domain.model.SelectableFile
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalBrowseViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalBrowseViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
|
||||||
import ua.acclorite.book_story.presentation.screens.browse.components.layout.BrowseItem
|
import ua.acclorite.book_story.presentation.screens.browse.components.layout.BrowseItem
|
||||||
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseLayout
|
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseLayout
|
||||||
|
|
||||||
|
|
@ -31,7 +31,7 @@ fun BrowseListLayout(
|
||||||
Spacer(modifier = Modifier.height(8.dp))
|
Spacer(modifier = Modifier.height(8.dp))
|
||||||
}
|
}
|
||||||
|
|
||||||
customItems(
|
items(
|
||||||
filteredFiles,
|
filteredFiles,
|
||||||
key = { it.fileOrDirectory.path }
|
key = { it.fileOrDirectory.path }
|
||||||
) { selectableFile ->
|
) { selectableFile ->
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.foundation.lazy.LazyRow
|
import androidx.compose.foundation.lazy.LazyRow
|
||||||
|
import androidx.compose.foundation.lazy.itemsIndexed
|
||||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.ArrowRight
|
import androidx.compose.material.icons.automirrored.filled.ArrowRight
|
||||||
|
|
@ -28,7 +29,6 @@ import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility
|
import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalBrowseViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalBrowseViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItemsIndexed
|
|
||||||
import ua.acclorite.book_story.presentation.core.util.noRippleClickable
|
import ua.acclorite.book_story.presentation.core.util.noRippleClickable
|
||||||
import ua.acclorite.book_story.presentation.screens.browse.data.BrowseEvent
|
import ua.acclorite.book_story.presentation.screens.browse.data.BrowseEvent
|
||||||
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseFilesStructure
|
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseFilesStructure
|
||||||
|
|
@ -99,7 +99,10 @@ fun BrowseTopBarDirectoryPath() {
|
||||||
state = listState,
|
state = listState,
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
customItemsIndexed(directories, key = { _, index -> index }) { index, directory ->
|
itemsIndexed(
|
||||||
|
directories,
|
||||||
|
key = { index, _ -> index }
|
||||||
|
) { index, directory ->
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
Spacer(modifier = Modifier.width(16.dp))
|
Spacer(modifier = Modifier.width(16.dp))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.navigationBars
|
||||||
import androidx.compose.foundation.layout.navigationBarsPadding
|
import androidx.compose.foundation.layout.navigationBarsPadding
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.windowInsetsPadding
|
import androidx.compose.foundation.layout.windowInsetsPadding
|
||||||
|
import androidx.compose.foundation.lazy.itemsIndexed
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.outlined.RestartAlt
|
import androidx.compose.material.icons.outlined.RestartAlt
|
||||||
|
|
@ -27,6 +28,7 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||||
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 ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
|
import ua.acclorite.book_story.domain.util.Position
|
||||||
import ua.acclorite.book_story.presentation.core.components.CustomIconButton
|
import ua.acclorite.book_story.presentation.core.components.CustomIconButton
|
||||||
import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn
|
import ua.acclorite.book_story.presentation.core.components.CustomLazyColumn
|
||||||
import ua.acclorite.book_story.presentation.core.components.GoBackButton
|
import ua.acclorite.book_story.presentation.core.components.GoBackButton
|
||||||
|
|
@ -35,7 +37,6 @@ import ua.acclorite.book_story.presentation.core.components.LocalHelpViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalStartViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalStartViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState
|
import ua.acclorite.book_story.presentation.core.components.collapsibleUntilExitScrollBehaviorWithLazyListState
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
|
||||||
import ua.acclorite.book_story.presentation.core.constants.Constants
|
import ua.acclorite.book_story.presentation.core.constants.Constants
|
||||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||||
import ua.acclorite.book_story.presentation.core.navigation.Screen
|
import ua.acclorite.book_story.presentation.core.navigation.Screen
|
||||||
|
|
@ -151,7 +152,10 @@ private fun HelpScreen() {
|
||||||
Spacer(modifier = Modifier.height(8.dp))
|
Spacer(modifier = Modifier.height(8.dp))
|
||||||
}
|
}
|
||||||
|
|
||||||
customItems(Constants.HELP_TIPS, key = { it.title }) { helpTip ->
|
itemsIndexed(
|
||||||
|
Constants.HELP_TIPS,
|
||||||
|
key = { _, helpTip -> helpTip.title }
|
||||||
|
) { index, helpTip ->
|
||||||
HelpItem(
|
HelpItem(
|
||||||
helpTip = helpTip,
|
helpTip = helpTip,
|
||||||
fromStart = state.value.fromStart
|
fromStart = state.value.fromStart
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.material.ExperimentalMaterialApi
|
import androidx.compose.material.ExperimentalMaterialApi
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
||||||
|
|
@ -44,7 +45,6 @@ import ua.acclorite.book_story.presentation.core.components.CustomSearchTextFiel
|
||||||
import ua.acclorite.book_story.presentation.core.components.CustomSnackbar
|
import ua.acclorite.book_story.presentation.core.components.CustomSnackbar
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalHistoryViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalHistoryViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
|
||||||
import ua.acclorite.book_story.presentation.core.components.is_messages.IsEmpty
|
import ua.acclorite.book_story.presentation.core.components.is_messages.IsEmpty
|
||||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||||
import ua.acclorite.book_story.presentation.core.navigation.NavigationIconButton
|
import ua.acclorite.book_story.presentation.core.navigation.NavigationIconButton
|
||||||
|
|
@ -212,8 +212,9 @@ private fun HistoryScreen() {
|
||||||
Spacer(modifier = Modifier.height(8.dp))
|
Spacer(modifier = Modifier.height(8.dp))
|
||||||
}
|
}
|
||||||
|
|
||||||
customItems(
|
items(
|
||||||
groupedHistory.history, key = { it.id }
|
groupedHistory.history,
|
||||||
|
key = { it.id }
|
||||||
) {
|
) {
|
||||||
HistoryItem(
|
HistoryItem(
|
||||||
modifier = Modifier.animateItem(),
|
modifier = Modifier.animateItem(),
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.lazy.grid.GridCells
|
import androidx.compose.foundation.lazy.grid.GridCells
|
||||||
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
||||||
|
import androidx.compose.foundation.lazy.grid.items
|
||||||
import androidx.compose.foundation.lazy.grid.rememberLazyGridState
|
import androidx.compose.foundation.lazy.grid.rememberLazyGridState
|
||||||
import androidx.compose.foundation.pager.HorizontalPager
|
import androidx.compose.foundation.pager.HorizontalPager
|
||||||
import androidx.compose.foundation.pager.PagerState
|
import androidx.compose.foundation.pager.PagerState
|
||||||
|
|
@ -48,7 +49,6 @@ import ua.acclorite.book_story.domain.util.Selected
|
||||||
import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility
|
import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
|
||||||
import ua.acclorite.book_story.presentation.core.components.header
|
import ua.acclorite.book_story.presentation.core.components.header
|
||||||
import ua.acclorite.book_story.presentation.core.components.is_messages.IsEmpty
|
import ua.acclorite.book_story.presentation.core.components.is_messages.IsEmpty
|
||||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||||
|
|
@ -162,7 +162,10 @@ private fun LibraryScreen(
|
||||||
Spacer(modifier = Modifier.height(8.dp))
|
Spacer(modifier = Modifier.height(8.dp))
|
||||||
}
|
}
|
||||||
|
|
||||||
customItems(books, key = { it.first.id }) {
|
items(
|
||||||
|
books,
|
||||||
|
key = { it.first.id }
|
||||||
|
) {
|
||||||
LibraryBookItem(
|
LibraryBookItem(
|
||||||
book = it,
|
book = it,
|
||||||
modifier = Modifier.animateItem(
|
modifier = Modifier.animateItem(
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package ua.acclorite.book_story.presentation.screens.library.components.dialog
|
package ua.acclorite.book_story.presentation.screens.library.components.dialog
|
||||||
|
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.foundation.pager.PagerState
|
import androidx.compose.foundation.pager.PagerState
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.automirrored.outlined.DriveFileMove
|
import androidx.compose.material.icons.automirrored.outlined.DriveFileMove
|
||||||
|
|
@ -10,7 +11,6 @@ import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.domain.model.Category
|
import ua.acclorite.book_story.domain.model.Category
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalHistoryViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalHistoryViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
|
||||||
import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithLazyColumn
|
import ua.acclorite.book_story.presentation.core.components.custom_dialog.CustomDialogWithLazyColumn
|
||||||
import ua.acclorite.book_story.presentation.core.components.custom_dialog.SelectableDialogItem
|
import ua.acclorite.book_story.presentation.core.components.custom_dialog.SelectableDialogItem
|
||||||
import ua.acclorite.book_story.presentation.core.util.showToast
|
import ua.acclorite.book_story.presentation.core.util.showToast
|
||||||
|
|
@ -51,7 +51,7 @@ fun LibraryMoveDialog(pagerState: PagerState) {
|
||||||
},
|
},
|
||||||
withDivider = false,
|
withDivider = false,
|
||||||
items = {
|
items = {
|
||||||
customItems(state.value.categories, key = { it.name }) {
|
items(state.value.categories, key = { it.name }) {
|
||||||
val category = when (it) {
|
val category = when (it) {
|
||||||
Category.READING -> stringResource(id = R.string.reading_tab)
|
Category.READING -> stringResource(id = R.string.reading_tab)
|
||||||
Category.ALREADY_READ -> stringResource(id = R.string.already_read_tab)
|
Category.ALREADY_READ -> stringResource(id = R.string.already_read_tab)
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.systemBarsIgnoringVisibility
|
import androidx.compose.foundation.layout.systemBarsIgnoringVisibility
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.foundation.lazy.LazyListState
|
import androidx.compose.foundation.lazy.LazyListState
|
||||||
|
import androidx.compose.foundation.lazy.itemsIndexed
|
||||||
import androidx.compose.material3.CircularProgressIndicator
|
import androidx.compose.material3.CircularProgressIndicator
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.Scaffold
|
import androidx.compose.material3.Scaffold
|
||||||
|
|
@ -65,7 +66,6 @@ import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewMode
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalReaderViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalReaderViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalSettingsViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalSettingsViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItemsIndexed
|
|
||||||
import ua.acclorite.book_story.presentation.core.components.is_messages.IsError
|
import ua.acclorite.book_story.presentation.core.components.is_messages.IsError
|
||||||
import ua.acclorite.book_story.presentation.core.constants.Constants
|
import ua.acclorite.book_story.presentation.core.constants.Constants
|
||||||
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
import ua.acclorite.book_story.presentation.core.navigation.LocalNavigator
|
||||||
|
|
@ -482,8 +482,8 @@ private fun ReaderScreen(lazyListState: LazyListState) {
|
||||||
.coerceAtLeast(18.dp),
|
.coerceAtLeast(18.dp),
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
customItemsIndexed(
|
itemsIndexed(
|
||||||
state.value.text, key = { _, index -> index }
|
state.value.text, key = { index, _ -> index }
|
||||||
) { index, line ->
|
) { index, line ->
|
||||||
ReaderChapter(
|
ReaderChapter(
|
||||||
chapter = chapters[index], // Shows only when matching startIndex of chapter.
|
chapter = chapters[index], // Shows only when matching startIndex of chapter.
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package ua.acclorite.book_story.presentation.screens.reader.components
|
||||||
|
|
||||||
import androidx.compose.foundation.layout.Spacer
|
import androidx.compose.foundation.layout.Spacer
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.saveable.rememberSaveable
|
import androidx.compose.runtime.saveable.rememberSaveable
|
||||||
|
|
@ -13,7 +14,6 @@ import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalHistoryViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalHistoryViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalLibraryViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalReaderViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalReaderViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
|
||||||
import ua.acclorite.book_story.presentation.core.components.custom_drawer.CustomModalDrawer
|
import ua.acclorite.book_story.presentation.core.components.custom_drawer.CustomModalDrawer
|
||||||
import ua.acclorite.book_story.presentation.core.components.custom_drawer.CustomModalDrawerSelectableItem
|
import ua.acclorite.book_story.presentation.core.components.custom_drawer.CustomModalDrawerSelectableItem
|
||||||
import ua.acclorite.book_story.presentation.core.components.custom_drawer.CustomModalDrawerTitleItem
|
import ua.acclorite.book_story.presentation.core.components.custom_drawer.CustomModalDrawerTitleItem
|
||||||
|
|
@ -43,7 +43,7 @@ fun ReaderChaptersDrawer() {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
customItems(state.value.book.chapters, key = { it.index }) { chapter ->
|
items(state.value.book.chapters, key = { it.index }) { chapter ->
|
||||||
val selected = rememberSaveable(state.value.currentChapter) {
|
val selected = rememberSaveable(state.value.currentChapter) {
|
||||||
chapter.index == state.value.currentChapter?.index
|
chapter.index == state.value.currentChapter?.index
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.foundation.lazy.LazyRow
|
import androidx.compose.foundation.lazy.LazyRow
|
||||||
|
import androidx.compose.foundation.lazy.itemsIndexed
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.foundation.text.BasicTextField
|
import androidx.compose.foundation.text.BasicTextField
|
||||||
import androidx.compose.foundation.text.KeyboardOptions
|
import androidx.compose.foundation.text.KeyboardOptions
|
||||||
|
|
@ -63,7 +64,6 @@ import ua.acclorite.book_story.presentation.core.components.CategoryTitle
|
||||||
import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility
|
import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility
|
||||||
import ua.acclorite.book_story.presentation.core.components.CustomIconButton
|
import ua.acclorite.book_story.presentation.core.components.CustomIconButton
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalSettingsViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalSettingsViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItemsIndexed
|
|
||||||
import ua.acclorite.book_story.presentation.screens.settings.components.ColorPickerWithTitle
|
import ua.acclorite.book_story.presentation.screens.settings.components.ColorPickerWithTitle
|
||||||
import ua.acclorite.book_story.presentation.screens.settings.data.SettingsEvent
|
import ua.acclorite.book_story.presentation.screens.settings.data.SettingsEvent
|
||||||
import ua.acclorite.book_story.presentation.ui.FadeTransitionPreservingSpace
|
import ua.acclorite.book_story.presentation.ui.FadeTransitionPreservingSpace
|
||||||
|
|
@ -107,9 +107,9 @@ fun ColorPresetSetting(
|
||||||
state = state.value.colorPresetsListState,
|
state = state.value.colorPresetsListState,
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
customItemsIndexed(
|
itemsIndexed(
|
||||||
state.value.colorPresets,
|
state.value.colorPresets,
|
||||||
key = { item, _ -> item.id }
|
key = { _, colorPreset -> colorPreset.id }
|
||||||
) { index, colorPreset ->
|
) { index, colorPreset ->
|
||||||
ReorderableItem(
|
ReorderableItem(
|
||||||
state = reorderableListState,
|
state = reorderableListState,
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.foundation.lazy.LazyRow
|
import androidx.compose.foundation.lazy.LazyRow
|
||||||
|
import androidx.compose.foundation.lazy.itemsIndexed
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
|
|
@ -41,7 +42,6 @@ import ua.acclorite.book_story.domain.util.UIText
|
||||||
import ua.acclorite.book_story.presentation.core.components.CategoryTitle
|
import ua.acclorite.book_story.presentation.core.components.CategoryTitle
|
||||||
import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility
|
import ua.acclorite.book_story.presentation.core.components.CustomAnimatedVisibility
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItemsIndexed
|
|
||||||
import ua.acclorite.book_story.presentation.core.constants.Constants
|
import ua.acclorite.book_story.presentation.core.constants.Constants
|
||||||
import ua.acclorite.book_story.presentation.data.MainEvent
|
import ua.acclorite.book_story.presentation.data.MainEvent
|
||||||
import ua.acclorite.book_story.presentation.ui.Theme
|
import ua.acclorite.book_story.presentation.ui.Theme
|
||||||
|
|
@ -81,9 +81,9 @@ fun ThemeSetting(
|
||||||
Modifier.fillMaxWidth(),
|
Modifier.fillMaxWidth(),
|
||||||
horizontalArrangement = Arrangement.spacedBy(8.dp)
|
horizontalArrangement = Arrangement.spacedBy(8.dp)
|
||||||
) {
|
) {
|
||||||
customItemsIndexed(
|
itemsIndexed(
|
||||||
themes,
|
themes,
|
||||||
key = { item, _ -> item.first.name }
|
key = { _, themeEntry -> themeEntry.first.name }
|
||||||
) { index, themeEntry ->
|
) { index, themeEntry ->
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
Spacer(modifier = Modifier.width(horizontalPadding))
|
Spacer(modifier = Modifier.width(horizontalPadding))
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.foundation.lazy.LazyListScope
|
import androidx.compose.foundation.lazy.LazyListScope
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.material3.Checkbox
|
import androidx.compose.material3.Checkbox
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
|
|
@ -18,7 +19,6 @@ import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.text.style.TextOverflow
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
|
||||||
import ua.acclorite.book_story.presentation.core.constants.Constants
|
import ua.acclorite.book_story.presentation.core.constants.Constants
|
||||||
import ua.acclorite.book_story.presentation.data.MainEvent
|
import ua.acclorite.book_story.presentation.data.MainEvent
|
||||||
|
|
||||||
|
|
@ -27,7 +27,7 @@ import ua.acclorite.book_story.presentation.data.MainEvent
|
||||||
* Lets user choose which items to filter in Browse.
|
* Lets user choose which items to filter in Browse.
|
||||||
*/
|
*/
|
||||||
fun LazyListScope.BrowseFilterSetting() {
|
fun LazyListScope.BrowseFilterSetting() {
|
||||||
customItems(Constants.EXTENSIONS, key = { it }) {
|
items(Constants.EXTENSIONS, key = { it }) {
|
||||||
val state = LocalMainViewModel.current.state
|
val state = LocalMainViewModel.current.state
|
||||||
val onMainEvent = LocalMainViewModel.current.onEvent
|
val onMainEvent = LocalMainViewModel.current.onEvent
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.foundation.lazy.LazyListScope
|
import androidx.compose.foundation.lazy.LazyListScope
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.ArrowDownward
|
import androidx.compose.material.icons.filled.ArrowDownward
|
||||||
import androidx.compose.material.icons.filled.ArrowUpward
|
import androidx.compose.material.icons.filled.ArrowUpward
|
||||||
|
|
@ -25,7 +26,6 @@ import androidx.compose.ui.text.style.TextOverflow
|
||||||
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.presentation.core.components.LocalMainViewModel
|
import ua.acclorite.book_story.presentation.core.components.LocalMainViewModel
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
|
||||||
import ua.acclorite.book_story.presentation.data.MainEvent
|
import ua.acclorite.book_story.presentation.data.MainEvent
|
||||||
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseSortOrder
|
import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.BrowseSortOrder
|
||||||
|
|
||||||
|
|
@ -34,7 +34,7 @@ import ua.acclorite.book_story.presentation.screens.settings.nested.browse.data.
|
||||||
* Lets user choose how to sort files in Browse.
|
* Lets user choose how to sort files in Browse.
|
||||||
*/
|
*/
|
||||||
fun LazyListScope.BrowseSortOrderSetting() {
|
fun LazyListScope.BrowseSortOrderSetting() {
|
||||||
customItems(BrowseSortOrder.entries, key = { it.name }) {
|
items(BrowseSortOrder.entries, key = { it.name }) {
|
||||||
val state = LocalMainViewModel.current.state
|
val state = LocalMainViewModel.current.state
|
||||||
val onMainEvent = LocalMainViewModel.current.onEvent
|
val onMainEvent = LocalMainViewModel.current.onEvent
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package ua.acclorite.book_story.presentation.screens.start.components
|
||||||
import androidx.compose.foundation.layout.Spacer
|
import androidx.compose.foundation.layout.Spacer
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.lazy.LazyListScope
|
import androidx.compose.foundation.lazy.LazyListScope
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
|
|
@ -10,7 +11,6 @@ import androidx.compose.ui.unit.dp
|
||||||
import ua.acclorite.book_story.R
|
import ua.acclorite.book_story.R
|
||||||
import ua.acclorite.book_story.domain.model.ButtonItem
|
import ua.acclorite.book_story.domain.model.ButtonItem
|
||||||
import ua.acclorite.book_story.presentation.core.components.CategoryTitle
|
import ua.acclorite.book_story.presentation.core.components.CategoryTitle
|
||||||
import ua.acclorite.book_story.presentation.core.components.customItems
|
|
||||||
import ua.acclorite.book_story.presentation.core.components.custom_dialog.SelectableDialogItem
|
import ua.acclorite.book_story.presentation.core.components.custom_dialog.SelectableDialogItem
|
||||||
import ua.acclorite.book_story.presentation.data.MainEvent
|
import ua.acclorite.book_story.presentation.data.MainEvent
|
||||||
|
|
||||||
|
|
@ -30,7 +30,7 @@ fun LazyListScope.startLanguageScreen(
|
||||||
Spacer(modifier = Modifier.height(12.dp))
|
Spacer(modifier = Modifier.height(12.dp))
|
||||||
}
|
}
|
||||||
|
|
||||||
customItems(languages, key = { it.id }) {
|
items(languages, key = { it.id }) {
|
||||||
SelectableDialogItem(
|
SelectableDialogItem(
|
||||||
selected = it.selected,
|
selected = it.selected,
|
||||||
title = it.title,
|
title = it.title,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue