优化
This commit is contained in:
@@ -37,7 +37,7 @@ object DirectLinkUpload {
|
|||||||
return downloadUrl
|
return downloadUrl
|
||||||
}
|
}
|
||||||
|
|
||||||
private val defaultRules: List<Rule> by lazy {
|
val defaultRules: List<Rule> by lazy {
|
||||||
val json = String(
|
val json = String(
|
||||||
appCtx.assets.open("defaultData${File.separator}directLinkUpload.json")
|
appCtx.assets.open("defaultData${File.separator}directLinkUpload.json")
|
||||||
.readBytes()
|
.readBytes()
|
||||||
@@ -54,8 +54,7 @@ object DirectLinkUpload {
|
|||||||
return GSON.fromJsonObject<Rule>(json).getOrNull()
|
return GSON.fromJsonObject<Rule>(json).getOrNull()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun putConfig(uploadUrl: String, downloadUrlRule: String, summary: String?) {
|
fun putConfig(rule: Rule) {
|
||||||
val rule = Rule(uploadUrl, downloadUrlRule, summary)
|
|
||||||
ACache.get(cacheDir = false).put(ruleFileName, GSON.toJson(rule))
|
ACache.get(cacheDir = false).put(ruleFileName, GSON.toJson(rule))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,7 +62,7 @@ object DirectLinkUpload {
|
|||||||
ACache.get(cacheDir = false).remove(ruleFileName)
|
ACache.get(cacheDir = false).remove(ruleFileName)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getSummary(): String? {
|
fun getSummary(): String {
|
||||||
return getRule().summary
|
return getRule().summary
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,7 +70,13 @@ object DirectLinkUpload {
|
|||||||
data class Rule(
|
data class Rule(
|
||||||
var uploadUrl: String,
|
var uploadUrl: String,
|
||||||
var downloadUrlRule: String,
|
var downloadUrlRule: String,
|
||||||
var summary: String?
|
var summary: String
|
||||||
)
|
) {
|
||||||
|
|
||||||
|
override fun toString(): String {
|
||||||
|
return summary
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,9 +54,7 @@ class SpeakEngineDialog(val callBack: CallBack) : BaseDialogFragment(R.layout.di
|
|||||||
it.uri?.let { uri ->
|
it.uri?.let { uri ->
|
||||||
alert(R.string.export_success) {
|
alert(R.string.export_success) {
|
||||||
if (uri.toString().isAbsUrl()) {
|
if (uri.toString().isAbsUrl()) {
|
||||||
DirectLinkUpload.getSummary()?.let { summary ->
|
setMessage(DirectLinkUpload.getSummary())
|
||||||
setMessage(summary)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
|
val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
|
||||||
editView.hint = getString(R.string.path)
|
editView.hint = getString(R.string.path)
|
||||||
|
|||||||
@@ -83,9 +83,7 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
|
|||||||
it.uri?.let { uri ->
|
it.uri?.let { uri ->
|
||||||
alert(R.string.export_success) {
|
alert(R.string.export_success) {
|
||||||
if (uri.toString().isAbsUrl()) {
|
if (uri.toString().isAbsUrl()) {
|
||||||
DirectLinkUpload.getSummary()?.let { summary ->
|
setMessage(DirectLinkUpload.getSummary())
|
||||||
setMessage(summary)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
|
val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
|
||||||
editView.hint = getString(R.string.path)
|
editView.hint = getString(R.string.path)
|
||||||
|
|||||||
@@ -58,9 +58,7 @@ class TxtTocRuleActivity : VMBaseActivity<ActivityTxtTocRuleBinding, TxtTocRuleV
|
|||||||
it.uri?.let { uri ->
|
it.uri?.let { uri ->
|
||||||
alert(R.string.export_success) {
|
alert(R.string.export_success) {
|
||||||
if (uri.toString().isAbsUrl()) {
|
if (uri.toString().isAbsUrl()) {
|
||||||
DirectLinkUpload.getSummary()?.let { summary ->
|
setMessage(DirectLinkUpload.getSummary())
|
||||||
setMessage(summary)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
|
val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
|
||||||
editView.hint = getString(R.string.path)
|
editView.hint = getString(R.string.path)
|
||||||
|
|||||||
@@ -1,19 +1,24 @@
|
|||||||
package io.legado.app.ui.config
|
package io.legado.app.ui.config
|
||||||
|
|
||||||
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 io.legado.app.R
|
import io.legado.app.R
|
||||||
import io.legado.app.base.BaseDialogFragment
|
import io.legado.app.base.BaseDialogFragment
|
||||||
import io.legado.app.databinding.DialogDirectLinkUploadConfigBinding
|
import io.legado.app.databinding.DialogDirectLinkUploadConfigBinding
|
||||||
import io.legado.app.help.DirectLinkUpload
|
import io.legado.app.help.DirectLinkUpload
|
||||||
|
import io.legado.app.lib.dialogs.selector
|
||||||
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.toastOnUi
|
import io.legado.app.utils.toastOnUi
|
||||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||||
import splitties.views.onClick
|
import splitties.views.onClick
|
||||||
|
|
||||||
class DirectLinkUploadConfig : BaseDialogFragment(R.layout.dialog_direct_link_upload_config) {
|
class DirectLinkUploadConfig : BaseDialogFragment(R.layout.dialog_direct_link_upload_config),
|
||||||
|
Toolbar.OnMenuItemClickListener {
|
||||||
|
|
||||||
private val binding by viewBinding(DialogDirectLinkUploadConfigBinding::bind)
|
private val binding by viewBinding(DialogDirectLinkUploadConfigBinding::bind)
|
||||||
|
|
||||||
@@ -24,11 +29,10 @@ class DirectLinkUploadConfig : BaseDialogFragment(R.layout.dialog_direct_link_up
|
|||||||
|
|
||||||
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
binding.toolBar.setBackgroundColor(primaryColor)
|
binding.toolBar.setBackgroundColor(primaryColor)
|
||||||
DirectLinkUpload.getRule()?.let {
|
binding.toolBar.inflateMenu(R.menu.direct_link_upload_config)
|
||||||
binding.editUploadUrl.setText(it.uploadUrl)
|
binding.toolBar.menu.applyTint(requireContext())
|
||||||
binding.editDownloadUrlRule.setText(it.downloadUrlRule)
|
binding.toolBar.setOnMenuItemClickListener(this)
|
||||||
binding.editSummary.setText(it.summary)
|
upView(DirectLinkUpload.getRule())
|
||||||
}
|
|
||||||
binding.tvCancel.onClick {
|
binding.tvCancel.onClick {
|
||||||
dismiss()
|
dismiss()
|
||||||
}
|
}
|
||||||
@@ -37,19 +41,48 @@ class DirectLinkUploadConfig : BaseDialogFragment(R.layout.dialog_direct_link_up
|
|||||||
dismiss()
|
dismiss()
|
||||||
}
|
}
|
||||||
binding.tvOk.onClick {
|
binding.tvOk.onClick {
|
||||||
val uploadUrl = binding.editUploadUrl.text?.toString()
|
getRule()?.let { rule ->
|
||||||
val downloadUrlRule = binding.editDownloadUrlRule.text?.toString()
|
DirectLinkUpload.putConfig(rule)
|
||||||
val summary = binding.editSummary.text?.toString()
|
dismiss()
|
||||||
if (uploadUrl.isNullOrBlank()) {
|
|
||||||
toastOnUi("上传Url不能为空")
|
|
||||||
return@onClick
|
|
||||||
}
|
}
|
||||||
if (downloadUrlRule.isNullOrBlank()) {
|
}
|
||||||
toastOnUi("下载Url规则不能为空")
|
}
|
||||||
return@onClick
|
|
||||||
}
|
override fun onMenuItemClick(item: MenuItem?): Boolean {
|
||||||
DirectLinkUpload.putConfig(uploadUrl, downloadUrlRule, summary)
|
when (item?.itemId) {
|
||||||
dismiss()
|
R.id.menu_import_default -> importDefault()
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun upView(rule: DirectLinkUpload.Rule) {
|
||||||
|
binding.editUploadUrl.setText(rule.uploadUrl)
|
||||||
|
binding.editDownloadUrlRule.setText(rule.downloadUrlRule)
|
||||||
|
binding.editSummary.setText(rule.summary)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getRule(): DirectLinkUpload.Rule? {
|
||||||
|
val uploadUrl = binding.editUploadUrl.text?.toString()
|
||||||
|
val downloadUrlRule = binding.editDownloadUrlRule.text?.toString()
|
||||||
|
val summary = binding.editSummary.text?.toString()
|
||||||
|
if (uploadUrl.isNullOrBlank()) {
|
||||||
|
toastOnUi("上传Url不能为空")
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
if (downloadUrlRule.isNullOrBlank()) {
|
||||||
|
toastOnUi("下载Url规则不能为空")
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
if (summary.isNullOrBlank()) {
|
||||||
|
toastOnUi("注释不能为空")
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
return DirectLinkUpload.Rule(uploadUrl, downloadUrlRule, summary)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun importDefault() {
|
||||||
|
requireContext().selector(DirectLinkUpload.defaultRules) { _, rule, _ ->
|
||||||
|
upView(rule)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -59,9 +59,7 @@ class DictRuleActivity : VMBaseActivity<ActivityDictRuleBinding, DictRuleViewMod
|
|||||||
it.uri?.let { uri ->
|
it.uri?.let { uri ->
|
||||||
alert(R.string.export_success) {
|
alert(R.string.export_success) {
|
||||||
if (uri.toString().isAbsUrl()) {
|
if (uri.toString().isAbsUrl()) {
|
||||||
DirectLinkUpload.getSummary()?.let { summary ->
|
setMessage(DirectLinkUpload.getSummary())
|
||||||
setMessage(summary)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
|
val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
|
||||||
editView.hint = getString(R.string.path)
|
editView.hint = getString(R.string.path)
|
||||||
|
|||||||
@@ -47,9 +47,7 @@ abstract class BaseBookshelfFragment(layoutId: Int) : VMBaseFragment<BookshelfVi
|
|||||||
it.uri?.let { uri ->
|
it.uri?.let { uri ->
|
||||||
alert(R.string.export_success) {
|
alert(R.string.export_success) {
|
||||||
if (uri.toString().isAbsUrl()) {
|
if (uri.toString().isAbsUrl()) {
|
||||||
DirectLinkUpload.getSummary()?.let { summary ->
|
setMessage(DirectLinkUpload.getSummary())
|
||||||
setMessage(summary)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
|
val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
|
||||||
editView.hint = getString(R.string.path)
|
editView.hint = getString(R.string.path)
|
||||||
|
|||||||
@@ -90,9 +90,7 @@ class ReplaceRuleActivity : VMBaseActivity<ActivityReplaceRuleBinding, ReplaceRu
|
|||||||
it.uri?.let { uri ->
|
it.uri?.let { uri ->
|
||||||
alert(R.string.export_success) {
|
alert(R.string.export_success) {
|
||||||
if (uri.toString().isAbsUrl()) {
|
if (uri.toString().isAbsUrl()) {
|
||||||
DirectLinkUpload.getSummary()?.let { summary ->
|
setMessage(DirectLinkUpload.getSummary())
|
||||||
setMessage(summary)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
|
val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
|
||||||
editView.hint = getString(R.string.path)
|
editView.hint = getString(R.string.path)
|
||||||
|
|||||||
@@ -78,9 +78,7 @@ class RssSourceActivity : VMBaseActivity<ActivityRssSourceBinding, RssSourceView
|
|||||||
it.uri?.let { uri ->
|
it.uri?.let { uri ->
|
||||||
alert(R.string.export_success) {
|
alert(R.string.export_success) {
|
||||||
if (uri.toString().isAbsUrl()) {
|
if (uri.toString().isAbsUrl()) {
|
||||||
DirectLinkUpload.getSummary()?.let { summary ->
|
setMessage(DirectLinkUpload.getSummary())
|
||||||
setMessage(summary)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
|
val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply {
|
||||||
editView.hint = getString(R.string.path)
|
editView.hint = getString(R.string.path)
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<?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">
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_import_default"
|
||||||
|
android:title="@string/import_default_rule"
|
||||||
|
app:showAsAction="never" />
|
||||||
|
|
||||||
|
</menu>
|
||||||
Reference in New Issue
Block a user