From 3a24a65efc59d8cd6e12cc7c0f512a6edeb953d3 Mon Sep 17 00:00:00 2001 From: kunfei Date: Sun, 8 May 2022 19:58:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96tts=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/association/ImportHttpTtsDialog.kt | 55 +++++++++++++++++++ .../ui/association/OnLineImportActivity.kt | 6 +- 2 files changed, 58 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/association/ImportHttpTtsDialog.kt b/app/src/main/java/io/legado/app/ui/association/ImportHttpTtsDialog.kt index 1865eec58..536d42e39 100644 --- a/app/src/main/java/io/legado/app/ui/association/ImportHttpTtsDialog.kt +++ b/app/src/main/java/io/legado/app/ui/association/ImportHttpTtsDialog.kt @@ -7,6 +7,7 @@ import android.os.Bundle import android.view.View import android.view.ViewGroup import androidx.fragment.app.viewModels +import androidx.recyclerview.widget.LinearLayoutManager import io.legado.app.R import io.legado.app.base.BaseDialogFragment import io.legado.app.base.adapter.ItemViewHolder @@ -16,10 +17,12 @@ import io.legado.app.databinding.DialogRecyclerViewBinding import io.legado.app.databinding.ItemSourceImportBinding import io.legado.app.lib.theme.primaryColor import io.legado.app.ui.widget.dialog.CodeDialog +import io.legado.app.ui.widget.dialog.WaitDialog import io.legado.app.utils.GSON import io.legado.app.utils.setLayout import io.legado.app.utils.showDialogFragment import io.legado.app.utils.viewbindingdelegate.viewBinding +import io.legado.app.utils.visible import splitties.views.onClick class ImportHttpTtsDialog() : BaseDialogFragment(R.layout.dialog_recycler_view) { @@ -33,6 +36,7 @@ class ImportHttpTtsDialog() : BaseDialogFragment(R.layout.dialog_recycler_view) private val binding by viewBinding(DialogRecyclerViewBinding::bind) private val viewModel by viewModels() + private val adapter by lazy { SourcesAdapter(requireContext()) } override fun onStart() { super.onStart() @@ -51,6 +55,57 @@ class ImportHttpTtsDialog() : BaseDialogFragment(R.layout.dialog_recycler_view) binding.toolBar.setBackgroundColor(primaryColor) binding.toolBar.setTitle(R.string.import_book_source) binding.rotateLoading.show() + binding.recyclerView.layoutManager = LinearLayoutManager(requireContext()) + binding.recyclerView.adapter = adapter + binding.tvCancel.visible() + binding.tvCancel.setOnClickListener { + dismissAllowingStateLoss() + } + binding.tvOk.visible() + binding.tvOk.setOnClickListener { + val waitDialog = WaitDialog(requireContext()) + waitDialog.show() + viewModel.importSelect { + waitDialog.dismiss() + dismissAllowingStateLoss() + } + } + binding.tvFooterLeft.visible() + binding.tvFooterLeft.setOnClickListener { + val selectAll = viewModel.isSelectAll + viewModel.selectStatus.forEachIndexed { index, b -> + if (b != !selectAll) { + viewModel.selectStatus[index] = !selectAll + } + } + adapter.notifyDataSetChanged() + upSelectText() + } + viewModel.errorLiveData.observe(this) { + binding.rotateLoading.hide() + binding.tvMsg.apply { + text = it + visible() + } + } + viewModel.successLiveData.observe(this) { + binding.rotateLoading.hide() + if (it > 0) { + adapter.setItems(viewModel.allSources) + upSelectText() + } else { + binding.tvMsg.apply { + setText(R.string.wrong_format) + visible() + } + } + } + val source = arguments?.getString("source") + if (source.isNullOrEmpty()) { + dismiss() + return + } + viewModel.importSource(source) } private fun upSelectText() { diff --git a/app/src/main/java/io/legado/app/ui/association/OnLineImportActivity.kt b/app/src/main/java/io/legado/app/ui/association/OnLineImportActivity.kt index 103b74654..ad0aad692 100644 --- a/app/src/main/java/io/legado/app/ui/association/OnLineImportActivity.kt +++ b/app/src/main/java/io/legado/app/ui/association/OnLineImportActivity.kt @@ -55,9 +55,9 @@ class OnLineImportActivity : "/textTocRule" -> viewModel.getText(url) { json -> viewModel.importTextTocRule(json, this::finallyDialog) } - "/httpTTS" -> viewModel.getText(url) { json -> - viewModel.importHttpTTS(json, this::finallyDialog) - } + "/httpTTS" -> showDialogFragment( + ImportHttpTtsDialog(url, true) + ) "/theme" -> viewModel.getText(url) { json -> viewModel.importTheme(json, this::finallyDialog) }