convert the PreferencesWindow over to using a ListView rather than a

GridPanel
This commit is contained in:
Damien Churchill 2010-04-02 16:46:32 +01:00
parent c970a80030
commit 3560dac792

View File

@ -61,33 +61,33 @@ Deluge.preferences.PreferencesWindow = Ext.extend(Ext.Window, {
initComponent: function() { initComponent: function() {
Deluge.preferences.PreferencesWindow.superclass.initComponent.call(this); Deluge.preferences.PreferencesWindow.superclass.initComponent.call(this);
this.categoriesGrid = this.add({ this.list = new Ext.list.ListView({
xtype: 'grid',
region: 'west',
title: _('Categories'),
store: new Ext.data.Store(), store: new Ext.data.Store(),
columns: [{ columns: [{
id: 'name', id: 'name',
renderer: fplain, renderer: fplain,
dataIndex: 'name' dataIndex: 'name'
}], }],
sm: new Ext.grid.RowSelectionModel({
singleSelect: true, singleSelect: true,
listeners: { listeners: {
'rowselect': { 'selectionchange': {
fn: this.onPageSelect, scope: this fn: this.onPageSelect, scope: this
} }
} },
}),
hideHeaders: true, hideHeaders: true,
autoExpandColumn: 'name', autoExpandColumn: 'name',
deferredRender: false, deferredRender: false,
autoScroll: true, autoScroll: true,
margins: '5 0 5 5',
cmargins: '5 0 5 5',
width: 120,
collapsible: true collapsible: true
}); });
this.add({
region: 'west',
title: _('Categories'),
items: [this.list],
width: 120,
margins: '5 0 5 5',
cmargins: '5 0 5 5'
});
this.configPanel = this.add({ this.configPanel = this.add({
type: 'container', type: 'container',
@ -154,7 +154,7 @@ Deluge.preferences.PreferencesWindow = Ext.extend(Ext.Window, {
* @param {Mixed} page * @param {Mixed} page
*/ */
addPage: function(page) { addPage: function(page) {
var store = this.categoriesGrid.getStore(); var store = this.list.getStore();
var name = page.title; var name = page.title;
store.add([new PreferencesRecord({name: name})]); store.add([new PreferencesRecord({name: name})]);
page['bodyStyle'] = 'padding: 5px'; page['bodyStyle'] = 'padding: 5px';
@ -169,7 +169,7 @@ Deluge.preferences.PreferencesWindow = Ext.extend(Ext.Window, {
*/ */
removePage: function(page) { removePage: function(page) {
var name = page.title; var name = page.title;
var store = this.categoriesGrid.getStore(); var store = this.list.getStore();
store.removeAt(store.find('name', name)); store.removeAt(store.find('name', name));
this.configPanel.remove(page); this.configPanel.remove(page);
delete this.pages[page.title]; delete this.pages[page.title];
@ -191,7 +191,8 @@ Deluge.preferences.PreferencesWindow = Ext.extend(Ext.Window, {
}, },
// private // private
onPageSelect: function(selModel, rowIndex, r) { onPageSelect: function(list, selections) {
var r = list.getRecord(selections[0]);
this.selectPage(r.get('name')); this.selectPage(r.get('name'));
}, },
@ -202,8 +203,8 @@ Deluge.preferences.PreferencesWindow = Ext.extend(Ext.Window, {
// private // private
onAfterRender: function() { onAfterRender: function() {
if (!this.categoriesGrid.getSelectionModel().hasSelection()) { if (!this.list.getSelectionCount()) {
this.categoriesGrid.getSelectionModel().selectFirstRow(); this.list.select(0);
} }
this.configPanel.getLayout().setActiveItem(0); this.configPanel.getLayout().setActiveItem(0);
}, },