From dea592eb27e271ae95a0a75f67be470ac1621788 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Sun, 9 Jun 2019 20:36:14 +0100 Subject: [PATCH] do not resume cancelled downloads on restart --- core/src/main/groovy/com/muwire/core/Core.groovy | 2 ++ .../groovy/com/muwire/core/download/DownloadManager.groovy | 5 +++++ .../muwire/core/download/UIDownloadCancelledEvent.groovy | 7 +++++++ .../controllers/com/muwire/gui/MainFrameController.groovy | 2 ++ 4 files changed, 16 insertions(+) create mode 100644 core/src/main/groovy/com/muwire/core/download/UIDownloadCancelledEvent.groovy diff --git a/core/src/main/groovy/com/muwire/core/Core.groovy b/core/src/main/groovy/com/muwire/core/Core.groovy index 2df41b51..d1057256 100644 --- a/core/src/main/groovy/com/muwire/core/Core.groovy +++ b/core/src/main/groovy/com/muwire/core/Core.groovy @@ -12,6 +12,7 @@ import com.muwire.core.connection.I2PConnector import com.muwire.core.connection.LeafConnectionManager import com.muwire.core.connection.UltrapeerConnectionManager import com.muwire.core.download.DownloadManager +import com.muwire.core.download.UIDownloadCancelledEvent import com.muwire.core.download.UIDownloadEvent import com.muwire.core.files.FileDownloadedEvent import com.muwire.core.files.FileHashedEvent @@ -195,6 +196,7 @@ public class Core { eventBus.register(UIDownloadEvent.class, downloadManager) eventBus.register(UILoadedEvent.class, downloadManager) eventBus.register(FileDownloadedEvent.class, downloadManager) + eventBus.register(UIDownloadCancelledEvent.class, downloadManager) log.info("initializing upload manager") UploadManager uploadManager = new UploadManager(eventBus, fileManager) diff --git a/core/src/main/groovy/com/muwire/core/download/DownloadManager.groovy b/core/src/main/groovy/com/muwire/core/download/DownloadManager.groovy index c91dcbe0..9ebd7f09 100644 --- a/core/src/main/groovy/com/muwire/core/download/DownloadManager.groovy +++ b/core/src/main/groovy/com/muwire/core/download/DownloadManager.groovy @@ -68,6 +68,11 @@ public class DownloadManager { eventBus.publish(new DownloadStartedEvent(downloader : downloader)) } + public void onUIDownloadCancelledEvent(UIDownloadCancelledEvent e) { + downloaders.remove(e.downloader) + persistDownloaders() + } + void resume(Downloader downloader) { executor.execute({downloader.download() as Runnable}) } diff --git a/core/src/main/groovy/com/muwire/core/download/UIDownloadCancelledEvent.groovy b/core/src/main/groovy/com/muwire/core/download/UIDownloadCancelledEvent.groovy new file mode 100644 index 00000000..95b63f2c --- /dev/null +++ b/core/src/main/groovy/com/muwire/core/download/UIDownloadCancelledEvent.groovy @@ -0,0 +1,7 @@ +package com.muwire.core.download + +import com.muwire.core.Event + +class UIDownloadCancelledEvent extends Event { + Downloader downloader +} diff --git a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy index f8729710..315d04ad 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy @@ -15,6 +15,7 @@ import javax.inject.Inject import com.muwire.core.Constants import com.muwire.core.Core import com.muwire.core.download.DownloadStartedEvent +import com.muwire.core.download.UIDownloadCancelledEvent import com.muwire.core.download.UIDownloadEvent import com.muwire.core.search.QueryEvent import com.muwire.core.search.SearchEvent @@ -133,6 +134,7 @@ class MainFrameController { void cancel() { def downloader = model.downloads[selectedDownload()].downloader downloader.cancel() + core.eventBus.publish(new UIDownloadCancelledEvent(downloader : downloader)) } @ControllerAction