diff --git a/app/src/main/java/io/legado/app/model/CacheBook.kt b/app/src/main/java/io/legado/app/model/CacheBook.kt index f09b358de..7bba3acc0 100644 --- a/app/src/main/java/io/legado/app/model/CacheBook.kt +++ b/app/src/main/java/io/legado/app/model/CacheBook.kt @@ -300,10 +300,13 @@ object CacheBook { WebBook.getContent(scope, bookSource, book, chapter, executeContext = IO) .onSuccess { content -> onSuccess(chapter) + ReadBook.downloadedChapters.add(chapter.index) + ReadBook.downloadFailChapters.remove(chapter.index) downloadFinish(chapter, content, resetPageOffset) }.onError { onError(chapter, it) - ReadBook.downloadFailChapters.add(chapter.index) + ReadBook.downloadFailChapters[chapter.index] = + (ReadBook.downloadFailChapters[chapter.index] ?: 0) + 1 downloadFinish(chapter, "获取正文失败\n${it.localizedMessage}", resetPageOffset) }.onCancel { onCancel(chapter.index) diff --git a/app/src/main/java/io/legado/app/model/ReadBook.kt b/app/src/main/java/io/legado/app/model/ReadBook.kt index d1da43d97..38591a222 100644 --- a/app/src/main/java/io/legado/app/model/ReadBook.kt +++ b/app/src/main/java/io/legado/app/model/ReadBook.kt @@ -55,7 +55,7 @@ object ReadBook : CoroutineScope by MainScope() { var preDownloadTask: Coroutine<*>? = null val downloadedChapters = hashSetOf() - val downloadFailChapters = hashSetOf() + val downloadFailChapters = hashMapOf() var contentProcessor: ContentProcessor? = null val downloadScope = CoroutineScope(SupervisorJob() + IO) @@ -545,7 +545,7 @@ object ReadBook : CoroutineScope by MainScope() { val maxChapterIndex = min(durChapterIndex + AppConfig.preDownloadNum, chapterSize) for (i in durChapterIndex.plus(2)..maxChapterIndex) { if (downloadedChapters.contains(i)) continue - if (downloadFailChapters.contains(i)) continue + if ((downloadFailChapters[i] ?: 0) >= 3) continue downloadIndex(i) } } @@ -553,7 +553,7 @@ object ReadBook : CoroutineScope by MainScope() { val minChapterIndex = durChapterIndex - min(5, AppConfig.preDownloadNum) for (i in durChapterIndex.minus(2) downTo minChapterIndex) { if (downloadedChapters.contains(i)) continue - if (downloadFailChapters.contains(i)) continue + if ((downloadFailChapters[i] ?: 0) >= 3) continue downloadIndex(i) } } diff --git a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceDialog.kt b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceDialog.kt index 8055a41e4..5c1d38f39 100644 --- a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceDialog.kt @@ -95,6 +95,13 @@ class ChangeBookSourceDialog() : BaseDialogFragment(R.layout.dialog_book_change_ } override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { + context?.obtainStyledAttributes(intArrayOf(android.R.attr.homeAsUpIndicator))?.use { + binding.toolBar.navigationIcon = it.getDrawable(0) + binding.toolBar.setNavigationContentDescription(androidx.appcompat.R.string.abc_action_bar_up_description) + binding.toolBar.setNavigationOnClickListener { + dismissAllowingStateLoss() + } + } binding.toolBar.setBackgroundColor(primaryColor) viewModel.initData(arguments, callBack?.oldBook, activity is ReadBookActivity) showTitle() @@ -109,6 +116,9 @@ class ChangeBookSourceDialog() : BaseDialogFragment(R.layout.dialog_book_change_ private fun showTitle() { binding.toolBar.title = viewModel.name binding.toolBar.subtitle = viewModel.author + context?.obtainStyledAttributes(intArrayOf(android.R.attr.homeAsUpIndicator))?.use { + binding.toolBar.navigationIcon = it.getDrawable(0) + } } private fun initMenu() { @@ -152,6 +162,7 @@ class ChangeBookSourceDialog() : BaseDialogFragment(R.layout.dialog_book_change_ searchView.setOnSearchClickListener { binding.toolBar.title = "" binding.toolBar.subtitle = "" + binding.toolBar.navigationIcon = null } searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { override fun onQueryTextSubmit(query: String?): Boolean { diff --git a/app/src/main/res/layout/dialog_book_change_source.xml b/app/src/main/res/layout/dialog_book_change_source.xml index b4b9ecc16..9d8ad1ffa 100644 --- a/app/src/main/res/layout/dialog_book_change_source.xml +++ b/app/src/main/res/layout/dialog_book_change_source.xml @@ -1,9 +1,9 @@ @@ -29,19 +30,19 @@ android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="0dp" - app:layout_constraintTop_toBottomOf="@+id/refresh_progress_bar" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layout_constraintBottom_toTopOf="@+id/ll_bottom_bar" - app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> + app:layout_constraintTop_toBottomOf="@+id/refresh_progress_bar" />