update the proxyfield comboboxes and switch some simplestores to arraystores

This commit is contained in:
Damien Churchill 2010-04-28 08:21:30 +01:00
commit 9f185da446
2 changed files with 120 additions and 121 deletions

View file

@ -57,7 +57,7 @@ Deluge.preferences.Encryption = Ext.extend(Ext.form.FormPanel, {
fieldLabel: _('Inbound'), fieldLabel: _('Inbound'),
mode: 'local', mode: 'local',
width: 150, width: 150,
store: new Ext.data.SimpleStore({ store: new Ext.data.ArrayStore({
fields: ['id', 'text'], fields: ['id', 'text'],
data: [ data: [
[0, _('Forced')], [0, _('Forced')],

View file

@ -15,9 +15,9 @@
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, write to: * along with this program. If not, write to:
* The Free Software Foundation, Inc., * The Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor * 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301, USA. * Boston, MA 02110-1301, USA.
* *
* In addition, as a special exception, the copyright holders give * In addition, as a special exception, the copyright holders give
* permission to link the code of portions of this program with the OpenSSL * permission to link the code of portions of this program with the OpenSSL
@ -37,134 +37,133 @@ Ext.ns('Deluge.preferences');
*/ */
Deluge.preferences.ProxyField = Ext.extend(Ext.form.FieldSet, { Deluge.preferences.ProxyField = Ext.extend(Ext.form.FieldSet, {
constructor: function(config) { constructor: function(config) {
config = Ext.apply({ config = Ext.apply({
border: false, border: false,
autoHeight: true, autoHeight: true,
labelWidth: 70 labelWidth: 70
}, config); }, config);
Deluge.preferences.ProxyField.superclass.constructor.call(this, config); Deluge.preferences.ProxyField.superclass.constructor.call(this, config);
}, },
initComponent: function() { initComponent: function() {
Deluge.preferences.ProxyField.superclass.initComponent.call(this); Deluge.preferences.ProxyField.superclass.initComponent.call(this);
this.type = this.add({ this.proxyType = this.add({
xtype: 'combo', xtype: 'combo',
fieldLabel: _('Type'), fieldLabel: _('Type'),
name: 'type', name: 'proxytype',
mode: 'local', mode: 'local',
width: 150, width: 150,
store: new Ext.data.SimpleStore({ store: new Ext.data.ArrayStore({
fields: ['id', 'text'], fields: ['id', 'text'],
data: [ data: [
[0, _('None')], [0, _('None')],
[1, _('Socksv4')], [1, _('Socksv4')],
[2, _('Socksv5')], [2, _('Socksv5')],
[3, _('Socksv5 with Auth')], [3, _('Socksv5 with Auth')],
[4, _('HTTP')], [4, _('HTTP')],
[5, _('HTTP with Auth')] [5, _('HTTP with Auth')]
] ]
}), }),
value: 0, editable: false,
triggerAction: 'all', triggerAction: 'all',
valueField: 'id', valueField: 'id',
displayField: 'text' displayField: 'text'
}) });
this.hostname = this.add({ this.hostname = this.add({
xtype: 'textfield', xtype: 'textfield',
name: 'hostname', name: 'hostname',
fieldLabel: _('Host'), fieldLabel: _('Host'),
width: 220 width: 220
}); });
this.port = this.add({ this.port = this.add({
xtype: 'spinnerfield', xtype: 'spinnerfield',
name: 'port', name: 'port',
fieldLabel: _('Port'), fieldLabel: _('Port'),
width: 80, width: 80,
strategy: { strategy: {
xtype: 'number', xtype: 'number',
decimalPrecision: 0, decimalPrecision: 0,
minValue: -1, minValue: -1,
maxValue: 99999 maxValue: 99999
} }
}); });
this.username = this.add({ this.username = this.add({
xtype: 'textfield', xtype: 'textfield',
name: 'username', name: 'username',
fieldLabel: _('Username'), fieldLabel: _('Username'),
width: 220 width: 220
}); });
this.password = this.add({ this.password = this.add({
xtype: 'textfield', xtype: 'textfield',
name: 'password', name: 'password',
fieldLabel: _('Password'), fieldLabel: _('Password'),
inputType: 'password', inputType: 'password',
width: 220 width: 220
}); });
this.type.on('change', this.onFieldChange, this); this.proxyType.on('change', this.onFieldChange, this);
this.type.on('select', this.onTypeSelect, this); this.proxyType.on('select', this.onTypeSelect, this);
this.setting = false; this.setting = false;
}, },
getName: function() { getName: function() {
return this.initialConfig.name; return this.initialConfig.name;
}, },
getValue: function() { getValue: function() {
return { return {
'type': this.type.getValue(), 'type': this.proxyType.getValue(),
'hostname': this.hostname.getValue(), 'hostname': this.hostname.getValue(),
'port': Number(this.port.getValue()), 'port': Number(this.port.getValue()),
'username': this.username.getValue(), 'username': this.username.getValue(),
'password': this.password.getValue() 'password': this.password.getValue()
} }
}, },
// Set the values of the proxies // Set the values of the proxies
setValue: function(value) { setValue: function(value) {
this.setting = true; this.setting = true;
this.type.setValue(value['type']); this.proxyType.setValue(value['type']);
var index = this.type.getStore().find('id', value['type']); var index = this.proxyType.getStore().find('id', value['type']);
var record = this.type.getStore().getAt(index); var record = this.proxyType.getStore().getAt(index);
this.hostname.setValue(value['hostname']); this.hostname.setValue(value['hostname']);
this.port.setValue(value['port']); this.port.setValue(value['port']);
this.username.setValue(value['username']); this.username.setValue(value['username']);
this.password.setValue(value['password']); this.password.setValue(value['password']);
this.onTypeSelect(this.type, record, index); this.onTypeSelect(this.type, record, index);
this.setting = false; this.setting = false;
}, },
onFieldChange: function(field, newValue, oldValue) { onFieldChange: function(field, newValue, oldValue) {
if (this.setting) return; if (this.setting) return;
var newValues = this.getValue(); var newValues = this.getValue();
var oldValues = Ext.apply({}, newValues); var oldValues = Ext.apply({}, newValues);
oldValues[field.getName()] = oldValue; oldValues[field.getName()] = oldValue;
this.fireEvent('change', this, newValues, oldValues); this.fireEvent('change', this, newValues, oldValues);
}, },
onTypeSelect: function(combo, record, index) { onTypeSelect: function(combo, record, index) {
var typeId = record.get('id'); var typeId = record.get('id');
if (typeId > 0) { if (typeId > 0) {
this.hostname.show(); this.hostname.show();
this.port.show(); this.port.show();
} else { } else {
this.hostname.hide(); this.hostname.hide();
this.port.hide(); this.port.hide();
} }
if (typeId == 3 || typeId == 5) { if (typeId == 3 || typeId == 5) {
this.username.show(); this.username.show();
this.password.show(); this.password.show();
} else { } else {
this.username.hide(); this.username.hide();
this.password.hide(); this.password.hide();
} }
} }
}); });