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
13 prev_patterns: 'prev,previous,back,older,<,\xab,<<'
14 next_patterns: 'next,more,newer,>,\xbb,>>'
17 black_list: '*mail.google.com*'
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
52 getComplexPref = do ->
53 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
54 branch = prefs.getBranch(PREF_BRANCH)
56 return (key, defaultValue = undefined) ->
57 value = branch.getComplexValue(key, Components.interfaces.nsISupportsString).data
58 return if value == undefined then getDefaultPref(key) else value
60 getDefaultPref = (key) -> return DEFAULT_PREF_VALUES[key]
62 getFirefoxPref = do ->
63 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
64 branch = prefs.getBranch('')
66 return (key, defaultValue = undefined) ->
67 return getBranchPref(branch, key, defaultValue)
69 # Assign and save Firefox preference value
71 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
72 branch = prefs.getBranch(PREF_BRANCH)
74 return (key, value) ->
77 branch.setBoolPref(key, value)
79 branch.setIntPref(key, value)
81 branch.setCharPref(key, value)
83 branch.clearUserPref(key)
86 for key, value of DEFAULT_PREF_VALUES
90 exports.isPrefSet = isPrefSet
91 exports.getPref = getPref
92 exports.getComplexPref = getComplexPref
93 exports.getDefaultPref = getDefaultPref
94 exports.getFirefoxPref = getFirefoxPref
95 exports.setPref = setPref
96 exports.initPrefValues = initPrefValues