diff --git a/app/src/main/java/io/legato/kazusa/model/CacheBook.kt b/app/src/main/java/io/legato/kazusa/model/CacheBook.kt index 91423ae66..dd54ba5a5 100644 --- a/app/src/main/java/io/legato/kazusa/model/CacheBook.kt +++ b/app/src/main/java/io/legato/kazusa/model/CacheBook.kt @@ -30,6 +30,20 @@ object CacheBook { val cacheBookMap = ConcurrentHashMap() + val totalCount: Int + get() { + var total = 0 + cacheBookMap.forEach { (_, model) -> + total += model.waitCount + model.onDownloadCount + } + total += successDownloadSet.size + total += errorDownloadMap.size + return total + } + + val completedCount: Int + get() = successDownloadSet.size + errorDownloadMap.size + @Synchronized fun getOrCreate(bookUrl: String): CacheBookModel? { val book = appDb.bookDao.getBook(bookUrl) ?: return null diff --git a/app/src/main/java/io/legato/kazusa/service/CacheBookService.kt b/app/src/main/java/io/legato/kazusa/service/CacheBookService.kt index 64078e6bb..31242dacf 100644 --- a/app/src/main/java/io/legato/kazusa/service/CacheBookService.kt +++ b/app/src/main/java/io/legato/kazusa/service/CacheBookService.kt @@ -210,9 +210,20 @@ class CacheBookService : BaseService() { } private fun upCacheBookNotification() { - notificationBuilder.setContentText(notificationContent) - val notification = notificationBuilder.build() - notificationManager.notify(NotificationId.CacheBookService, notification) + val total = CacheBook.totalCount + val progress = CacheBook.completedCount + val summary = CacheBook.downloadSummary + + notificationBuilder.apply { + setContentText(summary) + if (total > 0) { + setProgress(total, progress, false) + } else { + setProgress(0, 0, true) + } + } + + notificationManager.notify(NotificationId.CacheBookService, notificationBuilder.build()) } /**