添加批量换源

pull/1751/head
kunfei 3 years ago
parent 2b3e3b7618
commit 617231a742
  1. 2
      app/src/main/java/io/legado/app/ui/book/arrange/ArrangeBookActivity.kt
  2. 10
      app/src/main/java/io/legado/app/ui/book/arrange/ArrangeBookViewModel.kt

@ -117,7 +117,7 @@ class ArrangeBookActivity : VMBaseActivity<ActivityArrangeBookBinding, ArrangeBo
size = viewModel.batchChangeSourceSize, size = viewModel.batchChangeSourceSize,
position = viewModel.batchChangeSourcePosition position = viewModel.batchChangeSourcePosition
) { ) {
viewModel.batchChangeSourceCoroutine?.cancel()
} }
} }
} }

@ -15,6 +15,7 @@ class ArrangeBookViewModel(application: Application) : BaseViewModel(application
val batchChangeSourceState = mutableStateOf(false) val batchChangeSourceState = mutableStateOf(false)
val batchChangeSourceSize = mutableStateOf(0) val batchChangeSourceSize = mutableStateOf(0)
val batchChangeSourcePosition = mutableStateOf(0) val batchChangeSourcePosition = mutableStateOf(0)
var batchChangeSourceCoroutine: Coroutine<Unit>? = null
fun upCanUpdate(books: Array<Book>, canUpdate: Boolean) { fun upCanUpdate(books: Array<Book>, canUpdate: Boolean) {
execute { execute {
@ -37,17 +38,16 @@ class ArrangeBookViewModel(application: Application) : BaseViewModel(application
} }
} }
fun changeSource(books: Array<Book>, source: BookSource): Coroutine<Unit> { fun changeSource(books: Array<Book>, source: BookSource) {
return execute { batchChangeSourceCoroutine?.cancel()
batchChangeSourceCoroutine = execute {
batchChangeSourceSize.value = books.size batchChangeSourceSize.value = books.size
books.forEachIndexed { index, book -> books.forEachIndexed { index, book ->
batchChangeSourcePosition.value = index + 1 batchChangeSourcePosition.value = index + 1
WebBook.preciseSearchAwait(this, book.name, book.author, source)?.let { WebBook.preciseSearchAwait(this, book.name, book.author, source)?.let {
book.changeTo(it.second)
} }
} }
}.onCancel {
batchChangeSourceState.value = false
}.onFinally { }.onFinally {
batchChangeSourceState.value = false batchChangeSourceState.value = false
} }

Loading…
Cancel
Save