diff --git a/src/General/Config.coffee b/src/General/Config.coffee index 9827fa7ac..0945582a1 100755 --- a/src/General/Config.coffee +++ b/src/General/Config.coffee @@ -444,7 +444,7 @@ Config = 'Advance to next post when contracting an expanded image.' ] - gallery: + gallery : 'Hide Thumbnails': [ false ] @@ -455,6 +455,9 @@ Config = 'Fit Height': [ true ] + 'Slide Delay': [ + 5.0 + ] threadWatcher: 'Current Board': [ diff --git a/src/General/css/style.css b/src/General/css/style.css index a6659709e..3957b94d3 100755 --- a/src/General/css/style.css +++ b/src/General/css/style.css @@ -1489,6 +1489,9 @@ div.boardTitle { :root.gal-hide-thumbnails:.gal-fit-height:not(.gal-pdf) .gal-count { right: 28px !important; } +.field[name="Slide Delay"] { + width: 4em; +} @media screen and (resolution: 1dppx) { .fa-bars { font-size: 14px; diff --git a/src/Images/Gallery.coffee b/src/Images/Gallery.coffee index 10909fc6a..4787fa113 100644 --- a/src/Images/Gallery.coffee +++ b/src/Images/Gallery.coffee @@ -2,6 +2,8 @@ Gallery = init: -> return if g.VIEW is 'catalog' or g.BOARD is 'f' or !Conf['Gallery'] + @delay = Conf['Slide Delay'] + el = $.el 'a', href: 'javascript:;' id: 'appchan-gal' @@ -17,8 +19,6 @@ Gallery = name: 'Gallery' cb: @node - interval: 5 * $.SECOND - node: -> return unless @file if Gallery.nodes @@ -64,13 +64,9 @@ Gallery = $.on menuButton, 'click', (e) -> nodes.menu.toggle e, @, g - {createSubEntry} = Gallery.menu - for name of Config.gallery - {el} = createSubEntry name - - nodes.menu.addEntry - el: el - order: 0 + for entry in Gallery.menu.createSubEntries() + entry.order = 0 + nodes.menu.addEntry entry $.on d, 'keydown', cb.keybinds $.off d, 'keydown', Keybinds.keydown @@ -229,7 +225,7 @@ Gallery = $.on current, (if isVideo then 'canplaythrough' else 'load'), Gallery.cb.startTimer startTimer: -> - Gallery.timeoutID = setTimeout Gallery.cb.checkTimer, Gallery.interval + Gallery.timeoutID = setTimeout Gallery.cb.checkTimer, Gallery.delay * $.SECOND checkTimer: -> {current} = Gallery.nodes @@ -267,6 +263,8 @@ Gallery = setFitness: -> (if @checked then $.addClass else $.rmClass) doc, "gal-#{@name.toLowerCase().replace /\s+/g, '-'}" + setDelay: -> Gallery.delay = +@value + menu: init: -> return if g.VIEW is 'catalog' or !Conf['Gallery'] @@ -275,21 +273,27 @@ Gallery = textContent: 'Gallery' className: 'gallery-link' - {createSubEntry} = Gallery.menu - subEntries = [] - for name of Config.gallery - subEntries.push createSubEntry name - Header.menu.addEntry el: el order: 105 - subEntries: subEntries + subEntries: Gallery.menu.createSubEntries() createSubEntry: (name) -> label = UI.checkbox name, " #{name}" 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 $.on input, 'change', $.cb.checked el: label + + createSubEntries: -> + subEntries = ['Hide Thumbnails', 'Fit Width', 'Fit Height'].map Gallery.menu.createSubEntry + + delayLabel = $.el 'label', innerHTML: 'Slide Delay: ' + delayInput = delayLabel.firstElementChild + delayInput.value = Gallery.delay + $.on delayInput, 'change', Gallery.cb.setDelay + $.on delayInput, 'change', $.cb.value + subEntries.push el: delayLabel + + subEntries