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" /> + +