From 9a882bc4e1828e635c4bb841e6a389db0a39afa1 Mon Sep 17 00:00:00 2001 From: ocean <503259349@qq.com> Date: Thu, 4 Dec 2025 09:52:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8F=AF=E8=83=BD=E5=B0=8F?= =?UTF-8?q?=E6=A6=82=E7=8E=87=E5=87=BA=E7=8E=B0=E7=9A=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E9=97=AE=E9=A2=98=EF=BC=8C=E4=BC=A0=E5=85=A5?= =?UTF-8?q?=E7=9A=84=E8=BF=9B=E5=BA=A6=E8=AE=A1=E7=AE=97=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E7=9A=84=E4=BC=A0=E5=85=A5=E4=B8=8D=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8=E7=9A=84=E6=95=B0=E5=80=BC=E5=BE=97=E5=B4=A9=E6=BA=83?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pdf/reader/room/repository/PdfRepository.kt | 12 ++++++++---- .../pdf/reader/ui/act/PdfViewActivity.kt | 16 +++++++++++++++- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/all/pdfreader/pdf/reader/room/repository/PdfRepository.kt b/app/src/main/java/com/all/pdfreader/pdf/reader/room/repository/PdfRepository.kt index 56b5a27..a10a143 100644 --- a/app/src/main/java/com/all/pdfreader/pdf/reader/room/repository/PdfRepository.kt +++ b/app/src/main/java/com/all/pdfreader/pdf/reader/room/repository/PdfRepository.kt @@ -84,12 +84,16 @@ class PdfRepository private constructor(context: Context) { } suspend fun updateReadingProgress(filePath: String, page: Int, progress: Float) { - val document = pdfDao.getByPath(filePath)?.copy( - lastOpenedTime = System.currentTimeMillis(), + val old = pdfDao.getByPath(filePath) ?: return + + // 修复旧数据里可能为 null 的字段 + val safeDocument = old.copy( + readingProgress = progress.takeIf { !it.isNaN() } ?: 0f, lastReadPage = page, - readingProgress = progress + lastOpenedTime = System.currentTimeMillis() ) - document?.let { pdfDao.update(it) } + + pdfDao.update(safeDocument) } //复制更新不会更新flow diff --git a/app/src/main/java/com/all/pdfreader/pdf/reader/ui/act/PdfViewActivity.kt b/app/src/main/java/com/all/pdfreader/pdf/reader/ui/act/PdfViewActivity.kt index 2288075..aeb24a9 100644 --- a/app/src/main/java/com/all/pdfreader/pdf/reader/ui/act/PdfViewActivity.kt +++ b/app/src/main/java/com/all/pdfreader/pdf/reader/ui/act/PdfViewActivity.kt @@ -334,7 +334,8 @@ class PdfViewActivity : BaseActivity(), OnLoadCompleteListener, OnPageChangeList override fun onPageChanged(page: Int, pageCount: Int) { // 保存阅读进度到内存 pdfDocument = pdfDocument.copy( - lastReadPage = page, readingProgress = (page.toFloat() / pageCount.toFloat()) * 100 + lastReadPage = page, + readingProgress = calcProgress(page, pageCount) ) saveReadingProgress() @@ -364,6 +365,19 @@ class PdfViewActivity : BaseActivity(), OnLoadCompleteListener, OnPageChangeList } } + private fun calcProgress(page: Int, pageCount: Int): Float { + if (pageCount <= 0) return 0f + + val raw = (page.toFloat() / pageCount.toFloat()) * 100f + + return when { + raw.isNaN() || raw.isInfinite() -> 0f + raw < 0f -> 0f + raw > 100f -> 100f + else -> raw + } + } + private fun showPasswordDialog(file: File) { val pdfPasswordProtectionDialogFragment = PdfPasswordProtectionDialogFragment.newInstance(file.absolutePath)