diff --git a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterSourceDialog.kt b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterSourceDialog.kt index 03028bb66..52900a035 100644 --- a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterSourceDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterSourceDialog.kt @@ -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? diff --git a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterSourceViewModel.kt b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterSourceViewModel.kt index 874efbcdd..7bd3d05a1 100644 --- a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterSourceViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterSourceViewModel.kt @@ -41,6 +41,8 @@ class ChangeChapterSourceViewModel(application: Application) : BaseViewModel(app val searchStateData = MutableLiveData() 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() @@ -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") } } diff --git a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterTocAdapter.kt b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterTocAdapter.kt new file mode 100644 index 000000000..9334cb261 --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeChapterTocAdapter.kt @@ -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(context) { + + override fun getViewBinding(parent: ViewGroup): ItemChapterListBinding { + return ItemChapterListBinding.inflate(inflater, parent, false) + } + + override fun convert( + holder: ItemViewHolder, + binding: ItemChapterListBinding, + item: BookChapter, + payloads: MutableList + ) { + 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 + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_chapter_change_source.xml b/app/src/main/res/layout/dialog_chapter_change_source.xml index be29362ff..182d44f2f 100644 --- a/app/src/main/res/layout/dialog_chapter_change_source.xml +++ b/app/src/main/res/layout/dialog_chapter_change_source.xml @@ -1,10 +1,10 @@ + android:background="@color/background" + android:orientation="vertical"> + app:layout_constraintTop_toTopOf="parent" + app:popupTheme="@style/AppTheme.PopupOverlay" + app:titleTextAppearance="@style/ToolbarTitle" /> + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@+id/refresh_progress_bar" /> - + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@+id/tool_bar"> + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@+id/iv_hide_toc" /> - + + + \ No newline at end of file