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

This commit is contained in:
HapeLee
2025-12-11 00:38:46 +08:00
parent 606829760b
commit 32fe45319b
2 changed files with 42 additions and 33 deletions
@@ -607,7 +607,10 @@ class ReadBookActivity : BaseReadBookActivity(),
R.id.menu_download -> showDownloadDialog()
R.id.menu_add_bookmark -> addBookmark()
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 {
if (it.isEpub) {
BookHelp.clearCache(it)
@@ -618,8 +621,10 @@ class ReadBookActivity : BaseReadBookActivity(),
}
loadChapterList(it)
}
R.id.menu_enable_replace -> changeReplaceRuleState()
R.id.menu_enable_replace -> {
binding.readMenu.runMenuOut()
changeReplaceRuleState()
}
R.id.menu_re_segment -> ReadBook.book?.let {
it.setReSegment(!it.getReSegment())
item.isChecked = it.getReSegment()
@@ -813,44 +813,48 @@ class ReadMenu @JvmOverloads constructor(
}
fun upSeekBar() {
//孩子们 土方法丑陋但有效
binding.seekReadPage.apply {
when (AppConfig.progressBarBehavior) {
"page" -> {
ReadBook.curTextChapter?.let { chapter ->
if (chapter.pageSize >= 0 && ReadBook.durPageIndex >= 0) {
valueFrom = 1f
valueTo = chapter.pageSize.toFloat().coerceAtLeast(2f)
stepSize = 1f
value = (ReadBook.durPageIndex).coerceIn(1, chapter.pageSize).toFloat()
} else {
valueFrom = 0f
valueTo = 100000f
stepSize = 0f
value = 0f
}
fun upSeekBar() = 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) {
"page" -> {
ReadBook.curTextChapter?.let { chapter ->
if (chapter.pageSize > 0 && ReadBook.durPageIndex >= 0) {
safeSet(
rangeFrom = 1f,
rangeTo = chapter.pageSize.toFloat().coerceAtLeast(2f),
step = 1f,
rawValue = ReadBook.durPageIndex.toFloat()
)
} else {
safeSet(0f, 100000f, 0f, 0f)
}
}
}
"chapter" -> {
if (ReadBook.simulatedChapterSize > 0)
{
valueFrom = 1f
valueTo = ReadBook.simulatedChapterSize.toFloat().coerceAtLeast(2f)
stepSize = 1f
value = (ReadBook.durChapterIndex).coerceIn(1, ReadBook.simulatedChapterSize).toFloat()
} else {
valueFrom = 0f
valueTo = 100000f
stepSize = 0f
value = 0f
}
"chapter" -> {
if (ReadBook.simulatedChapterSize > 0) {
safeSet(
rangeFrom = 1f,
rangeTo = ReadBook.simulatedChapterSize.toFloat().coerceAtLeast(2f),
step = 1f,
rawValue = ReadBook.durChapterIndex.toFloat()
)
} else {
safeSet(0f, 100000f, 0f, 0f)
}
}
}
}
// fun upSeekBar() {
// binding.seekReadPage.apply {
// when (AppConfig.progressBarBehavior) {