|
|
|
class app.views.SettingsPage extends app.View
|
|
|
|
LAYOUTS = ['_max-width', '_sidebar-hidden']
|
|
|
|
SIDEBAR_HIDDEN_LAYOUT = '_sidebar-hidden'
|
|
|
|
|
|
|
|
@className: '_static'
|
|
|
|
|
|
|
|
@events:
|
|
|
|
change: 'onChange'
|
|
|
|
|
|
|
|
render: ->
|
|
|
|
@html @tmpl('settingsPage', @currentSettings())
|
|
|
|
return
|
|
|
|
|
|
|
|
currentSettings: ->
|
|
|
|
settings = {}
|
|
|
|
settings.dark = app.settings.get('dark')
|
|
|
|
settings.smoothScroll = !app.settings.get('fastScroll')
|
|
|
|
settings.arrowScroll = app.settings.get('arrowScroll')
|
|
|
|
settings[layout] = app.settings.hasLayout(layout) for layout in LAYOUTS
|
|
|
|
settings
|
|
|
|
|
|
|
|
getTitle: ->
|
|
|
|
'Preferences'
|
|
|
|
|
|
|
|
toggleDark: (enable) ->
|
|
|
|
css = $('link[rel="stylesheet"][data-alt]')
|
|
|
|
alt = css.getAttribute('data-alt')
|
|
|
|
css.setAttribute('data-alt', css.getAttribute('href'))
|
|
|
|
css.setAttribute('href', alt)
|
|
|
|
app.settings.set('dark', !!enable)
|
|
|
|
app.appCache?.updateInBackground()
|
|
|
|
return
|
|
|
|
|
|
|
|
toggleLayout: (layout, enable) ->
|
|
|
|
app.el.classList[if enable then 'add' else 'remove'](layout) unless layout is SIDEBAR_HIDDEN_LAYOUT
|
|
|
|
app.settings.setLayout(layout, enable)
|
|
|
|
app.appCache?.updateInBackground()
|
|
|
|
return
|
|
|
|
|
|
|
|
toggleSmoothScroll: (enable) ->
|
|
|
|
app.settings.set('fastScroll', !enable)
|
|
|
|
return
|
|
|
|
|
|
|
|
toggle: (name, enable) ->
|
|
|
|
app.settings.set(name, enable)
|
|
|
|
return
|
|
|
|
|
|
|
|
onChange: (event) =>
|
|
|
|
input = event.target
|
|
|
|
switch input.name
|
|
|
|
when 'dark'
|
|
|
|
@toggleDark input.checked
|
|
|
|
when 'layout'
|
|
|
|
@toggleLayout input.value, input.checked
|
|
|
|
when 'smoothScroll'
|
|
|
|
@toggleSmoothScroll input.checked
|
|
|
|
else
|
|
|
|
@toggle input.name, input.checked
|
|
|
|
return
|
|
|
|
|
|
|
|
onRoute: (context) ->
|
|
|
|
@render()
|
|
|
|
return
|