优化
This commit is contained in:
@@ -25,7 +25,7 @@ import io.legado.app.model.AudioPlay
|
|||||||
import io.legado.app.model.BookCover
|
import io.legado.app.model.BookCover
|
||||||
import io.legado.app.service.AudioPlayService
|
import io.legado.app.service.AudioPlayService
|
||||||
import io.legado.app.ui.about.AppLogDialog
|
import io.legado.app.ui.about.AppLogDialog
|
||||||
import io.legado.app.ui.book.changesource.ChangeSourceDialog
|
import io.legado.app.ui.book.changesource.ChangeBookSourceDialog
|
||||||
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
|
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
|
||||||
import io.legado.app.ui.book.toc.TocActivityResult
|
import io.legado.app.ui.book.toc.TocActivityResult
|
||||||
import io.legado.app.ui.login.SourceLoginActivity
|
import io.legado.app.ui.login.SourceLoginActivity
|
||||||
@@ -40,7 +40,7 @@ import java.util.*
|
|||||||
*/
|
*/
|
||||||
class AudioPlayActivity :
|
class AudioPlayActivity :
|
||||||
VMBaseActivity<ActivityAudioPlayBinding, AudioPlayViewModel>(toolBarTheme = Theme.Dark),
|
VMBaseActivity<ActivityAudioPlayBinding, AudioPlayViewModel>(toolBarTheme = Theme.Dark),
|
||||||
ChangeSourceDialog.CallBack {
|
ChangeBookSourceDialog.CallBack {
|
||||||
|
|
||||||
override val binding by viewBinding(ActivityAudioPlayBinding::inflate)
|
override val binding by viewBinding(ActivityAudioPlayBinding::inflate)
|
||||||
override val viewModel by viewModels<AudioPlayViewModel>()
|
override val viewModel by viewModels<AudioPlayViewModel>()
|
||||||
@@ -93,7 +93,7 @@ class AudioPlayActivity :
|
|||||||
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
R.id.menu_change_source -> AudioPlay.book?.let {
|
R.id.menu_change_source -> AudioPlay.book?.let {
|
||||||
showDialogFragment(ChangeSourceDialog(it.name, it.author))
|
showDialogFragment(ChangeBookSourceDialog(it.name, it.author))
|
||||||
}
|
}
|
||||||
R.id.menu_login -> AudioPlay.bookSource?.let {
|
R.id.menu_login -> AudioPlay.bookSource?.let {
|
||||||
startActivity<SourceLoginActivity> {
|
startActivity<SourceLoginActivity> {
|
||||||
|
|||||||
+2
-2
@@ -16,9 +16,9 @@ import io.legado.app.utils.visible
|
|||||||
import splitties.views.onLongClick
|
import splitties.views.onLongClick
|
||||||
|
|
||||||
|
|
||||||
class ChangeSourceAdapter(
|
class ChangeBookSourceAdapter(
|
||||||
context: Context,
|
context: Context,
|
||||||
val viewModel: ChangeSourceViewModel,
|
val viewModel: ChangeBookSourceViewModel,
|
||||||
val callBack: CallBack
|
val callBack: CallBack
|
||||||
) : DiffRecyclerAdapter<SearchBook, ItemChangeSourceBinding>(context) {
|
) : DiffRecyclerAdapter<SearchBook, ItemChangeSourceBinding>(context) {
|
||||||
|
|
||||||
+4
-4
@@ -31,9 +31,9 @@ import kotlinx.coroutines.delay
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
|
|
||||||
class ChangeSourceDialog() : BaseDialogFragment(R.layout.dialog_change_source),
|
class ChangeBookSourceDialog() : BaseDialogFragment(R.layout.dialog_change_source),
|
||||||
Toolbar.OnMenuItemClickListener,
|
Toolbar.OnMenuItemClickListener,
|
||||||
ChangeSourceAdapter.CallBack {
|
ChangeBookSourceAdapter.CallBack {
|
||||||
|
|
||||||
constructor(name: String, author: String) : this() {
|
constructor(name: String, author: String) : this() {
|
||||||
arguments = Bundle().apply {
|
arguments = Bundle().apply {
|
||||||
@@ -45,8 +45,8 @@ class ChangeSourceDialog() : BaseDialogFragment(R.layout.dialog_change_source),
|
|||||||
private val binding by viewBinding(DialogChangeSourceBinding::bind)
|
private val binding by viewBinding(DialogChangeSourceBinding::bind)
|
||||||
private val groups = linkedSetOf<String>()
|
private val groups = linkedSetOf<String>()
|
||||||
private val callBack: CallBack? get() = activity as? CallBack
|
private val callBack: CallBack? get() = activity as? CallBack
|
||||||
private val viewModel: ChangeSourceViewModel by viewModels()
|
private val viewModel: ChangeBookSourceViewModel by viewModels()
|
||||||
private val adapter by lazy { ChangeSourceAdapter(requireContext(), viewModel, this) }
|
private val adapter by lazy { ChangeBookSourceAdapter(requireContext(), viewModel, this) }
|
||||||
private val editSourceResult =
|
private val editSourceResult =
|
||||||
registerForActivityResult(StartActivityContract(BookSourceEditActivity::class.java)) {
|
registerForActivityResult(StartActivityContract(BookSourceEditActivity::class.java)) {
|
||||||
viewModel.startSearch()
|
viewModel.startSearch()
|
||||||
+1
-1
@@ -32,7 +32,7 @@ import java.util.concurrent.Executors
|
|||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
|
||||||
@Suppress("MemberVisibilityCanBePrivate")
|
@Suppress("MemberVisibilityCanBePrivate")
|
||||||
class ChangeSourceViewModel(application: Application) : BaseViewModel(application) {
|
class ChangeBookSourceViewModel(application: Application) : BaseViewModel(application) {
|
||||||
private val threadCount = AppConfig.threadCount
|
private val threadCount = AppConfig.threadCount
|
||||||
private var searchPool: ExecutorCoroutineDispatcher? = null
|
private var searchPool: ExecutorCoroutineDispatcher? = null
|
||||||
val searchStateData = MutableLiveData<Boolean>()
|
val searchStateData = MutableLiveData<Boolean>()
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
package io.legado.app.ui.book.changesource
|
|
||||||
|
|
||||||
import android.os.Bundle
|
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
|
||||||
import io.legado.app.data.entities.SearchBook
|
|
||||||
|
|
||||||
class DiffCallBack(private val oldItems: List<SearchBook>, private val newItems: List<SearchBook>) :
|
|
||||||
DiffUtil.Callback() {
|
|
||||||
|
|
||||||
override fun getOldListSize(): Int {
|
|
||||||
return oldItems.size
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getNewListSize(): Int {
|
|
||||||
return newItems.size
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
|
|
||||||
val oldItem = oldItems[oldItemPosition]
|
|
||||||
val newItem = newItems[newItemPosition]
|
|
||||||
return oldItem.bookUrl == newItem.bookUrl
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
|
|
||||||
val oldItem = oldItems[oldItemPosition]
|
|
||||||
val newItem = newItems[newItemPosition]
|
|
||||||
return when {
|
|
||||||
oldItem.originName != newItem.originName -> false
|
|
||||||
oldItem.latestChapterTitle != newItem.latestChapterTitle -> false
|
|
||||||
else -> true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getChangePayload(oldItemPosition: Int, newItemPosition: Int): Any? {
|
|
||||||
val oldItem = oldItems[oldItemPosition]
|
|
||||||
val newItem = newItems[newItemPosition]
|
|
||||||
val payload = Bundle()
|
|
||||||
if (oldItem.originName != newItem.originName) {
|
|
||||||
payload.putString("name", newItem.originName)
|
|
||||||
}
|
|
||||||
if (oldItem.latestChapterTitle != newItem.latestChapterTitle) {
|
|
||||||
payload.putString("latest", newItem.latestChapterTitle)
|
|
||||||
}
|
|
||||||
if (payload.isEmpty) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
return payload
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -31,7 +31,7 @@ import io.legado.app.model.BookCover
|
|||||||
import io.legado.app.ui.about.AppLogDialog
|
import io.legado.app.ui.about.AppLogDialog
|
||||||
import io.legado.app.ui.book.audio.AudioPlayActivity
|
import io.legado.app.ui.book.audio.AudioPlayActivity
|
||||||
import io.legado.app.ui.book.changecover.ChangeCoverDialog
|
import io.legado.app.ui.book.changecover.ChangeCoverDialog
|
||||||
import io.legado.app.ui.book.changesource.ChangeSourceDialog
|
import io.legado.app.ui.book.changesource.ChangeBookSourceDialog
|
||||||
import io.legado.app.ui.book.group.GroupSelectDialog
|
import io.legado.app.ui.book.group.GroupSelectDialog
|
||||||
import io.legado.app.ui.book.info.edit.BookInfoEditActivity
|
import io.legado.app.ui.book.info.edit.BookInfoEditActivity
|
||||||
import io.legado.app.ui.book.read.ReadBookActivity
|
import io.legado.app.ui.book.read.ReadBookActivity
|
||||||
@@ -49,7 +49,7 @@ import kotlinx.coroutines.withContext
|
|||||||
class BookInfoActivity :
|
class BookInfoActivity :
|
||||||
VMBaseActivity<ActivityBookInfoBinding, BookInfoViewModel>(toolBarTheme = Theme.Dark),
|
VMBaseActivity<ActivityBookInfoBinding, BookInfoViewModel>(toolBarTheme = Theme.Dark),
|
||||||
GroupSelectDialog.CallBack,
|
GroupSelectDialog.CallBack,
|
||||||
ChangeSourceDialog.CallBack,
|
ChangeBookSourceDialog.CallBack,
|
||||||
ChangeCoverDialog.CallBack {
|
ChangeCoverDialog.CallBack {
|
||||||
|
|
||||||
private val tocActivityResult = registerForActivityResult(TocActivityResult()) {
|
private val tocActivityResult = registerForActivityResult(TocActivityResult()) {
|
||||||
@@ -301,7 +301,7 @@ class BookInfoActivity :
|
|||||||
}
|
}
|
||||||
tvChangeSource.setOnClickListener {
|
tvChangeSource.setOnClickListener {
|
||||||
viewModel.bookData.value?.let {
|
viewModel.bookData.value?.let {
|
||||||
showDialogFragment(ChangeSourceDialog(it.name, it.author))
|
showDialogFragment(ChangeBookSourceDialog(it.name, it.author))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tvTocView.setOnClickListener {
|
tvTocView.setOnClickListener {
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ import io.legado.app.model.ReadBook
|
|||||||
import io.legado.app.receiver.TimeBatteryReceiver
|
import io.legado.app.receiver.TimeBatteryReceiver
|
||||||
import io.legado.app.service.BaseReadAloudService
|
import io.legado.app.service.BaseReadAloudService
|
||||||
import io.legado.app.ui.about.AppLogDialog
|
import io.legado.app.ui.about.AppLogDialog
|
||||||
import io.legado.app.ui.book.changesource.ChangeSourceDialog
|
import io.legado.app.ui.book.changesource.ChangeBookSourceDialog
|
||||||
import io.legado.app.ui.book.read.config.*
|
import io.legado.app.ui.book.read.config.*
|
||||||
import io.legado.app.ui.book.read.config.BgTextConfigDialog.Companion.BG_COLOR
|
import io.legado.app.ui.book.read.config.BgTextConfigDialog.Companion.BG_COLOR
|
||||||
import io.legado.app.ui.book.read.config.BgTextConfigDialog.Companion.TEXT_COLOR
|
import io.legado.app.ui.book.read.config.BgTextConfigDialog.Companion.TEXT_COLOR
|
||||||
@@ -69,7 +69,7 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|||||||
ReadMenu.CallBack,
|
ReadMenu.CallBack,
|
||||||
SearchMenu.CallBack,
|
SearchMenu.CallBack,
|
||||||
ReadAloudDialog.CallBack,
|
ReadAloudDialog.CallBack,
|
||||||
ChangeSourceDialog.CallBack,
|
ChangeBookSourceDialog.CallBack,
|
||||||
ReadBook.CallBack,
|
ReadBook.CallBack,
|
||||||
AutoReadDialog.CallBack,
|
AutoReadDialog.CallBack,
|
||||||
TocRegexDialog.CallBack,
|
TocRegexDialog.CallBack,
|
||||||
@@ -239,13 +239,13 @@ class ReadBookActivity : BaseReadBookActivity(),
|
|||||||
R.id.menu_book_change_source -> {
|
R.id.menu_book_change_source -> {
|
||||||
binding.readMenu.runMenuOut()
|
binding.readMenu.runMenuOut()
|
||||||
ReadBook.book?.let {
|
ReadBook.book?.let {
|
||||||
showDialogFragment(ChangeSourceDialog(it.name, it.author))
|
showDialogFragment(ChangeBookSourceDialog(it.name, it.author))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
R.id.menu_chapter_change_source -> {
|
R.id.menu_chapter_change_source -> {
|
||||||
binding.readMenu.runMenuOut()
|
binding.readMenu.runMenuOut()
|
||||||
ReadBook.book?.let {
|
ReadBook.book?.let {
|
||||||
showDialogFragment(ChangeSourceDialog(it.name, it.author))
|
showDialogFragment(ChangeBookSourceDialog(it.name, it.author))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
R.id.menu_refresh_dur -> {
|
R.id.menu_refresh_dur -> {
|
||||||
|
|||||||
Reference in New Issue
Block a user