This commit is contained in:
gedoor 2021-10-06 23:57:37 +08:00
parent f7449f30df
commit 1a6d59389d
2 changed files with 41 additions and 2 deletions

View File

@ -9,14 +9,15 @@ import io.legado.app.lib.theme.primaryColor
import io.legado.app.ui.widget.code.addJsPattern
import io.legado.app.ui.widget.code.addJsonPattern
import io.legado.app.ui.widget.code.addLegadoPattern
import io.legado.app.utils.disableEdit
import io.legado.app.utils.setLayout
import io.legado.app.utils.viewbindingdelegate.viewBinding
class CodeDialog() : BaseDialogFragment(R.layout.dialog_code_view) {
constructor(code: String) : this() {
constructor(code: String, disableEdit: Boolean = true) : this() {
arguments = Bundle().apply {
putBoolean("disableEdit", disableEdit)
putString("code", code)
}
}
@ -30,6 +31,11 @@ class CodeDialog() : BaseDialogFragment(R.layout.dialog_code_view) {
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
binding.toolBar.setBackgroundColor(primaryColor)
if (arguments?.getBoolean("disableEdit") == true) {
binding.codeView.disableEdit()
} else {
initMenu()
}
binding.codeView.addLegadoPattern()
binding.codeView.addJsonPattern()
binding.codeView.addJsPattern()
@ -38,4 +44,24 @@ class CodeDialog() : BaseDialogFragment(R.layout.dialog_code_view) {
}
}
private fun initMenu() {
binding.toolBar.inflateMenu(R.menu.code_edit)
binding.toolBar.setOnMenuItemClickListener {
when (it.itemId) {
R.id.menu_save -> binding.codeView.text?.toString()?.let { code ->
(parentFragment as? Callback)?.saveCode(code)
?: (activity as? Callback)?.saveCode(code)
}
}
return@setOnMenuItemClickListener true
}
}
interface Callback {
fun saveCode(code: String)
}
}

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="AlwaysShowAction">
<item
android:id="@+id/menu_save"
android:icon="@drawable/ic_save"
android:title="@string/action_save"
app:showAsAction="always" />
</menu>