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