]> git.gir.st - VimFx.git/blob - extension/packages/prefs.coffee
refactoring code
[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,<,\xab,<<'
14 next_patterns: 'next,more,>,\xbb,>>'
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 getDefaultPref = (key) -> return DEFAULT_PREF_VALUES[key]
52
53 getFirefoxPref = do ->
54 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
55 branch = prefs.getBranch('')
56
57 return (key, defaultValue = undefined) ->
58 return getBranchPref(branch, key, defaultValue)
59
60 # Assign and save Firefox preference value
61 setPref = do ->
62 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
63 branch = prefs.getBranch(PREF_BRANCH)
64
65 return (key, value) ->
66 switch typeof value
67 when 'boolean'
68 branch.setBoolPref(key, value)
69 when 'number'
70 branch.setIntPref(key, value)
71 when 'string'
72 branch.setCharPref(key, value)
73 else
74 branch.clearUserPref(key)
75
76 initPrefValues = ->
77 for key, value of DEFAULT_PREF_VALUES
78 if not isPrefSet(key)
79 setPref(key, value)
80
81 exports.isPrefSet = isPrefSet
82 exports.getPref = getPref
83 exports.getDefaultPref = getDefaultPref
84 exports.getFirefoxPref = getFirefoxPref
85 exports.setPref = setPref
86 exports.initPrefValues = initPrefValues
Imprint / Impressum