Author: damoxc

Revision: 5870

Log:
        modify the M.O.M so the API is practically the same as the O.M, so the 
only method that accepts an id is changeId

Diff:
Modified: branches/1.2_RC/deluge/ui/web/js/Deluge.Add.js
===================================================================
--- branches/1.2_RC/deluge/ui/web/js/Deluge.Add.js      2009-10-25 13:42:11 UTC 
(rev 5869)
+++ branches/1.2_RC/deluge/ui/web/js/Deluge.Add.js      2009-10-25 17:48:28 UTC 
(rev 5870)
@@ -76,19 +76,7 @@
             folderSort: true
         });
 
-        this.optionsManager = new Deluge.MultiOptionsManager({
-            defaults: {
-                'add_paused': false,
-                'compact_allocation': false,
-                'download_location': '',
-                'max_connections_per_torrent': -1,
-                'max_download_speed_per_torrent': -1,
-                'max_upload_slots_per_torrent': -1,
-                'max_upload_speed_per_torrent': -1,
-                'prioritize_first_last_pieces': false,
-                'file_priorities': []
-            }
-        });
+        this.optionsManager = new Deluge.MultiOptionsManager();
     
         this.form = this.add({
             xtype: 'form',
@@ -96,7 +84,8 @@
             title: _('Options'),
             bodyStyle: 'padding: 5px;',
             border: false,
-            height: 170
+            height: 170,
+            disabled: true
         });
     
         var fieldset = this.form.add({
@@ -158,28 +147,28 @@
             width: 200,
             defaultType: 'uxspinner'
         });
