优化
This commit is contained in:
@@ -39,14 +39,6 @@ object AppConst {
|
|||||||
SimpleDateFormat("yy-MM-dd-HH-mm-ss")
|
SimpleDateFormat("yy-MM-dd-HH-mm-ss")
|
||||||
}
|
}
|
||||||
|
|
||||||
val keyboardToolChars: List<String> by lazy {
|
|
||||||
arrayListOf(
|
|
||||||
"@css:", "<js></js>", "{{}}", "##", "&&", "%%", "||", "//", "\\", "$.",
|
|
||||||
"@", ":", "class", "text", "href", "textNodes", "ownText", "all", "html",
|
|
||||||
"[", "]", "<", ">", "#", "!", ".", "+", "-", "*", "=", "{'webView': true}"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
const val bookGroupAllId = -1L
|
const val bookGroupAllId = -1L
|
||||||
const val bookGroupLocalId = -2L
|
const val bookGroupLocalId = -2L
|
||||||
const val bookGroupAudioId = -3L
|
const val bookGroupAudioId = -3L
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package io.legado.app.data.dao
|
|||||||
|
|
||||||
import androidx.room.*
|
import androidx.room.*
|
||||||
import io.legado.app.data.entities.KeyboardAssist
|
import io.legado.app.data.entities.KeyboardAssist
|
||||||
|
import io.legado.app.help.DefaultData
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface KeyboardAssistsDao {
|
interface KeyboardAssistsDao {
|
||||||
@@ -20,4 +21,12 @@ interface KeyboardAssistsDao {
|
|||||||
|
|
||||||
@Delete
|
@Delete
|
||||||
fun delete(vararg keyboardAssist: KeyboardAssist)
|
fun delete(vararg keyboardAssist: KeyboardAssist)
|
||||||
|
|
||||||
|
fun getOrDefault(): List<KeyboardAssist> {
|
||||||
|
return all.ifEmpty {
|
||||||
|
insert(*DefaultData.keyboardAssists.toTypedArray())
|
||||||
|
DefaultData.keyboardAssists
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -66,7 +66,7 @@ class BookSourceEditActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val mSoftKeyboardTool: PopupWindow by lazy {
|
private val mSoftKeyboardTool: PopupWindow by lazy {
|
||||||
KeyboardToolPop(this, this)
|
KeyboardToolPop(this, this, this)
|
||||||
}
|
}
|
||||||
private var mIsSoftKeyBoardShowing = false
|
private var mIsSoftKeyBoardShowing = false
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ class ReplaceEditActivity :
|
|||||||
override val viewModel by viewModels<ReplaceEditViewModel>()
|
override val viewModel by viewModels<ReplaceEditViewModel>()
|
||||||
|
|
||||||
private val mSoftKeyboardTool: PopupWindow by lazy {
|
private val mSoftKeyboardTool: PopupWindow by lazy {
|
||||||
KeyboardToolPop(this, this)
|
KeyboardToolPop(this, this, this)
|
||||||
}
|
}
|
||||||
private var mIsSoftKeyBoardShowing = false
|
private var mIsSoftKeyBoardShowing = false
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class RssSourceEditActivity :
|
|||||||
override val binding by viewBinding(ActivityRssSourceEditBinding::inflate)
|
override val binding by viewBinding(ActivityRssSourceEditBinding::inflate)
|
||||||
override val viewModel by viewModels<RssSourceEditViewModel>()
|
override val viewModel by viewModels<RssSourceEditViewModel>()
|
||||||
private val mSoftKeyboardTool: PopupWindow by lazy {
|
private val mSoftKeyboardTool: PopupWindow by lazy {
|
||||||
KeyboardToolPop(this, this)
|
KeyboardToolPop(this, this, this)
|
||||||
}
|
}
|
||||||
private var mIsSoftKeyBoardShowing = false
|
private var mIsSoftKeyBoardShowing = false
|
||||||
private val adapter by lazy { RssSourceEditAdapter() }
|
private val adapter by lazy { RssSourceEditAdapter() }
|
||||||
|
|||||||
@@ -8,9 +8,14 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
|||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import io.legado.app.base.adapter.ItemViewHolder
|
import io.legado.app.base.adapter.ItemViewHolder
|
||||||
import io.legado.app.base.adapter.RecyclerAdapter
|
import io.legado.app.base.adapter.RecyclerAdapter
|
||||||
import io.legado.app.constant.AppConst
|
import io.legado.app.data.appDb
|
||||||
|
import io.legado.app.data.entities.KeyboardAssist
|
||||||
import io.legado.app.databinding.ItemFilletTextBinding
|
import io.legado.app.databinding.ItemFilletTextBinding
|
||||||
import io.legado.app.databinding.PopupKeyboardToolBinding
|
import io.legado.app.databinding.PopupKeyboardToolBinding
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.Dispatchers.IO
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.coroutines.withContext
|
||||||
import splitties.systemservices.layoutInflater
|
import splitties.systemservices.layoutInflater
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -18,6 +23,7 @@ import splitties.systemservices.layoutInflater
|
|||||||
*/
|
*/
|
||||||
class KeyboardToolPop(
|
class KeyboardToolPop(
|
||||||
context: Context,
|
context: Context,
|
||||||
|
private val scope: CoroutineScope,
|
||||||
private val callBack: CallBack
|
private val callBack: CallBack
|
||||||
) : PopupWindow(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) {
|
) : PopupWindow(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) {
|
||||||
|
|
||||||
@@ -48,11 +54,16 @@ class KeyboardToolPop(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
adapter.setItems(AppConst.charsets)
|
scope.launch {
|
||||||
|
val items = withContext(IO) {
|
||||||
|
appDb.keyboardAssistsDao.getOrDefault()
|
||||||
|
}
|
||||||
|
adapter.setItems(items)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class Adapter(context: Context) :
|
inner class Adapter(context: Context) :
|
||||||
RecyclerAdapter<String, ItemFilletTextBinding>(context) {
|
RecyclerAdapter<KeyboardAssist, ItemFilletTextBinding>(context) {
|
||||||
|
|
||||||
override fun getViewBinding(parent: ViewGroup): ItemFilletTextBinding {
|
override fun getViewBinding(parent: ViewGroup): ItemFilletTextBinding {
|
||||||
return ItemFilletTextBinding.inflate(inflater, parent, false)
|
return ItemFilletTextBinding.inflate(inflater, parent, false)
|
||||||
@@ -61,11 +72,11 @@ class KeyboardToolPop(
|
|||||||
override fun convert(
|
override fun convert(
|
||||||
holder: ItemViewHolder,
|
holder: ItemViewHolder,
|
||||||
binding: ItemFilletTextBinding,
|
binding: ItemFilletTextBinding,
|
||||||
item: String,
|
item: KeyboardAssist,
|
||||||
payloads: MutableList<Any>
|
payloads: MutableList<Any>
|
||||||
) {
|
) {
|
||||||
binding.run {
|
binding.run {
|
||||||
textView.text = item
|
textView.text = item.key
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,7 +84,7 @@ class KeyboardToolPop(
|
|||||||
holder.itemView.apply {
|
holder.itemView.apply {
|
||||||
setOnClickListener {
|
setOnClickListener {
|
||||||
getItemByLayoutPosition(holder.layoutPosition)?.let {
|
getItemByLayoutPosition(holder.layoutPosition)?.let {
|
||||||
callBack.sendText(it)
|
callBack.sendText(it.value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user