This commit is contained in:
kunfei
2022-10-20 22:48:21 +08:00
parent 68016c5228
commit f17ed81b95
10 changed files with 66 additions and 13 deletions
@@ -14,6 +14,8 @@ import io.legado.app.databinding.ActivityReplaceEditBinding
import io.legado.app.lib.dialogs.SelectItem
import io.legado.app.ui.widget.dialog.TextDialog
import io.legado.app.ui.widget.keyboard.KeyboardToolPop
import io.legado.app.utils.GSON
import io.legado.app.utils.sendToClip
import io.legado.app.utils.showDialogFragment
import io.legado.app.utils.toastOnUi
import io.legado.app.utils.viewbindingdelegate.viewBinding
@@ -68,16 +70,10 @@ class ReplaceEditActivity :
override fun onCompatOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.menu_save -> {
val rule = getReplaceRule()
if (!rule.isValid()) {
toastOnUi(R.string.replace_rule_invalid)
} else {
viewModel.save(rule) {
setResult(RESULT_OK)
finish()
}
}
R.id.menu_save -> saveRule()
R.id.menu_copy_rule -> sendToClip(GSON.toJson(getReplaceRule()))
R.id.menu_paste_rule -> viewModel.pasteRule {
upReplaceView(it)
}
}
return true
@@ -114,6 +110,18 @@ class ReplaceEditActivity :
return replaceRule
}
private fun saveRule() {
val rule = getReplaceRule()
if (!rule.isValid()) {
toastOnUi(R.string.replace_rule_invalid)
} else {
viewModel.save(rule) {
setResult(RESULT_OK)
finish()
}
}
}
override fun helpActions(): List<SelectItem<String>> {
return arrayListOf(
SelectItem("正则教程", "regexHelp")
@@ -5,6 +5,9 @@ import android.content.Intent
import io.legado.app.base.BaseViewModel
import io.legado.app.data.appDb
import io.legado.app.data.entities.ReplaceRule
import io.legado.app.exception.NoStackTraceException
import io.legado.app.utils.*
import kotlinx.coroutines.Dispatchers
class ReplaceEditViewModel(application: Application) : BaseViewModel(application) {
@@ -33,6 +36,22 @@ class ReplaceEditViewModel(application: Application) : BaseViewModel(application
}
}
fun pasteRule(success: (ReplaceRule) -> Unit) {
execute(context = Dispatchers.Main) {
val text = context.getClipText()
if (text.isNullOrBlank()) {
throw NoStackTraceException("剪贴板为空")
}
GSON.fromJsonObject<ReplaceRule>(text).getOrNull()
?: throw NoStackTraceException("格式不对")
}.onSuccess {
success.invoke(it)
}.onError {
context.toastOnUi(it.localizedMessage ?: "Error")
it.printOnDebug()
}
}
fun save(replaceRule: ReplaceRule, success: () -> Unit) {
execute {
if (replaceRule.order == Int.MIN_VALUE) {