-        this.optionsManager.bind('max_download_speed_per_torrent', 
fieldset.add({
+        this.optionsManager.bind('max_download_speed', fieldset.add({
             fieldLabel: _('Max Down Speed'),
             /*labelStyle: 'margin-left: 10px',*/
-            name: 'max_download_speed_per_torrent',
+            name: 'max_download_speed',
             width: 60
         }));
-        this.optionsManager.bind('max_upload_speed_per_torrent', fieldset.add({
+        this.optionsManager.bind('max_upload_speed', fieldset.add({
             fieldLabel: _('Max Up Speed'),
             /*labelStyle: 'margin-left: 10px',*/
-            name: 'max_upload_speed_per_torrent',
+            name: 'max_upload_speed',
             width: 60
         }));
-        this.optionsManager.bind('max_connections_per_torrent', fieldset.add({
+        this.optionsManager.bind('max_connections', fieldset.add({
             fieldLabel: _('Max Connections'),
             /*labelStyle: 'margin-left: 10px',*/
-            name: 'max_connections_per_torrent',
+            name: 'max_connections',
             width: 60
         }));
-        this.optionsManager.bind('max_upload_slots_per_torrent', fieldset.add({
+        this.optionsManager.bind('max_upload_slots', fieldset.add({
             fieldLabel: _('Max Upload Slots'),
             /*labelStyle: 'margin-left: 10px',*/
-            name: 'max_upload_slots_per_torrent',
+            name: 'max_upload_slots',
             width: 60
         }));
     
@@ -225,7 +214,10 @@
         Ext.each(Ext.keys(fileIndexes), function(index) {
             priorities[index] = fileIndexes[index];
         });
-        this.optionsManager.set(torrent['info_hash'], 'file_priorities', 
priorities);
+        
+        var oldId = this.optionsManager.changeId(torrent['info_hash'], false);
+        this.optionsManager.set('file_priorities', priorities);
+        this.optionsManager.changeId(oldId, false);
     },
 
     clear: function() {
@@ -249,8 +241,18 @@
 
         Deluge.Client.core.get_config_values(keys, {
             success: function(config) {
-                config['file_priorities'] = [];
-                this.optionsManager.options = config;
+                var options = {
+                    'file_priorities': [],
+                    'add_paused': config.add_paused,
+                    'compact_allocation': config.compact_allocation,
+                    'download_location': config.download_location,
+                    'max_connections': config.max_connections_per_torrent,
+                    'max_download_speed': 
config.max_download_speed_per_torrent,
+                    'max_upload_slots': config.max_upload_slots_per_torrent,
+                    'max_upload_speed': config.max_upload_speed_per_torrent,
+                    'prioritize_first_last_pieces': 
config.prioritize_first_last_pieces
+                }
+                this.optionsManager.options = options;
             },
             scope: this
         });
@@ -261,7 +263,9 @@
     },
 
     getOptions: function(torrentId) {
-        var options = this.optionsManager.get(torrentId);
+        var oldId = this.optionsManager.changeId(torrentId, false);
+        var options = this.optionsManager.get();
+        this.optionsManager.changeId(oldTorrentId, false);
         Ext.each(options['file_priorities'], function(priority, index) {
             options['file_priorities'][index] = (priority) ? 1 : 0;
         });
@@ -276,7 +280,7 @@
     
         this.clearFiles();
         var root = this.files.getRootNode();
-        var priorities = this.optionsManager.get(this.torrentId, 
'file_priorities');
+        var priorities = this.optionsManager.get('file_priorities');
 
         this.walkFileTree(this.torrents[torrentId]['files_tree'], 
function(filename, type, entry, parent) {
             if (type == 'dir') {
@@ -321,7 +325,7 @@
     },
 
     onFolderCheck: function(node, checked) {
-        var priorities = this.optionsManager.get(this.torrentId, 
'file_priorities');
+        var priorities = this.optionsManager.get('file_priorities');
         node.cascade(function(child) {
             if (!child.ui.checkbox) {
                 child.attributes.checked = checked;
@@ -330,13 +334,13 @@
             }
             priorities[child.attributes.fileindex] = checked;
         }, this);
-        this.optionsManager.update(this.torrentId, 'file_priorities', 
priorities);
+        this.optionsManager.update('file_priorities', priorities);
     },
 
     onNodeCheck: function(node, checked) {
-        var priorities = this.optionsManager.get(this.torrentId, 
'file_priorities');
+        var priorities = this.optionsManager.get('file_priorities');
         priorities[node.attributes.fileindex] = checked;
-        this.optionsManager.update(this.torrentId, 'file_priorities', 
priorities);
+        this.optionsManager.update('file_priorities', priorities);
     }
 });
 

Modified: branches/1.2_RC/deluge/ui/web/js/Deluge.Details.Options.js
===================================================================
--- branches/1.2_RC/deluge/ui/web/js/Deluge.Details.Options.js  2009-10-25 
13:42:11 UTC (rev 5869)
+++ branches/1.2_RC/deluge/ui/web/js/Deluge.Details.Options.js  2009-10-25 
17:48:28 UTC (rev 5870)
@@ -369,7 +369,7 @@
        },
        
        reset: function() {
-               if (this.torrentId) this.optionsManager.reset(this.torrentId);
+               if (this.torrentId) this.optionsManager.reset();
        },
        
        update: function(torrentId) {
@@ -388,19 +388,19 @@
        },
        
        onApply: function() {
-               var changed = this.optionsManager.getDirty(this.torrentId);
+               var changed = this.optionsManager.getDirty();
                if (!Ext.isEmpty(changed['prioritize_first_last'])) {
                        var value = changed['prioritize_first_last'];
                        
Deluge.Client.core.set_torrent_prioritize_first_last(this.torrentId, value, {
                                success: function() {
-                                       this.optionsManager.set(this.torrentId, 
'prioritize_first_last', value);
+                                       
this.optionsManager.set('prioritize_first_last', value);
                                },
                                scope: this
                        });
                }
                Deluge.Client.core.set_torrent_options([this.torrentId], 
changed, {
                        success: function() {
-                               this.optionsManager.commit(this.torrentId);
+                               this.optionsManager.commit();
                        },
                        scope: this
                });
@@ -419,8 +419,8 @@
                this.fields['private'].setValue(torrent['private']);
                this.fields['private'].setDisabled(true);
                delete torrent['private'];
-               this.optionsManager.setDefault(this.torrentId, torrent);
-               var stop_at_ratio = this.optionsManager.get(this.torrentId, 
'stop_at_ratio');
+               this.optionsManager.setDefault(torrent);
+               var stop_at_ratio = this.optionsManager.get('stop_at_ratio');
                this.fields.remove_at_ratio.setDisabled(!stop_at_ratio);
                this.fields.stop_ratio.setDisabled(!stop_at_ratio);
        }

Modified: branches/1.2_RC/deluge/ui/web/js/Deluge.MultiOptionsManager.js
===================================================================
--- branches/1.2_RC/deluge/ui/web/js/Deluge.MultiOptionsManager.js      
2009-10-25 13:42:11 UTC (rev 5869)
+++ branches/1.2_RC/deluge/ui/web/js/Deluge.MultiOptionsManager.js      
2009-10-25 17:48:28 UTC (rev 5870)
@@ -48,47 +48,43 @@
         * Changes bound fields to use the specified id.
         * @param {String} id
         */
-       changeId: function(id) {
+       changeId: function(id, updateBinds) {
+               var oldId = this.currentId;
                this.currentId = id;
-               for (var option in this.options) {
-                       if (!this.binds[option]) continue;
-                       Ext.each(this.binds[option], function(bind) {
-                               bind.setValue(this.get(id, option));
-                       }, this);
+               if (updateBinds) {
+                       for (var option in this.options) {
+                               if (!this.binds[option]) continue;
+                               Ext.each(this.binds[option], function(bind) {
+                                       bind.setValue(this.get(option));
+                               }, this);
+                       }
                }
+               return oldId;
        },
 
        /**
         * Changes all the changed values to be the default values
         * @param {String} id
         */
-       commit: function(id) {
-               this.stored[id] = Ext.apply(this.stored[id], this.changed[id]);
-               this.reset(id);
+       commit: function() {
+               this.stored[this.currentId] = 
Ext.apply(this.stored[this.currentId], this.changed[this.currentId]);
+               this.reset();
        },
        
        /**
         * Get the value for an option
-        * @param {String} id
         * @param {String|Array} [option] A single option or an array of 
options to return.
         * @returns {Object} the options value.
         */
        get: function() {
-               var id = arguments[0];
                if (arguments.length == 1) {
-                       var options = {};
-                       for (var option in this.options) {
-                               options[option] = (this.isDirty(id, option)) ? 
this.changed[id][option] : this.getDefault(id, option);
-                       }
-                       return options;
-               } else if (arguments.length == 2) {
-                       var option = arguments[1];
-                       return (this.isDirty(id, option)) ? 
this.changed[id][option] : this.getDefault(id, option);
+                       var option = arguments[0];
+                       return (this.isDirty(option)) ? 
this.changed[this.currentId][option] : this.getDefault(option);
                } else {
                        var options = {};
                        Ext.each(arguments, function(option) {
-                               if (option == id) return;
-                               options[option] = (this.isDirty(id, option)) ? 
this.changed[id][option] : this.getDefault(id, option);
+                               if (!this.has(option)) return;
+                               options[option] = (this.isDirty(option)) ? 
this.changed[this.currentId][option] : this.getDefault(option);
                        }, this);
                        return options;
                }
@@ -96,51 +92,46 @@
 
        /**
         * Get the default value for an option.
-        * @param {String} id
         * @param {String|Array} [option] A single option or an array of 
options to return.
         * @returns {Object} the value of the option
         */
-       getDefault: function(id, option) {
-               return (this.has(id, option)) ? this.stored[id][option] : 
this.options[option];
+       getDefault: function(option) {
+               return (this.has(option)) ? this.stored[this.currentId][option] 
: this.options[option];
        },
 
        /**
         * Returns the dirty (changed) values.
-        * @param {String} id
         * @returns {Object} the changed options
         */
-       getDirty: function(id) {
-               return (this.changed[id]) ? this.changed[id] : {};
+       getDirty: function() {
+               return (this.changed[this.currentId]) ? 
this.changed[this.currentId] : {};
        },
 
        /**
         * Check to see if the option has been changed.
-        * @param {String} id
         * @param {String} option
         * @returns {Boolean} true if the option has been changed, else false.
         */
-       isDirty: function(id, option) {
-               return (this.changed[id] && 
!Ext.isEmpty(this.changed[id][option]));
+       isDirty: function(option) {
+               return (this.changed[this.currentId] && 
!Ext.isEmpty(this.changed[this.currentId][option]));
        },
 
        /**
         * Check to see if an id has had an option set to something other than 
the
         * default value.
-        * @param {String} id
         * @param {String} option
         * @returns {Boolean} true if the id has an option, else false.
         */
-       has: function(id, option) {
-               return (this.stored[id] && 
!Ext.isEmpty(this.stored[id][option]));
+       has: function(option) {
+               return (this.stored[this.currentId] && 
!Ext.isEmpty(this.stored[this.currentId][option]));
        },
 
        /**
         * Reset the options back to the default values for the specified id.
-        * @param {String} id
         */
-       reset: function(id) {
-               if (!this.changed[id]) return;
-               delete this.changed[id];
+       reset: function() {
+               if (!this.changed[this.currentId]) return;
+               delete this.changed[this.currentId];
        },
 
        /**
@@ -149,13 +140,13 @@
         * @param {String} option
         * @param {Object} value The value for the option
         */
-       setDefault: function(id, option, value) {
+       setDefault: function(option, value) {
                if (value === undefined) {
                        for (var key in option) {
-                               this.setDefault(id, key, option[key]);
+                               this.setDefault(key, option[key]);
                        }
                } else {
-                       var oldValue = this.getDefault(id, option);
+                       var oldValue = this.getDefault(option);
                        value = this.convertValueType(oldValue, value);
                        
                        // If the value is the same as the old value there is 
@@ -163,11 +154,11 @@
                        if (oldValue == value) return;
                        
                        // Store the new default
-                       if (!this.stored[id]) this.stored[id] = {};
-                       this.stored[id][option] = value;
+                       if (!this.stored[this.currentId]) 
this.stored[this.currentId] = {};
+                       this.stored[this.currentId][option] = value;
                        
-                       if (!this.isDirty(id, option)) {
-                               this.fireEvent('changed', id, option, value, 
oldValue);
+                       if (!this.isDirty(option)) {
+                               this.fireEvent('changed', this.currentId, 
option, value, oldValue);
                        }
                }
        },
@@ -178,27 +169,27 @@
         * @param {String|Object} option or options to update
         * @param {Object} [value];
         */
-       update: function(id, option, value) {
+       update: function(option, value) {
                if (value === undefined) {
                        for (var key in option) {
-                               this.update(id, key, option[key]);
+                               this.update(key, option[key]);
                        }
                } else {
-                       if (!this.changed[id]) this.changed[id] = {};
+                       if (!this.changed[this.currentId]) 
this.changed[this.currentId] = {};
 
-                       var defaultValue = this.getDefault(id, option);
+                       var defaultValue = this.getDefault(option);
                        value = this.convertValueType(defaultValue, value);
                        
-                       var oldValue = this.get(id, option);
+                       var oldValue = this.get(option);
                        if (oldValue == value) return;
 
                        if (defaultValue == value) {
-                               if (this.isDirty(id, option)) delete 
this.changed[id][option];
-                               this.fireEvent('changed', id, option, value, 
oldValue);
+                               if (this.isDirty(option)) delete 
this.changed[this.currentId][option];
+                               this.fireEvent('changed', this.currentId, 
option, value, oldValue);
                                return;
                        } else {
-                               this.changed[id][option] = value;
-                               this.fireEvent('changed', id, option, value, 
oldValue);
+                               this.changed[this.currentId][option] = value;
+                               this.fireEvent('changed', this.currentId, 
option, value, oldValue);
                        }
                }
        },
@@ -212,7 +203,7 @@
         * @private
         */
        onFieldChange: function(field, event) {
-               this.update(this.currentId, field._doption, field.getValue());
+               this.update(field._doption, field.getValue());
        },
 
        onChange: function(id, option, newValue, oldValue) {

Modified: trunk/deluge/ui/web/js/Deluge.Add.js
===================================================================
--- trunk/deluge/ui/web/js/Deluge.Add.js        2009-10-25 13:42:11 UTC (rev 
5869)
+++ trunk/deluge/ui/web/js/Deluge.Add.js        2009-10-25 17:48:28 UTC (rev 
5870)
@@ -76,19 +76,7 @@
             folderSort: true
         });
 
-        this.optionsManager = new Deluge.MultiOptionsManager({
-            defaults: {
-                'add_paused': false,
-                'compact_allocation': false,
-                'download_location': '',
-                'max_connections_per_torrent': -1,
-                'max_download_speed_per_torrent': -1,
-                'max_upload_slots_per_torrent': -1,
-                'max_upload_speed_per_torrent': -1,
-                'prioritize_first_last_pieces': false,
-                'file_priorities': []
-            }
-        });
+        this.optionsManager = new Deluge.MultiOptionsManager();
     
         this.form = this.add({
             xtype: 'form',
@@ -96,7 +84,8 @@
             title: _('Options'),
             bodyStyle: 'padding: 5px;',
             border: false,
-            height: 170
+            height: 170,
+            disabled: true
         });
     
         var fieldset = this.form.add({
@@ -158,28 +147,28 @@
             width: 200,
             defaultType: 'uxspinner'
         });
-        this.optionsManager.bind('max_download_speed_per_torrent', 
fieldset.add({
+        this.optionsManager.bind('max_download_speed', fieldset.add({
             fieldLabel: _('Max Down Speed'),
             /*labelStyle: 'margin-left: 10px',*/
-            name: 'max_download_speed_per_torrent',
+            name: 'max_download_speed',
             width: 60
         }));
-        this.optionsManager.bind('max_upload_speed_per_torrent', fieldset.add({
+        this.optionsManager.bind('max_upload_speed', fieldset.add({
             fieldLabel: _('Max Up Speed'),
             /*labelStyle: 'margin-left: 10px',*/
-            name: 'max_upload_speed_per_torrent',
+            name: 'max_upload_speed',
             width: 60
         }));
-        this.optionsManager.bind('max_connections_per_torrent', fieldset.add({
+        this.optionsManager.bind('max_connections', fieldset.add({
             fieldLabel: _('Max Connections'),
             /*labelStyle: 'margin-left: 10px',*/
-            name: 'max_connections_per_torrent',
+            name: 'max_connections',
             width: 60
         }));
-        this.optionsManager.bind('max_upload_slots_per_torrent', fieldset.add({
+        this.optionsManager.bind('max_upload_slots', fieldset.add({
             fieldLabel: _('Max Upload Slots'),
             /*labelStyle: 'margin-left: 10px',*/
-            name: 'max_upload_slots_per_torrent',
+            name: 'max_upload_slots',
             width: 60
         }));
     
@@ -225,7 +214,10 @@
         Ext.each(Ext.keys(fileIndexes), function(index) {
             priorities[index] = fileIndexes[index];
         });
-        this.optionsManager.set(torrent['info_hash'], 'file_priorities', 
priorities);
+        
+        var oldId = this.optionsManager.changeId(torrent['info_hash'], false);
+        this.optionsManager.set('file_priorities', priorities);
+        this.optionsManager.changeId(oldId, false);
     },
 
     clear: function() {
@@ -249,8 +241,18 @@
 
         Deluge.Client.core.get_config_values(keys, {
             success: function(config) {
-                config['file_priorities'] = [];
-                this.optionsManager.options = config;
+                var options = {
+                    'file_priorities': [],
+                    'add_paused': config.add_paused,
+                    'compact_allocation': config.compact_allocation,
+                    'download_location': config.download_location,
+                    'max_connections': config.max_connections_per_torrent,
+                    'max_download_speed': 
config.max_download_speed_per_torrent,
+                    'max_upload_slots': config.max_upload_slots_per_torrent,
+                    'max_upload_speed': config.max_upload_speed_per_torrent,
+                    'prioritize_first_last_pieces': 
config.prioritize_first_last_pieces
+                }
+                this.optionsManager.options = options;
             },
             scope: this
         });
@@ -261,7 +263,9 @@
     },
 
     getOptions: function(torrentId) {
-        var options = this.optionsManager.get(torrentId);
+        var oldId = this.optionsManager.changeId(torrentId, false);
+        var options = this.optionsManager.get();
+        this.optionsManager.changeId(oldTorrentId, false);
         Ext.each(options['file_priorities'], function(priority, index) {
             options['file_priorities'][index] = (priority) ? 1 : 0;
         });
@@ -276,7 +280,7 @@
     
         this.clearFiles();
         var root = this.files.getRootNode();
-        var priorities = this.optionsManager.get(this.torrentId, 
'file_priorities');
+        var priorities = this.optionsManager.get('file_priorities');
 
         this.walkFileTree(this.torrents[torrentId]['files_tree'], 
function(filename, type, entry, parent) {
             if (type == 'dir') {
@@ -321,7 +325,7 @@
     },
 
     onFolderCheck: function(node, checked) {
-        var priorities = this.optionsManager.get(this.torrentId, 
'file_priorities');
+        var priorities = this.optionsManager.get('file_priorities');
         node.cascade(function(child) {
             if (!child.ui.checkbox) {
                 child.attributes.checked = checked;
@@ -330,13 +334,13 @@
             }
             priorities[child.attributes.fileindex] = checked;
         }, this);
-        this.optionsManager.update(this.torrentId, 'file_priorities', 
priorities);
+        this.optionsManager.update('file_priorities', priorities);
     },
 
     onNodeCheck: function(node, checked) {
-        var priorities = this.optionsManager.get(this.torrentId, 
'file_priorities');
+        var priorities = this.optionsManager.get('file_priorities');
         priorities[node.attributes.fileindex] = checked;
-        this.optionsManager.update(this.torrentId, 'file_priorities', 
priorities);
+        this.optionsManager.update('file_priorities', priorities);
     }
 });
 

Modified: trunk/deluge/ui/web/js/Deluge.Details.Options.js
===================================================================
--- trunk/deluge/ui/web/js/Deluge.Details.Options.js    2009-10-25 13:42:11 UTC 
(rev 5869)
+++ trunk/deluge/ui/web/js/Deluge.Details.Options.js    2009-10-25 17:48:28 UTC 
(rev 5870)
@@ -369,7 +369,7 @@
        },
        
        reset: function() {
-               if (this.torrentId) this.optionsManager.reset(this.torrentId);
+               if (this.torrentId) this.optionsManager.reset();
        },
        
        update: function(torrentId) {
@@ -388,19 +388,19 @@
        },
        
        onApply: function() {
-               var changed = this.optionsManager.getDirty(this.torrentId);
+               var changed = this.optionsManager.getDirty();
                if (!Ext.isEmpty(changed['prioritize_first_last'])) {
                        var value = changed['prioritize_first_last'];
                        
Deluge.Client.core.set_torrent_prioritize_first_last(this.torrentId, value, {
                                success: function() {
-                                       this.optionsManager.set(this.torrentId, 
'prioritize_first_last', value);
+                                       
this.optionsManager.set('prioritize_first_last', value);
                                },
                                scope: this
                        });
                }
                Deluge.Client.core.set_torrent_options([this.torrentId], 
changed, {
                        success: function() {
-                               this.optionsManager.commit(this.torrentId);
+                               this.optionsManager.commit();
                        },
                        scope: this
                });
@@ -419,8 +419,8 @@
                this.fields['private'].setValue(torrent['private']);
                this.fields['private'].setDisabled(true);
                delete torrent['private'];
-               this.optionsManager.setDefault(this.torrentId, torrent);
-               var stop_at_ratio = this.optionsManager.get(this.torrentId, 
'stop_at_ratio');
+               this.optionsManager.setDefault(torrent);
+               var stop_at_ratio = this.optionsManager.get('stop_at_ratio');
                this.fields.remove_at_ratio.setDisabled(!stop_at_ratio);
                this.fields.stop_ratio.setDisabled(!stop_at_ratio);
        }

Modified: trunk/deluge/ui/web/js/Deluge.MultiOptionsManager.js
===================================================================
--- trunk/deluge/ui/web/js/Deluge.MultiOptionsManager.js        2009-10-25 
13:42:11 UTC (rev 5869)
+++ trunk/deluge/ui/web/js/Deluge.MultiOptionsManager.js        2009-10-25 
17:48:28 UTC (rev 5870)
@@ -48,47 +48,43 @@
         * Changes bound fields to use the specified id.
         * @param {String} id
         */
-       changeId: function(id) {
+       changeId: function(id, updateBinds) {
+               var oldId = this.currentId;
                this.currentId = id;
-               for (var option in this.options) {
-                       if (!this.binds[option]) continue;
-                       Ext.each(this.binds[option], function(bind) {
-                               bind.setValue(this.get(id, option));
-                       }, this);
+               if (updateBinds) {
+                       for (var option in this.options) {
+                               if (!this.binds[option]) continue;
+                               Ext.each(this.binds[option], function(bind) {
+                                       bind.setValue(this.get(option));
+                               }, this);
+                       }
                }
+               return oldId;
        },
 
        /**
         * Changes all the changed values to be the default values
         * @param {String} id
         */
-       commit: function(id) {
-               this.stored[id] = Ext.apply(this.stored[id], this.changed[id]);
-               this.reset(id);
+       commit: function() {
+               this.stored[this.currentId] = 
Ext.apply(this.stored[this.currentId], this.changed[this.currentId]);
+               this.reset();
        },
        
        /**
         * Get the value for an option
-        * @param {String} id
         * @param {String|Array} [option] A single option or an array of 
options to return.
         * @returns {Object} the options value.
         */
        get: function() {
-               var id = arguments[0];
                if (arguments.length == 1) {
-                       var options = {};
-                       for (var option in this.options) {
-                               options[option] = (this.isDirty(id, option)) ? 
this.changed[id][option] : this.getDefault(id, option);
-                       }
-                       return options;
-               } else if (arguments.length == 2) {
-                       var option = arguments[1];
-                       return (this.isDirty(id, option)) ? 
this.changed[id][option] : this.getDefault(id, option);
+                       var option = arguments[0];
+                       return (this.isDirty(option)) ? 
this.changed[this.currentId][option] : this.getDefault(option);
                } else {
                        var options = {};
                        Ext.each(arguments, function(option) {
-                               if (option == id) return;
-                               options[option] = (this.isDirty(id, option)) ? 
this.changed[id][option] : this.getDefault(id, option);
+                               if (!this.has(option)) return;
+                               options[option] = (this.isDirty(option)) ? 
this.changed[this.currentId][option] : this.getDefault(option);
                        }, this);
                        return options;
                }
@@ -96,51 +92,46 @@
 
        /**
         * Get the default value for an option.
-        * @param {String} id
         * @param {String|Array} [option] A single option or an array of 
options to return.
         * @returns {Object} the value of the option
         */
-       getDefault: function(id, option) {
-               return (this.has(id, option)) ? this.stored[id][option] : 
this.options[option];
+       getDefault: function(option) {
+               return (this.has(option)) ? this.stored[this.currentId][option] 
: this.options[option];
        },
 
        /**
         * Returns the dirty (changed) values.
-        * @param {String} id
         * @returns {Object} the changed options
         */
-       getDirty: function(id) {
-               return (this.changed[id]) ? this.changed[id] : {};
+       getDirty: function() {
+               return (this.changed[this.currentId]) ? 
this.changed[this.currentId] : {};
        },
 
        /**
         * Check to see if the option has been changed.
-        * @param {String} id
         * @param {String} option
         * @returns {Boolean} true if the option has been changed, else false.
         */
-       isDirty: function(id, option) {
-               return (this.changed[id] && 
!Ext.isEmpty(this.changed[id][option]));
+       isDirty: function(option) {
+               return (this.changed[this.currentId] && 
!Ext.isEmpty(this.changed[this.currentId][option]));
        },
 
        /**
         * Check to see if an id has had an option set to something other than 
the
         * default value.
-        * @param {String} id
         * @param {String} option
         * @returns {Boolean} true if the id has an option, else false.
         */
-       has: function(id, option) {
-               return (this.stored[id] && 
!Ext.isEmpty(this.stored[id][option]));
+       has: function(option) {
+               return (this.stored[this.currentId] && 
!Ext.isEmpty(this.stored[this.currentId][option]));
        },
 
        /**
         * Reset the options back to the default values for the specified id.
-        * @param {String} id
         */
-       reset: function(id) {
-               if (!this.changed[id]) return;
-               delete this.changed[id];
+       reset: function() {
+               if (!this.changed[this.currentId]) return;
+               delete this.changed[this.currentId];
        },
 
        /**
@@ -149,13 +140,13 @@
         * @param {String} option
         * @param {Object} value The value for the option
         */
-       setDefault: function(id, option, value) {
+       setDefault: function(option, value) {
                if (value === undefined) {
                        for (var key in option) {
-                               this.setDefault(id, key, option[key]);
+                               this.setDefault(key, option[key]);
                        }
                } else {
-                       var oldValue = this.getDefault(id, option);
+                       var oldValue = this.getDefault(option);
                        value = this.convertValueType(oldValue, value);
                        
                        // If the value is the same as the old value there is 
@@ -163,11 +154,11 @@
                        if (oldValue == value) return;
                        
                        // Store the new default
-                       if (!this.stored[id]) this.stored[id] = {};
-                       this.stored[id][option] = value;
+                       if (!this.stored[this.currentId]) 
this.stored[this.currentId] = {};
+                       this.stored[this.currentId][option] = value;
                        
-                       if (!this.isDirty(id, option)) {
-                               this.fireEvent('changed', id, option, value, 
oldValue);
+                       if (!this.isDirty(option)) {
+                               this.fireEvent('changed', this.currentId, 
option, value, oldValue);
                        }
                }
        },
@@ -178,27 +169,27 @@
         * @param {String|Object} option or options to update
         * @param {Object} [value];
         */
-       update: function(id, option, value) {
+       update: function(option, value) {
                if (value === undefined) {
                        for (var key in option) {
-                               this.update(id, key, option[key]);
+                               this.update(key, option[key]);
                        }
                } else {
-                       if (!this.changed[id]) this.changed[id] = {};
+                       if (!this.changed[this.currentId]) 
this.changed[this.currentId] = {};
 
-                       var defaultValue = this.getDefault(id, option);
+                       var defaultValue = this.getDefault(option);
                        value = this.convertValueType(defaultValue, value);
                        
-                       var oldValue = this.get(id, option);
+                       var oldValue = this.get(option);
                        if (oldValue == value) return;
 
                        if (defaultValue == value) {
-                               if (this.isDirty(id, option)) delete 
this.changed[id][option];
-                               this.fireEvent('changed', id, option, value, 
oldValue);
+                               if (this.isDirty(option)) delete 
this.changed[this.currentId][option];
+                               this.fireEvent('changed', this.currentId, 
option, value, oldValue);
                                return;
                        } else {
-                               this.changed[id][option] = value;
-                               this.fireEvent('changed', id, option, value, 
oldValue);
+                               this.changed[this.currentId][option] = value;
+                               this.fireEvent('changed', this.currentId, 
option, value, oldValue);
                        }
                }
        },
@@ -212,7 +203,7 @@
         * @private
         */
        onFieldChange: function(field, event) {
-               this.update(this.currentId, field._doption, field.getValue());
+               this.update(field._doption, field.getValue());
        },
 
        onChange: function(id, option, newValue, oldValue) {



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"deluge-commit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/deluge-commit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to