|
|
@@ -11,7 +11,6 @@ import io.legado.app.R
|
|
|
import io.legado.app.base.BaseDialogFragment
|
|
|
import io.legado.app.base.BaseViewModel
|
|
|
import io.legado.app.databinding.DialogVariableBinding
|
|
|
-import io.legado.app.help.CacheManager
|
|
|
import io.legado.app.lib.theme.primaryColor
|
|
|
import io.legado.app.utils.applyTint
|
|
|
import io.legado.app.utils.setLayout
|
|
|
@@ -23,9 +22,11 @@ class VariableDialog() : BaseDialogFragment(R.layout.dialog_variable, true),
|
|
|
private val binding by viewBinding(DialogVariableBinding::bind)
|
|
|
private val viewModel by viewModels<ViewModel>()
|
|
|
|
|
|
- constructor(key: String, comment: String) : this() {
|
|
|
+ constructor(title: String, key: String, variable: String?, comment: String) : this() {
|
|
|
arguments = Bundle().apply {
|
|
|
+ putString("title", title)
|
|
|
putString("key", key)
|
|
|
+ putString("variable", variable)
|
|
|
putString("comment", comment)
|
|
|
}
|
|
|
}
|
|
|
@@ -38,10 +39,14 @@ class VariableDialog() : BaseDialogFragment(R.layout.dialog_variable, true),
|
|
|
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
|
|
binding.toolBar.setBackgroundColor(primaryColor)
|
|
|
arguments?.let {
|
|
|
+ binding.toolBar.title = it.getString("title")
|
|
|
viewModel.init(it) {
|
|
|
binding.tvComment.text = viewModel.comment
|
|
|
- binding.tvVariable.setText(viewModel.mVariable)
|
|
|
+ binding.tvVariable.setText(viewModel.variable)
|
|
|
}
|
|
|
+ } ?: let {
|
|
|
+ dismiss()
|
|
|
+ return
|
|
|
}
|
|
|
binding.toolBar.inflateMenu(R.menu.save)
|
|
|
binding.toolBar.menu.applyTint(requireContext())
|
|
|
@@ -50,41 +55,41 @@ class VariableDialog() : BaseDialogFragment(R.layout.dialog_variable, true),
|
|
|
|
|
|
override fun onMenuItemClick(item: MenuItem?): Boolean {
|
|
|
when (item?.itemId) {
|
|
|
- R.id.menu_save -> viewModel.save(binding.tvVariable.text?.toString()) {
|
|
|
- dismiss()
|
|
|
+ R.id.menu_save -> {
|
|
|
+ callback?.setVariable(
|
|
|
+ viewModel.key ?: "",
|
|
|
+ binding.tvVariable.text?.toString()
|
|
|
+ )
|
|
|
+ dismissAllowingStateLoss()
|
|
|
}
|
|
|
}
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
+ val callback get() = (parentFragment as? Callback) ?: (activity as? Callback)
|
|
|
+
|
|
|
class ViewModel(application: Application) : BaseViewModel(application) {
|
|
|
|
|
|
var key: String? = null
|
|
|
var comment: String? = null
|
|
|
- var mVariable: String? = null
|
|
|
+ var variable: String? = null
|
|
|
|
|
|
fun init(arguments: Bundle, onFinally: () -> Unit) {
|
|
|
if (key != null) return
|
|
|
execute {
|
|
|
key = arguments.getString("key")
|
|
|
comment = arguments.getString("comment")
|
|
|
- mVariable = CacheManager.get("sourceVariable_${key}")
|
|
|
+ variable = arguments.getString("variable")
|
|
|
}.onFinally {
|
|
|
onFinally.invoke()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- fun save(variable: String?, onFinally: () -> Unit) {
|
|
|
- execute {
|
|
|
- if (variable == null) {
|
|
|
- CacheManager.delete("sourceVariable_${key}")
|
|
|
- } else {
|
|
|
- CacheManager.put("sourceVariable_${key}", variable)
|
|
|
- }
|
|
|
- }.onFinally {
|
|
|
- onFinally.invoke()
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+ interface Callback {
|
|
|
+
|
|
|
+ fun setVariable(key: String, variable: String?)
|
|
|
|
|
|
}
|
|
|
|