From 5d981808bf5ba9f0e16862abfd44c09c76eed063 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Wed, 30 Apr 2025 12:38:19 +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 --- .../app/ui/book/read/ReadBookActivity.kt | 55 +++++++++---------- .../legado/app/ui/book/read/page/AutoPager.kt | 3 +- .../legado/app/ui/config/ConfigViewModel.kt | 1 + .../io/legado/app/utils/ActivityExtensions.kt | 12 +++- 4 files changed, 41 insertions(+), 30 deletions(-) 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 105db5930..25145556f 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 @@ -18,7 +18,6 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AlertDialog import androidx.appcompat.widget.PopupMenu import androidx.core.view.get -import androidx.core.view.isVisible import androidx.core.view.size import androidx.lifecycle.lifecycleScope import com.jaredrummler.android.colorpicker.ColorPickerDialogListener @@ -106,6 +105,7 @@ import io.legado.app.utils.NetworkUtils import io.legado.app.utils.StartActivityContract import io.legado.app.utils.applyOpenTint import io.legado.app.utils.buildMainHandler +import io.legado.app.utils.dismissDialogFragment import io.legado.app.utils.getPrefBoolean import io.legado.app.utils.getPrefString import io.legado.app.utils.hexString @@ -175,23 +175,22 @@ class ReadBookActivity : BaseReadBookActivity(), } } private val searchContentActivity = - registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { - it.data?.let { data -> - val key = data.getLongExtra("key", System.currentTimeMillis()) - val index = data.getIntExtra("index", 0) - val searchResult = IntentData.get("searchResult$key") - val searchResultList = IntentData.get>("searchResultList$key") - if (searchResult != null && searchResultList != null) { - viewModel.searchContentQuery = searchResult.query - binding.searchMenu.upSearchResultList(searchResultList) - isShowingSearchResult = true - viewModel.searchResultIndex = index - binding.searchMenu.updateSearchResultIndex(index) - binding.searchMenu.selectedSearchResult?.let { currentResult -> - ReadBook.saveCurrentBookProgress() //退出全文搜索恢复此时进度 - skipToSearch(currentResult) - showActionMenu() - } + registerForActivityResult(StartActivityContract(SearchContentActivity::class.java)) { + val data = it.data ?: return@registerForActivityResult + val key = data.getLongExtra("key", System.currentTimeMillis()) + val index = data.getIntExtra("index", 0) + val searchResult = IntentData.get("searchResult$key") + val searchResultList = IntentData.get>("searchResultList$key") + if (searchResult != null && searchResultList != null) { + viewModel.searchContentQuery = searchResult.query + binding.searchMenu.upSearchResultList(searchResultList) + isShowingSearchResult = true + viewModel.searchResultIndex = index + binding.searchMenu.updateSearchResultIndex(index) + binding.searchMenu.selectedSearchResult?.let { currentResult -> + ReadBook.saveCurrentBookProgress() //退出全文搜索恢复此时进度 + skipToSearch(currentResult) + showActionMenu() } } } @@ -1138,6 +1137,7 @@ class ReadBookActivity : BaseReadBookActivity(), if (isAutoPage) { binding.readView.autoPager.stop() binding.readMenu.setAutoPage(false) + dismissDialogFragment() upScreenTimeOut() } } @@ -1179,17 +1179,16 @@ class ReadBookActivity : BaseReadBookActivity(), * 打开搜索界面 */ override fun openSearchActivity(searchWord: String?) { - ReadBook.book?.let { - searchContentActivity.launch(Intent(this, SearchContentActivity::class.java).apply { - putExtra("bookUrl", it.bookUrl) - putExtra("searchWord", searchWord ?: viewModel.searchContentQuery) - putExtra("searchResultIndex", viewModel.searchResultIndex) - viewModel.searchResultList?.first()?.let { - if (it.query == viewModel.searchContentQuery) { - IntentData.put("searchResultList", viewModel.searchResultList) - } + val book = ReadBook.book ?: return + searchContentActivity.launch { + putExtra("bookUrl", book.bookUrl) + putExtra("searchWord", searchWord ?: viewModel.searchContentQuery) + putExtra("searchResultIndex", viewModel.searchResultIndex) + viewModel.searchResultList?.first()?.let { + if (it.query == viewModel.searchContentQuery) { + IntentData.put("searchResultList", viewModel.searchResultList) } - }) + } } } diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/AutoPager.kt b/app/src/main/java/io/legado/app/ui/book/read/page/AutoPager.kt index ef8300006..0e37ec859 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/AutoPager.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/AutoPager.kt @@ -17,6 +17,7 @@ import io.legado.app.utils.canvasrecorder.recordIfNeeded class AutoPager(private val readView: ReadView) { private var progress = 0 var isRunning = false + private set private var isPausing = false private var scrollOffsetRemain = 0.0 private var scrollOffset = 0 @@ -102,7 +103,7 @@ class AutoPager(private val readView: ReadView) { } fun computeOffset() { - if (!isRunning) { + if (!isRunning || isPausing) { return } diff --git a/app/src/main/java/io/legado/app/ui/config/ConfigViewModel.kt b/app/src/main/java/io/legado/app/ui/config/ConfigViewModel.kt index 94780fa9f..fa6372c2d 100644 --- a/app/src/main/java/io/legado/app/ui/config/ConfigViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/config/ConfigViewModel.kt @@ -33,6 +33,7 @@ class ConfigViewModel(application: Application) : BaseViewModel(application) { fun clearWebViewData() { execute { FileUtils.delete(context.getDir("webview", Context.MODE_PRIVATE)) + FileUtils.delete(context.getDir("hws_webview", Context.MODE_PRIVATE), true) context.toastOnUi(R.string.clear_webview_data_success) delay(3000) appCtx.restart() diff --git a/app/src/main/java/io/legado/app/utils/ActivityExtensions.kt b/app/src/main/java/io/legado/app/utils/ActivityExtensions.kt index bb86e97eb..680c7d176 100644 --- a/app/src/main/java/io/legado/app/utils/ActivityExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/ActivityExtensions.kt @@ -34,6 +34,14 @@ inline fun AppCompatActivity.showDialogFragment( dialog.show(supportFragmentManager, T::class.simpleName) } +inline fun AppCompatActivity.dismissDialogFragment() { + supportFragmentManager.fragments.forEach { + if (it is T) { + it.dismissAllowingStateLoss() + } + } +} + fun AppCompatActivity.showDialogFragment(dialogFragment: DialogFragment) { dialogFragment.show(supportFragmentManager, dialogFragment::class.simpleName) } @@ -44,7 +52,9 @@ val WindowManager.windowSize: DisplayMetrics if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { val windowMetrics: WindowMetrics = currentWindowMetrics val insets = windowMetrics.windowInsets - .getInsetsIgnoringVisibility(WindowInsets.Type.systemBars() or WindowInsets.Type.displayCutout()) + .getInsetsIgnoringVisibility( + WindowInsets.Type.systemBars() or WindowInsets.Type.displayCutout() + ) val windowWidth = windowMetrics.bounds.width() val windowHeight = windowMetrics.bounds.height() var insetsWidth = insets.left + insets.right