Changeset 509348 for modules/vI_prefs.js
- Timestamp:
- Nov 3, 2014, 12:35:40 PM (8 years ago)
- Branches:
- ng_0.9
- Children:
- 7204cb
- Parents:
- 3c9c29
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
modules/vI_prefs.js
r3c9c29 r509348 25 25 var EXPORTED_SYMBOLS = ["vIprefs", "prefroot"] 26 26 27 const {classes: Cc, interfaces: Ci, utils: Cu, results : Cr} = Components; 27 const { 28 classes: Cc, 29 interfaces: Ci, 30 utils: Cu, 31 results: Cr 32 } = Components; 28 33 29 34 Cu.import("resource://v_identity/vI_log.js"); … … 44 49 // even without influencing the global pref settings 45 50 var vIprefs = { 46 _localPrefs: [], // array to store accessed prefs (and enable to change them) 47 _localObservers: [], // array of local observers { pref: aPrefName, observer: aFunction } 48 49 _retrievePref: function(aPrefName) { 50 switch (vIprefroot.getPrefType(aPrefName)) { 51 case vIprefroot.PREF_STRING: 52 this._localPrefs[aPrefName] = vIprefroot.getCharPref(aPrefName); 53 break; 54 case vIprefroot.PREF_INT: 55 this._localPrefs[aPrefName] = vIprefroot.getIntPref(aPrefName); 56 break; 57 case vIprefroot.PREF_BOOL: 58 this._localPrefs[aPrefName] = vIprefroot.getBoolPref(aPrefName); 59 break; 60 case vIprefroot.PREF_INVALID: 61 Log.error("_retrievePref pref '" + aPrefName + "' not available"); 62 this._localPrefs[aPrefName] = null; 51 _localPrefs: [], // array to store accessed prefs (and enable to change them) 52 _localObservers: [], // array of local observers { pref: aPrefName, observer: aFunction } 53 54 _retrievePref: function (aPrefName) { 55 switch (vIprefroot.getPrefType(aPrefName)) { 56 case vIprefroot.PREF_STRING: 57 this._localPrefs[aPrefName] = vIprefroot.getCharPref(aPrefName); 58 break; 59 case vIprefroot.PREF_INT: 60 this._localPrefs[aPrefName] = vIprefroot.getIntPref(aPrefName); 61 break; 62 case vIprefroot.PREF_BOOL: 63 this._localPrefs[aPrefName] = vIprefroot.getBoolPref(aPrefName); 64 break; 65 case vIprefroot.PREF_INVALID: 66 Log.error("_retrievePref pref '" + aPrefName + "' not available"); 67 this._localPrefs[aPrefName] = null; 68 } 69 }, 70 71 _storePref: function (aPrefName) { 72 switch (vIprefroot.getPrefType(aPrefName)) { 73 case vIprefroot.PREF_STRING: 74 vIprefroot.setCharPref(aPrefName, this._localPrefs[aPrefName]); 75 break; 76 case vIprefroot.PREF_INT: 77 vIprefroot.setIntPref(aPrefName, this._localPrefs[aPrefName]); 78 break; 79 case vIprefroot.PREF_BOOL: 80 vIprefroot.setBoolPref(aPrefName, this._localPrefs[aPrefName]); 81 break; 82 case vIprefroot.PREF_INVALID: 83 Log.error("_storePref pref '" + aPrefName + "' not available"); 84 } 85 }, 86 87 get: function (aPrefName) { 88 if (!(aPrefName in this._localPrefs)) 89 this._retrievePref(aPrefName); 90 return this._localPrefs[aPrefName]; 91 }, 92 set: function (aPrefName, aPrefValue) { 93 if (!(aPrefName in this._localPrefs)) 94 this._retrievePref(aPrefName); 95 this._localPrefs[aPrefName] = aPrefValue; 96 // Log.debug("changed pref " + aPrefName + " to " + aPrefValue) 97 for each(let [, prefObserver] in Iterator(this._localObservers)) { 98 // Log.debug("check prefobserver " + prefObserver.pref + " against " + aPrefName) 99 if (prefObserver.pref == aPrefName) { 100 prefObserver.observe(prefObserver.context, aPrefValue, "nsPref:changed", aPrefName); 63 101 } 64 }, 65 66 _storePref: function(aPrefName) { 67 switch (vIprefroot.getPrefType(aPrefName)) { 68 case vIprefroot.PREF_STRING: 69 vIprefroot.setCharPref(aPrefName, this._localPrefs[aPrefName]); 70 break; 71 case vIprefroot.PREF_INT: 72 vIprefroot.setIntPref(aPrefName, this._localPrefs[aPrefName]); 73 break; 74 case vIprefroot.PREF_BOOL: 75 vIprefroot.setBoolPref(aPrefName, this._localPrefs[aPrefName]); 76 break; 77 case vIprefroot.PREF_INVALID: 78 Log.error("_storePref pref '" + aPrefName + "' not available"); 102 } 103 }, 104 commit: function (aPrefName, aPrefValue) { 105 if (aPrefValue) 106 this.set(aPrefName, aPrefValue); 107 if (aPrefName in this._localPrefs) 108 this._storePref(aPrefName); 109 }, 110 clearUserPref: function (aPrefName) { 111 Log.error(Colors.red, "XXXX not yet implemented clearUserPref!", Colors.default); 112 }, 113 addObserver: function (aPrefName, aFunction, aSelf) { 114 this._localObservers.push({ 115 pref: aPrefName, 116 observe: aFunction, 117 context: aSelf 118 }); 119 // Log.debug("added observer for " + aPrefName); 120 }, 121 removeObserver: function (aPrefName, aFunction) { 122 for each(let [i, prefObserver] in Iterator(this._localObservers)) { 123 if (prefObserver.pref == aPrefName && prefObserver.observe == aFunction) { 124 this._localObservers.splice(i, 1) 125 break; 79 126 } 80 }, 81 82 get: function(aPrefName) { 83 if (!(aPrefName in this._localPrefs)) 84 this._retrievePref(aPrefName); 85 return this._localPrefs[aPrefName]; 86 }, 87 set: function(aPrefName, aPrefValue) { 88 if (!(aPrefName in this._localPrefs)) 89 this._retrievePref(aPrefName); 90 this._localPrefs[aPrefName] = aPrefValue; 91 // Log.debug("changed pref " + aPrefName + " to " + aPrefValue) 92 for each (let [, prefObserver] in Iterator(this._localObservers)) { 93 // Log.debug("check prefobserver " + prefObserver.pref + " against " + aPrefName) 94 if (prefObserver.pref == aPrefName) { 95 prefObserver.observe(prefObserver.context, aPrefValue, "nsPref:changed", aPrefName); 96 } 127 } 128 }, 129 observe: function (subject, topic, aPrefName) { 130 Log.debug("prefChange observed : " + aPrefName) 131 this._retrievePref(aPrefName); 132 for each(let [, prefObserver] in Iterator(this._localObservers)) { 133 if (prefObserver.pref == aPrefName) { 134 // Log.debug("found observer, calling : " + prefObserver.observe) 135 prefObserver.observe(prefObserver.context, subject, topic, aPrefName); 136 // Log.debug("found observer, calling : " + prefObserver.observe + " done") 97 137 } 98 }, 99 commit: function(aPrefName, aPrefValue) { 100 if (aPrefValue) 101 this.set(aPrefName, aPrefValue); 102 if (aPrefName in this._localPrefs) 103 this._storePref(aPrefName); 104 }, 105 clearUserPref: function(aPrefName) { 106 Log.error(Colors.red, "XXXX not yet implemented clearUserPref!", Colors.default); 107 }, 108 addObserver: function(aPrefName, aFunction, aSelf) { 109 this._localObservers.push({ pref: aPrefName, observe: aFunction, context: aSelf }); 110 // Log.debug("added observer for " + aPrefName); 111 }, 112 removeObserver: function(aPrefName, aFunction) { 113 for each (let [i, prefObserver] in Iterator(this._localObservers)) { 114 if (prefObserver.pref == aPrefName && prefObserver.observe == aFunction) { 115 this._localObservers.splice(i,1) 116 break; 117 } 118 } 119 }, 120 observe: function(subject, topic, aPrefName) { 121 Log.debug("prefChange observed : " + aPrefName) 138 } 139 }, 140 dropLocalChanges: function () { 141 for each(let [aPrefName, aPrefValue] in Iterator(this._localPrefs)) { 122 142 this._retrievePref(aPrefName); 123 for each (let [, prefObserver] in Iterator(this._localObservers)) { 124 if (prefObserver.pref == aPrefName) { 125 // Log.debug("found observer, calling : " + prefObserver.observe) 126 prefObserver.observe(prefObserver.context, subject, topic, aPrefName); 127 // Log.debug("found observer, calling : " + prefObserver.observe + " done") 128 } 129 } 130 }, 131 dropLocalChanges: function() { 132 for each (let [aPrefName, aPrefValue] in Iterator(this._localPrefs)) { 133 this._retrievePref(aPrefName); 134 if (aPrefValue != this._localPrefs[aPrefName]) { 135 for each (let [, prefObserver] in Iterator(this._localObservers)) { 136 if (prefObserver.pref == aPrefName) { 137 prefObserver.observe(prefObserver.context, aPrefValue, "nsPref:changed", aPrefName); 138 } 143 if (aPrefValue != this._localPrefs[aPrefName]) { 144 for each(let [, prefObserver] in Iterator(this._localObservers)) { 145 if (prefObserver.pref == aPrefName) { 146 prefObserver.observe(prefObserver.context, aPrefValue, "nsPref:changed", aPrefName); 139 147 } 140 148 } 141 149 } 142 150 } 151 } 143 152 } 144 153
Note: See TracChangeset
for help on using the changeset viewer.