优化
This commit is contained in:
@@ -11,13 +11,13 @@ import kotlinx.coroutines.flow.Flow
|
||||
@Dao
|
||||
interface DictRuleDao {
|
||||
|
||||
@get:Query("select * from dictRules")
|
||||
@get:Query("select * from dictRules order by sortNumber")
|
||||
val all: List<DictRule>
|
||||
|
||||
@get:Query("select * from dictRules where enabled = 1")
|
||||
@get:Query("select * from dictRules where enabled = 1 order by sortNumber")
|
||||
val enabled: List<DictRule>
|
||||
|
||||
@Query("select * from dictRules where enabled = 1")
|
||||
@Query("select * from dictRules where enabled = 1 order by sortNumber")
|
||||
fun flowAll(): Flow<List<DictRule>>
|
||||
|
||||
@Upsert
|
||||
|
||||
@@ -12,7 +12,7 @@ import io.legado.app.model.analyzeRule.AnalyzeUrl
|
||||
@Entity(tableName = "dictRules")
|
||||
data class DictRule(
|
||||
@PrimaryKey
|
||||
val name: String,
|
||||
var name: String,
|
||||
var urlRule: String,
|
||||
var showRule: String,
|
||||
@ColumnInfo(defaultValue = "1")
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package io.legado.app.ui.dict.rule
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import androidx.activity.viewModels
|
||||
import androidx.appcompat.widget.PopupMenu
|
||||
@@ -36,6 +37,11 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
|
||||
observeDictRuleData()
|
||||
}
|
||||
|
||||
override fun onCompatCreateOptionsMenu(menu: Menu): Boolean {
|
||||
menuInflater.inflate(R.menu.dict_rule, menu)
|
||||
return super.onCompatCreateOptionsMenu(menu)
|
||||
}
|
||||
|
||||
private fun initRecyclerView() {
|
||||
binding.recyclerView.setEdgeEffectColor(primaryColor)
|
||||
binding.recyclerView.layoutManager = LinearLayoutManager(this)
|
||||
@@ -53,6 +59,7 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
|
||||
ItemTouchHelper(itemTouchCallback).attachToRecyclerView(binding.recyclerView)
|
||||
}
|
||||
|
||||
|
||||
private fun initSelectActionView() {
|
||||
binding.selectActionBar.setMainActionText(R.string.delete)
|
||||
binding.selectActionBar.inflateMenu(R.menu.replace_rule_sel)
|
||||
@@ -68,12 +75,11 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
|
||||
}
|
||||
}
|
||||
|
||||
override fun selectAll(selectAll: Boolean) {
|
||||
adapter.selectAll()
|
||||
}
|
||||
|
||||
override fun revertSelection() {
|
||||
adapter.revertSelection()
|
||||
override fun onContextItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
R.id.menu_create -> {}
|
||||
}
|
||||
return super.onContextItemSelected(item)
|
||||
}
|
||||
|
||||
override fun onMenuItemClick(item: MenuItem): Boolean {
|
||||
@@ -83,6 +89,18 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
|
||||
return true
|
||||
}
|
||||
|
||||
override fun selectAll(selectAll: Boolean) {
|
||||
if (selectAll) {
|
||||
adapter.revertSelection()
|
||||
} else {
|
||||
adapter.selectAll()
|
||||
}
|
||||
}
|
||||
|
||||
override fun revertSelection() {
|
||||
adapter.revertSelection()
|
||||
}
|
||||
|
||||
override fun update(vararg rule: DictRule) {
|
||||
viewModel.upsert(*rule)
|
||||
}
|
||||
@@ -92,19 +110,11 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
|
||||
}
|
||||
|
||||
override fun edit(rule: DictRule) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun toTop(rule: DictRule) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun toBottom(rule: DictRule) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun upOrder() {
|
||||
TODO("Not yet implemented")
|
||||
viewModel.upSortNumber()
|
||||
}
|
||||
|
||||
override fun upCountView() {
|
||||
|
||||
@@ -2,17 +2,14 @@ package io.legado.app.ui.dict.rule
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.PopupMenu
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.adapter.ItemViewHolder
|
||||
import io.legado.app.base.adapter.RecyclerAdapter
|
||||
import io.legado.app.data.entities.DictRule
|
||||
import io.legado.app.databinding.ItemReplaceRuleBinding
|
||||
import io.legado.app.databinding.ItemDictRuleBinding
|
||||
import io.legado.app.lib.theme.backgroundColor
|
||||
import io.legado.app.ui.widget.recycler.DragSelectTouchHelper
|
||||
import io.legado.app.ui.widget.recycler.ItemTouchCallback
|
||||
@@ -20,7 +17,7 @@ import io.legado.app.utils.ColorUtils
|
||||
|
||||
|
||||
class DictRuleAdapter(context: Context, var callBack: CallBack) :
|
||||
RecyclerAdapter<DictRule, ItemReplaceRuleBinding>(context),
|
||||
RecyclerAdapter<DictRule, ItemDictRuleBinding>(context),
|
||||
ItemTouchCallback.Callback {
|
||||
|
||||
private val selected = linkedSetOf<DictRule>()
|
||||
@@ -83,8 +80,8 @@ class DictRuleAdapter(context: Context, var callBack: CallBack) :
|
||||
callBack.upCountView()
|
||||
}
|
||||
|
||||
override fun getViewBinding(parent: ViewGroup): ItemReplaceRuleBinding {
|
||||
return ItemReplaceRuleBinding.inflate(inflater, parent, false)
|
||||
override fun getViewBinding(parent: ViewGroup): ItemDictRuleBinding {
|
||||
return ItemDictRuleBinding.inflate(inflater, parent, false)
|
||||
}
|
||||
|
||||
override fun onCurrentListChanged() {
|
||||
@@ -93,7 +90,7 @@ class DictRuleAdapter(context: Context, var callBack: CallBack) :
|
||||
|
||||
override fun convert(
|
||||
holder: ItemViewHolder,
|
||||
binding: ItemReplaceRuleBinding,
|
||||
binding: ItemDictRuleBinding,
|
||||
item: DictRule,
|
||||
payloads: MutableList<Any>
|
||||
) {
|
||||
@@ -116,7 +113,7 @@ class DictRuleAdapter(context: Context, var callBack: CallBack) :
|
||||
}
|
||||
}
|
||||
|
||||
override fun registerListener(holder: ItemViewHolder, binding: ItemReplaceRuleBinding) {
|
||||
override fun registerListener(holder: ItemViewHolder, binding: ItemDictRuleBinding) {
|
||||
binding.apply {
|
||||
swtEnabled.setOnCheckedChangeListener { buttonView, isChecked ->
|
||||
if (buttonView.isPressed) {
|
||||
@@ -126,11 +123,6 @@ class DictRuleAdapter(context: Context, var callBack: CallBack) :
|
||||
}
|
||||
}
|
||||
}
|
||||
ivEdit.setOnClickListener {
|
||||
getItem(holder.layoutPosition)?.let {
|
||||
callBack.edit(it)
|
||||
}
|
||||
}
|
||||
cbName.setOnClickListener {
|
||||
getItem(holder.layoutPosition)?.let {
|
||||
if (cbName.isChecked) {
|
||||
@@ -141,27 +133,19 @@ class DictRuleAdapter(context: Context, var callBack: CallBack) :
|
||||
}
|
||||
callBack.upCountView()
|
||||
}
|
||||
ivMenuMore.setOnClickListener {
|
||||
showMenu(ivMenuMore, holder.layoutPosition)
|
||||
ivEdit.setOnClickListener {
|
||||
getItem(holder.layoutPosition)?.let {
|
||||
callBack.edit(it)
|
||||
}
|
||||
}
|
||||
ivDelete.setOnClickListener {
|
||||
getItem(holder.layoutPosition)?.let {
|
||||
callBack.delete(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun showMenu(view: View, position: Int) {
|
||||
val item = getItem(position) ?: return
|
||||
val popupMenu = PopupMenu(context, view)
|
||||
popupMenu.inflate(R.menu.replace_rule_item)
|
||||
popupMenu.setOnMenuItemClickListener { menuItem ->
|
||||
when (menuItem.itemId) {
|
||||
R.id.menu_top -> callBack.toTop(item)
|
||||
R.id.menu_bottom -> callBack.toBottom(item)
|
||||
R.id.menu_del -> callBack.delete(item)
|
||||
}
|
||||
true
|
||||
}
|
||||
popupMenu.show()
|
||||
}
|
||||
|
||||
override fun swap(srcPosition: Int, targetPosition: Int): Boolean {
|
||||
val srcItem = getItem(srcPosition)
|
||||
val targetItem = getItem(targetPosition)
|
||||
@@ -218,8 +202,6 @@ class DictRuleAdapter(context: Context, var callBack: CallBack) :
|
||||
fun update(vararg rule: DictRule)
|
||||
fun delete(rule: DictRule)
|
||||
fun edit(rule: DictRule)
|
||||
fun toTop(rule: DictRule)
|
||||
fun toBottom(rule: DictRule)
|
||||
fun upOrder()
|
||||
fun upCountView()
|
||||
}
|
||||
|
||||
@@ -20,4 +20,14 @@ class DictRuleViewModel(application: Application) : BaseViewModel(application) {
|
||||
}
|
||||
}
|
||||
|
||||
fun upSortNumber() {
|
||||
execute {
|
||||
val rules = appDb.dictRuleDao.all
|
||||
for ((index, rule) in rules.withIndex()) {
|
||||
rule.sortNumber = index + 1
|
||||
}
|
||||
appDb.dictRuleDao.upsert(*rules.toTypedArray())
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -27,6 +27,7 @@ import io.legado.app.ui.book.bookmark.AllBookmarkActivity
|
||||
import io.legado.app.ui.book.source.manage.BookSourceActivity
|
||||
import io.legado.app.ui.config.ConfigActivity
|
||||
import io.legado.app.ui.config.ConfigTag
|
||||
import io.legado.app.ui.dict.rule.DictRuleActivity
|
||||
import io.legado.app.ui.replace.ReplaceRuleActivity
|
||||
import io.legado.app.ui.widget.dialog.TextDialog
|
||||
import io.legado.app.utils.*
|
||||
@@ -136,6 +137,7 @@ class MyFragment : BaseFragment(R.layout.fragment_my_config) {
|
||||
when (preference.key) {
|
||||
"bookSourceManage" -> startActivity<BookSourceActivity>()
|
||||
"replaceManage" -> startActivity<ReplaceRuleActivity>()
|
||||
"dictRuleManage" -> startActivity<DictRuleActivity>()
|
||||
"bookmark" -> startActivity<AllBookmarkActivity>()
|
||||
"setting" -> startActivity<ConfigActivity> {
|
||||
putExtra("configTag", ConfigTag.OTHER_CONFIG)
|
||||
|
||||
Reference in New Issue
Block a user