1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Make navigation and playback control TV-friendly

This commit is contained in:
Dmitry Lyzo 2019-11-09 11:48:52 +03:00
parent 9c47f8fc1c
commit 3896c18e26
4 changed files with 142 additions and 1 deletions

View file

@ -770,6 +770,10 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
var isProgressClear = state.MediaSource && null == state.MediaSource.RunTimeTicks;
nowPlayingPositionSlider.setIsClear(isProgressClear);
if (nowPlayingItem.RunTimeTicks) {
nowPlayingPositionSlider.setKeyboardSteps(userSettings.skipBackLength() * 1000000 / nowPlayingItem.RunTimeTicks, userSettings.skipForwardLength() * 1000000 / nowPlayingItem.RunTimeTicks);
}
if (-1 === supportedCommands.indexOf("ToggleFullscreen") || player.isLocalPlayer && layoutManager.tv && playbackManager.isFullscreen(player)) {
view.querySelector(".btnFullscreen").classList.add("hide");
} else {
@ -1070,12 +1074,21 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
}
}
/**
* Keys used for keyboard navigation.
*/
var NavigationKeys = ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"];
function onWindowKeyDown(e) {
if (!currentVisibleMenu && 32 === e.keyCode) {
playbackManager.playPause(currentPlayer);
return void showOsd();
}
if (layoutManager.tv && NavigationKeys.indexOf(e.key) != -1) {
return void showOsd();
}
switch (e.key) {
case "k":
playbackManager.playPause(currentPlayer);
@ -1237,6 +1250,12 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
var transitionEndEventName = dom.whichTransitionEvent();
var headerElement = document.querySelector(".skinHeader");
var osdBottomElement = document.querySelector(".videoOsdBottom-maincontrols");
if (layoutManager.tv) {
nowPlayingPositionSlider.classList.add("focusable");
nowPlayingPositionSlider.enableKeyboardDragging();
}
view.addEventListener("viewbeforeshow", function (e) {
headerElement.classList.add("osdHeader");
Emby.Page.setTransparency("full");