From 974891a085cba02f4c69b58db80f99e1a75d32e1 Mon Sep 17 00:00:00 2001 From: FlaminSarge Date: Sat, 27 Oct 2018 10:01:56 -0700 Subject: [PATCH] Allow pausing downloads from progress notification (#1637) --- .../data/download/DownloadNotifier.kt | 6 ++++- .../data/notification/NotificationReceiver.kt | 23 ++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadNotifier.kt index cc896a978..af9d84c0a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadNotifier.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadNotifier.kt @@ -37,7 +37,7 @@ internal class DownloadNotifier(private val context: Context) { */ var initialQueueSize = 0 set(value) { - if (value != 0){ + if (value != 0) { isSingleChapter = (value == 1) } field = value @@ -99,6 +99,10 @@ internal class DownloadNotifier(private val context: Context) { // Open download manager when clicked setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context)) isDownloading = true + // Pause action + addAction(R.drawable.ic_av_pause_grey_24dp_img, + context.getString(R.string.action_pause), + NotificationReceiver.pauseDownloadsPendingBroadcast(context)) } val title = download.manga.title.chop(15) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt index 05d1ad6b6..11622c505 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt @@ -38,6 +38,11 @@ class NotificationReceiver : BroadcastReceiver() { ACTION_DISMISS_NOTIFICATION -> dismissNotification(context, intent.getIntExtra(EXTRA_NOTIFICATION_ID, -1)) // Resume the download service ACTION_RESUME_DOWNLOADS -> DownloadService.start(context) + // Pause the download service + ACTION_PAUSE_DOWNLOADS -> { + DownloadService.stop(context) + downloadManager.pauseDownloads() + } // Clear the download queue ACTION_CLEAR_DOWNLOADS -> downloadManager.clearQueue(true) // Show message notification created @@ -159,6 +164,9 @@ class NotificationReceiver : BroadcastReceiver() { // Called to resume downloads. private const val ACTION_RESUME_DOWNLOADS = "$ID.$NAME.ACTION_RESUME_DOWNLOADS" + // Called to pause downloads. + private const val ACTION_PAUSE_DOWNLOADS = "$ID.$NAME.ACTION_PAUSE_DOWNLOADS" + // Called to clear downloads. private const val ACTION_CLEAR_DOWNLOADS = "$ID.$NAME.ACTION_CLEAR_DOWNLOADS" @@ -190,6 +198,19 @@ class NotificationReceiver : BroadcastReceiver() { return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT) } + /** + * Returns [PendingIntent] that pauses the download queue + * + * @param context context of application + * @return [PendingIntent] + */ + internal fun pauseDownloadsPendingBroadcast(context: Context): PendingIntent { + val intent = Intent(context, NotificationReceiver::class.java).apply { + action = ACTION_PAUSE_DOWNLOADS + } + return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT) + } + /** * Returns a [PendingIntent] that clears the download queue * @@ -203,7 +224,7 @@ class NotificationReceiver : BroadcastReceiver() { return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT) } - internal fun shortcutCreatedBroadcast(context: Context) : PendingIntent { + internal fun shortcutCreatedBroadcast(context: Context): PendingIntent { val intent = Intent(context, NotificationReceiver::class.java).apply { action = ACTION_SHORTCUT_CREATED }