|
|
@@ -10,14 +10,18 @@ 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.appDb
|
|
|
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 kotlinx.coroutines.Job
|
|
|
+import kotlinx.coroutines.launch
|
|
|
|
|
|
class SourcePickerDialog : BaseDialogFragment(R.layout.dialog_source_picker) {
|
|
|
|
|
|
@@ -28,6 +32,7 @@ class SourcePickerDialog : BaseDialogFragment(R.layout.dialog_source_picker) {
|
|
|
private val adapter by lazy {
|
|
|
SourceAdapter(requireContext())
|
|
|
}
|
|
|
+ private var sourceFlowJob: Job? = null
|
|
|
|
|
|
override fun onStart() {
|
|
|
super.onStart()
|
|
|
@@ -36,6 +41,7 @@ class SourcePickerDialog : BaseDialogFragment(R.layout.dialog_source_picker) {
|
|
|
|
|
|
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
|
|
initView()
|
|
|
+ initData()
|
|
|
}
|
|
|
|
|
|
private fun initView() {
|
|
|
@@ -54,18 +60,31 @@ class SourcePickerDialog : BaseDialogFragment(R.layout.dialog_source_picker) {
|
|
|
}
|
|
|
|
|
|
override fun onQueryTextChange(newText: String?): Boolean {
|
|
|
-
|
|
|
+ initData(newText)
|
|
|
return false
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+ private fun initData(searchKey: String? = null) {
|
|
|
+ sourceFlowJob?.cancel()
|
|
|
+ sourceFlowJob = launch {
|
|
|
+ when {
|
|
|
+ searchKey.isNullOrEmpty() -> appDb.bookSourceDao.flowEnabled()
|
|
|
+ else -> appDb.bookSourceDao.flowSearchEnabled(searchKey)
|
|
|
+ }.collect {
|
|
|
+ adapter.setItems(it)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
inner class SourceAdapter(context: Context) :
|
|
|
RecyclerAdapter<BookSource, ItemTextBinding>(context) {
|
|
|
|
|
|
override fun getViewBinding(parent: ViewGroup): ItemTextBinding {
|
|
|
- return ItemTextBinding.inflate(inflater, parent, false)
|
|
|
+ return ItemTextBinding.inflate(inflater, parent, false).apply {
|
|
|
+ root.setPadding(16.dpToPx(), 8.dpToPx(), 16.dpToPx(), 8.dpToPx())
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
override fun convert(
|