添加单章换源

This commit is contained in:
kunfei
2022-02-21 20:52:29 +08:00
parent b4f2e34b0b
commit 52730f4dd0
4 changed files with 107 additions and 16 deletions
@@ -35,10 +35,12 @@ class ChangeChapterSourceDialog() : BaseDialogFragment(R.layout.dialog_chapter_c
Toolbar.OnMenuItemClickListener,
ChangeChapterSourceAdapter.CallBack {
constructor(name: String, author: String) : this() {
constructor(name: String, author: String, chapterIndex: Int, chapterTitle: String) : this() {
arguments = Bundle().apply {
putString("name", name)
putString("author", author)
putInt("chapterIndex", chapterIndex)
putString("chapterTitle", chapterTitle)
}
}
@@ -197,7 +199,7 @@ class ChangeChapterSourceDialog() : BaseDialogFragment(R.layout.dialog_chapter_c
}
override fun openToc(searchBook: SearchBook) {
binding.clToc.visible()
}
override val bookUrl: String?
@@ -41,6 +41,8 @@ class ChangeChapterSourceViewModel(application: Application) : BaseViewModel(app
val searchStateData = MutableLiveData<Boolean>()
var name: String = ""
var author: String = ""
var chapterIndex: Int = 0
var chapterTitle: String = ""
private var tasks = CompositeCoroutine()
private var screenKey: String = ""
private var bookSourceList = arrayListOf<BookSource>()
@@ -96,6 +98,10 @@ class ChangeChapterSourceViewModel(application: Application) : BaseViewModel(app
bundle.getString("author")?.let {
author = it.replace(AppPattern.authorRegex, "")
}
bundle.getString("chapterTitle")?.let {
chapterTitle = it
}
chapterIndex = bundle.getInt("chapterIndex")
}
}
@@ -0,0 +1,71 @@
package io.legado.app.ui.book.changesource
import android.content.Context
import android.view.ViewGroup
import io.legado.app.R
import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.base.adapter.RecyclerAdapter
import io.legado.app.data.entities.Book
import io.legado.app.data.entities.BookChapter
import io.legado.app.databinding.ItemChapterListBinding
import io.legado.app.lib.theme.ThemeUtils
import io.legado.app.lib.theme.accentColor
import io.legado.app.utils.getCompatColor
import io.legado.app.utils.gone
import io.legado.app.utils.visible
class ChangeChapterTocAdapter(context: Context, val callback: Callback) :
RecyclerAdapter<BookChapter, ItemChapterListBinding>(context) {
override fun getViewBinding(parent: ViewGroup): ItemChapterListBinding {
return ItemChapterListBinding.inflate(inflater, parent, false)
}
override fun convert(
holder: ItemViewHolder,
binding: ItemChapterListBinding,
item: BookChapter,
payloads: MutableList<Any>
) {
binding.run {
val isDur = callback.durChapterIndex() == item.index
if (isDur) {
tvChapterName.setTextColor(context.accentColor)
} else {
tvChapterName.setTextColor(context.getCompatColor(R.color.primaryText))
}
tvChapterName.text = item.title
if (item.isVolume) {
//卷名,如第一卷 突出显示
tvChapterItem.setBackgroundColor(context.getCompatColor(R.color.btn_bg_press))
} else {
//普通章节 保持不变
tvChapterItem.background =
ThemeUtils.resolveDrawable(context, android.R.attr.selectableItemBackground)
}
if (!item.tag.isNullOrEmpty() && !item.isVolume) {
//卷名不显示tag(更新时间规则)
tvTag.text = item.tag
tvTag.visible()
} else {
tvTag.gone()
}
ivChecked.setImageResource(R.drawable.ic_check)
ivChecked.visible(isDur)
}
}
override fun registerListener(holder: ItemViewHolder, binding: ItemChapterListBinding) {
holder.itemView.setOnClickListener {
getItem(holder.layoutPosition)?.let {
callback.openChapter(it)
}
}
}
interface Callback {
val book: Book?
fun openChapter(bookChapter: BookChapter)
fun durChapterIndex(): Int
}
}