From 2e2851dc13d73352530dd4495c7e05603b2e520d Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 Apr 2024 23:38:38 +0200 Subject: Adding upstream version 2.1.2~dev0+20240219. Signed-off-by: Daniel Baumann --- .../web/js/deluge-all/preferences/NetworkPage.js | 257 +++++++++++++++++++++ 1 file changed, 257 insertions(+) create mode 100644 deluge/ui/web/js/deluge-all/preferences/NetworkPage.js (limited to 'deluge/ui/web/js/deluge-all/preferences/NetworkPage.js') diff --git a/deluge/ui/web/js/deluge-all/preferences/NetworkPage.js b/deluge/ui/web/js/deluge-all/preferences/NetworkPage.js new file mode 100644 index 0000000..5ba98e7 --- /dev/null +++ b/deluge/ui/web/js/deluge-all/preferences/NetworkPage.js @@ -0,0 +1,257 @@ +/** + * Deluge.preferences.NetworkPage.js + * + * Copyright (c) Damien Churchill 2009-2010 + * + * This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with + * the additional special exception to link portions of this program with the OpenSSL library. + * See LICENSE for more details. + */ +Ext.namespace('Deluge.preferences'); + +// custom Vtype for vtype:'IPAddress' +Ext.apply(Ext.form.VTypes, { + IPAddress: function (v) { + return /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(v); + }, + IPAddressText: 'Must be a numeric IP address', + IPAddressMask: /[\d\.]/i, +}); + +/** + * @class Deluge.preferences.Network + * @extends Ext.form.FormPanel + */ +Deluge.preferences.Network = Ext.extend(Ext.form.FormPanel, { + border: false, + layout: 'form', + title: _('Network'), + header: false, + + initComponent: function () { + Deluge.preferences.Network.superclass.initComponent.call(this); + var optMan = deluge.preferences.getOptionsManager(); + + fieldset = this.add({ + xtype: 'fieldset', + border: false, + title: _('Incoming Address'), + style: 'margin-bottom: 5px; padding-bottom: 0px;', + autoHeight: true, + labelWidth: 1, + defaultType: 'textfield', + }); + optMan.bind( + 'listen_interface', + fieldset.add({ + name: 'listen_interface', + fieldLabel: '', + labelSeparator: '', + width: 200, + vtype: 'IPAddress', + }) + ); + + var fieldset = this.add({ + xtype: 'fieldset', + border: false, + title: _('Incoming Port'), + style: 'margin-bottom: 5px; padding-bottom: 0px;', + autoHeight: true, + labelWidth: 1, + defaultType: 'checkbox', + }); + optMan.bind( + 'random_port', + fieldset.add({ + fieldLabel: '', + labelSeparator: '', + boxLabel: _('Use Random Port'), + name: 'random_port', + height: 22, + listeners: { + check: { + fn: function (e, checked) { + this.listenPort.setDisabled(checked); + }, + scope: this, + }, + }, + }) + ); + + this.listenPort = fieldset.add({ + xtype: 'spinnerfield', + name: 'listen_port', + fieldLabel: '', + labelSeparator: '', + width: 75, + strategy: { + xtype: 'number', + decimalPrecision: 0, + minValue: 0, + maxValue: 65535, + }, + }); + optMan.bind('listen_ports', this.listenPort); + + fieldset = this.add({ + xtype: 'fieldset', + border: false, + title: _('Outgoing Interface'), + style: 'margin-bottom: 5px; padding-bottom: 0px;', + autoHeight: true, + labelWidth: 1, + defaultType: 'textfield', + }); + optMan.bind( + 'outgoing_interface', + fieldset.add({ + name: 'outgoing_interface', + fieldLabel: '', + labelSeparator: '', + width: 40, + }) + ); + + fieldset = this.add({ + xtype: 'fieldset', + border: false, + title: _('Outgoing Ports'), + style: 'margin-bottom: 5px; padding-bottom: 0px;', + autoHeight: true, + labelWidth: 1, + defaultType: 'checkbox', + }); + optMan.bind( + 'random_outgoing_ports', + fieldset.add({ + fieldLabel: '', + labelSeparator: '', + boxLabel: _('Use Random Ports'), + name: 'random_outgoing_ports', + height: 22, + listeners: { + check: { + fn: function (e, checked) { + this.outgoingPorts.setDisabled(checked); + }, + scope: this, + }, + }, + }) + ); + this.outgoingPorts = fieldset.add({ + xtype: 'spinnergroup', + name: 'outgoing_ports', + fieldLabel: '', + labelSeparator: '', + colCfg: { + labelWidth: 40, + style: 'margin-right: 10px;', + }, + items: [ + { + fieldLabel: _('From:'), + labelSeparator: '', + strategy: { + xtype: 'number', + decimalPrecision: 0, + minValue: 0, + maxValue: 65535, + }, + }, + { + fieldLabel: _('To:'), + labelSeparator: '', + strategy: { + xtype: 'number', + decimalPrecision: 0, + minValue: 0, + maxValue: 65535, + }, + }, + ], + }); + optMan.bind('outgoing_ports', this.outgoingPorts); + + fieldset = this.add({ + xtype: 'fieldset', + border: false, + title: _('Network Extras'), + autoHeight: true, + layout: 'table', + layoutConfig: { + columns: 3, + }, + defaultType: 'checkbox', + }); + optMan.bind( + 'upnp', + fieldset.add({ + fieldLabel: '', + labelSeparator: '', + boxLabel: _('UPnP'), + name: 'upnp', + }) + ); + optMan.bind( + 'natpmp', + fieldset.add({ + fieldLabel: '', + labelSeparator: '', + boxLabel: _('NAT-PMP'), + ctCls: 'x-deluge-indent-checkbox', + name: 'natpmp', + }) + ); + optMan.bind( + 'utpex', + fieldset.add({ + fieldLabel: '', + labelSeparator: '', + boxLabel: _('Peer Exchange'), + ctCls: 'x-deluge-indent-checkbox', + name: 'utpex', + }) + ); + optMan.bind( + 'lsd', + fieldset.add({ + fieldLabel: '', + labelSeparator: '', + boxLabel: _('LSD'), + name: 'lsd', + }) + ); + optMan.bind( + 'dht', + fieldset.add({ + fieldLabel: '', + labelSeparator: '', + boxLabel: _('DHT'), + ctCls: 'x-deluge-indent-checkbox', + name: 'dht', + }) + ); + + fieldset = this.add({ + xtype: 'fieldset', + border: false, + title: _('Type Of Service'), + style: 'margin-bottom: 5px; padding-bottom: 0px;', + bodyStyle: 'margin: 0px; padding: 0px', + autoHeight: true, + defaultType: 'textfield', + }); + optMan.bind( + 'peer_tos', + fieldset.add({ + name: 'peer_tos', + fieldLabel: _('Peer TOS Byte:'), + labelSeparator: '', + width: 40, + }) + ); + }, +}); -- cgit v1.2.3