From 6897cd8b6b82a9cf114d49cb4a03c05708949e88 Mon Sep 17 00:00:00 2001 From: Damien Churchill Date: Thu, 2 Apr 2009 09:54:06 +0000 Subject: [PATCH] improve removing of torrents by adding a "torrentRemoved" event --- deluge/ui/web/js/deluge-bars.js | 1 + deluge/ui/web/js/deluge-menus.js | 1 + deluge/ui/web/js/deluge-torrents.js | 20 ++++++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/deluge/ui/web/js/deluge-bars.js b/deluge/ui/web/js/deluge-bars.js index 620b95d5f..cf93c4d27 100644 --- a/deluge/ui/web/js/deluge-bars.js +++ b/deluge/ui/web/js/deluge-bars.js @@ -66,6 +66,7 @@ Deluge.ToolBar = { switch (item.id) { case 'remove': + Deluge.Events.fire('torrentRemoved', ids); Deluge.Client.core.remove_torrent(ids, null, { onSuccess: function() { Deluge.Ui.update(); diff --git a/deluge/ui/web/js/deluge-menus.js b/deluge/ui/web/js/deluge-menus.js index 3965756b5..d63d6d0cb 100644 --- a/deluge/ui/web/js/deluge-menus.js +++ b/deluge/ui/web/js/deluge-menus.js @@ -56,6 +56,7 @@ Deluge.Menus = { }); break; case 'remove': + Deluge.Events.fire('torrentRemoved', ids); Deluge.Client.core.remove_torrent(ids, null, { onSuccess: function() { Deluge.Ui.update(); diff --git a/deluge/ui/web/js/deluge-torrents.js b/deluge/ui/web/js/deluge-torrents.js index 8f12147e9..cc93c874e 100644 --- a/deluge/ui/web/js/deluge-torrents.js +++ b/deluge/ui/web/js/deluge-torrents.js @@ -105,6 +105,22 @@ Deluge.Torrents = { getSelections: function() { return this.Grid.getSelectionModel().getSelections(); + }, + + onRender: function() { + Deluge.Events.on('torrentRemoved', this.onTorrentRemoved.bindWithEvent(this)); + }, + + onTorrentRemoved: function(torrentIds) { + var selModel = this.Grid.getSelectionModel(); + $each(torrentIds, function(torrentId) { + var record = this.Store.getById(torrentId); + if (selModel.isSelected(record)) { + selModel.deselectRow(this.Store.indexOf(record)); + } + this.Store.remove(record); + + }, this); } } Deluge.Torrents.Store.setDefaultSort("queue"); @@ -134,6 +150,10 @@ Deluge.Torrents.Grid = new Ext.grid.GridPanel({ autoScroll:true, margins: '5 5 0 0', listeners: { + 'render': { + fn: Deluge.Torrents.onRender, + scope: Deluge.Torrents + }, 'rowcontextmenu': { fn: function(grid, rowIndex, e) { e.stopEvent();