横排封面时可直接打开书籍

This commit is contained in:
HapeLee
2026-05-14 00:53:57 +08:00
parent e4487d6c9f
commit f5971024e7
2 changed files with 24 additions and 6 deletions
@@ -5,6 +5,7 @@ import androidx.compose.animation.ExperimentalSharedTransitionApi
import androidx.compose.animation.SharedTransitionScope import androidx.compose.animation.SharedTransitionScope
import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
@@ -421,7 +422,8 @@ fun BookGroupItemList(
titleCenter: Boolean = true, titleCenter: Boolean = true,
titleMaxLines: Int = 2, titleMaxLines: Int = 2,
coverShadow: Boolean = false, coverShadow: Boolean = false,
onLongClick: (() -> Unit)? = null onLongClick: (() -> Unit)? = null,
onBookClick: ((BookShelfItem) -> Unit)? = null
) { ) {
if (BookshelfConfig.bookshelfGroupListStyle == 2) { if (BookshelfConfig.bookshelfGroupListStyle == 2) {
BookGroupItemHorizontalCovers( BookGroupItemHorizontalCovers(
@@ -430,7 +432,8 @@ fun BookGroupItemList(
onClick = onClick, onClick = onClick,
modifier = modifier, modifier = modifier,
countText = countText, countText = countText,
onLongClick = onLongClick onLongClick = onLongClick,
onBookClick = onBookClick
) )
return return
} }
@@ -472,7 +475,8 @@ fun BookGroupItemHorizontalCovers(
onClick: () -> Unit, onClick: () -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
countText: String? = null, countText: String? = null,
onLongClick: (() -> Unit)? = null onLongClick: (() -> Unit)? = null,
onBookClick: ((BookShelfItem) -> Unit)? = null
) { ) {
Column { Column {
NormalCard( NormalCard(
@@ -534,6 +538,7 @@ fun BookGroupItemHorizontalCovers(
.weight(1f) .weight(1f)
.aspectRatio(5f / 7f) .aspectRatio(5f / 7f)
.clip(RoundedCornerShape(4.dp)) .clip(RoundedCornerShape(4.dp))
.clickable { onBookClick?.invoke(book) }
) { ) {
CoilBookCover( CoilBookCover(
name = book.name, name = book.name,
@@ -91,6 +91,7 @@ import io.legado.app.R
import io.legado.app.base.BaseRuleEvent import io.legado.app.base.BaseRuleEvent
import io.legado.app.ui.about.AppLogSheet import io.legado.app.ui.about.AppLogSheet
import io.legado.app.data.entities.BookGroup 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.book.info.GroupSelectSheet
import io.legado.app.ui.config.bookshelfConfig.BookshelfConfig import io.legado.app.ui.config.bookshelfConfig.BookshelfConfig
import io.legado.app.ui.main.bookCoverSharedElementKey import io.legado.app.ui.main.bookCoverSharedElementKey
@@ -743,8 +744,9 @@ fun BookshelfScreen(
viewModel.setInFolderRoot(false) viewModel.setInFolderRoot(false)
}, },
onLongClick = { onLongClick = {
viewModel.showOverlay(BookshelfOverlay.GroupManageSheet) viewModel.showOverlay(BookshelfOverlay.GroupEditSheet(group.groupId))
} },
onBookClick = onBookClick
) )
} else { } else {
BookGroupItemGrid( BookGroupItemGrid(
@@ -762,7 +764,7 @@ fun BookshelfScreen(
viewModel.setInFolderRoot(false) viewModel.setInFolderRoot(false)
}, },
onLongClick = { onLongClick = {
viewModel.showOverlay(BookshelfOverlay.GroupManageSheet) viewModel.showOverlay(BookshelfOverlay.GroupEditSheet(group.groupId))
} }
) )
} }
@@ -1039,6 +1041,17 @@ private fun BookshelfOverlays(
val groups by viewModel.allGroupsFlow.collectAsStateWithLifecycle() 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( GroupSelectSheet(
show = activeOverlay == BookshelfOverlay.GroupSelectSheet, show = activeOverlay == BookshelfOverlay.GroupSelectSheet,
groups = groups.filter { it.groupId > 0 }, groups = groups.filter { it.groupId > 0 },