]> git.gir.st - VimFx.git/blob - extension/packages/prefs.coffee
Refactor preferences defaults, prepare for enabling preferences sync
[VimFx.git] / extension / packages / prefs.coffee
1 { classes: Cc, interfaces: Ci } = Components
2
3 { unload } = require 'unload'
4
5 PREF_BRANCH = 'extensions.VimFx.'
6
7 # Default values for preferences are now specified in
8 # defaults/preferences/defaults.js
9
10 getBranchPref = (branch, key, defaultValue) ->
11 type = branch.getPrefType(key)
12
13 switch type
14 when branch.PREF_BOOL
15 return branch.getBoolPref(key)
16 when branch.PREF_INT
17 return branch.getIntPref(key)
18 when branch.PREF_STRING
19 return branch.getCharPref(key)
20 else
21 if defaultValue != undefined
22 return defaultValue
23
24 isPrefSet = do ->
25 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
26 branch = prefs.getBranch(PREF_BRANCH)
27
28 return (key) ->
29 branch.prefHasUserValue(key)
30
31 getPref = do ->
32 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
33 branch = prefs.getBranch(PREF_BRANCH)
34
35 return (key, defaultValue = undefined) ->
36 return getBranchPref(branch, key, defaultValue)
37
38 # Unicode String
39 getComplexPref = do ->
40 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
41 branch = prefs.getBranch(PREF_BRANCH)
42
43 return (key) ->
44 return branch.getComplexValue(key, Ci.nsISupportsString).data
45
46 getFirefoxPref = do ->
47 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
48 branch = prefs.getBranch('')
49
50 return (key, defaultValue = undefined) ->
51 return getBranchPref(branch, key, defaultValue)
52
53 # Assign and save Firefox preference value
54 setPref = do ->
55 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
56 branch = prefs.getBranch(PREF_BRANCH)
57
58 return (key, value) ->
59 switch typeof value
60 when 'boolean'
61 branch.setBoolPref(key, value)
62 when 'number'
63 branch.setIntPref(key, value)
64 when 'string'
65 branch.setCharPref(key, value)
66 else
67 branch.clearUserPref(key)
68
69 exports.isPrefSet = isPrefSet
70 exports.getPref = getPref
71 exports.getComplexPref = getComplexPref
72 exports.getFirefoxPref = getFirefoxPref
73 exports.setPref = setPref
Imprint / Impressum