From beef4af329277e5d60f40f2c909dedb7e6ed44f1 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Tue, 12 Nov 2019 15:31:20 +0000 Subject: [PATCH] ui for chat options --- .../main/groovy/com/muwire/core/Core.groovy | 2 -- .../com/muwire/core/MuWireSettings.groovy | 5 ++++- .../com/muwire/gui/OptionsController.groovy | 12 +++++++++++ .../com/muwire/gui/MainFrameModel.groovy | 4 ++++ .../models/com/muwire/gui/OptionsModel.groovy | 8 +++++++ .../views/com/muwire/gui/OptionsView.groovy | 21 +++++++++++++++++++ 6 files changed, 49 insertions(+), 3 deletions(-) diff --git a/core/src/main/groovy/com/muwire/core/Core.groovy b/core/src/main/groovy/com/muwire/core/Core.groovy index f1a09fcd..9b4f04ab 100644 --- a/core/src/main/groovy/com/muwire/core/Core.groovy +++ b/core/src/main/groovy/com/muwire/core/Core.groovy @@ -372,8 +372,6 @@ public class Core { connectionEstablisher.start() hostCache.waitForLoad() updateClient.start() - if (muOptions.startChatServer) - chatServer.start() } public void shutdown() { diff --git a/core/src/main/groovy/com/muwire/core/MuWireSettings.groovy b/core/src/main/groovy/com/muwire/core/MuWireSettings.groovy index 6dd58732..63704046 100644 --- a/core/src/main/groovy/com/muwire/core/MuWireSettings.groovy +++ b/core/src/main/groovy/com/muwire/core/MuWireSettings.groovy @@ -33,6 +33,7 @@ class MuWireSettings { boolean browseFiles boolean startChatServer int maxChatConnections + boolean advertiseChat Set watchedDirectories float downloadSequentialRatio int hostClearInterval, hostHopelessInterval, hostRejectInterval @@ -83,7 +84,8 @@ class MuWireSettings { uploadSlotsPerUser = Integer.valueOf(props.getProperty("uploadSlotsPerUser","-1")) startChatServer = Boolean.valueOf(props.getProperty("startChatServer","false")) maxChatConnections = Integer.valueOf(props.get("maxChatConnections", "-1")) - + advertiseChat = Boolean.valueOf(props.getProperty("advertiseChat","true")) + watchedDirectories = DataUtil.readEncodedSet(props, "watchedDirectories") watchedKeywords = DataUtil.readEncodedSet(props, "watchedKeywords") watchedRegexes = DataUtil.readEncodedSet(props, "watchedRegexes") @@ -133,6 +135,7 @@ class MuWireSettings { props.setProperty("uploadSlotsPerUser", String.valueOf(uploadSlotsPerUser)) props.setProperty("startChatServer", String.valueOf(startChatServer)) props.setProperty("maxChatConnectios", String.valueOf(maxChatConnections)) + props.setProperty("advertiseChat", String.valueOf(advertiseChat)) DataUtil.writeEncodedSet(watchedDirectories, "watchedDirectories", props) DataUtil.writeEncodedSet(watchedKeywords, "watchedKeywords", props) diff --git a/gui/griffon-app/controllers/com/muwire/gui/OptionsController.groovy b/gui/griffon-app/controllers/com/muwire/gui/OptionsController.groovy index ec9d6f8e..3031ea30 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/OptionsController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/OptionsController.groovy @@ -139,6 +139,18 @@ class OptionsController { String trustListInterval = view.trustListIntervalField.text model.trustListInterval = trustListInterval settings.trustListInterval = Integer.parseInt(trustListInterval) + + boolean startChatServer = view.startChatServerCheckbox.model.isSelected() + model.startChatServer = startChatServer + settings.startChatServer = startChatServer + + String maxChatConnections = view.maxChatConnectionsField.text + model.maxChatConnections = Integer.parseInt(maxChatConnections) + settings.maxChatConnections = Integer.parseInt(maxChatConnections) + + boolean advertiseChat = view.advertiseChatCheckbox.model.isSelected() + model.advertiseChat = advertiseChat + settings.advertiseChat = advertiseChat core.saveMuSettings() diff --git a/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy b/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy index 421d7477..f795ed56 100644 --- a/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy +++ b/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy @@ -257,6 +257,10 @@ class MainFrameModel { uploadsPaneButtonEnabled = true monitorPaneButtonEnabled = true trustPaneButtonEnabled = true + chatPaneButtonEnabled = true + + if (core.muOptions.startChatServer) + controller.startChatServer() } }) diff --git a/gui/griffon-app/models/com/muwire/gui/OptionsModel.groovy b/gui/griffon-app/models/com/muwire/gui/OptionsModel.groovy index cb4531ec..94ff0e1b 100644 --- a/gui/griffon-app/models/com/muwire/gui/OptionsModel.groovy +++ b/gui/griffon-app/models/com/muwire/gui/OptionsModel.groovy @@ -56,6 +56,10 @@ class OptionsModel { @Observable boolean trustLists @Observable String trustListInterval + // chat options + @Observable boolean startChatServer + @Observable int maxChatConnections + @Observable boolean advertiseChat void mvcGroupInit(Map args) { MuWireSettings settings = application.context.get("muwire-settings") @@ -104,5 +108,9 @@ class OptionsModel { searchExtraHop = settings.searchExtraHop trustLists = settings.allowTrustLists trustListInterval = String.valueOf(settings.trustListInterval) + + startChatServer = settings.startChatServer + maxChatConnections = settings.maxChatConnections + advertiseChat = settings.advertiseChat } } \ 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 1efa114d..c1b1454d 100644 --- a/gui/griffon-app/views/com/muwire/gui/OptionsView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/OptionsView.groovy @@ -33,6 +33,7 @@ class OptionsView { def u def bandwidth def trust + def chat def retryField def updateField @@ -71,6 +72,10 @@ class OptionsView { def allowTrustListsCheckbox def trustListIntervalField + def startChatServerCheckbox + def maxChatConnectionsField + def advertiseChatCheckbox + def buttonsPanel def mainFrame @@ -267,6 +272,21 @@ class OptionsView { } panel(constraints : gbc(gridx: 0, gridy : 1, weighty: 100)) } + + chat = builder.panel { + gridBagLayout() + panel (border : titledBorder(title : "Chat Settings", border : etchedBorder(), titlePosition : TitledBorder.TOP), + constraints : gbc(gridx : 0, gridy : 0, fill : GridBagConstraints.HORIZONTAL, weightx: 100)) { + gridBagLayout() + label(text : "Start chat server on startup", constraints : gbc(gridx: 0, gridy: 0, anchor: GridBagConstraints.LINE_START, weightx: 100)) + startChatServerCheckbox = checkBox(selected : bind{model.startChatServer}, constraints : gbc(gridx:1, gridy:0, anchor:GridBagConstraints.LINE_END)) + label(text : "Maximum chat connections (-1 means unlimited)", constraints : gbc(gridx: 0, gridy:1, anchor:GridBagConstraints.LINE_START, weightx:100)) + maxChatConnectionsField = textField(text : bind {model.maxChatConnections}, constraints : gbc(gridx: 1, gridy : 1, anchor:GridBagConstraints.LINE_END)) + label(text : "Advertise chat ability in search results", constraints : gbc(gridx: 0, gridy:2, anchor:GridBagConstraints.LINE_START, weightx:100)) + advertiseChatCheckbox = checkBox(selected : bind{model.advertiseChat}, constraints : gbc(gridx:1, gridy:2, anchor:GridBagConstraints.LINE_END)) + } + panel(constraints : gbc(gridx: 0, gridy : 1, weighty: 100)) + } buttonsPanel = builder.panel { @@ -286,6 +306,7 @@ class OptionsView { tabbedPane.addTab("Bandwidth", bandwidth) } tabbedPane.addTab("Trust", trust) + tabbedPane.addTab("Chat", chat) JPanel panel = new JPanel() panel.setLayout(new BorderLayout())