pull/1114/head
gedoor 3 years ago
parent 1717eb5a37
commit 8e18de3129
  1. 5
      app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt
  2. 37
      app/src/main/java/io/legado/app/ui/dict/DictDialog.kt
  3. 25
      app/src/main/java/io/legado/app/ui/dict/DictViewModel.kt
  4. 11
      app/src/main/res/layout/dialog_dict.xml
  5. 4
      app/src/main/res/menu/content_select_action.xml
  6. 1
      app/src/main/res/values-ja-rJP/strings.xml
  7. 1
      app/src/main/res/values-pt-rBR/strings.xml
  8. 1
      app/src/main/res/values-zh-rHK/strings.xml
  9. 1
      app/src/main/res/values-zh-rTW/strings.xml
  10. 1
      app/src/main/res/values-zh/strings.xml
  11. 1
      app/src/main/res/values/strings.xml

@ -46,6 +46,7 @@ import io.legado.app.ui.book.read.page.provider.TextPageFactory
import io.legado.app.ui.book.searchContent.SearchContentActivity import io.legado.app.ui.book.searchContent.SearchContentActivity
import io.legado.app.ui.book.source.edit.BookSourceEditActivity import io.legado.app.ui.book.source.edit.BookSourceEditActivity
import io.legado.app.ui.book.toc.TocActivityResult import io.legado.app.ui.book.toc.TocActivityResult
import io.legado.app.ui.dict.DictDialog
import io.legado.app.ui.login.SourceLoginActivity import io.legado.app.ui.login.SourceLoginActivity
import io.legado.app.ui.replace.ReplaceRuleActivity import io.legado.app.ui.replace.ReplaceRuleActivity
import io.legado.app.ui.replace.edit.ReplaceEditActivity import io.legado.app.ui.replace.edit.ReplaceEditActivity
@ -531,6 +532,10 @@ class ReadBookActivity : ReadBookBaseActivity(),
openSearchActivity(selectedText) openSearchActivity(selectedText)
return true return true
} }
R.id.menu_dict -> {
DictDialog.dict(supportFragmentManager, selectedText)
return true
}
} }
return false return false
} }

@ -1,11 +1,21 @@
package io.legado.app.ui.dict package io.legado.app.ui.dict
import android.os.Bundle import android.os.Bundle
import android.text.Html
import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import io.legado.app.R
import io.legado.app.base.BaseDialogFragment import io.legado.app.base.BaseDialogFragment
import io.legado.app.databinding.DialogDictBinding
import io.legado.app.utils.toastOnUi
import io.legado.app.utils.viewbindingdelegate.viewBinding
/**
* 词典
*/
class DictDialog : BaseDialogFragment() { class DictDialog : BaseDialogFragment() {
companion object { companion object {
@ -21,10 +31,33 @@ class DictDialog : BaseDialogFragment() {
} }
private val viewModel by viewModels<DictViewModel>() private val viewModel by viewModels<DictViewModel>()
private val binding by viewBinding(DialogDictBinding::bind)
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { override fun onStart() {
viewModel.word = arguments?.getString("word") ?: "" super.onStart()
dialog?.window
?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?,
): View? {
return inflater.inflate(R.layout.dialog_dict, container)
}
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
val word = arguments?.getString("word")
if (word.isNullOrEmpty()) {
toastOnUi(R.string.cannot_empty)
dismiss()
return
}
viewModel.dictHtmlData.observe(viewLifecycleOwner) {
binding.tvDict.text = Html.fromHtml(it)
}
viewModel.dict(word)
} }

@ -1,11 +1,30 @@
package io.legado.app.ui.dict package io.legado.app.ui.dict
import android.app.Application import android.app.Application
import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.MutableLiveData
import io.legado.app.base.BaseViewModel
import io.legado.app.help.http.get
import io.legado.app.help.http.newCallStrResponse
import io.legado.app.help.http.okHttpClient
import org.jsoup.Jsoup
class DictViewModel(application: Application) : AndroidViewModel(application) { class DictViewModel(application: Application) : BaseViewModel(application) {
var word: String? = null var dictHtmlData: MutableLiveData<String> = MutableLiveData()
fun dict(word: String) {
execute {
val body = okHttpClient.newCallStrResponse {
get("http://apii.dict.cn/mini.php", mapOf(Pair("q", word)))
}.body
val jsoup = Jsoup.parse(body)
jsoup.body()
}.onSuccess {
dictHtmlData.postValue(it.html())
}.onError {
toastOnUi(it.localizedMessage)
}
}
} }

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_dict"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>

@ -17,6 +17,10 @@
android:id="@+id/menu_aloud" android:id="@+id/menu_aloud"
android:title="@string/read_aloud" /> android:title="@string/read_aloud" />
<item
android:id="@+id/menu_dict"
android:title="@string/dict" />
<item <item
android:id="@+id/menu_search_content" android:id="@+id/menu_search_content"
android:title="@string/search_content" /> android:title="@string/search_content" />

@ -846,4 +846,5 @@
<string name="export_file_name">导出文件名</string> <string name="export_file_name">导出文件名</string>
<string name="reset">重置</string> <string name="reset">重置</string>
<string name="null_url">url为空</string> <string name="null_url">url为空</string>
<string name="dict">字典</string>
</resources> </resources>

@ -846,4 +846,5 @@
<string name="export_file_name">Exportar o nome do arquivo</string> <string name="export_file_name">Exportar o nome do arquivo</string>
<string name="reset">重置</string> <string name="reset">重置</string>
<string name="null_url">url为空</string> <string name="null_url">url为空</string>
<string name="dict">字典</string>
</resources> </resources>

@ -844,5 +844,6 @@
<string name="export_file_name">导出文件名</string> <string name="export_file_name">导出文件名</string>
<string name="reset">重置</string> <string name="reset">重置</string>
<string name="null_url">url为空</string> <string name="null_url">url为空</string>
<string name="dict">字典</string>
</resources> </resources>

@ -845,5 +845,6 @@
<string name="export_file_name">匯出檔案名</string> <string name="export_file_name">匯出檔案名</string>
<string name="reset">重設</string> <string name="reset">重設</string>
<string name="null_url">url为空</string> <string name="null_url">url为空</string>
<string name="dict">字典</string>
</resources> </resources>

@ -845,5 +845,6 @@
<string name="export_file_name">导出文件名</string> <string name="export_file_name">导出文件名</string>
<string name="reset">重置</string> <string name="reset">重置</string>
<string name="null_url">url为空</string> <string name="null_url">url为空</string>
<string name="dict">字典</string>
</resources> </resources>

@ -846,5 +846,6 @@
<string name="export_file_name">Export file name</string> <string name="export_file_name">Export file name</string>
<string name="reset">Reset</string> <string name="reset">Reset</string>
<string name="null_url">Null url</string> <string name="null_url">Null url</string>
<string name="dict">字典</string>
</resources> </resources>

Loading…
Cancel
Save