diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoContract.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoContract.kt index eb839f05b..6abe925a6 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoContract.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoContract.kt @@ -11,6 +11,7 @@ data class BookInfoUiState( val webFiles: List = emptyList(), val kindLabels: List = emptyList(), val groupNames: String? = null, + val hasCustomGroup: Boolean = false, val inBookshelf: Boolean = false, val bookSource: BookSource? = null, val isTocLoading: Boolean = true, diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt index cf6a72489..320bc55c8 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt @@ -43,6 +43,7 @@ import androidx.compose.material.icons.filled.Share import androidx.compose.material.icons.filled.Star import androidx.compose.material.icons.outlined.Book import androidx.compose.material.icons.outlined.Bookmark +import androidx.compose.material.icons.outlined.BookmarkBorder import androidx.compose.material.icons.outlined.CollectionsBookmark import androidx.compose.material.icons.outlined.FolderZip import androidx.compose.material.icons.outlined.Image @@ -264,7 +265,7 @@ private fun BookInfoScreenContent( .padding(bottom = 24.dp) ) { BookInfoActions( - book = book, + hasCustomGroup = state.hasCustomGroup, inBookshelf = state.inBookshelf, onShelfClick = { onIntent(BookInfoIntent.ShelfClick) }, onTocClick = { onIntent(BookInfoIntent.TocClick) }, @@ -735,7 +736,7 @@ private fun BookInfoHeader( @Composable private fun BookInfoActions( - book: Book, + hasCustomGroup: Boolean, inBookshelf: Boolean, onShelfClick: () -> Unit, onTocClick: () -> Unit, @@ -791,7 +792,7 @@ private fun BookInfoActions( ) BookInfoActionCard( modifier = Modifier.weight(1f), - icon = if (book.group > 0) Icons.Default.Bookmark else Icons.Outlined.Bookmark, + icon = if (hasCustomGroup) Icons.Default.Bookmark else Icons.Outlined.BookmarkBorder, label = stringResource(R.string.change_group), onClick = onGroupClick ) diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoSheets.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoSheets.kt index 34b4333f7..4b77d10b4 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoSheets.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoSheets.kt @@ -138,7 +138,7 @@ fun GroupSelectSheet( ) { Column(modifier = Modifier.fillMaxWidth()) { LazyColumn( - modifier = Modifier.heightIn(max = 600.dp), + modifier = Modifier.heightIn(max = 560.dp), verticalArrangement = Arrangement.spacedBy(8.dp) ) { items(groups, key = { it.groupId }) { group -> diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt index 50b17063b..75dc94984 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoViewModel.kt @@ -70,6 +70,7 @@ class BookInfoViewModel( private var currentWebFiles: List = emptyList() private var currentKindLabels: List = emptyList() private var currentGroupNames: String? = null + private var currentHasCustomGroup = false private var chapterChanged = false var inBookshelf = false @@ -602,6 +603,7 @@ class BookInfoViewModel( currentBook = it currentChapterList = toc currentGroupNames = null + currentHasCustomGroup = false currentKindLabels = emptyList() syncUiState(isTocLoading = false) refreshMeta(it) @@ -616,6 +618,7 @@ class BookInfoViewModel( currentWebFiles = emptyList() currentKindLabels = emptyList() currentGroupNames = null + currentHasCustomGroup = false syncUiState(isTocLoading = true) refreshMeta(book) upCoverByRule(book) @@ -668,11 +671,16 @@ class BookInfoViewModel( kinds.add(ConvertUtils.formatFileSize(size)) } } + val userGroupIds = appDb.bookGroupDao.idsSum + val groupAnd = userGroupIds and book.group + val hasCustomGroup = book.group > 0L && groupAnd != 0L val groupNames = appDb.bookGroupDao.getGroupNames(book.group).joinToString(",") - kinds.toList() to groupNames.ifBlank { null } + val normalizedGroupNames = groupNames.ifBlank { null } + Triple(kinds.toList(), normalizedGroupNames, hasCustomGroup) }.onSuccess { currentKindLabels = it.first currentGroupNames = it.second + currentHasCustomGroup = it.third syncUiState() } } @@ -803,6 +811,7 @@ class BookInfoViewModel( currentBook?.let { book -> book.group = groupId currentGroupNames = null + currentHasCustomGroup = false refreshMeta(book) if (inBookshelf) { saveBook(book) @@ -1100,6 +1109,7 @@ class BookInfoViewModel( webFiles = currentWebFiles, kindLabels = currentKindLabels, groupNames = currentGroupNames, + hasCustomGroup = currentHasCustomGroup, inBookshelf = inBookshelf, bookSource = bookSource, isTocLoading = isTocLoading, diff --git a/app/src/main/res/layout/dialog_tip_config.xml b/app/src/main/res/layout/dialog_tip_config.xml index 652049488..3e7ca2379 100644 --- a/app/src/main/res/layout/dialog_tip_config.xml +++ b/app/src/main/res/layout/dialog_tip_config.xml @@ -226,7 +226,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:checkable="true" - android:text="@string/follow_background" /> + android:text="@string/follow_read_background" /> 次行缩放 次行距离 标题段距 + 跟随阅读背景 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 50bd8e294..9f76bba2c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1388,21 +1388,6 @@ Otherwise, Only Change Single-Chapter Source. 显示书籍类型 显示分组书籍数量 - 在读 - 未读 - 已读 - 漫画 - 小说 - 显示字体阴影 - 显示字体描边 - 使用默认字体颜色 - 滑动进度条时震动 - 编辑备注 - 书籍备注 - 保存至本地 - 选择操作 - 强调 - 颜色样式 Reading Unread Finished @@ -1453,5 +1438,5 @@ Subtitle scale Subtitle margin Heading spacing - Follow Background + Follow Background