add Slide Delay setting

This commit is contained in:
ccd0 2014-07-05 14:43:06 -07:00
parent 815f58be8b
commit 045260362d
3 changed files with 29 additions and 19 deletions

View File

@ -444,7 +444,7 @@ Config =
'Advance to next post when contracting an expanded image.' 'Advance to next post when contracting an expanded image.'
] ]
gallery: gallery :
'Hide Thumbnails': [ 'Hide Thumbnails': [
false false
] ]
@ -455,6 +455,9 @@ Config =
'Fit Height': [ 'Fit Height': [
true true
] ]
'Slide Delay': [
5.0
]
threadWatcher: threadWatcher:
'Current Board': [ 'Current Board': [

View File

@ -1489,6 +1489,9 @@ div.boardTitle {
:root.gal-hide-thumbnails:.gal-fit-height:not(.gal-pdf) .gal-count { :root.gal-hide-thumbnails:.gal-fit-height:not(.gal-pdf) .gal-count {
right: 28px !important; right: 28px !important;
} }
.field[name="Slide Delay"] {
width: 4em;
}
@media screen and (resolution: 1dppx) { @media screen and (resolution: 1dppx) {
.fa-bars { .fa-bars {
font-size: 14px; font-size: 14px;

View File

@ -2,6 +2,8 @@ Gallery =
init: -> init: ->
return if g.VIEW is 'catalog' or g.BOARD is 'f' or !Conf['Gallery'] return if g.VIEW is 'catalog' or g.BOARD is 'f' or !Conf['Gallery']
@delay = Conf['Slide Delay']
el = $.el 'a', el = $.el 'a',
href: 'javascript:;' href: 'javascript:;'
id: 'appchan-gal' id: 'appchan-gal'
@ -17,8 +19,6 @@ Gallery =
name: 'Gallery' name: 'Gallery'
cb: @node cb: @node
interval: 5 * $.SECOND
node: -> node: ->
return unless @file return unless @file
if Gallery.nodes if Gallery.nodes
@ -64,13 +64,9 @@ Gallery =
$.on menuButton, 'click', (e) -> $.on menuButton, 'click', (e) ->
nodes.menu.toggle e, @, g nodes.menu.toggle e, @, g
{createSubEntry} = Gallery.menu for entry in Gallery.menu.createSubEntries()
for name of Config.gallery entry.order = 0
{el} = createSubEntry name nodes.menu.addEntry entry
nodes.menu.addEntry
el: el
order: 0
$.on d, 'keydown', cb.keybinds $.on d, 'keydown', cb.keybinds
$.off d, 'keydown', Keybinds.keydown $.off d, 'keydown', Keybinds.keydown
@ -229,7 +225,7 @@ Gallery =
$.on current, (if isVideo then 'canplaythrough' else 'load'), Gallery.cb.startTimer $.on current, (if isVideo then 'canplaythrough' else 'load'), Gallery.cb.startTimer
startTimer: -> startTimer: ->
Gallery.timeoutID = setTimeout Gallery.cb.checkTimer, Gallery.interval Gallery.timeoutID = setTimeout Gallery.cb.checkTimer, Gallery.delay * $.SECOND
checkTimer: -> checkTimer: ->
{current} = Gallery.nodes {current} = Gallery.nodes
@ -267,6 +263,8 @@ Gallery =
setFitness: -> setFitness: ->
(if @checked then $.addClass else $.rmClass) doc, "gal-#{@name.toLowerCase().replace /\s+/g, '-'}" (if @checked then $.addClass else $.rmClass) doc, "gal-#{@name.toLowerCase().replace /\s+/g, '-'}"
setDelay: -> Gallery.delay = +@value
menu: menu:
init: -> init: ->
return if g.VIEW is 'catalog' or !Conf['Gallery'] return if g.VIEW is 'catalog' or !Conf['Gallery']
@ -275,21 +273,27 @@ Gallery =
textContent: 'Gallery' textContent: 'Gallery'
className: 'gallery-link' className: 'gallery-link'
{createSubEntry} = Gallery.menu
subEntries = []
for name of Config.gallery
subEntries.push createSubEntry name
Header.menu.addEntry Header.menu.addEntry
el: el el: el
order: 105 order: 105
subEntries: subEntries subEntries: Gallery.menu.createSubEntries()
createSubEntry: (name) -> createSubEntry: (name) ->
label = UI.checkbox name, " #{name}" label = UI.checkbox name, " #{name}"
input = label.firstElementChild input = label.firstElementChild
if name in ['Fit Width', 'Fit Height', 'Hide Thumbnails'] $.on input, 'change', Gallery.cb.setFitness
$.on input, 'change', Gallery.cb.setFitness
$.event 'change', null, input $.event 'change', null, input
$.on input, 'change', $.cb.checked $.on input, 'change', $.cb.checked
el: label el: label
createSubEntries: ->
subEntries = ['Hide Thumbnails', 'Fit Width', 'Fit Height'].map Gallery.menu.createSubEntry
delayLabel = $.el 'label', innerHTML: 'Slide Delay: <input type="number" name="Slide Delay" min="0" step="any" class="field">'
delayInput = delayLabel.firstElementChild
delayInput.value = Gallery.delay
$.on delayInput, 'change', Gallery.cb.setDelay
$.on delayInput, 'change', $.cb.value
subEntries.push el: delayLabel
subEntries