diff --git a/src/controllers/playback/queue/index.js b/src/controllers/playback/queue/index.js index 602135a79..beae60dd8 100644 --- a/src/controllers/playback/queue/index.js +++ b/src/controllers/playback/queue/index.js @@ -1,19 +1,49 @@ -import RemoteControl from '../../../components/remotecontrol/remotecontrol'; -import libraryMenu from '../../../scripts/libraryMenu'; -import '../../../elements/emby-button/emby-button'; +import RemoteControl from "../../../components/remotecontrol/remotecontrol"; +import { playbackManager } from "../../../components/playback/playbackmanager"; +import libraryMenu from "../../../scripts/libraryMenu"; +import "../../../elements/emby-button/emby-button"; export default function (view) { const remoteControl = new RemoteControl(); - remoteControl.init(view, view.querySelector('.remoteControlContent')); - view.addEventListener('viewshow', function () { + remoteControl.init(view, view.querySelector(".remoteControlContent")); + + let currentPlayer; + + function onKeyDown(e) { + if (e.keyCode === 32 && e.target.tagName !== "BUTTON") { + playbackManager.playPause(currentPlayer); + e.preventDefault(); + e.stopPropagation(); + } + } + + function releaseCurrentPlayer() { + const player = currentPlayer; + if (player) currentPlayer = null; + } + + function bindToPlayer(player) { + if (player !== currentPlayer) { + releaseCurrentPlayer(); + currentPlayer = player; + if (!player) return; + } + } + + view.addEventListener("viewshow", function () { libraryMenu.setTransparentMenu(true); + bindToPlayer(playbackManager.getCurrentPlayer()); + document.addEventListener("keydown", onKeyDown); if (remoteControl) { remoteControl.onShow(); } }); - view.addEventListener('viewbeforehide', function () { + + view.addEventListener("viewbeforehide", function () { libraryMenu.setTransparentMenu(false); + document.removeEventListener("keydown", onKeyDown); + releaseCurrentPlayer(); if (remoteControl) { remoteControl.destroy();