From 8c46d2fd276a02e7dbb7b87589a2ef2b51260875 Mon Sep 17 00:00:00 2001 From: HapeLee <1321903405@qq.com> Date: Mon, 16 Mar 2026 01:25:05 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=20=E5=8F=AF=E9=80=89?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=B6=E4=B8=8D=E8=A6=86=E7=9B=96=E4=B9=A6?= =?UTF-8?q?=E7=B1=8D=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../legado/app/ui/book/info/edit/BookInfoEditScreen.kt | 9 ++++++++- .../app/ui/book/info/edit/BookInfoEditViewModel.kt | 7 +++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditScreen.kt b/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditScreen.kt index 8ce65bc74..3cc150b2f 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditScreen.kt @@ -52,6 +52,7 @@ import io.legado.app.ui.widget.components.GlassMediumFlexibleTopAppBar import io.legado.app.ui.widget.components.button.TopBarButtonVariant import io.legado.app.ui.widget.components.button.TopbarNavigationButton import io.legado.app.ui.widget.components.cover.Cover +import io.legado.app.ui.widget.components.settingItem.SwitchSettingItem import io.legado.app.utils.SelectImageContract import io.legado.app.utils.launch import io.legado.app.utils.showDialogFragment @@ -180,6 +181,13 @@ fun BookInfoEditContent( } } Spacer(modifier = Modifier.height(16.dp)) + SwitchSettingItem( + title = "固定书籍类型", + description = "书籍更新后不覆盖书籍类型", + checked = uiState.fixedType, + onCheckedChange = { viewModel.onFixedTypeChange(it) } + ) + Spacer(modifier = Modifier.height(16.dp)) OutlinedTextField( value = uiState.name, onValueChange = { viewModel.onNameChange(it) }, @@ -271,4 +279,3 @@ fun BookTypeDropdown( } } } - diff --git a/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditViewModel.kt b/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditViewModel.kt index 2b9704729..dba5538fb 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditViewModel.kt @@ -33,6 +33,7 @@ data class BookInfoEditUiState( val remark: String? = null, val selectedType: String = "文本", val bookTypes: List = listOf("文本", "音频", "图片"), + val fixedType: Boolean = false, val book: Book? = null, ) @@ -57,6 +58,7 @@ class BookInfoEditViewModel(application: Application) : BaseViewModel(applicatio intro = it.getDisplayIntro(), remark = it.remark, selectedType = _uiState.value.bookTypes[selectedTypeIndex], + fixedType = it.config.fixedType, book = it ) } @@ -87,6 +89,10 @@ class BookInfoEditViewModel(application: Application) : BaseViewModel(applicatio _uiState.value = _uiState.value.copy(selectedType = bookType) } + fun onFixedTypeChange(fixed: Boolean) { + _uiState.value = _uiState.value.copy(fixedType = fixed) + } + fun resetCover() { _uiState.value = _uiState.value.copy(coverUrl = book?.coverUrl ?: "") } @@ -107,6 +113,7 @@ class BookInfoEditViewModel(application: Application) : BaseViewModel(applicatio } book.removeType(BookType.local, BookType.image, BookType.audio, BookType.text) book.addType(bookType) + book.config.fixedType = currentState.fixedType book.customCoverUrl = if (currentState.coverUrl == book.coverUrl) null else currentState.coverUrl book.customIntro = if (currentState.intro == book.intro) null else currentState.intro BookHelp.updateCacheFolder(oldBook, book)