1 { classes: Cc, interfaces: Ci } = Components
3 { unload } = require 'unload'
5 PREF_BRANCH = 'extensions.VimFx.'
7 # Default values for the preference
8 # All used preferences should be mentioned here becuase
9 # preference type is derived from here
11 addon_id: 'VimFx@akhodakivskiy.github.com'
12 hint_chars: 'fjdkslaghrueiwovncm' # preferably use letters only
15 black_list: '*mail.google.com*'
20 getBranchPref = (branch, key, defaultValue) ->
21 type = branch.getPrefType(key)
25 return branch.getBoolPref(key)
27 return branch.getIntPref(key)
28 when branch.PREF_STRING
29 return branch.getCharPref(key)
31 if defaultValue != undefined
35 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
36 branch = prefs.getBranch(PREF_BRANCH)
39 branch.prefHasUserValue(key)
42 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
43 branch = prefs.getBranch(PREF_BRANCH)
45 return (key, defaultValue = undefined) ->
46 value = getBranchPref(branch, key, defaultValue)
47 return if value == undefined then getDefaultPref(key) else value
49 getDefaultPref = (key) -> return DEFAULT_PREF_VALUES[key]
51 getFirefoxPref = do ->
52 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
53 branch = prefs.getBranch('')
55 return (key, defaultValue = undefined) ->
56 return getBranchPref(branch, key, defaultValue)
58 # Assign and save Firefox preference value
60 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
61 branch = prefs.getBranch(PREF_BRANCH)
63 return (key, value) ->
66 branch.setBoolPref(key, value)
68 branch.setIntPref(key, value)
70 branch.setCharPref(key, value)
72 branch.clearUserPref(key)
75 for key, value of DEFAULT_PREF_VALUES
79 exports.isPrefSet = isPrefSet
80 exports.getPref = getPref
81 exports.getDefaultPref = getDefaultPref
82 exports.getFirefoxPref = getFirefoxPref
83 exports.setPref = setPref
84 exports.initPrefValues = initPrefValues