From f5971024e7da7e0739b4e4ad172bb8bd04122909 Mon Sep 17 00:00:00 2001 From: HapeLee <63206378+HapeLee@users.noreply.github.com> Date: Thu, 14 May 2026 00:53:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=AA=E6=8E=92=E5=B0=81=E9=9D=A2=E6=97=B6?= =?UTF-8?q?=E5=8F=AF=E7=9B=B4=E6=8E=A5=E6=89=93=E5=BC=80=E4=B9=A6=E7=B1=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../legado/app/ui/main/bookshelf/BookItem.kt | 11 ++++++++--- .../app/ui/main/bookshelf/BookshelfScreen.kt | 19 ++++++++++++++++--- 2 files changed, 24 insertions(+), 6 deletions(-) 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 },