From 56fcdd6d921b0259469e7f78271ded876af58f10 Mon Sep 17 00:00:00 2001 From: kunfei Date: Tue, 7 Mar 2023 20:00:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/book/group/GroupSelectDialog.kt | 3 +- .../ui/book/import/remote/ServersDialog.kt | 62 ++++++++++++++++++- .../ui/book/import/remote/ServersViewModel.kt | 10 +++ .../main/res/layout/item_server_select.xml | 27 ++++++++ 4 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/io/legado/app/ui/book/import/remote/ServersViewModel.kt create mode 100644 app/src/main/res/layout/item_server_select.xml diff --git a/app/src/main/java/io/legado/app/ui/book/group/GroupSelectDialog.kt b/app/src/main/java/io/legado/app/ui/book/group/GroupSelectDialog.kt index 34eb818a4..722856ddb 100644 --- a/app/src/main/java/io/legado/app/ui/book/group/GroupSelectDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/group/GroupSelectDialog.kt @@ -45,7 +45,7 @@ class GroupSelectDialog() : BaseDialogFragment(R.layout.dialog_book_group_picker private var requestCode: Int = -1 private val viewModel: GroupViewModel by viewModels() private val adapter by lazy { GroupAdapter(requireContext()) } - private var callBack: CallBack? = null + private var callBack = (activity as? CallBack) private var groupId: Long = 0 override fun onStart() { @@ -55,7 +55,6 @@ class GroupSelectDialog() : BaseDialogFragment(R.layout.dialog_book_group_picker override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { binding.toolBar.setBackgroundColor(primaryColor) - callBack = activity as? CallBack arguments?.let { groupId = it.getLong("groupId") requestCode = it.getInt("requestCode", -1) diff --git a/app/src/main/java/io/legado/app/ui/book/import/remote/ServersDialog.kt b/app/src/main/java/io/legado/app/ui/book/import/remote/ServersDialog.kt index 25f54f679..7f232aafb 100644 --- a/app/src/main/java/io/legado/app/ui/book/import/remote/ServersDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/import/remote/ServersDialog.kt @@ -1,17 +1,30 @@ package io.legado.app.ui.book.import.remote +import android.content.Context +import android.content.DialogInterface import android.os.Bundle import android.view.View import android.view.ViewGroup +import androidx.fragment.app.viewModels 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.Server import io.legado.app.databinding.DialogRecyclerViewBinding +import io.legado.app.databinding.ItemServerSelectBinding +import io.legado.app.lib.theme.backgroundColor +import io.legado.app.lib.theme.primaryColor import io.legado.app.utils.setLayout import io.legado.app.utils.viewbindingdelegate.viewBinding -class ServersDialog:BaseDialogFragment(R.layout.dialog_recycler_view) { +class ServersDialog : BaseDialogFragment(R.layout.dialog_recycler_view) { val binding by viewBinding(DialogRecyclerViewBinding::bind) + val viewModel by viewModels() + + private val callback get() = (activity as? Callback) + private val adapter by lazy { ServersAdapter(requireContext()) } override fun onStart() { super.onStart() @@ -20,8 +33,55 @@ class ServersDialog:BaseDialogFragment(R.layout.dialog_recycler_view) { override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { + binding.toolBar.setBackgroundColor(primaryColor) } + private fun initView() { + + } + + private fun initData() { + + } + + override fun onDismiss(dialog: DialogInterface) { + super.onDismiss(dialog) + callback?.onDialogDismiss("serversDialog") + } + + class ServersAdapter(context: Context) : + RecyclerAdapter(context) { + + private var selectServerId: Long? = null + + override fun getViewBinding(parent: ViewGroup): ItemServerSelectBinding { + return ItemServerSelectBinding.inflate(inflater, parent, false) + } + + override fun registerListener(holder: ItemViewHolder, binding: ItemServerSelectBinding) { + + } + + override fun convert( + holder: ItemViewHolder, + binding: ItemServerSelectBinding, + item: Server, + payloads: MutableList + ) { + binding.run { + root.setBackgroundColor(context.backgroundColor) + rbServer.text = item.name + rbServer.isChecked = item.id == selectServerId + } + } + + } + + interface Callback { + + fun onDialogDismiss(tag: String) + + } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/import/remote/ServersViewModel.kt b/app/src/main/java/io/legado/app/ui/book/import/remote/ServersViewModel.kt new file mode 100644 index 000000000..b2b1281a6 --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/book/import/remote/ServersViewModel.kt @@ -0,0 +1,10 @@ +package io.legado.app.ui.book.import.remote + +import android.app.Application +import io.legado.app.base.BaseViewModel + +class ServersViewModel(application: Application): BaseViewModel(application) { + + + +} \ No newline at end of file diff --git a/app/src/main/res/layout/item_server_select.xml b/app/src/main/res/layout/item_server_select.xml new file mode 100644 index 000000000..cad8e9166 --- /dev/null +++ b/app/src/main/res/layout/item_server_select.xml @@ -0,0 +1,27 @@ + + + + + + + + \ No newline at end of file