diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt
index a779d35876..5700c708dd 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt
@@ -67,6 +67,8 @@ class RecentMangaAdapter(val delegate: RecentsInterface) :
enum class ShowRecentsDLs {
None,
OnlyUnread,
+ OnlyDownloaded,
+ UnreadOrDownloaded,
All,
}
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt
index 4e24a6bd47..288a26a232 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt
@@ -7,9 +7,9 @@ import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.download.model.Download
import eu.kanade.tachiyomi.data.image.coil.loadLibraryManga
import eu.kanade.tachiyomi.databinding.RecentMangaItemBinding
-import eu.kanade.tachiyomi.source.LocalSource
import eu.kanade.tachiyomi.ui.manga.chapter.BaseChapterHolder
import eu.kanade.tachiyomi.util.chapter.ChapterUtil
+import eu.kanade.tachiyomi.util.isLocal
import eu.kanade.tachiyomi.util.system.timeSpanFromNow
class RecentMangaHolder(
@@ -25,11 +25,12 @@ class RecentMangaHolder(
}
fun bind(item: RecentMangaItem, showDLs: RecentMangaAdapter.ShowRecentsDLs, showRemoveHistory: Boolean, showTitleFirst: Boolean) {
- binding.downloadButton.downloadButton.isVisible = item.mch.manga.source != LocalSource.ID && when (showDLs) {
+ binding.downloadButton.downloadButton.isVisible = when (showDLs) {
RecentMangaAdapter.ShowRecentsDLs.None -> false
- RecentMangaAdapter.ShowRecentsDLs.OnlyUnread -> !item.chapter.read
+ RecentMangaAdapter.ShowRecentsDLs.OnlyUnread, RecentMangaAdapter.ShowRecentsDLs.UnreadOrDownloaded -> !item.chapter.read
+ RecentMangaAdapter.ShowRecentsDLs.OnlyDownloaded -> true
RecentMangaAdapter.ShowRecentsDLs.All -> true
- }
+ } && !item.mch.manga.isLocal()
binding.removeHistory.isVisible = item.mch.history.id != null && showRemoveHistory
binding.title.apply {
@@ -83,10 +84,13 @@ class RecentMangaHolder(
if ((itemView.context as? Activity)?.isDestroyed != true) {
binding.coverThumbnail.loadLibraryManga(item.mch.manga)
}
- notifyStatus(
- if (adapter.isSelected(flexibleAdapterPosition)) Download.CHECKED else item.status,
- item.progress
- )
+ if (!item.mch.manga.isLocal()) {
+ notifyStatus(
+ if (adapter.isSelected(flexibleAdapterPosition)) Download.CHECKED else item.status,
+ item.progress,
+ item.chapter.read
+ )
+ }
resetFrontView()
}
@@ -100,8 +104,18 @@ class RecentMangaHolder(
return item.mch.history.id != null
}
- fun notifyStatus(status: Int, progress: Int) =
+ fun notifyStatus(status: Int, progress: Int, isRead: Boolean) {
binding.downloadButton.downloadButton.setDownloadStatus(status, progress)
+ val isChapterRead =
+ if (adapter.showDownloads == RecentMangaAdapter.ShowRecentsDLs.UnreadOrDownloaded) isRead else false
+ binding.downloadButton.downloadButton.isVisible =
+ when (adapter.showDownloads) {
+ RecentMangaAdapter.ShowRecentsDLs.UnreadOrDownloaded,
+ RecentMangaAdapter.ShowRecentsDLs.OnlyDownloaded ->
+ status !in Download.CHECKED..Download.NOT_DOWNLOADED && !isChapterRead
+ else -> binding.downloadButton.downloadButton.isVisible
+ }
+ }
override fun getFrontView(): View {
return binding.frontView
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt
index 73cbc870df..6db9ce9f31 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt
@@ -386,7 +386,7 @@ class RecentsController(bundle: Bundle? = null) :
binding.downloadBottomSheet.dlBottomSheet.onUpdateDownloadedPages(download)
val id = download.chapter.id ?: return
val holder = binding.recycler.findViewHolderForItemId(id) as? RecentMangaHolder ?: return
- holder.notifyStatus(download.status, download.progress)
+ holder.notifyStatus(download.status, download.progress, download.chapter.read)
}
private fun refreshItem(chapterId: Long) {
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 5861c92993..64cfd65785 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -65,6 +65,8 @@
- @string/never
- @string/only_unread
+ - @string/only_downloaded
+ - @string/unread_or_downloaded
- @string/always
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d6b72f9f90..ae7c2c9179 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -235,6 +235,8 @@
Press and hold can also reset chapter history
Show download button
Only unread
+ Only downloaded
+ Unread or downloaded
Show reset history button
Show read in all
Show title first