From 9e015e88be66504c1de22f78202178b66b156cbb Mon Sep 17 00:00:00 2001 From: Einar Egilsson Date: Fri, 9 Oct 2009 14:59:56 +0000 Subject: Preferences part of window ready Compiled patterns Preferences object git-svn-id: http://einaregilsson.googlecode.com/svn/mozilla/redirector/trunk@258 119bf307-c92d-0410-89bd-8f53e6181181 --- chrome/content/code/prefs.js | 92 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 chrome/content/code/prefs.js (limited to 'chrome/content/code/prefs.js') diff --git a/chrome/content/code/prefs.js b/chrome/content/code/prefs.js new file mode 100644 index 0000000..c87eb27 --- /dev/null +++ b/chrome/content/code/prefs.js @@ -0,0 +1,92 @@ +// $Id$ + +function Prefs() { + this.init(); +} + +Prefs.prototype = { + + //Preferences: + _version : null, + _enabled : null, + _showStatusBarIcon : null, + _showContextMenu : null, + _debugEnabled : null, + _defaultDir : null, + _redirects : null, + + _prefBranch : null, + + _listeners : null, + + //Preferences props + + get version() { return this._version; }, + set version(value) { this._prefBranch.setCharPref('version', value); }, + + get enabled() { return this._enabled; }, + set enabled(value) { this._prefBranch.setBoolPref('enabled', value); }, + + get showStatusBarIcon() { return this._showStatusBarIcon; }, + set showStatusBarIcon(value) { this._prefBranch.setBoolPref('showStatusBarIcon', value); }, + + get showContextMenu() { return this._showContextMenu; }, + set showContextMenu(value) { this._prefBranch.setBoolPref('showContextMenu', value); }, + + get debugEnabled() { return this._debugEnabled; }, + set debugEnabled(value) { this._prefBranch.setBoolPref('debugEnabled', value); }, + + get defaultDir() { return this._defaultDir; }, + set defaultDir(value) { this._prefBranch.setCharPref('defaultDir', value); }, + + get redirects() { return this._redirects; }, + set redirects(value) { this._prefBranch.setCharPref('redirects', value); }, + + init : function() { + this._prefBranch = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.redirector."); + this.reload(); + this._listeners = []; + this.service.addObserver('extensions.redirector', this, false); + }, + + destroy : function() { + this.service.removeObserver('extensions.redirector', this); + }, + + reload : function() { + this._version = this._prefBranch.getCharPref('version'); + this._enabled = this._prefBranch.getBoolPref('enabled'); + this._showStatusBarIcon = this._prefBranch.getBoolPref('showStatusBarIcon'); + this._showContextMenu = this._prefBranch.getBoolPref('showContextMenu'); + this._debugEnabled = this._prefBranch.getBoolPref('debugEnabled'); + this._defaultDir = this._prefBranch.getCharPref('defaultDir'); + this._redirects = this._prefBranch.getCharPref('redirects'); + }, + + get service() { + return Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranchInternal); + }, + + observe : function(subject, topic, data) { + if (topic != 'nsPref:changed') { + return; + } + this.reload(); + for each (var listener in this._listeners) { + listener && listener.changedPrefs && listener.changedPrefs(this); + } + }, + + addListener : function(listener) { + this._listeners.push(listener); + }, + + removeListener : function(listener) { + for (var i = 0; i < this._listeners.length; i++) { + if (this._listeners[i] == listener) { + this._listeners.splice(i,1); + return; + } + } + }, +} \ No newline at end of file -- cgit v1.2.3-70-g09d2