From 496b8e3b01cb22e6d4892d62dcbef55412aa7bc3 Mon Sep 17 00:00:00 2001 From: kunfei Date: Mon, 10 Jul 2023 23:14:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../searchContent/SearchContentActivity.kt | 23 ++++++++++++++++++- .../searchContent/SearchContentViewModel.kt | 5 ++-- app/src/main/res/menu/content_search.xml | 13 +++++++++++ 3 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/menu/content_search.xml diff --git a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentActivity.kt b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentActivity.kt index e96740562..48b2ac91e 100644 --- a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentActivity.kt @@ -3,6 +3,8 @@ package io.legado.app.ui.book.searchContent import android.annotation.SuppressLint import android.content.Intent import android.os.Bundle +import android.view.Menu +import android.view.MenuItem import android.view.MotionEvent import android.widget.EditText import androidx.activity.viewModels @@ -18,7 +20,6 @@ import io.legado.app.data.entities.BookChapter import io.legado.app.databinding.ActivitySearchContentBinding import io.legado.app.help.IntentData import io.legado.app.help.book.BookHelp -import io.legado.app.help.book.ContentProcessor import io.legado.app.help.book.isLocal import io.legado.app.lib.theme.bottomBackground import io.legado.app.lib.theme.getPrimaryTextColor @@ -71,6 +72,26 @@ class SearchContentActivity : } } + override fun onCompatCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.content_search, menu) + return super.onCompatCreateOptionsMenu(menu) + } + + override fun onMenuOpened(featureId: Int, menu: Menu): Boolean { + menu.findItem(R.id.menu_enable_replace)?.isChecked = viewModel.replaceEnabled + return super.onMenuOpened(featureId, menu) + } + + override fun onCompatOptionsItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + R.id.menu_enable_replace -> { + viewModel.replaceEnabled = !viewModel.replaceEnabled + item.isChecked = viewModel.replaceEnabled + } + } + return super.onCompatOptionsItemSelected(item) + } + override fun dispatchTouchEvent(ev: MotionEvent): Boolean { if (ev.action == MotionEvent.ACTION_DOWN) { currentFocus?.let { diff --git a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt index e510c026a..3a72eb280 100644 --- a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt @@ -10,9 +10,7 @@ import io.legado.app.data.entities.BookChapter import io.legado.app.help.book.BookHelp import io.legado.app.help.book.ContentProcessor import io.legado.app.help.config.AppConfig -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ensureActive -import kotlinx.coroutines.withContext import kotlin.coroutines.coroutineContext class SearchContentViewModel(application: Application) : BaseViewModel(application) { @@ -23,6 +21,7 @@ class SearchContentViewModel(application: Application) : BaseViewModel(applicati var searchResultCounts = 0 val cacheChapterNames = hashSetOf() val searchResultList: MutableList = mutableListOf() + var replaceEnabled = false fun initBook(bookUrl: String, success: () -> Unit) { this.bookUrl = bookUrl @@ -51,7 +50,7 @@ class SearchContentViewModel(application: Application) : BaseViewModel(applicati } coroutineContext.ensureActive() val mContent = contentProcessor!!.getContent( - book, chapter, chapterContent + book, chapter, chapterContent, useReplace = replaceEnabled ).toString() val positions = searchPosition(mContent, query) positions.forEachIndexed { index, position -> diff --git a/app/src/main/res/menu/content_search.xml b/app/src/main/res/menu/content_search.xml new file mode 100644 index 000000000..3fa494248 --- /dev/null +++ b/app/src/main/res/menu/content_search.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file