diff --git a/deluge/ui/web/js/Deluge.UI.js b/deluge/ui/web/js/Deluge.UI.js index 3d5f4ad5c..caa4ea2d7 100644 --- a/deluge/ui/web/js/Deluge.UI.js +++ b/deluge/ui/web/js/Deluge.UI.js @@ -1,25 +1,25 @@ /* -Script: deluge-ui.js +Script: Deluge.UI.js The core ui module that builds up the ui layout and controls the polling - of the server. + of the server. Copyright: - (C) Damien Churchill 2009 - 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. + (C) Damien Churchill 2009 + 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. + 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. + 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 @@ -40,163 +40,160 @@ Copyright: */ Deluge.UI = { - cookies: new Ext.state.CookieProvider(), - - errorCount: 0, - - /** - * @description Create all the interface components, the json-rpc client - * and set up various events that the UI will utilise. - */ - initialize: function() { - Ext.state.Manager.setProvider(this.cookies); - this.MainPanel = new Ext.Panel({ - id: 'mainPanel', - iconCls: 'x-deluge-main-panel', - title: 'Deluge', - layout: 'border', - tbar: Deluge.Toolbar, - items: [ - Deluge.Sidebar, - Deluge.Details, - Deluge.Torrents - ], - bbar: Deluge.Statusbar - }); + errorCount: 0, - this.Viewport = new Ext.Viewport({ - layout: 'fit', - items: [this.MainPanel] - }); - - Deluge.Events.on("connect", this.onConnect, this); - Deluge.Events.on("disconnect", this.onDisconnect, this); - Deluge.Client = new Ext.ux.util.RpcClient({ - url: '/json' - }); + /** + * @description Create all the interface components, the json-rpc client + * and set up various events that the UI will utilise. + */ + initialize: function() { + this.MainPanel = new Ext.Panel({ + id: 'mainPanel', + iconCls: 'x-deluge-main-panel', + title: 'Deluge', + layout: 'border', + tbar: Deluge.Toolbar, + items: [ + Deluge.Sidebar, + Deluge.Details, + Deluge.Torrents + ], + bbar: Deluge.Statusbar + }); - for (var plugin in Deluge.Plugins) { - plugin = Deluge.Plugins[plugin]; - plugin.enable(); - } - - Deluge.Client.on('connected', function(e) { - Deluge.Login.show(); - Deluge.Events.start(); - Deluge.Events.on('PluginEnabledEvent', this.onPluginEnabled, this); - Deluge.Events.on('PluginDisabledEvent', this.onPluginDisabled, this); - }, this, {single: true}); - - this.update = this.update.bind(this); - }, - - update: function() { - var filters = Deluge.Sidebar.getFilters(); - Deluge.Client.web.update_ui(Deluge.Keys.Grid, filters, { - success: this.onUpdate, - failure: this.onUpdateError, - scope: this - }); - Deluge.Details.update(); - Deluge.Client.web.connected({ - success: this.onConnectedCheck, - scope: this - }); - }, - - onConnectedCheck: function(connected) { - if (!connected) { - Deluge.Events.fire('disconnect'); - } - }, - - onUpdateError: function(error) { - if (this.errorCount == 2) { - Ext.MessageBox.show({ - title: 'Lost Connection', - msg: 'The connection to the webserver has been lost!', - buttons: Ext.MessageBox.OK, - icon: Ext.MessageBox.ERROR - }); - } - this.errorCount++; - }, - - /** - * @static - * @private - * Updates the various components in the interface. - */ - onUpdate: function(data) { - Deluge.Torrents.update(data['torrents']); - Deluge.Statusbar.update(data['stats']); - Deluge.Sidebar.update(data['filters']); - this.errorCount = 0; - }, - - /** - * @static - * @private - * Start the Deluge UI polling the server and update the interface. - */ - onConnect: function() { - if (!this.running) { - this.running = setInterval(this.update, 2000); - this.update(); - } - }, - - /** - * @static - * @private - */ - onDisconnect: function() { - this.stop(); - }, - - onPluginEnabled: function(pluginName) { - Deluge.Client.web.get_plugin_resources(pluginName, { - success: this.onGotPluginResources, - scope: this - }) - }, - - onGotPluginResources: function(resources) { - var scripts = (Deluge.debug) ? resources.debug_scripts : resources.scripts; - Ext.each(scripts, function(script) { - Ext.ux.JSLoader({ - url: script, - onLoad: this.onPluginLoaded, - pluginName: resources.name - }); - }, this); - }, - - onPluginDisabled: function(pluginName) { - Deluge.Plugins[pluginName].disable(); - }, - - onPluginLoaded: function(options) { - // This could happen if the plugin has multiple scripts - if (!Deluge.Plugins[options.pluginName]) return; - - // Enable the plugin - Deluge.Plugins[options.pluginName].enable(); - }, - - /** - * @static - * Stop the Deluge UI polling the server and clear the interface. - */ - stop: function() { - if (this.running) { - clearInterval(this.running); - this.running = false; - Deluge.Torrents.getStore().loadData([]); - } - } + this.Viewport = new Ext.Viewport({ + layout: 'fit', + items: [this.MainPanel] + }); + + Deluge.Events.on("connect", this.onConnect, this); + Deluge.Events.on("disconnect", this.onDisconnect, this); + Deluge.Client = new Ext.ux.util.RpcClient({ + url: '/json' + }); + + for (var plugin in Deluge.Plugins) { + plugin = Deluge.Plugins[plugin]; + plugin.enable(); + } + + Deluge.Client.on('connected', function(e) { + Deluge.Login.show(); + Deluge.Events.start(); + Deluge.Events.on('PluginEnabledEvent', this.onPluginEnabled, this); + Deluge.Events.on('PluginDisabledEvent', this.onPluginDisabled, this); + }, this, {single: true}); + + this.update = this.update.bind(this); + }, + + update: function() { + var filters = Deluge.Sidebar.getFilters(); + Deluge.Client.web.update_ui(Deluge.Keys.Grid, filters, { + success: this.onUpdate, + failure: this.onUpdateError, + scope: this + }); + Deluge.Details.update(); + Deluge.Client.web.connected({ + success: this.onConnectedCheck, + scope: this + }); + }, + + onConnectedCheck: function(connected) { + if (!connected) { + Deluge.Events.fire('disconnect'); + } + }, + + onUpdateError: function(error) { + if (this.errorCount == 2) { + Ext.MessageBox.show({ + title: 'Lost Connection', + msg: 'The connection to the webserver has been lost!', + buttons: Ext.MessageBox.OK, + icon: Ext.MessageBox.ERROR + }); + } + this.errorCount++; + }, + + /** + * @static + * @private + * Updates the various components in the interface. + */ + onUpdate: function(data) { + Deluge.Torrents.update(data['torrents']); + Deluge.Statusbar.update(data['stats']); + Deluge.Sidebar.update(data['filters']); + this.errorCount = 0; + }, + + /** + * @static + * @private + * Start the Deluge UI polling the server and update the interface. + */ + onConnect: function() { + if (!this.running) { + this.running = setInterval(this.update, 2000); + this.update(); + } + }, + + /** + * @static + * @private + */ + onDisconnect: function() { + this.stop(); + }, + + onPluginEnabled: function(pluginName) { + Deluge.Client.web.get_plugin_resources(pluginName, { + success: this.onGotPluginResources, + scope: this + }) + }, + + onGotPluginResources: function(resources) { + var scripts = (Deluge.debug) ? resources.debug_scripts : resources.scripts; + Ext.each(scripts, function(script) { + Ext.ux.JSLoader({ + url: script, + onLoad: this.onPluginLoaded, + pluginName: resources.name + }); + }, this); + }, + + onPluginDisabled: function(pluginName) { + Deluge.Plugins[pluginName].disable(); + }, + + onPluginLoaded: function(options) { + // This could happen if the plugin has multiple scripts + if (!Deluge.Plugins[options.pluginName]) return; + + // Enable the plugin + Deluge.Plugins[options.pluginName].enable(); +}, + + /** + * @static + * Stop the Deluge UI polling the server and clear the interface. + */ + stop: function() { + if (this.running) { + clearInterval(this.running); + this.running = false; + Deluge.Torrents.getStore().loadData([]); + } + } } Ext.onReady(function(e) { - Deluge.UI.initialize(); + Deluge.UI.initialize(); }); \ No newline at end of file diff --git a/deluge/ui/web/js/Deluge.js b/deluge/ui/web/js/Deluge.js index 530324d21..c17100cf0 100644 --- a/deluge/ui/web/js/Deluge.js +++ b/deluge/ui/web/js/Deluge.js @@ -31,8 +31,12 @@ Copyright: statement from all source files in the program, then also delete it here. */ +// Create the namespace Ext.deluge Ext.namespace('Ext.deluge'); +// Setup the state manager +Ext.state.Manager.setProvider(new Ext.state.CookieProvider()); + (function() { /* Add some helper functions to Ext */ Ext.apply(Function.prototype, {