From dbd3c733baaa84c7345161d8c7525acf5beddd7e Mon Sep 17 00:00:00 2001 From: kunfei Date: Sun, 3 Apr 2022 18:11:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=89=B9=E9=87=8F=E6=8D=A2?= =?UTF-8?q?=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/book/arrange/ArrangeBookActivity.kt | 1 + .../app/ui/book/arrange/SourcePickerDialog.kt | 89 +++++++++++++++++ .../legado/app/ui/widget/SelectActionBar.kt | 5 + .../main/res/layout/dialog_source_picker.xml | 98 +++++++++++++++++++ 4 files changed, 193 insertions(+) create mode 100644 app/src/main/java/io/legado/app/ui/book/arrange/SourcePickerDialog.kt create mode 100644 app/src/main/res/layout/dialog_source_picker.xml diff --git a/app/src/main/java/io/legado/app/ui/book/arrange/ArrangeBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/arrange/ArrangeBookActivity.kt index 4b429ad6d..05c18594a 100644 --- a/app/src/main/java/io/legado/app/ui/book/arrange/ArrangeBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/arrange/ArrangeBookActivity.kt @@ -169,6 +169,7 @@ class ArrangeBookActivity : VMBaseActivity viewModel.upCanUpdate(adapter.selectedBooks(), false) R.id.menu_add_to_group -> selectGroup(addToGroupRequestCode, 0) + R.id.menu_change_source -> showDialogFragment() } return false } diff --git a/app/src/main/java/io/legado/app/ui/book/arrange/SourcePickerDialog.kt b/app/src/main/java/io/legado/app/ui/book/arrange/SourcePickerDialog.kt new file mode 100644 index 000000000..e21260cfd --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/book/arrange/SourcePickerDialog.kt @@ -0,0 +1,89 @@ +package io.legado.app.ui.book.arrange + +import android.content.Context +import android.os.Bundle +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.widget.SearchView +import androidx.recyclerview.widget.LinearLayoutManager +import io.legado.app.R +import io.legado.app.base.BaseDialogFragment +import io.legado.app.base.adapter.ItemViewHolder +import io.legado.app.base.adapter.RecyclerAdapter +import io.legado.app.data.entities.BookSource +import io.legado.app.databinding.DialogSourcePickerBinding +import io.legado.app.databinding.ItemTextBinding +import io.legado.app.lib.theme.primaryColor +import io.legado.app.lib.theme.primaryTextColor +import io.legado.app.utils.applyTint +import io.legado.app.utils.dpToPx +import io.legado.app.utils.setLayout +import io.legado.app.utils.viewbindingdelegate.viewBinding +import splitties.views.rightPadding + +class SourcePickerDialog : BaseDialogFragment(R.layout.dialog_source_picker) { + + private val binding by viewBinding(DialogSourcePickerBinding::bind) + private val searchView: SearchView by lazy { + binding.toolBar.findViewById(R.id.search_view) + } + private val adapter by lazy { + SourceAdapter(requireContext()) + } + + override fun onStart() { + super.onStart() + setLayout(1f, ViewGroup.LayoutParams.MATCH_PARENT) + } + + override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { + initView() + } + + private fun initView() { + binding.toolBar.setBackgroundColor(primaryColor) + binding.toolBar.title = "选择书源" + binding.toolBar.rightPadding = 16.dpToPx() + binding.recyclerView.layoutManager = LinearLayoutManager(requireContext()) + binding.recyclerView.adapter = adapter + searchView.applyTint(primaryTextColor) + searchView.onActionViewExpanded() + searchView.isSubmitButtonEnabled = true + searchView.queryHint = getString(R.string.search_book_source) + searchView.clearFocus() + searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { + override fun onQueryTextSubmit(query: String?): Boolean { + return false + } + + override fun onQueryTextChange(newText: String?): Boolean { + + return false + } + }) + } + + + inner class SourceAdapter(context: Context) : + RecyclerAdapter(context) { + + override fun getViewBinding(parent: ViewGroup): ItemTextBinding { + return ItemTextBinding.inflate(inflater, parent, false) + } + + override fun convert( + holder: ItemViewHolder, + binding: ItemTextBinding, + item: BookSource, + payloads: MutableList + ) { + binding.textView.text = item.getDisPlayNameGroup() + } + + override fun registerListener(holder: ItemViewHolder, binding: ItemTextBinding) { + + } + + } + +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/widget/SelectActionBar.kt b/app/src/main/java/io/legado/app/ui/widget/SelectActionBar.kt index 57936ad0d..d7e50a0be 100644 --- a/app/src/main/java/io/legado/app/ui/widget/SelectActionBar.kt +++ b/app/src/main/java/io/legado/app/ui/widget/SelectActionBar.kt @@ -98,6 +98,11 @@ class SelectActionBar @JvmOverloads constructor( btnRevertSelection.isClickable = isClickable btnSelectActionMain.isEnabled = isClickable btnSelectActionMain.isClickable = isClickable + if (isClickable) { + ivMenuMore.setColorFilter(context.primaryTextColor) + } else { + ivMenuMore.setColorFilter(context.secondaryTextColor) + } ivMenuMore.isEnabled = isClickable ivMenuMore.isClickable = isClickable } diff --git a/app/src/main/res/layout/dialog_source_picker.xml b/app/src/main/res/layout/dialog_source_picker.xml new file mode 100644 index 000000000..b6d0517e8 --- /dev/null +++ b/app/src/main/res/layout/dialog_source_picker.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file