优化
This commit is contained in:
@@ -12,9 +12,9 @@ import io.legado.app.model.analyzeRule.AnalyzeUrl
|
||||
@Entity(tableName = "dictRules")
|
||||
data class DictRule(
|
||||
@PrimaryKey
|
||||
var name: String,
|
||||
var urlRule: String,
|
||||
var showRule: String,
|
||||
var name: String = "",
|
||||
var urlRule: String = "",
|
||||
var showRule: String = "",
|
||||
@ColumnInfo(defaultValue = "1")
|
||||
var enabled: Boolean = true,
|
||||
@ColumnInfo(defaultValue = "0")
|
||||
|
||||
@@ -2,8 +2,11 @@ package io.legado.app.ui.dict.rule
|
||||
|
||||
import android.app.Application
|
||||
import android.os.Bundle
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
|
||||
import androidx.fragment.app.viewModels
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
@@ -12,10 +15,12 @@ import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.DictRule
|
||||
import io.legado.app.databinding.DialogDictRuleEditBinding
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.utils.applyTint
|
||||
import io.legado.app.utils.setLayout
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
|
||||
class DictRuleEditDialog() : BaseDialogFragment(R.layout.dialog_dict_rule_edit, true) {
|
||||
class DictRuleEditDialog() : BaseDialogFragment(R.layout.dialog_dict_rule_edit, true),
|
||||
Toolbar.OnMenuItemClickListener {
|
||||
|
||||
val viewModel by viewModels<DictRuleEditViewModel>()
|
||||
val binding by viewBinding(DialogDictRuleEditBinding::bind)
|
||||
@@ -33,13 +38,40 @@ class DictRuleEditDialog() : BaseDialogFragment(R.layout.dialog_dict_rule_edit,
|
||||
|
||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||
binding.toolBar.setBackgroundColor(primaryColor)
|
||||
binding.toolBar.inflateMenu(R.menu.dict_rule_edit)
|
||||
binding.toolBar.menu.applyTint(requireContext())
|
||||
binding.toolBar.setOnMenuItemClickListener(this)
|
||||
viewModel.initData(arguments?.getString("name")) {
|
||||
binding.tvRuleName.setText(viewModel.dictRule?.name)
|
||||
binding.tvUrlRule.setText(viewModel.dictRule?.urlRule)
|
||||
binding.tvShowRule.setText(viewModel.dictRule?.showRule)
|
||||
upRuleView(viewModel.dictRule)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onMenuItemClick(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
R.id.menu_save -> viewModel.save(getDictRule()) {
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
R.id.menu_copy_rule -> viewModel.copyRule(getDictRule())
|
||||
R.id.menu_paste_rule -> viewModel.pasteRule {
|
||||
upRuleView(it)
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
private fun upRuleView(dictRule: DictRule?) {
|
||||
binding.tvRuleName.setText(dictRule?.name)
|
||||
binding.tvUrlRule.setText(dictRule?.urlRule)
|
||||
binding.tvShowRule.setText(dictRule?.showRule)
|
||||
}
|
||||
|
||||
private fun getDictRule(): DictRule {
|
||||
val dictRule = viewModel.dictRule?.copy() ?: DictRule()
|
||||
dictRule.name = binding.tvRuleName.text.toString()
|
||||
dictRule.urlRule = binding.tvUrlRule.text.toString()
|
||||
dictRule.showRule = binding.tvShowRule.text.toString()
|
||||
return dictRule
|
||||
}
|
||||
|
||||
class DictRuleEditViewModel(application: Application) : BaseViewModel(application) {
|
||||
|
||||
@@ -55,6 +87,26 @@ class DictRuleEditDialog() : BaseDialogFragment(R.layout.dialog_dict_rule_edit,
|
||||
}
|
||||
}
|
||||
|
||||
fun save(newDictRule: DictRule, onFinally: () -> Unit) {
|
||||
execute {
|
||||
dictRule?.let {
|
||||
appDb.dictRuleDao.delete(it)
|
||||
}
|
||||
appDb.dictRuleDao.upsert(newDictRule)
|
||||
dictRule = newDictRule
|
||||
}.onFinally {
|
||||
onFinally.invoke()
|
||||
}
|
||||
}
|
||||
|
||||
fun copyRule(dictRule: DictRule) {
|
||||
|
||||
}
|
||||
|
||||
fun pasteRule(success: (DictRule) -> Unit) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?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" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_copy_rule"
|
||||
android:title="@string/copy_rule"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_paste_rule"
|
||||
android:title="@string/paste_rule"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_help"
|
||||
android:title="@string/help"
|
||||
app:showAsAction="never" />
|
||||
|
||||
</menu>
|
||||
Reference in New Issue
Block a user