mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Add cancel all for series in download queue (#5062)
Co-authored-by: Jays2Kings <jays@outlook.com>
This commit is contained in:
		@@ -203,6 +203,15 @@ class DownloadManager(private val context: Context) {
 | 
			
		||||
        deleteChapters(listOf(download.chapter), download.manga, download.source)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun deletePendingDownloads(vararg downloads: Download) {
 | 
			
		||||
        val downloadsByManga = downloads.groupBy { it.manga.id }
 | 
			
		||||
        downloadsByManga.map { entry ->
 | 
			
		||||
            val manga = entry.value.first().manga
 | 
			
		||||
            val source = entry.value.first().source
 | 
			
		||||
            deleteChapters(entry.value.map { it.chapter }, manga, source)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Deletes the directories of a list of downloaded chapters.
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -356,6 +356,15 @@ class DownloadController :
 | 
			
		||||
                val downloads = adapter.currentItems.mapNotNull { it?.download }
 | 
			
		||||
                presenter.reorder(downloads)
 | 
			
		||||
            }
 | 
			
		||||
            R.id.cancel_series -> {
 | 
			
		||||
                val download = adapter?.getItem(position)?.download ?: return
 | 
			
		||||
                val allDownloadsForSeries = adapter?.currentItems
 | 
			
		||||
                    ?.filter { download.manga.id == it.download.manga.id }
 | 
			
		||||
                    ?.map(DownloadItem::download)
 | 
			
		||||
                if (!allDownloadsForSeries.isNullOrEmpty()) {
 | 
			
		||||
                    presenter.cancelDownloads(allDownloadsForSeries)
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -65,4 +65,8 @@ class DownloadPresenter : BasePresenter<DownloadController>() {
 | 
			
		||||
    fun cancelDownload(download: Download) {
 | 
			
		||||
        downloadManager.deletePendingDownload(download)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun cancelDownloads(downloads: List<Download>) {
 | 
			
		||||
        downloadManager.deletePendingDownloads(*downloads.toTypedArray())
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -13,4 +13,7 @@
 | 
			
		||||
        android:id="@+id/cancel_download"
 | 
			
		||||
        android:title="@string/action_cancel" />
 | 
			
		||||
 | 
			
		||||
    <item android:id="@+id/cancel_series"
 | 
			
		||||
        android:title="@string/cancel_all_for_series" />
 | 
			
		||||
 | 
			
		||||
</menu>
 | 
			
		||||
 
 | 
			
		||||
@@ -102,6 +102,7 @@
 | 
			
		||||
    <string name="action_unpin">Unpin</string>
 | 
			
		||||
    <string name="action_cancel">Cancel</string>
 | 
			
		||||
    <string name="action_cancel_all">Cancel all</string>
 | 
			
		||||
    <string name="cancel_all_for_series">Cancel all for this series</string>
 | 
			
		||||
    <string name="action_sort">Sort</string>
 | 
			
		||||
    <string name="action_sort_descending">Descending</string>
 | 
			
		||||
    <string name="action_reorganize_by">Reorder</string>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user