]> git.gir.st - VimFx.git/blob - extension/packages/prefs.coffee
minor code fixes
[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 the preference
8 # All used preferences should be mentioned here becuase
9 # preference type is derived from here
10 DEFAULT_PREF_VALUES =
11 addon_id: 'VimFx@akhodakivskiy.github.com'
12 hint_chars: 'fjdkslaghrueiwovncm' # preferably use letters only
13 prev_patterns: 'prev,previous,back,older,<,«,<<'
14 next_patterns: 'next,more,newer,>,»,>>'
15 disabled: false
16 scroll_step_lines: 6
17 black_list: '*mail.google.com*'
18 hints_bloom_data: ''
19 hints_bloom_on: true
20
21
22 getBranchPref = (branch, key, defaultValue) ->
23 type = branch.getPrefType(key)
24
25 switch type
26 when branch.PREF_BOOL
27 return branch.getBoolPref(key)
28 when branch.PREF_INT
29 return branch.getIntPref(key)
30 when branch.PREF_STRING
31 return branch.getCharPref(key)
32 else
33 if defaultValue != undefined
34 return defaultValue
35
36 isPrefSet = do ->
37 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
38 branch = prefs.getBranch(PREF_BRANCH)
39
40 return (key) ->
41 branch.prefHasUserValue(key)
42
43 getPref = do ->
44 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
45 branch = prefs.getBranch(PREF_BRANCH)
46
47 return (key, defaultValue = undefined) ->
48 value = getBranchPref(branch, key, defaultValue)
49 return if value == undefined then getDefaultPref(key) else value
50
51 # Unicode String
52 getComplexPref = do ->
53 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
54 branch = prefs.getBranch(PREF_BRANCH)
55
56 return (key, defaultValue = undefined) ->
57 value = branch.getComplexValue(key, Components.interfaces.nsISupportsString).data
58 value ? getDefaultPref(key)
59
60 getDefaultPref = (key) -> return DEFAULT_PREF_VALUES[key]
61
62 getFirefoxPref = do ->
63 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
64 branch = prefs.getBranch('')
65
66 return (key, defaultValue = undefined) ->
67 return getBranchPref(branch, key, defaultValue)
68
69 # Assign and save Firefox preference value
70 setPref = do ->
71 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
72 branch = prefs.getBranch(PREF_BRANCH)
73
74 return (key, value) ->
75 switch typeof value
76 when 'boolean'
77 branch.setBoolPref(key, value)
78 when 'number'
79 branch.setIntPref(key, value)
80 when 'string'
81 branch.setCharPref(key, value)
82 else
83 branch.clearUserPref(key)
84
85 initPrefValues = ->
86 for key, value of DEFAULT_PREF_VALUES
87 if not isPrefSet(key)
88 setPref(key, value)
89
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
Imprint / Impressum