217 lines
No EOL
6.8 KiB
JavaScript
217 lines
No EOL
6.8 KiB
JavaScript
define(["playbackManager", "focusManager", "appRouter", "dom"], function(playbackManager, focusManager, appRouter, dom) {
|
|
"use strict";
|
|
|
|
function notify() {
|
|
lastInputTime = (new Date).getTime(), handleCommand("unknown")
|
|
}
|
|
|
|
function notifyMouseMove() {
|
|
lastInputTime = (new Date).getTime()
|
|
}
|
|
|
|
function idleTime() {
|
|
return (new Date).getTime() - lastInputTime
|
|
}
|
|
|
|
function select(sourceElement) {
|
|
sourceElement.click()
|
|
}
|
|
|
|
function on(scope, fn) {
|
|
eventListenerCount++, dom.addEventListener(scope, "command", fn, {})
|
|
}
|
|
|
|
function off(scope, fn) {
|
|
eventListenerCount && eventListenerCount--, dom.removeEventListener(scope, "command", fn, {})
|
|
}
|
|
|
|
function checkCommandTime(command) {
|
|
var last = commandTimes[command] || 0,
|
|
now = (new Date).getTime();
|
|
return !(now - last < 1e3) && (commandTimes[command] = now, !0)
|
|
}
|
|
|
|
function handleCommand(name, options) {
|
|
lastInputTime = (new Date).getTime();
|
|
var sourceElement = options ? options.sourceElement : null;
|
|
if (sourceElement && (sourceElement = focusManager.focusableParent(sourceElement)), sourceElement = sourceElement || document.activeElement || window, eventListenerCount) {
|
|
var customEvent = new CustomEvent("command", {
|
|
detail: {
|
|
command: name
|
|
},
|
|
bubbles: !0,
|
|
cancelable: !0
|
|
});
|
|
if (!sourceElement.dispatchEvent(customEvent)) return
|
|
}
|
|
switch (name) {
|
|
case "up":
|
|
focusManager.moveUp(sourceElement);
|
|
break;
|
|
case "down":
|
|
focusManager.moveDown(sourceElement);
|
|
break;
|
|
case "left":
|
|
focusManager.moveLeft(sourceElement);
|
|
break;
|
|
case "right":
|
|
focusManager.moveRight(sourceElement);
|
|
break;
|
|
case "home":
|
|
appRouter.goHome();
|
|
break;
|
|
case "settings":
|
|
appRouter.showSettings();
|
|
break;
|
|
case "back":
|
|
appRouter.back();
|
|
break;
|
|
case "forward":
|
|
break;
|
|
case "select":
|
|
select(sourceElement);
|
|
break;
|
|
case "pageup":
|
|
case "pagedown":
|
|
case "end":
|
|
break;
|
|
case "menu":
|
|
case "info":
|
|
break;
|
|
case "nextchapter":
|
|
playbackManager.nextChapter();
|
|
break;
|
|
case "next":
|
|
case "nexttrack":
|
|
playbackManager.nextTrack();
|
|
break;
|
|
case "previous":
|
|
case "previoustrack":
|
|
playbackManager.previousTrack();
|
|
break;
|
|
case "previouschapter":
|
|
playbackManager.previousChapter();
|
|
break;
|
|
case "guide":
|
|
appRouter.showGuide();
|
|
break;
|
|
case "recordedtv":
|
|
appRouter.showRecordedTV();
|
|
break;
|
|
case "record":
|
|
break;
|
|
case "livetv":
|
|
appRouter.showLiveTV();
|
|
break;
|
|
case "mute":
|
|
playbackManager.setMute(!0);
|
|
break;
|
|
case "unmute":
|
|
playbackManager.setMute(!1);
|
|
break;
|
|
case "togglemute":
|
|
playbackManager.toggleMute();
|
|
break;
|
|
case "channelup":
|
|
playbackManager.channelUp();
|
|
break;
|
|
case "channeldown":
|
|
playbackManager.channelDown();
|
|
break;
|
|
case "volumedown":
|
|
playbackManager.volumeDown();
|
|
break;
|
|
case "volumeup":
|
|
playbackManager.volumeUp();
|
|
break;
|
|
case "play":
|
|
playbackManager.unpause();
|
|
break;
|
|
case "pause":
|
|
playbackManager.pause();
|
|
break;
|
|
case "playpause":
|
|
playbackManager.playPause();
|
|
break;
|
|
case "stop":
|
|
checkCommandTime("stop") && playbackManager.stop();
|
|
break;
|
|
case "changezoom":
|
|
playbackManager.toggleAspectRatio();
|
|
break;
|
|
case "changeaudiotrack":
|
|
playbackManager.changeAudioStream();
|
|
break;
|
|
case "changesubtitletrack":
|
|
playbackManager.changeSubtitleStream();
|
|
break;
|
|
case "search":
|
|
appRouter.showSearch();
|
|
break;
|
|
case "favorites":
|
|
appRouter.showFavorites();
|
|
break;
|
|
case "fastforward":
|
|
playbackManager.fastForward();
|
|
break;
|
|
case "rewind":
|
|
playbackManager.rewind();
|
|
break;
|
|
case "togglefullscreen":
|
|
playbackManager.toggleFullscreen();
|
|
break;
|
|
case "disabledisplaymirror":
|
|
playbackManager.enableDisplayMirroring(!1);
|
|
break;
|
|
case "enabledisplaymirror":
|
|
playbackManager.enableDisplayMirroring(!0);
|
|
break;
|
|
case "toggledisplaymirror":
|
|
playbackManager.toggleDisplayMirroring();
|
|
break;
|
|
case "togglestats":
|
|
break;
|
|
case "movies":
|
|
case "music":
|
|
case "tv":
|
|
appRouter.goHome();
|
|
break;
|
|
case "nowplaying":
|
|
appRouter.showNowPlaying();
|
|
break;
|
|
case "save":
|
|
case "screensaver":
|
|
case "refresh":
|
|
case "changebrightness":
|
|
case "red":
|
|
case "green":
|
|
case "yellow":
|
|
case "blue":
|
|
case "grey":
|
|
case "brown":
|
|
break;
|
|
case "repeatnone":
|
|
playbackManager.setRepeatMode("RepeatNone");
|
|
break;
|
|
case "repeatall":
|
|
playbackManager.setRepeatMode("RepeatAll");
|
|
break;
|
|
case "repeatone":
|
|
playbackManager.setRepeatMode("RepeatOne")
|
|
}
|
|
}
|
|
var lastInputTime = (new Date).getTime(),
|
|
eventListenerCount = 0,
|
|
commandTimes = {};
|
|
return dom.addEventListener(document, "click", notify, {
|
|
passive: !0
|
|
}), {
|
|
trigger: handleCommand,
|
|
handle: handleCommand,
|
|
notify: notify,
|
|
notifyMouseMove: notifyMouseMove,
|
|
idleTime: idleTime,
|
|
on: on,
|
|
off: off
|
|
}
|
|
}); |