split out the ProxyField to a seperate file

This commit is contained in:
Damien Churchill 2010-03-28 05:09:01 +01:00
parent c430ef9a84
commit c987b74d61
2 changed files with 170 additions and 137 deletions

View File

@ -0,0 +1,170 @@
/*!
* Deluge.preferences.ProxyField.js
*
* Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, write to:
* The Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301, USA.
*
* In addition, as a special exception, the copyright holders give
* permission to link the code of portions of this program with the OpenSSL
* library.
* You must obey the GNU General Public License in all respects for all of
* the code used other than OpenSSL. If you modify file(s) with this
* exception, you may extend this exception to your version of the file(s),
* but you are not obligated to do so. If you do not wish to do so, delete
* this exception statement from your version. If you delete this exception
* statement from all source files in the program, then also delete it here.
*/
Ext.ns('Deluge.preferences');
/**
* @class Deluge.preferences.ProxyField
* @extends Ext.form.FieldSet
*/
Deluge.preferences.ProxyField = Ext.extend(Ext.form.FieldSet, {
constructor: function(config) {
config = Ext.apply({
border: false,
autoHeight: true,
labelWidth: 70
}, config);
Deluge.preferences.ProxyField.superclass.constructor.call(this, config);
},
initComponent: function() {
Deluge.preferences.ProxyField.superclass.initComponent.call(this);
this.type = this.add({
xtype: 'combo',
fieldLabel: _('Type'),
name: 'type',
mode: 'local',
width: 150,
store: new Ext.data.SimpleStore({
fields: ['id', 'text'],
data: [
[0, _('None')],
[1, _('Socksv4')],
[2, _('Socksv5')],
[3, _('Socksv5 with Auth')],
[4, _('HTTP')],
[5, _('HTTP with Auth')],
]
}),
value: 0,
triggerAction: 'all',
valueField: 'id',
displayField: 'text'
})
this.hostname = this.add({
xtype: 'textfield',
name: 'hostname',
fieldLabel: _('Host'),
width: 220
});
this.port = this.add({
xtype: 'spinnerfield',
name: 'port',
fieldLabel: _('Port'),
width: 80,
strategy: {
xtype: 'number',
decimalPrecision: 0,
minValue: -1,
maxValue: 99999
}
});
this.username = this.add({
xtype: 'textfield',
name: 'username',
fieldLabel: _('Username'),
width: 220
});
this.password = this.add({
xtype: 'textfield',
name: 'password',
fieldLabel: _('Password'),
inputType: 'password',
width: 220
});
this.type.on('change', this.onFieldChange, this);
this.type.on('select', this.onTypeSelect, this);
this.setting = false;
},
getName: function() {
return this.initialConfig.name;
},
getValue: function() {
return {
'type': this.type.getValue(),
'hostname': this.hostname.getValue(),
'port': Number(this.port.getValue()),
'username': this.username.getValue(),
'password': this.password.getValue()
}
},
// Set the values of the proxies
setValue: function(value) {
this.setting = true;
this.type.setValue(value['type']);
var index = this.type.getStore().find('id', value['type']);
var record = this.type.getStore().getAt(index);
this.hostname.setValue(value['hostname']);
this.port.setValue(value['port']);
this.username.setValue(value['username']);
this.password.setValue(value['password']);
this.onTypeSelect(this.type, record, index);
this.setting = false;
},
onFieldChange: function(field, newValue, oldValue) {
if (this.setting) return;
var newValues = this.getValue();
var oldValues = Ext.apply({}, newValues);
oldValues[field.getName()] = oldValue;
this.fireEvent('change', this, newValues, oldValues);
},
onTypeSelect: function(combo, record, index) {
var typeId = record.get('id');
if (typeId > 0) {
this.hostname.show();
this.port.show();
} else {
this.hostname.hide();
this.port.hide();
}
if (typeId == 3 || typeId == 5) {
this.username.show();
this.password.show();
} else {
this.username.hide();
this.password.hide();
}
}
});

View File

@ -33,143 +33,6 @@ Copyright:
Ext.namespace('Deluge.preferences');
/**
* @class Deluge.preferences.ProxyField
* @extends Ext.form.FormSet
*/
Deluge.preferences.ProxyField = Ext.extend(Ext.form.FieldSet, {
constructor: function(config) {
config = Ext.apply({
border: false,
autoHeight: true,
labelWidth: 70
}, config);
Deluge.preferences.ProxyField.superclass.constructor.call(this, config);
},
initComponent: function() {
Deluge.preferences.ProxyField.superclass.initComponent.call(this);
this.type = this.add({
xtype: 'combo',
fieldLabel: _('Type'),
name: 'type',
mode: 'local',
width: 150,
store: new Ext.data.SimpleStore({
fields: ['id', 'text'],
data: [
[0, _('None')],
[1, _('Socksv4')],
[2, _('Socksv5')],
[3, _('Socksv5 with Auth')],
[4, _('HTTP')],
[5, _('HTTP with Auth')],
]
}),
value: 0,
triggerAction: 'all',
valueField: 'id',
displayField: 'text'
})
this.hostname = this.add({
xtype: 'textfield',
name: 'hostname',
fieldLabel: _('Host'),
width: 220
});
this.port = this.add({
xtype: 'spinnerfield',
name: 'port',
fieldLabel: _('Port'),
width: 80,
strategy: {
xtype: 'number',
decimalPrecision: 0,
minValue: -1,
maxValue: 99999
}
});
this.username = this.add({
xtype: 'textfield',
name: 'username',
fieldLabel: _('Username'),
width: 220
});
this.password = this.add({
xtype: 'textfield',
name: 'password',
fieldLabel: _('Password'),
inputType: 'password',
width: 220
});
this.type.on('change', this.onFieldChange, this);
this.type.on('select', this.onTypeSelect, this);
this.setting = false;
},
getName: function() {
return this.initialConfig.name;
},
getValue: function() {
return {
'type': this.type.getValue(),
'hostname': this.hostname.getValue(),
'port': Number(this.port.getValue()),
'username': this.username.getValue(),
'password': this.password.getValue()
}
},
// Set the values of the proxies
setValue: function(value) {
this.setting = true;
this.type.setValue(value['type']);
var index = this.type.getStore().find('id', value['type']);
var record = this.type.getStore().getAt(index);
this.hostname.setValue(value['hostname']);
this.port.setValue(value['port']);
this.username.setValue(value['username']);
this.password.setValue(value['password']);
this.onTypeSelect(this.type, record, index);
this.setting = false;
},
onFieldChange: function(field, newValue, oldValue) {
if (this.setting) return;
var newValues = this.getValue();
var oldValues = Ext.apply({}, newValues);
oldValues[field.getName()] = oldValue;
this.fireEvent('change', this, newValues, oldValues);
},
onTypeSelect: function(combo, record, index) {
var typeId = record.get('id');
if (typeId > 0) {
this.hostname.show();
this.port.show();
} else {
this.hostname.hide();
this.port.hide();
}
if (typeId == 3 || typeId == 5) {
this.username.show();
this.password.show();
} else {
this.username.hide();
this.password.hide();
}
}
});
/**
* @class Deluge.preferences.Proxy
* @extends Ext.form.FormPanel