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)