diff --git a/core/src/main/groovy/com/muwire/core/MuWireSettings.groovy b/core/src/main/groovy/com/muwire/core/MuWireSettings.groovy index 74e8484d..90b46f3c 100644 --- a/core/src/main/groovy/com/muwire/core/MuWireSettings.groovy +++ b/core/src/main/groovy/com/muwire/core/MuWireSettings.groovy @@ -34,7 +34,7 @@ class MuWireSettings { props.setProperty("crawlerResponse", crawlerResponse.toString()) props.setProperty("nickname", nickname) props.setProperty("downloadLocation", downloadLocation.getAbsolutePath()) - props.setProperty("downloadRetryInterval", "15") + props.setProperty("downloadRetryInterval", String.valueOf(downloadRetryInterval)) if (sharedFiles != null) props.setProperty("sharedFiles", sharedFiles) props.store(out, "") diff --git a/gui/griffon-app/controllers/com/muwire/gui/OptionsController.groovy b/gui/griffon-app/controllers/com/muwire/gui/OptionsController.groovy index a0b6236d..6249ca21 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/OptionsController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/OptionsController.groovy @@ -10,9 +10,28 @@ import javax.annotation.Nonnull class OptionsController { @MVCMember @Nonnull OptionsModel model + @MVCMember @Nonnull + OptionsView view @ControllerAction - void click() { - model.clickCount++ + void save() { + String text = view.retryField.text + model.downloadRetryInterval = text + + def settings = application.context.get("muwire-settings") + settings.downloadRetryInterval = Integer.valueOf(text) + + File settingsFile = new File(application.context.get("core").home, "MuWire.properties") + settingsFile.withOutputStream { + settings.write(it) + } + + cancel() + } + + @ControllerAction + void cancel() { + view.d.setVisible(false) + mvcGroup.destroy() } } \ No newline at end of file diff --git a/gui/griffon-app/models/com/muwire/gui/OptionsModel.groovy b/gui/griffon-app/models/com/muwire/gui/OptionsModel.groovy index 36a6e13a..d52bc442 100644 --- a/gui/griffon-app/models/com/muwire/gui/OptionsModel.groovy +++ b/gui/griffon-app/models/com/muwire/gui/OptionsModel.groovy @@ -6,5 +6,9 @@ import griffon.metadata.ArtifactProviderFor @ArtifactProviderFor(GriffonModel) class OptionsModel { - @Observable int clickCount = 0 + @Observable String downloadRetryInterval + + void mvcGroupInit(Map args) { + downloadRetryInterval = application.context.get("muwire-settings").downloadRetryInterval + } } \ No newline at end of file diff --git a/gui/griffon-app/views/com/muwire/gui/OptionsView.groovy b/gui/griffon-app/views/com/muwire/gui/OptionsView.groovy index f3dd73a9..7193c6fe 100644 --- a/gui/griffon-app/views/com/muwire/gui/OptionsView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/OptionsView.groovy @@ -17,18 +17,28 @@ class OptionsView { def d def p + def retryField + def mainFrame void initUI() { - def mainFrame = application.windowManager.findWindow("main-frame") + mainFrame = application.windowManager.findWindow("main-frame") d = new JDialog(mainFrame, "Options", true) + d.setResizable(false) p = builder.panel { - label(text : "Text") + gridBagLayout() + label(text : "Retry failed downloads every", constraints : gbc(gridx: 0, gridy: 0)) + retryField = textField(text : bind { model.downloadRetryInterval }, columns : 2, constraints : gbc(gridx: 1, gridy: 0)) + label(text : "minutes", constraints : gbc(gridx : 2, gridy: 0)) + + button(text : "Save", constraints : gbc(gridx : 1, gridy: 1), saveAction) + button(text : "Cancel", constraints : gbc(gridx : 2, gridy: 1), cancelAction) } } void mvcGroupInit(Map args) { d.getContentPane().add(p) d.pack() + d.setLocationRelativeTo(mainFrame) d.show() } } \ No newline at end of file