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: 'fjdksla;ghrueiwovncm'
15 black_list: '*mail.google.com*'
17 leave_dt_on_esc: false
22 getBranchPref = (branch, key, defaultValue) ->
23 type = branch.getPrefType(key)
27 return branch.getBoolPref(key)
29 return branch.getIntPref(key)
30 when branch.PREF_STRING
31 return branch.getCharPref(key)
33 if defaultValue != undefined
37 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
38 branch = prefs.getBranch(PREF_BRANCH)
41 branch.prefHasUserValue(key)
44 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
45 branch = prefs.getBranch(PREF_BRANCH)
47 return (key, defaultValue = undefined) ->
48 value = getBranchPref(branch, key, defaultValue)
49 return if value == undefined then getDefaultPref(key) else value
51 getDefaultPref = (key) -> return DEFAULT_PREF_VALUES[key]
53 getFirefoxPref = do ->
54 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
55 branch = prefs.getBranch('')
57 return (key, defaultValue = undefined) ->
58 return getBranchPref(branch, key, defaultValue)
60 # Assign and save Firefox preference value
62 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
63 branch = prefs.getBranch(PREF_BRANCH)
65 return (key, value) ->
68 branch.setBoolPref(key, value)
70 branch.setIntPref(key, value)
72 branch.setCharPref(key, value)
74 branch.clearUserPref(key)
77 for key, value of DEFAULT_PREF_VALUES
81 exports.isPrefSet = isPrefSet
82 exports.getPref = getPref
83 exports.getDefaultPref = getDefaultPref
84 exports.getFirefoxPref = getFirefoxPref
85 exports.setPref = setPref
86 exports.initPrefValues = initPrefValues