From 3d50a72c62926e07d6d26095b73c27ab5573bd4c Mon Sep 17 00:00:00 2001 From: kunfei Date: Mon, 20 Feb 2023 11:44:18 +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 --- .../java/io/legado/app/ui/dict/DictDialog.kt | 34 ++++++++++++++++-- .../io/legado/app/ui/dict/DictViewModel.kt | 35 +++++-------------- .../app/ui/dict/rule/DictRuleActivity.kt | 20 +++++++---- app/src/main/res/layout/dialog_dict.xml | 25 +++++++++---- 4 files changed, 71 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/dict/DictDialog.kt b/app/src/main/java/io/legado/app/ui/dict/DictDialog.kt index bff079ed7..d384d0a60 100644 --- a/app/src/main/java/io/legado/app/ui/dict/DictDialog.kt +++ b/app/src/main/java/io/legado/app/ui/dict/DictDialog.kt @@ -5,9 +5,13 @@ import android.text.method.LinkMovementMethod import android.view.View import android.view.ViewGroup import androidx.fragment.app.viewModels +import com.google.android.material.tabs.TabLayout import io.legado.app.R import io.legado.app.base.BaseDialogFragment +import io.legado.app.data.entities.DictRule import io.legado.app.databinding.DialogDictBinding +import io.legado.app.lib.theme.accentColor +import io.legado.app.lib.theme.backgroundColor import io.legado.app.utils.invisible import io.legado.app.utils.setHtml import io.legado.app.utils.setLayout @@ -28,6 +32,8 @@ class DictDialog() : BaseDialogFragment(R.layout.dialog_dict) { private val viewModel by viewModels() private val binding by viewBinding(DialogDictBinding::bind) + private var word: String? = null + override fun onStart() { super.onStart() setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) @@ -35,19 +41,41 @@ class DictDialog() : BaseDialogFragment(R.layout.dialog_dict) { override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { binding.tvDict.movementMethod = LinkMovementMethod() - val word = arguments?.getString("word") + word = arguments?.getString("word") if (word.isNullOrEmpty()) { toastOnUi(R.string.cannot_empty) dismiss() return } + binding.tabLayout.setBackgroundColor(backgroundColor) + binding.tabLayout.setSelectedTabIndicatorColor(accentColor) + binding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { + override fun onTabReselected(tab: TabLayout.Tab) { + + } + + override fun onTabUnselected(tab: TabLayout.Tab) { + + } + + override fun onTabSelected(tab: TabLayout.Tab) { + val dictRule = tab.tag as DictRule + viewModel.dict(dictRule, word!!) + } + }) viewModel.dictHtmlData.observe(viewLifecycleOwner) { binding.rotateLoading.invisible() binding.tvDict.setHtml(it) } - viewModel.dict(word) + viewModel.initData { + viewModel.dictRules?.forEach { + binding.tabLayout.addTab(binding.tabLayout.newTab().apply { + text = it.name + tag = it + }) + } + } } - } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/dict/DictViewModel.kt b/app/src/main/java/io/legado/app/ui/dict/DictViewModel.kt index 74b60b8bc..567476e12 100644 --- a/app/src/main/java/io/legado/app/ui/dict/DictViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/dict/DictViewModel.kt @@ -3,46 +3,27 @@ package io.legado.app.ui.dict import android.app.Application import androidx.lifecycle.MutableLiveData import io.legado.app.base.BaseViewModel +import io.legado.app.data.entities.DictRule import io.legado.app.help.DefaultData import io.legado.app.utils.toastOnUi import java.util.regex.Pattern class DictViewModel(application: Application) : BaseViewModel(application) { - + var dictRules: List? = null var dictHtmlData: MutableLiveData = MutableLiveData() - fun dict(word: String) { - if (isChinese(word)) { - baiduDict(word) - } else { - haiciDict(word) - } - - } - - /** - * 海词英文词典 - * - * @param word - */ - private fun haiciDict(word: String) { + fun initData(onSuccess: () -> Unit) { execute { - DefaultData.dictRules[1].search(word) + DefaultData.dictRules }.onSuccess { - dictHtmlData.postValue(it) - }.onError { - context.toastOnUi(it.localizedMessage) + dictRules = it + onSuccess.invoke() } } - /** - * 百度汉语词典 - * - * @param word - */ - private fun baiduDict(word: String) { + fun dict(dictRule: DictRule, word: String) { execute { - DefaultData.dictRules[0].search(word) + dictRule.search(word) }.onSuccess { dictHtmlData.postValue(it) }.onError { diff --git a/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleActivity.kt b/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleActivity.kt index 137f55ad6..620994bb6 100644 --- a/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleActivity.kt +++ b/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleActivity.kt @@ -69,23 +69,26 @@ class DictRuleActivity : VMBaseActivity - + android:layout_height="wrap_content"> + + + android:layout_height="wrap_content" + android:padding="16dp" + app:layout_constraintTop_toBottomOf="@id/tab_layout" /> + android:layout_gravity="center" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toBottomOf="@id/tab_layout" /> - \ No newline at end of file + \ No newline at end of file