From 7c04c0f83c417c082b26c1edaeb25538226970fe Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Sun, 30 Jun 2019 05:44:08 +0100 Subject: [PATCH] unshare individual file --- .../com/muwire/gui/MainFrameController.groovy | 11 +++++++-- .../views/com/muwire/gui/MainFrameView.groovy | 23 +++++++++++++------ 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy index 077b8a6e..8efab2d9 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy @@ -14,12 +14,14 @@ import javax.inject.Inject import com.muwire.core.Constants import com.muwire.core.Core +import com.muwire.core.SharedFile import com.muwire.core.download.DownloadStartedEvent import com.muwire.core.download.UIDownloadCancelledEvent import com.muwire.core.download.UIDownloadEvent import com.muwire.core.download.UIDownloadPausedEvent import com.muwire.core.download.UIDownloadResumedEvent import com.muwire.core.files.DirectoryUnsharedEvent +import com.muwire.core.files.FileUnsharedEvent import com.muwire.core.search.QueryEvent import com.muwire.core.search.SearchEvent import com.muwire.core.trust.TrustEvent @@ -33,6 +35,8 @@ class MainFrameController { @MVCMember @Nonnull MainFrameModel model + @MVCMember @Nonnull + MainFrameView view private volatile Core core @@ -206,8 +210,11 @@ class MainFrameController { markTrust("trusted-table", TrustLevel.NEUTRAL, model.trusted) } - void unshareSelectedFiles() { - println "unsharing selected files" + void unshareSelectedFile() { + SharedFile sf = view.selectedSharedFile() + if (sf == null) + return + core.eventBus.publish(new FileUnsharedEvent(unsharedFile : sf)) } void stopWatchingDirectory() { diff --git a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy index ec729682..32f7e16a 100644 --- a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy @@ -367,11 +367,12 @@ class MainFrameView { sharedFilesTable.rowSorter.setSortsOnUpdates(true) JPopupMenu sharedFilesMenu = new JPopupMenu() -// JMenuItem unshareSelectedFiles = new JMenuItem("Unshare selected files") -// unshareSelectedFiles.addActionListener({mvcGroup.controller.unshareSelectedFiles()}) JMenuItem copyHashToClipboard = new JMenuItem("Copy hash to clipboard") - copyHashToClipboard.addActionListener({mvcGroup.view.copyHashToClipboard(sharedFilesTable)}) + copyHashToClipboard.addActionListener({mvcGroup.view.copyHashToClipboard()}) sharedFilesMenu.add(copyHashToClipboard) + JMenuItem unshareSelectedFiles = new JMenuItem("Unshare selected files") + unshareSelectedFiles.addActionListener({mvcGroup.controller.unshareSelectedFile()}) + sharedFilesMenu.add(unshareSelectedFiles) sharedFilesTable.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { @@ -431,13 +432,21 @@ class MainFrameView { menu.show(event.getComponent(), event.getX(), event.getY()) } - def copyHashToClipboard(JTable sharedFilesTable) { + def selectedSharedFile() { + def sharedFilesTable = builder.getVariable("shared-files-table") int selected = sharedFilesTable.getSelectedRow() if (selected < 0) - return - if (lastSharedSortEvent != null) + return null + if (lastSharedSortEvent != null) selected = sharedFilesTable.rowSorter.convertRowIndexToModel(selected) - String root = Base64.encode(model.shared[selected].infoHash.getRoot()) + model.shared[selected] + } + + def copyHashToClipboard() { + def selected = selectedSharedFile() + if (selected == null) + return + String root = Base64.encode(selected.infoHash.getRoot()) StringSelection selection = new StringSelection(root) def clipboard = Toolkit.getDefaultToolkit().getSystemClipboard() clipboard.setContents(selection, null)