[修复] 某些情况下的阅读崩溃问题

This commit is contained in:
HapeLee committed 2025-12-11 00:38:46 +08:00
1 parent 606829760b
commit 32fe45319b
2 files changed
+35 -26

No files matched your search

@@ -607,7 +607,10 @@ class ReadBookActivity : BaseReadBookActivity(),
R.id.menu_download -> showDownloadDialog() R.id.menu_download -> showDownloadDialog()
R.id.menu_add_bookmark -> addBookmark() R.id.menu_add_bookmark -> addBookmark()
R.id.menu_simulated_reading -> showSimulatedReading() R.id.menu_simulated_reading -> showSimulatedReading()
R.id.menu_edit_content -> showDialogFragment(ContentEditDialog()) R.id.menu_edit_content -> {
binding.readMenu.runMenuOut()
showDialogFragment(ContentEditDialog())
}
R.id.menu_update_toc -> ReadBook.book?.let { R.id.menu_update_toc -> ReadBook.book?.let {
if (it.isEpub) { if (it.isEpub) {
BookHelp.clearCache(it) BookHelp.clearCache(it)
@@ -618,8 +621,10 @@ class ReadBookActivity : BaseReadBookActivity(),
} }
loadChapterList(it) loadChapterList(it)
} }
R.id.menu_enable_replace -> {
R.id.menu_enable_replace -> changeReplaceRuleState() binding.readMenu.runMenuOut()
changeReplaceRuleState()
}
R.id.menu_re_segment -> ReadBook.book?.let { R.id.menu_re_segment -> ReadBook.book?.let {
it.setReSegment(!it.getReSegment()) it.setReSegment(!it.getReSegment())
item.isChecked = it.getReSegment() item.isChecked = it.getReSegment()
@@ -813,44 +813,48 @@ class ReadMenu @JvmOverloads constructor(
} }
fun upSeekBar() { fun upSeekBar() = binding.seekReadPage.apply {
//孩子们 土方法丑陋但有效
binding.seekReadPage.apply { fun safeSet(rangeFrom: Float, rangeTo: Float, step: Float, rawValue: Float) {
valueFrom = rangeFrom
valueTo = rangeTo
stepSize = step
val safeValue = rawValue.coerceIn(rangeFrom, rangeTo)
if (value != safeValue) value = safeValue
}
when (AppConfig.progressBarBehavior) { when (AppConfig.progressBarBehavior) {
"page" -> { "page" -> {
ReadBook.curTextChapter?.let { chapter -> ReadBook.curTextChapter?.let { chapter ->
if (chapter.pageSize >= 0 && ReadBook.durPageIndex >= 0) { if (chapter.pageSize > 0 && ReadBook.durPageIndex >= 0) {
valueFrom = 1f safeSet(
valueTo = chapter.pageSize.toFloat().coerceAtLeast(2f) rangeFrom = 1f,
stepSize = 1f rangeTo = chapter.pageSize.toFloat().coerceAtLeast(2f),
value = (ReadBook.durPageIndex).coerceIn(1, chapter.pageSize).toFloat() step = 1f,
rawValue = ReadBook.durPageIndex.toFloat()
)
} else { } else {
valueFrom = 0f safeSet(0f, 100000f, 0f, 0f)
valueTo = 100000f
stepSize = 0f
value = 0f
} }
} }
} }
"chapter" -> { "chapter" -> {
if (ReadBook.simulatedChapterSize > 0) if (ReadBook.simulatedChapterSize > 0) {
{ safeSet(
valueFrom = 1f rangeFrom = 1f,
valueTo = ReadBook.simulatedChapterSize.toFloat().coerceAtLeast(2f) rangeTo = ReadBook.simulatedChapterSize.toFloat().coerceAtLeast(2f),
stepSize = 1f step = 1f,
value = (ReadBook.durChapterIndex).coerceIn(1, ReadBook.simulatedChapterSize).toFloat() rawValue = ReadBook.durChapterIndex.toFloat()
)
} else { } else {
valueFrom = 0f safeSet(0f, 100000f, 0f, 0f)
valueTo = 100000f
stepSize = 0f
value = 0f
}
} }
} }
} }
} }
// fun upSeekBar() { // fun upSeekBar() {
// binding.seekReadPage.apply { // binding.seekReadPage.apply {
// when (AppConfig.progressBarBehavior) { // when (AppConfig.progressBarBehavior) {