diff --git a/app/src/main/java/io/legado/app/help/book/ContentProcessor.kt b/app/src/main/java/io/legado/app/help/book/ContentProcessor.kt index 1b2ee5219..587eabc79 100644 --- a/app/src/main/java/io/legado/app/help/book/ContentProcessor.kt +++ b/app/src/main/java/io/legado/app/help/book/ContentProcessor.kt @@ -88,6 +88,10 @@ class ContentProcessor private constructor( return contentReplaceRules } + fun getAllReplaceRules(): List { + return titleReplaceRules + contentReplaceRules + } + fun getContent( book: Book, chapter: BookChapter, diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt index 1f1b89eb4..b92b006d2 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt @@ -1165,7 +1165,11 @@ class ReadBookActivity : BaseReadBookActivity(), * 替换 */ override fun openReplaceRule() { - replaceActivity.launch(Intent(this, ReplaceRuleActivity::class.java)) + val intent = Intent(this, ReplaceRuleActivity::class.java).apply { + val showApplied = ReadBook.book?.getUseReplaceRule() == true + putExtra("showApplied", showApplied) + } + replaceActivity.launch(intent) } /** 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 6a7692fed..826fd3854 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 @@ -1,7 +1,6 @@ package io.legado.app.ui.replace import android.annotation.SuppressLint -import android.app.Activity import android.os.Bundle import android.view.Menu import android.view.MenuItem @@ -122,8 +121,10 @@ class ReplaceRuleActivity : VMBaseActivity { appDb.replaceRuleDao.flowSearch("%$searchKey%") } @@ -222,7 +224,7 @@ class ReplaceRuleActivity : VMBaseActivity editActivity.launch(ReplaceEditActivity.startIntent(this)) + R.id.menu_group_manage -> showDialogFragment() R.id.menu_del_selection -> viewModel.delSelection(adapter.selection) R.id.menu_import_onLine -> showImportDialog() @@ -252,11 +255,13 @@ class ReplaceRuleActivity : VMBaseActivity qrCodeResult.launch() R.id.menu_help -> showHelp("replaceRuleHelp") R.id.menu_group_null -> { searchView.setQuery(getString(R.string.no_group), true) } + else -> if (item.groupId == R.id.replace_group) { searchView.setQuery("group:${item.title}", true) } @@ -343,6 +348,14 @@ class ReplaceRuleActivity : VMBaseActivity() + var appliedForBookRules = emptySet() + + fun initData(intent: Intent, block: () -> Unit) { + execute { + showApplied = intent.getBooleanExtra("showApplied", false) + if (showApplied) { + val book = ReadBook.book ?: return@execute + val textChapter = ReadBook.curTextChapter ?: return@execute + enabledForBookRules = ContentProcessor.get(book).getAllReplaceRules().toSet() + textChapter.effectiveReplaceRules?.let { + appliedForBookRules = it.toSet() + } + } + }.onFinally { + block.invoke() + } + } + + fun isEnabledForBook(rule: ReplaceRule): Boolean { + return showApplied && enabledForBookRules.contains(rule) + } + + fun isAppliedForBook(rule: ReplaceRule): Boolean { + return showApplied && appliedForBookRules.contains(rule) + } + fun update(vararg rule: ReplaceRule) { execute { appDb.replaceRuleDao.update(*rule) diff --git a/app/src/main/res/layout/item_replace_rule.xml b/app/src/main/res/layout/item_replace_rule.xml index bca014868..e214ca201 100644 --- a/app/src/main/res/layout/item_replace_rule.xml +++ b/app/src/main/res/layout/item_replace_rule.xml @@ -1,17 +1,25 @@ - + android:padding="8dp" + android:paddingStart="16dp" + android:paddingEnd="16dp"> + android:tint="@color/primaryText" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintRight_toLeftOf="@id/iv_menu_more" + app:layout_constraintTop_toTopOf="parent" /> - + + + +