/* * Copyright (c) 2015-2017, Michael A. Updike All rights reserved. * Licensed under the BSD-3-Clause * https://opensource.org/licenses/BSD-3-Clause * https://github.com/opus1269/photo-screen-saver/blob/master/LICENSE.md */ window.app = window.app || {}; /** * Find a photo that is ready for slideshow * @namespace */ app.SSFinder = (function() { 'use strict'; new ExceptionHandler(); /** * Transition time in milliseconds * @type {int} * @private * @memberOf app.SSFinder */ let _transTime = 30000; /** * Add the next photo from the master array * @param {int} idx - index into {@link app.SSViews} * @private * @memberOf app.SSFinder */ function _replacePhoto(idx) { if (app.SSViews.isSelectedIndex(idx)) { return; } const viewLength = app.SSViews.getCount(); const photoLen = app.SSPhotos.getCount(); if (photoLen <= viewLength) { return; } const photo = app.SSPhotos.getNextUsable(); if (photo) { const view = app.SSViews.get(idx); view.setPhoto(photo); } } return { /** * Initialize the photo finder * @memberOf app.SSFinder */ initialize: function() { const transTime = Chrome.Storage.get('transitionTime'); if (transTime) { _transTime = transTime.base * 1000; } }, /** * Get the next photo to display * @param {int} idx - index into {@link app.SSViews} * @returns {int} next - index into {@link app.SSViews} * to display, -1 if none are ready * @memberOf app.SSFinder */ getNext: function(idx) { let ret = app.SSViews.findLoadedPhoto(idx); if (ret === -1) { // no photos ready, wait a little, try again app.SSRunner.setWaitTime(500); } else { // photo found, set the waitTime back to transition time app.SSRunner.setWaitTime(_transTime); } return ret; }, /** * Add the next photo from the master array * @param {int} idx - {@link app.SSViews} index to replace * @memberOf app.SSFinder */ replacePhoto: function(idx) { if (idx >= 0) { _replacePhoto(idx); } }, }; })();