Changeset 991

Show
Ignore:
Timestamp:
07/26/08 03:04:08 (1 month ago)
Author:
MaierMan
Message:

Modularize preferences

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/chrome/content/about/notice.xul

    r985 r991  
    1818        style="padding: 0px 0px 3px 0px;" 
    1919> 
    20         <script type="application/javascript" src="chrome://dta/content/common/overlayFunctions.js"/> 
    21         <script type="application/javascript;version=1.7" src="chrome://dta/content/common/internalFunctions.js" /> 
    2220        <script type="application/javascript"><![CDATA[ 
    23          
     21                
    2422                function load(evt) { 
    2523                        if (evt.originalTarget.location.href.search(/about\.html$/) != -1) { 
     
    3028                } 
    3129                function accept() { 
     30                        let Preferences = {}; 
     31                        Components.utils.import('resource://dta/preferences.jsm', Preferences); 
     32 
    3233                        var params = window.arguments[0].QueryInterface(Components.interfaces.nsIDialogParamBlock); 
    3334                        var version = params.GetString(0); 
    34                         DTA_preferences.setDTA('version', version); 
     35                        try { 
     36                                Preferences.setDTA('version', version); 
     37                        } 
     38                        catch (ex) { 
     39                                alert(ex); 
     40                        } 
    3541                        return true; 
    3642                } 
  • trunk/chrome/content/common/overlayFunctions.js

    r985 r991  
    7474} 
    7575 
    76  // Preferences 
    77 var DTA_preferences = { 
    78         _pref: Components.classes['@mozilla.org/preferences-service;1'] 
    79                 .getService(Components.interfaces.nsIPrefBranch), 
    80         _conv: { 
    81                 'boolean': 'BoolPref', 
    82                 'string': 'CharPref', 
    83                 'number': 'IntPref', 
    84                 'undefined': 'CharPref' 
    85         }, 
    86         get: function DP_get(key, def) { 
    87                 if (!this._conv[typeof(def)]) { 
    88                         def = def.toSource(); 
    89                 } 
    90                 try { 
    91                         return this._pref['get' + this._conv[typeof(def)]](key); 
    92                 } catch (ex) { 
    93                         //Components.utils.reportError('DTAP: key miss: ' + key + ' / set' + this._conv[typeof(def)]); 
    94                         //this._pref['set' + this._conv[typeof(def)]](key, def); 
    95                         return def; 
    96                 } 
    97         }, 
    98         getDTA: function DP_getDTA(key, def) { 
    99                 return this.get('extensions.dta.' + key, def); 
    100         }, 
    101         set: function(key, value) { 
    102                 if (!this._conv[typeof(value)]) { 
    103                         value = value.toSource(); 
    104                 } 
    105                 this._pref['set' + this._conv[typeof(value)]](key, value); 
    106         }, 
    107         setDTA: function DP_setDTA(key, value) { 
    108                 return this.set('extensions.dta.' + key, value); 
    109         }, 
    110         getMultiByte: function DP_getMultiByte(key, def) { 
    111                 try { 
    112                         var rv = this._pref.getComplexValue( 
    113                                 key, 
    114                                 Components.interfaces.nsISupportsString 
    115                         ); 
    116                         return rv.data; 
    117                 } 
    118                 catch (ex) { 
    119                         return def; 
    120                 } 
    121         }, 
    122         getMultiByteDTA: function DP_getMultiByteDTA(key, def) { 
    123                 return this.getMultiByte('extensions.dta.' + key, def); 
    124         }, 
    125         setMultiByte: function DP_setMultiByte(key, value) { 
    126                 var str = Components.classes["@mozilla.org/supports-string;1"] 
    127                         .createInstance(Components.interfaces.nsISupportsString); 
    128                 str.data = value; 
    129                 this._pref.setComplexValue( 
    130                         key, 
    131                         Components.interfaces.nsISupportsString, 
    132                         str 
    133                 ); 
    134         }, 
    135         setMultiByteDTA: function DP_setMultiByteDTA(key, value) { 
    136                 this.setMultiByte('extensions.dta.' + key, value); 
    137         }, 
    138         reset: function DP_reset(key) { 
    139                 try { 
    140                         return this._pref.clearUserPref(key); 
    141                 } catch (ex) { 
    142                         return false; 
    143                 } 
    144         }, 
    145         resetDTA: function DP_resetDTA(key) { 
    146                 if (key.search(/^extensions\.dta\./) != 0) { 
    147                         key = 'extensions.dta.' + key; 
    148                 } 
    149                 return this.reset(key); 
    150         }, 
    151         resetBranch: function DP_resetBranch(key) { 
    152                 // BEWARE: not yet implemented in XPCOM 1.8/trunk. 
    153                 var branch = 'extensions.dta.' + key; 
    154                 var c = {value: 0}; 
    155                 var prefs = this._pref.getChildList(branch, c); 
    156                 for (var i = 0; i < c.value; ++i) { 
    157                         this.resetDTA(prefs[i]); 
    158                 } 
    159         }, 
    160         resetAll: function DP_reset() { 
    161                 this.resetBranch(''); 
    162         }, 
    163         addObserver: function DP_addObserver(branch, obj) { 
    164                 this._pref 
    165                         .QueryInterface(Components.interfaces.nsIPrefBranch2) 
    166                         .addObserver(branch, obj, true); 
    167         }, 
    168         removeObserver: function DP_removeObserver(branch, obj) { 
    169                 this._pref 
    170                         .QueryInterface(Components.interfaces.nsIPrefBranch2) 
    171                         .removeObserver(branch, obj); 
    172         } 
    173 }; 
     76 
     77var DTA_preferences = {}; 
     78Components.utils.import('resource://dta/preferences.jsm', DTA_preferences); 
    17479 
    17580function DTA_getProfileFile(fileName) { 
  • trunk/chrome/content/preferences/prefs.js

    r990 r991  
    431431                } 
    432432                try { 
    433                         Preferences.resetAll(); 
     433                        Preferences.resetAllDTA(); 
    434434                } catch(ex) { 
    435435                        // XXX 
  • trunk/components/migrationService.js

    r988 r991  
    4242include('chrome://dta/content/common/xpcom.jsm'); 
    4343 
     44var Preferences = {}; 
     45 
    4446var MigrationService = { 
    4547        _init: function MM_init() { 
     
    5355                let DTA = {}; 
    5456                Components.utils.import('resource://dta/version.jsm', DTA);              
     57                Components.utils.import('resource://dta/preferences.jsm', Preferences); 
    5558                include("chrome://dta/content/common/overlayFunctions.js"); 
    5659                 
    5760                try { 
    5861                        debug("current " + DTA.VERSION); 
    59                         var vc = Components.classes["@mozilla.org/xpcom/version-comparator;1"] 
    60                                 .getService(Components.interfaces.nsIVersionComparator); 
     62                        var vc = Cc["@mozilla.org/xpcom/version-comparator;1"] 
     63                                .getService(Ci.nsIVersionComparator); 
    6164                 
    62                         var lastVersion = DTA_preferences.getDTA('version', '0'); 
     65                        var lastVersion = Preferences.getDTA('version', '0'); 
    6366                        if (0 == vc.compare(DTA.VERSION, lastVersion)) { 
    6467                                return; 
     
    8891                        debug("MigrationManager:", ex); 
    8992                        try { 
    90                                 DTA_preferences.resetDTA("version"); 
     93                                Preferences.resetDTA("version"); 
    9194                        } 
    9295                        catch (ex) { 
     
    101104                        } 
    102105                        catch (ex) { 
    103                                 error('MigrationManager: failed to migrate ' + e + ", " + ex); 
     106                                debug('MigrationManager: failed to migrate ' + e, ex); 
    104107                        } 
    105108                } 
     
    131134                        ['numistance', 'counter', 0] 
    132135                ]; 
    133                 for each (let e in toMigrate) { 
    134                         try { 
    135                                 let oldName = e[0], newName = e[1], defaultValue = null; 
    136                                 if (e.length == 3) { 
    137                                         defaultValue = e[2]; 
    138                                 } 
    139                                 let nv = DTA_preferences.getDTA(newName, defaultValue); 
    140                                 let ov = DTA_preferences.getDTA(oldName, nv); 
     136                for each (let [oldName, newName, defaultValue] in toMigrate) { 
     137                        try { 
     138                                let nv = Preferences.getDTA(newName, defaultValue); 
     139                                let ov = Preferences.getDTA(oldName, nv); 
    141140                                if (ov != nv) {  
    142                                         DTA_preferences.setDTA(newName, ov); 
    143                                 } 
    144                         } 
    145                         catch (ex) { 
    146                                 error('MM: failed ' + newName + ", " + ex); 
     141                                        Preferences.setDTA(newName, ov); 
     142                                } 
     143                                Preferences.reset(oldName);                              
     144                        } 
     145                        catch (ex) { 
     146                                debug('MM: failed ' + newName + ", ", ex); 
    147147                        } 
    148148                } 
     
    152152        _migrateResetMaxConnections: function() { 
    153153                debug("resetting connection prefs"); 
    154                 ['network.http.max-connections', 'network.http.max-connections-per-server', 'network.http.max-persistent-connections-per-server'].forEach( 
    155                         function(e) { 
    156                                 DTA_preferences.reset(e); 
    157                         } 
    158                 ); 
     154                for each (let e in ['network.http.max-connections', 'network.http.max-connections-per-server', 'network.http.max-persistent-connections-per-server']) { 
     155                        Preferences.reset(e); 
     156                } 
    159157        }, 
    160158         
     
    185183                        var name = 'context.' + children[i].slice(0, -8); 
    186184                        try { 
    187                                 var reg = DTA_preferences.getMultiByteDTA(name + '.filter', ''); 
     185                                var reg = Preferences.getMultiByteDTA(name + '.filter', ''); 
    188186                                if (-1 != defFilters.indexOf(reg) || !reg.length) { 
    189187                                        continue; 
    190188                                } 
    191                                 var label = DTA_preferences.getMultiByteDTA(name + '.caption', 'imported'); 
    192                                 var active = DTA_preferences.getDTA(name + '.checked', false); 
     189                                var label = Preferences.getMultiByteDTA(name + '.caption', 'imported'); 
     190                                var active = Preferences.getDTA(name + '.checked', false); 
    193191                                var type = 0; 
    194                                 if (DTA_preferences.getDTA(name + '.isImageFilter', false)) { 
     192                                if (Preferences.getDTA(name + '.isImageFilter', false)) { 
    195193                                        type |= IMAGE_FILTER; 
    196194                                } 
    197                                 if (DTA_preferences.getDTA(name + '.isLinkFilter', false)) { 
     195                                if (Preferences.getDTA(name + '.isLinkFilter', false)) { 
    198196                                        type |= LINK_FILTER; 
    199197                                } 
     
    201199                        } 
    202200                        catch (ex) { 
    203                                 error("failed to migrate filter," + ex); 
     201                                debug("failed to migrate filter", ex); 
    204202                        } 
    205203                } 
     
    211209                for each (let e in ['renaming', 'filter', 'directory']) { 
    212210                        try { 
    213                                 DTA_preferences.resetDTA(e); 
     211                                Preferences.resetDTA(e); 
    214212                        } 
    215213                        catch (ex) { 
     
    217215                        } 
    218216                        try { 
    219                                 let cv = DTA_preferences.getMultiByteDTA('dropdown.' + e + '-history', null); 
     217                                let cv = Preferences.getMultiByteDTA('dropdown.' + e + '-history', null); 
    220218                                if (cv == null) { 
    221219                                        return; 
    222220                                } 
    223221                                cv = cv.split('|@|'); 
    224                                 DTA_preferences.setMultiByteDTA(e, cv.toSource()); 
    225                         } 
    226                         catch (ex) { 
    227                                 error("failed to migrate dropdown " + e + ", " + ex); 
     222                                Preferences.setMultiByteDTA(e, cv.toSource()); 
     223                        } 
     224                        catch (ex) { 
     225                                debug("failed to migrate dropdown " + e, ex); 
    228226                        } 
    229227                } 
     
    232230        // all: remove all prefs 
    233231        _migrateRemove: function MM_migrateRemove() { 
    234                 ['context.', 'tool.', 'dropdown.', 'windows.', 'rename.'].forEach(function(e) { DTA_preferences.resetBranch(e); }); 
     232                for each (let e in ['context.', 'tool.', 'dropdown.', 'windows.', 'rename.']) { 
     233                        Preferences.resetBranchDTA(e); 
     234                } 
    235235        }, 
    236236