diff --git a/app/src/main/java/io/legado/app/model/BookCover.kt b/app/src/main/java/io/legado/app/model/BookCover.kt
index f50a30b0b..2306fad79 100644
--- a/app/src/main/java/io/legado/app/model/BookCover.kt
+++ b/app/src/main/java/io/legado/app/model/BookCover.kt
@@ -80,7 +80,7 @@ object BookCover {
)
val res = analyzeUrl.getStrResponseAwait()
val analyzeRule = AnalyzeRule(book)
- analyzeRule.setContent(res.body, config.searchUrl)
+ analyzeRule.setContent(res.body)
analyzeRule.setRedirectUrl(res.url)
return analyzeRule.getString(config.coverRule, isUrl = true)
}
@@ -91,6 +91,11 @@ object BookCover {
CacheManager.put(coverRuleConfigKey, json)
}
+ fun delCoverRuleConfig() {
+ CacheManager.delete(coverRuleConfigKey)
+ coverRuleConfig = DefaultData.coverRuleConfig
+ }
+
data class CoverRuleConfig(
var searchUrl: String,
var coverRule: String,
diff --git a/app/src/main/java/io/legado/app/ui/config/CoverConfigFragment.kt b/app/src/main/java/io/legado/app/ui/config/CoverConfigFragment.kt
index d59c760a3..2fefefdc6 100644
--- a/app/src/main/java/io/legado/app/ui/config/CoverConfigFragment.kt
+++ b/app/src/main/java/io/legado/app/ui/config/CoverConfigFragment.kt
@@ -83,6 +83,7 @@ class CoverConfigFragment : BasePreferenceFragment(),
@SuppressLint("PrivateResource")
override fun onPreferenceTreeClick(preference: Preference): Boolean {
when (preference.key) {
+ "coverRule" -> showDialogFragment(CoverRuleConfigDialog())
PreferKey.defaultCover ->
if (getPrefString(preference.key).isNullOrEmpty()) {
selectImage.launch(requestCodeCover)
diff --git a/app/src/main/java/io/legado/app/ui/config/CoverRuleConfigDialog.kt b/app/src/main/java/io/legado/app/ui/config/CoverRuleConfigDialog.kt
index 08a7bab4e..c92385eaf 100644
--- a/app/src/main/java/io/legado/app/ui/config/CoverRuleConfigDialog.kt
+++ b/app/src/main/java/io/legado/app/ui/config/CoverRuleConfigDialog.kt
@@ -2,13 +2,47 @@ package io.legado.app.ui.config
import android.os.Bundle
import android.view.View
+import android.view.ViewGroup
import io.legado.app.R
import io.legado.app.base.BaseDialogFragment
+import io.legado.app.databinding.DialogCoverRuleConfigBinding
+import io.legado.app.model.BookCover
+import io.legado.app.utils.setLayout
+import io.legado.app.utils.toastOnUi
+import io.legado.app.utils.viewbindingdelegate.viewBinding
+import splitties.views.onClick
class CoverRuleConfigDialog : BaseDialogFragment(R.layout.dialog_cover_rule_config) {
- override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
+ val binding by viewBinding(DialogCoverRuleConfigBinding::bind)
+ override fun onStart() {
+ super.onStart()
+ setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
+ }
+
+ override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
+ binding.editSearchUrl.setText(BookCover.coverRuleConfig.searchUrl)
+ binding.editCoverUrlRule.setText(BookCover.coverRuleConfig.coverRule)
+ binding.tvCancel.onClick {
+ dismissAllowingStateLoss()
+ }
+ binding.tvOk.onClick {
+ val searchUrl = binding.editSearchUrl.text?.toString()
+ val coverRule = binding.editCoverUrlRule.text?.toString()
+ if (searchUrl.isNullOrBlank() || coverRule.isNullOrBlank()) {
+ toastOnUi("搜索url和cover规则不能为空")
+ } else {
+ BookCover.CoverRuleConfig(searchUrl, coverRule).let { config ->
+ BookCover.saveCoverRuleConfig(config)
+ }
+ dismissAllowingStateLoss()
+ }
+ }
+ binding.tvFooterLeft.onClick {
+ BookCover.delCoverRuleConfig()
+ dismissAllowingStateLoss()
+ }
}
}
\ No newline at end of file
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 72fe9699b..9f18c6098 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
@@ -19,7 +19,7 @@ class DirectLinkUploadConfig : BaseDialogFragment(R.layout.dialog_direct_link_up
override fun onStart() {
super.onStart()
- setLayout(0.9f, ViewGroup.LayoutParams.WRAP_CONTENT)
+ setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
}
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
diff --git a/app/src/main/res/layout/dialog_cover_rule_config.xml b/app/src/main/res/layout/dialog_cover_rule_config.xml
index 77d9ef65f..1538b85b2 100644
--- a/app/src/main/res/layout/dialog_cover_rule_config.xml
+++ b/app/src/main/res/layout/dialog_cover_rule_config.xml
@@ -1,6 +1,102 @@
-
+ android:layout_height="wrap_content"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:orientation="vertical">
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_direct_link_upload_config.xml b/app/src/main/res/layout/dialog_direct_link_upload_config.xml
index 69605ec28..56bc9d7fd 100644
--- a/app/src/main/res/layout/dialog_direct_link_upload_config.xml
+++ b/app/src/main/res/layout/dialog_direct_link_upload_config.xml
@@ -85,7 +85,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="12dp"
- android:text="@string/delete"
+ android:text="@string/btn_default_s"
tools:ignore="RtlHardcoded" />
+ tools:ignore="TouchTargetSizeCheck,TextContrastCheck" />
+ tools:ignore="TouchTargetSizeCheck,SpeakableTextPresentCheck,TextContrastCheck" />
+
+