diff --git a/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageActivity.kt b/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageActivity.kt index f1c01c38a..b2bbd2dd2 100644 --- a/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageActivity.kt @@ -4,6 +4,8 @@ import android.annotation.SuppressLint import android.os.Bundle import android.view.Menu import android.view.MenuItem +import android.widget.CheckBox +import android.widget.LinearLayout import androidx.activity.viewModels import androidx.appcompat.widget.PopupMenu import androidx.appcompat.widget.SearchView @@ -18,6 +20,7 @@ import io.legado.app.data.entities.BookGroup import io.legado.app.data.entities.BookSource import io.legado.app.databinding.ActivityArrangeBookBinding import io.legado.app.help.book.contains +import io.legado.app.help.book.isLocal import io.legado.app.help.config.AppConfig import io.legado.app.lib.dialogs.alert import io.legado.app.lib.theme.primaryColor @@ -29,6 +32,7 @@ import io.legado.app.ui.widget.recycler.DragSelectTouchHelper import io.legado.app.ui.widget.recycler.ItemTouchCallback import io.legado.app.ui.widget.recycler.VerticalDivider import io.legado.app.utils.cnCompare +import io.legado.app.utils.dpToPx import io.legado.app.utils.setEdgeEffectColor import io.legado.app.utils.showDialogFragment import io.legado.app.utils.viewbindingdelegate.viewBinding @@ -271,7 +275,7 @@ class BookshelfManageActivity : private fun alertDelSelection() { alert(titleResource = R.string.draw, messageResource = R.string.sure_del) { - okButton { viewModel.deleteBook(*adapter.selection.toTypedArray()) } + okButton { viewModel.deleteBook(adapter.selection) } noButton() } } @@ -315,8 +319,18 @@ class BookshelfManageActivity : override fun deleteBook(book: Book) { alert(titleResource = R.string.draw, messageResource = R.string.sure_del) { + val checkBox = CheckBox(this@BookshelfManageActivity).apply { + setText(R.string.delete_book_file) + } + val view = LinearLayout(this@BookshelfManageActivity).apply { + setPadding(16.dpToPx(), 0, 16.dpToPx(), 0) + addView(checkBox) + } + if (book.isLocal) { + customView { view } + } okButton { - viewModel.deleteBook(book) + viewModel.deleteBook(listOf(book), checkBox.isChecked) } } } diff --git a/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageViewModel.kt b/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageViewModel.kt index 4ee9308e3..f9abc296d 100644 --- a/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/manage/BookshelfManageViewModel.kt @@ -10,6 +10,7 @@ import io.legado.app.data.entities.BookSource import io.legado.app.help.book.isLocal import io.legado.app.help.book.removeType import io.legado.app.help.coroutine.Coroutine +import io.legado.app.model.localBook.LocalBook import io.legado.app.model.webBook.WebBook import io.legado.app.utils.toastOnUi @@ -36,9 +37,14 @@ class BookshelfManageViewModel(application: Application) : BaseViewModel(applica } } - fun deleteBook(vararg book: Book) { + fun deleteBook(books: List, deleteOriginal: Boolean = false) { execute { - appDb.bookDao.delete(*book) + appDb.bookDao.delete(*books.toTypedArray()) + books.forEach { + if (it.isLocal) { + LocalBook.deleteBook(it, deleteOriginal) + } + } } }