diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookItem.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookItem.kt index 0d5f1359a..46f32a766 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookItem.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookItem.kt @@ -5,6 +5,7 @@ import androidx.compose.animation.ExperimentalSharedTransitionApi import androidx.compose.animation.SharedTransitionScope import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background +import androidx.compose.foundation.clickable import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -421,7 +422,8 @@ fun BookGroupItemList( titleCenter: Boolean = true, titleMaxLines: Int = 2, coverShadow: Boolean = false, - onLongClick: (() -> Unit)? = null + onLongClick: (() -> Unit)? = null, + onBookClick: ((BookShelfItem) -> Unit)? = null ) { if (BookshelfConfig.bookshelfGroupListStyle == 2) { BookGroupItemHorizontalCovers( @@ -430,7 +432,8 @@ fun BookGroupItemList( onClick = onClick, modifier = modifier, countText = countText, - onLongClick = onLongClick + onLongClick = onLongClick, + onBookClick = onBookClick ) return } @@ -472,7 +475,8 @@ fun BookGroupItemHorizontalCovers( onClick: () -> Unit, modifier: Modifier = Modifier, countText: String? = null, - onLongClick: (() -> Unit)? = null + onLongClick: (() -> Unit)? = null, + onBookClick: ((BookShelfItem) -> Unit)? = null ) { Column { NormalCard( @@ -534,6 +538,7 @@ fun BookGroupItemHorizontalCovers( .weight(1f) .aspectRatio(5f / 7f) .clip(RoundedCornerShape(4.dp)) + .clickable { onBookClick?.invoke(book) } ) { CoilBookCover( name = book.name, diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt index e05a437ba..ff2cf7b82 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt @@ -91,6 +91,7 @@ import io.legado.app.R import io.legado.app.base.BaseRuleEvent import io.legado.app.ui.about.AppLogSheet import io.legado.app.data.entities.BookGroup +import io.legado.app.ui.book.group.GroupEditSheet import io.legado.app.ui.book.info.GroupSelectSheet import io.legado.app.ui.config.bookshelfConfig.BookshelfConfig import io.legado.app.ui.main.bookCoverSharedElementKey @@ -743,8 +744,9 @@ fun BookshelfScreen( viewModel.setInFolderRoot(false) }, onLongClick = { - viewModel.showOverlay(BookshelfOverlay.GroupManageSheet) - } + viewModel.showOverlay(BookshelfOverlay.GroupEditSheet(group.groupId)) + }, + onBookClick = onBookClick ) } else { BookGroupItemGrid( @@ -762,7 +764,7 @@ fun BookshelfScreen( viewModel.setInFolderRoot(false) }, onLongClick = { - viewModel.showOverlay(BookshelfOverlay.GroupManageSheet) + viewModel.showOverlay(BookshelfOverlay.GroupEditSheet(group.groupId)) } ) } @@ -1039,6 +1041,17 @@ private fun BookshelfOverlays( val groups by viewModel.allGroupsFlow.collectAsStateWithLifecycle() + if (activeOverlay is BookshelfOverlay.GroupEditSheet) { + val editGroup = groups.firstOrNull { it.groupId == activeOverlay.groupId } + if (editGroup != null) { + GroupEditSheet( + show = true, + group = editGroup, + onDismissRequest = { viewModel.dismissOverlay() } + ) + } + } + GroupSelectSheet( show = activeOverlay == BookshelfOverlay.GroupSelectSheet, groups = groups.filter { it.groupId > 0 },