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