This commit is contained in:
kunfei
2023-02-20 17:05:18 +08:00
parent 0075a18fc3
commit b215c726e6
12 changed files with 169 additions and 4 deletions
@@ -20,6 +20,9 @@ interface DictRuleDao {
@Query("select * from dictRules where enabled = 1 order by sortNumber")
fun flowAll(): Flow<List<DictRule>>
@Query("select * from dictRules where name = :name")
fun getByName(name: String): DictRule?
@Upsert
fun upsert(vararg dictRule: DictRule)
@@ -18,6 +18,7 @@ import io.legado.app.ui.widget.recycler.DragSelectTouchHelper
import io.legado.app.ui.widget.recycler.ItemTouchCallback
import io.legado.app.ui.widget.recycler.VerticalDivider
import io.legado.app.utils.setEdgeEffectColor
import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.viewbindingdelegate.viewBinding
import kotlinx.coroutines.launch
@@ -77,7 +78,7 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
override fun onContextItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.menu_create -> {}
R.id.menu_create -> showDialogFragment<DictRuleEditDialog>()
}
return super.onContextItemSelected(item)
}
@@ -91,9 +92,9 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
override fun selectAll(selectAll: Boolean) {
if (selectAll) {
adapter.revertSelection()
} else {
adapter.selectAll()
} else {
adapter.revertSelection()
}
}
@@ -110,7 +111,7 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
}
override fun edit(rule: DictRule) {
showDialogFragment(DictRuleEditDialog(rule.name))
}
override fun upOrder() {
@@ -0,0 +1,60 @@
package io.legado.app.ui.dict.rule
import android.app.Application
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.viewModels
import io.legado.app.R
import io.legado.app.base.BaseDialogFragment
import io.legado.app.base.BaseViewModel
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.setLayout
import io.legado.app.utils.viewbindingdelegate.viewBinding
class DictRuleEditDialog() : BaseDialogFragment(R.layout.dialog_dict_rule_edit, true) {
val viewModel by viewModels<DictRuleEditViewModel>()
val binding by viewBinding(DialogDictRuleEditBinding::bind)
constructor(name: String) : this() {
arguments = Bundle().apply {
putString("name", name)
}
}
override fun onStart() {
super.onStart()
setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
}
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
binding.toolBar.setBackgroundColor(primaryColor)
viewModel.initData(arguments?.getString("name")) {
binding.tvRuleName.setText(viewModel.dictRule?.name)
binding.tvUrlRule.setText(viewModel.dictRule?.urlRule)
binding.tvShowRule.setText(viewModel.dictRule?.showRule)
}
}
class DictRuleEditViewModel(application: Application) : BaseViewModel(application) {
var dictRule: DictRule? = null
fun initData(name: String?, onFinally: () -> Unit) {
execute {
if (dictRule == null && name != null) {
dictRule = appDb.dictRuleDao.getByName(name)
}
}.onFinally {
onFinally.invoke()
}
}
}
}