优化
This commit is contained in:
@@ -12,9 +12,9 @@ import io.legado.app.model.analyzeRule.AnalyzeUrl
|
|||||||
@Entity(tableName = "dictRules")
|
@Entity(tableName = "dictRules")
|
||||||
data class DictRule(
|
data class DictRule(
|
||||||
@PrimaryKey
|
@PrimaryKey
|
||||||
var name: String,
|
var name: String = "",
|
||||||
var urlRule: String,
|
var urlRule: String = "",
|
||||||
var showRule: String,
|
var showRule: String = "",
|
||||||
@ColumnInfo(defaultValue = "1")
|
@ColumnInfo(defaultValue = "1")
|
||||||
var enabled: Boolean = true,
|
var enabled: Boolean = true,
|
||||||
@ColumnInfo(defaultValue = "0")
|
@ColumnInfo(defaultValue = "0")
|
||||||
|
|||||||
@@ -2,8 +2,11 @@ package io.legado.app.ui.dict.rule
|
|||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.view.MenuItem
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.appcompat.widget.Toolbar
|
||||||
|
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
import io.legado.app.R
|
import io.legado.app.R
|
||||||
import io.legado.app.base.BaseDialogFragment
|
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.data.entities.DictRule
|
||||||
import io.legado.app.databinding.DialogDictRuleEditBinding
|
import io.legado.app.databinding.DialogDictRuleEditBinding
|
||||||
import io.legado.app.lib.theme.primaryColor
|
import io.legado.app.lib.theme.primaryColor
|
||||||
|
import io.legado.app.utils.applyTint
|
||||||
import io.legado.app.utils.setLayout
|
import io.legado.app.utils.setLayout
|
||||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
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 viewModel by viewModels<DictRuleEditViewModel>()
|
||||||
val binding by viewBinding(DialogDictRuleEditBinding::bind)
|
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?) {
|
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
binding.toolBar.setBackgroundColor(primaryColor)
|
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")) {
|
viewModel.initData(arguments?.getString("name")) {
|
||||||
binding.tvRuleName.setText(viewModel.dictRule?.name)
|
upRuleView(viewModel.dictRule)
|
||||||
binding.tvUrlRule.setText(viewModel.dictRule?.urlRule)
|
|
||||||
binding.tvShowRule.setText(viewModel.dictRule?.showRule)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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) {
|
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