diff --git a/src/components/logoscreensaver/plugin.js b/src/components/logoscreensaver/plugin.js index e198d13fc3..521afd2690 100644 --- a/src/components/logoscreensaver/plugin.js +++ b/src/components/logoscreensaver/plugin.js @@ -58,6 +58,7 @@ define(["pluginManager"], function (pluginManager) { var timing = { duration: 900, iterations: iterations, easing: "cubic-bezier(0.215, 0.610, 0.355, 1.000)" }; return elem.animate(keyframes, timing); } + function shake(elem, iterations) { var keyframes = [ { transform: "translate3d(0, 0, 0)", offset: 0 }, diff --git a/src/components/screensavermanager.js b/src/components/screensavermanager.js index 3d8d2deeb8..091e3bbac1 100644 --- a/src/components/screensavermanager.js +++ b/src/components/screensavermanager.js @@ -1,12 +1,14 @@ -define(["events", "playbackManager", "pluginManager"], function (events, playbackManager, pluginManager) { +define(["events", "playbackManager", "pluginManager", "inputManager", "connectionManager", "userSettings"], function (events, playbackManager, pluginManager, inputManager, connectionManager, userSettings) { + "use strict"; function getMinIdleTime() { // Returns the minimum amount of idle time required before the screen saver can be displayed - //return 3000; + //time units used Millisecond return 180000; } var lastFunctionalEvent = 0; + function getFunctionalEventIdleTime() { return new Date().getTime() - lastFunctionalEvent; } @@ -18,6 +20,37 @@ define(["events", "playbackManager", "pluginManager"], function (events, playbac } }); + var isLoggedIn; + var defaultOption = isLoggedIn ? "backdropscreensaver" : "logoscreensaver"; + + function getScreensaverPlugin() { + + var apiClient = connectionManager.currentApiClient(); + + if (apiClient && apiClient.isLoggedIn()) { + isLoggedIn = true; + } + + var option; + try { + option = userSettings.get("screensaver", false); + } catch (err) { + option = null; + } + + if (option === "none" || defaultOption === "none") { + return null; + } + + var plugin = pluginManager.ofType("screensaver").filter(function (i) { + return i.id === option; + })[0]; + + return plugin = plugin || pluginManager.ofType("screensaver").filter(function (i) { + return i.id === defaultOption; + })[0]; + } + function ScreenSaverManager() { var self = this; @@ -62,43 +95,13 @@ define(["events", "playbackManager", "pluginManager"], function (events, playbac }; self.show = function () { - var screensavers = pluginManager.ofType("screensaver"); + var screensaver = getScreensaverPlugin(isLoggedIn); - require(["connectionManager"], function (connectionManager) { - - var server = connectionManager.currentApiClient(); - - show(screensavers, server); - }); + if (screensaver) { + showScreenSaver(screensaver); + } }; - function show(screensavers, currentServer) { - - if (currentServer) { - - var loggedInScreenSavers = screensavers.filter(function (screensaver) { - return !screensaver.supportsAnonymous; - }); - - if (loggedInScreenSavers.length) { - screensavers = loggedInScreenSavers; - } - - } else { - - screensavers = screensavers.filter(function (screensaver) { - return screensaver.supportsAnonymous; - }); - } - - // Perform some other filter here to get the configured screensaver - - var current = screensavers.length ? screensavers[0] : null; - if (current) { - showScreenSaver(current); - } - } - self.hide = function () { hide(); }; @@ -109,22 +112,19 @@ define(["events", "playbackManager", "pluginManager"], function (events, playbac return; } - require(["inputmanager"], function (inputmanager) { + if (inputManager.idleTime() < getMinIdleTime()) { + return; + } - if (inputmanager.idleTime() < getMinIdleTime()) { - return; - } + if (getFunctionalEventIdleTime < getMinIdleTime()) { + return; + } - if (getFunctionalEventIdleTime < getMinIdleTime()) { - return; - } + if (playbackManager.isPlayingVideo()) { + return; + } - if (playbackManager.isPlayingVideo()) { - return; - } - - self.show(); - }); + self.show(); } setInterval(onInterval, 10000); diff --git a/src/scripts/site.js b/src/scripts/site.js index e0d2921d72..6a578d0fbd 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -715,9 +715,6 @@ var AppInfo = {}; require(["css!css/site"]); - // alias - define("inputmanager", ["inputManager"], returnFirstDependency); - // define styles // TODO determine which of these files can be moved to the components themselves define("material-icons", ["css!css/material-icons/style"], returnFirstDependency);