diff --git a/app/src/main/java/io/legado/app/help/DirectLinkUpload.kt b/app/src/main/java/io/legado/app/help/DirectLinkUpload.kt index 825b461b9..18e317d2c 100644 --- a/app/src/main/java/io/legado/app/help/DirectLinkUpload.kt +++ b/app/src/main/java/io/legado/app/help/DirectLinkUpload.kt @@ -37,7 +37,7 @@ object DirectLinkUpload { return downloadUrl } - private val defaultRules: List by lazy { + val defaultRules: List by lazy { val json = String( appCtx.assets.open("defaultData${File.separator}directLinkUpload.json") .readBytes() @@ -54,8 +54,7 @@ object DirectLinkUpload { return GSON.fromJsonObject(json).getOrNull() } - fun putConfig(uploadUrl: String, downloadUrlRule: String, summary: String?) { - val rule = Rule(uploadUrl, downloadUrlRule, summary) + fun putConfig(rule: Rule) { ACache.get(cacheDir = false).put(ruleFileName, GSON.toJson(rule)) } @@ -63,7 +62,7 @@ object DirectLinkUpload { ACache.get(cacheDir = false).remove(ruleFileName) } - fun getSummary(): String? { + fun getSummary(): String { return getRule().summary } @@ -71,7 +70,13 @@ object DirectLinkUpload { data class Rule( var uploadUrl: String, var downloadUrlRule: String, - var summary: String? - ) + var summary: String + ) { + + override fun toString(): String { + return summary + } + + } } diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt index 5b57c7431..a98b5edce 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt @@ -54,9 +54,7 @@ class SpeakEngineDialog(val callBack: CallBack) : BaseDialogFragment(R.layout.di it.uri?.let { uri -> alert(R.string.export_success) { if (uri.toString().isAbsUrl()) { - DirectLinkUpload.getSummary()?.let { summary -> - setMessage(summary) - } + setMessage(DirectLinkUpload.getSummary()) } val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply { editView.hint = getString(R.string.path) diff --git a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt index 92b1e42e1..3f685af10 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt @@ -83,9 +83,7 @@ class BookSourceActivity : VMBaseActivity alert(R.string.export_success) { if (uri.toString().isAbsUrl()) { - DirectLinkUpload.getSummary()?.let { summary -> - setMessage(summary) - } + setMessage(DirectLinkUpload.getSummary()) } val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply { editView.hint = getString(R.string.path) diff --git a/app/src/main/java/io/legado/app/ui/book/toc/rule/TxtTocRuleActivity.kt b/app/src/main/java/io/legado/app/ui/book/toc/rule/TxtTocRuleActivity.kt index a8d00918b..bec755a6f 100644 --- a/app/src/main/java/io/legado/app/ui/book/toc/rule/TxtTocRuleActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/toc/rule/TxtTocRuleActivity.kt @@ -58,9 +58,7 @@ class TxtTocRuleActivity : VMBaseActivity alert(R.string.export_success) { if (uri.toString().isAbsUrl()) { - DirectLinkUpload.getSummary()?.let { summary -> - setMessage(summary) - } + setMessage(DirectLinkUpload.getSummary()) } val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply { editView.hint = getString(R.string.path) diff --git a/app/src/main/java/io/legado/app/ui/config/DirectLinkUploadConfig.kt b/app/src/main/java/io/legado/app/ui/config/DirectLinkUploadConfig.kt index 8267c7f5e..396305478 100644 --- a/app/src/main/java/io/legado/app/ui/config/DirectLinkUploadConfig.kt +++ b/app/src/main/java/io/legado/app/ui/config/DirectLinkUploadConfig.kt @@ -1,19 +1,24 @@ package io.legado.app.ui.config import android.os.Bundle +import android.view.MenuItem import android.view.View import android.view.ViewGroup +import androidx.appcompat.widget.Toolbar import io.legado.app.R import io.legado.app.base.BaseDialogFragment import io.legado.app.databinding.DialogDirectLinkUploadConfigBinding import io.legado.app.help.DirectLinkUpload +import io.legado.app.lib.dialogs.selector import io.legado.app.lib.theme.primaryColor +import io.legado.app.utils.applyTint import io.legado.app.utils.setLayout import io.legado.app.utils.toastOnUi import io.legado.app.utils.viewbindingdelegate.viewBinding 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) @@ -24,11 +29,10 @@ class DirectLinkUploadConfig : BaseDialogFragment(R.layout.dialog_direct_link_up override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { binding.toolBar.setBackgroundColor(primaryColor) - DirectLinkUpload.getRule()?.let { - binding.editUploadUrl.setText(it.uploadUrl) - binding.editDownloadUrlRule.setText(it.downloadUrlRule) - binding.editSummary.setText(it.summary) - } + binding.toolBar.inflateMenu(R.menu.direct_link_upload_config) + binding.toolBar.menu.applyTint(requireContext()) + binding.toolBar.setOnMenuItemClickListener(this) + upView(DirectLinkUpload.getRule()) binding.tvCancel.onClick { dismiss() } @@ -37,19 +41,48 @@ class DirectLinkUploadConfig : BaseDialogFragment(R.layout.dialog_direct_link_up dismiss() } binding.tvOk.onClick { - val uploadUrl = binding.editUploadUrl.text?.toString() - val downloadUrlRule = binding.editDownloadUrlRule.text?.toString() - val summary = binding.editSummary.text?.toString() - if (uploadUrl.isNullOrBlank()) { - toastOnUi("上传Url不能为空") - return@onClick + getRule()?.let { rule -> + DirectLinkUpload.putConfig(rule) + dismiss() } - if (downloadUrlRule.isNullOrBlank()) { - toastOnUi("下载Url规则不能为空") - return@onClick - } - DirectLinkUpload.putConfig(uploadUrl, downloadUrlRule, summary) - dismiss() + } + } + + override fun onMenuItemClick(item: MenuItem?): Boolean { + when (item?.itemId) { + 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) } } diff --git a/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleActivity.kt b/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleActivity.kt index 8b0ebcbc4..559cfbe68 100644 --- a/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleActivity.kt +++ b/app/src/main/java/io/legado/app/ui/dict/rule/DictRuleActivity.kt @@ -59,9 +59,7 @@ class DictRuleActivity : VMBaseActivity alert(R.string.export_success) { if (uri.toString().isAbsUrl()) { - DirectLinkUpload.getSummary()?.let { summary -> - setMessage(summary) - } + setMessage(DirectLinkUpload.getSummary()) } val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply { editView.hint = getString(R.string.path) diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BaseBookshelfFragment.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BaseBookshelfFragment.kt index 47102dfd0..9424ad811 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BaseBookshelfFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BaseBookshelfFragment.kt @@ -47,9 +47,7 @@ abstract class BaseBookshelfFragment(layoutId: Int) : VMBaseFragment alert(R.string.export_success) { if (uri.toString().isAbsUrl()) { - DirectLinkUpload.getSummary()?.let { summary -> - setMessage(summary) - } + setMessage(DirectLinkUpload.getSummary()) } val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply { editView.hint = getString(R.string.path) diff --git a/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt b/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt index 59351956f..c5eedf968 100644 --- a/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt +++ b/app/src/main/java/io/legado/app/ui/replace/ReplaceRuleActivity.kt @@ -90,9 +90,7 @@ class ReplaceRuleActivity : VMBaseActivity alert(R.string.export_success) { if (uri.toString().isAbsUrl()) { - DirectLinkUpload.getSummary()?.let { summary -> - setMessage(summary) - } + setMessage(DirectLinkUpload.getSummary()) } val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply { editView.hint = getString(R.string.path) diff --git a/app/src/main/java/io/legado/app/ui/rss/source/manage/RssSourceActivity.kt b/app/src/main/java/io/legado/app/ui/rss/source/manage/RssSourceActivity.kt index 49a707841..b8a72e89d 100644 --- a/app/src/main/java/io/legado/app/ui/rss/source/manage/RssSourceActivity.kt +++ b/app/src/main/java/io/legado/app/ui/rss/source/manage/RssSourceActivity.kt @@ -78,9 +78,7 @@ class RssSourceActivity : VMBaseActivity alert(R.string.export_success) { if (uri.toString().isAbsUrl()) { - DirectLinkUpload.getSummary()?.let { summary -> - setMessage(summary) - } + setMessage(DirectLinkUpload.getSummary()) } val alertBinding = DialogEditTextBinding.inflate(layoutInflater).apply { editView.hint = getString(R.string.path) diff --git a/app/src/main/res/menu/direct_link_upload_config.xml b/app/src/main/res/menu/direct_link_upload_config.xml new file mode 100644 index 000000000..1a8395144 --- /dev/null +++ b/app/src/main/res/menu/direct_link_upload_config.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file