diff --git a/core/src/main/groovy/com/muwire/core/update/UpdateAvailableEvent.groovy b/core/src/main/groovy/com/muwire/core/update/UpdateAvailableEvent.groovy index a8a6aa04..d66a10ae 100644 --- a/core/src/main/groovy/com/muwire/core/update/UpdateAvailableEvent.groovy +++ b/core/src/main/groovy/com/muwire/core/update/UpdateAvailableEvent.groovy @@ -1,8 +1,10 @@ package com.muwire.core.update import com.muwire.core.Event +import com.muwire.core.InfoHash class UpdateAvailableEvent extends Event { String version String signer + String infoHash } diff --git a/core/src/main/groovy/com/muwire/core/update/UpdateClient.groovy b/core/src/main/groovy/com/muwire/core/update/UpdateClient.groovy index e6a66a29..d756ca69 100644 --- a/core/src/main/groovy/com/muwire/core/update/UpdateClient.groovy +++ b/core/src/main/groovy/com/muwire/core/update/UpdateClient.groovy @@ -107,7 +107,7 @@ class UpdateClient { } log.info("new version $payload.version available, publishing event") - eventBus.publish(new UpdateAvailableEvent(version : payload.version, signer : payload.signer)) + eventBus.publish(new UpdateAvailableEvent(version : payload.version, signer : payload.signer, infoHash : payload.infoHash)) } catch (Exception e) { log.log(Level.WARNING,"Invalid datagram",e) diff --git a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy index 2d2209f9..631842bc 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy @@ -58,6 +58,22 @@ class MainFrameController { originator : core.me)) } + void search(String infoHash) { + def cardsPanel = builder.getVariable("cards-panel") + cardsPanel.getLayout().show(cardsPanel, "search window") + def uuid = UUID.randomUUID() + Map params = new HashMap<>() + params["search-terms"] = infoHash + params["uuid"] = uuid.toString() + def group = mvcGroup.createMVCGroup("SearchTab", uuid.toString(), params) + model.results[uuid.toString()] = group + + def searchEvent = new SearchEvent(searchHash : Base64.decode(infoHash), uuid:uuid) + core.eventBus.publish(new QueryEvent(searchEvent : searchEvent, firstHop : true, + replyTo: core.me.destination, receivedOn: core.me.destination, + originator : core.me)) + } + private def selectedResult() { def selected = builder.getVariable("result-tabs").getSelectedComponent() def group = selected.getClientProperty("mvc-group") diff --git a/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy b/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy index 9214db43..15880b10 100644 --- a/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy +++ b/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy @@ -29,6 +29,7 @@ import com.muwire.core.upload.UploadFinishedEvent import griffon.core.GriffonApplication import griffon.core.artifact.GriffonModel +import griffon.core.env.Metadata import griffon.core.mvc.MVCGroup import griffon.inject.MVCMember import griffon.transform.FXObservable @@ -38,8 +39,11 @@ import griffon.metadata.ArtifactProviderFor @ArtifactProviderFor(GriffonModel) class MainFrameModel { + @Inject Metadata metadata @MVCMember @Nonnull FactoryBuilderSupport builder + @MVCMember @Nonnull + MainFrameController controller @Inject @Nonnull GriffonApplication application @Observable boolean coreInitialized = false @@ -262,7 +266,13 @@ class MainFrameModel { void onUpdateAvailableEvent(UpdateAvailableEvent e) { runInsideUIAsync { - JOptionPane.showMessageDialog(null, "A new version of MuWire is available from $e.signer. Please update to $e.version") + + int option = JOptionPane.showConfirmDialog(null, + "MuWire $e.version is available from $e.signer. You have "+ metadata["application.version"]+" Update?", + "New MuWire version availble", JOptionPane.OK_CANCEL_OPTION) + if (option == JOptionPane.CANCEL_OPTION) + return + controller.search(e.infoHash) } }