settings.coffee 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. class app.Settings
  2. DOCS_KEY = 'docs'
  3. DARK_KEY = 'dark'
  4. LAYOUT_KEY = 'layout'
  5. SIZE_KEY = 'size'
  6. TIPS_KEY = 'tips'
  7. @defaults:
  8. count: 0
  9. hideDisabled: false
  10. hideIntro: false
  11. news: 0
  12. manualUpdate: false
  13. schema: 1
  14. constructor: ->
  15. @store = new CookieStore
  16. set: (key, value) ->
  17. @store.set(key, value)
  18. return
  19. get: (key) ->
  20. @store.get(key) ? @constructor.defaults[key]
  21. hasDocs: ->
  22. try !!@store.get(DOCS_KEY)
  23. getDocs: ->
  24. @store.get(DOCS_KEY)?.split('/') or app.config.default_docs
  25. setDocs: (docs) ->
  26. @store.set DOCS_KEY, docs.join('/')
  27. return
  28. getTips: ->
  29. @store.get(TIPS_KEY)?.split('/') or []
  30. setTips: (tips) ->
  31. @store.set TIPS_KEY, tips.join('/')
  32. return
  33. setLayout: (name, enable) ->
  34. layout = (@store.get(LAYOUT_KEY) || '').split(' ')
  35. $.arrayDelete(layout, '')
  36. if enable
  37. layout.push(name) if layout.indexOf(name) is -1
  38. else
  39. $.arrayDelete(layout, name)
  40. if layout.length > 0
  41. @store.set LAYOUT_KEY, layout.join(' ')
  42. else
  43. @store.del LAYOUT_KEY
  44. return
  45. hasLayout: (name) ->
  46. layout = (@store.get(LAYOUT_KEY) || '').split(' ')
  47. layout.indexOf(name) isnt -1
  48. setSize: (value) ->
  49. @store.set SIZE_KEY, value
  50. return
  51. dump: ->
  52. @store.dump()
  53. reset: ->
  54. @store.reset()
  55. return