1 line
No EOL
7.6 KiB
JavaScript
1 line
No EOL
7.6 KiB
JavaScript
import globalize from"./../common/globalize.js";import playbackManager from"./../common/playback/playbackmanager.js";import connectionManager from"./../emby-apiclient/connectionmanager.js";import actionsheet from"./../actionsheet/actionsheet.js";import qualityoptions from"./../common/qualityoptions.js";function showQualityMenu(player,options){var videoStream=playbackManager.currentMediaSource(player).MediaStreams.filter(function(stream){return"Video"===stream.Type})[0],videoStream=videoStream?videoStream.Width:null,videoStream=qualityoptions.getVideoQualityOptions({currentMaxBitrate:playbackManager.getMaxStreamingBitrate(player),isAutomaticBitrateEnabled:playbackManager.enableAutomaticBitrateDetection(player),videoWidth:videoStream,enableAuto:!0}),menuItems=videoStream.map(function(o){var opt={name:o.name,id:o.bitrate,asideText:o.secondaryText};return o.selected&&(opt.selected=!0),opt});let selectedId=videoStream.filter(function(o){return o.selected});return selectedId=selectedId.length?selectedId[0].bitrate:null,actionsheet.show({items:menuItems,positionTo:options.positionTo,positionX:options.positionX,positionY:options.positionY,transformOrigin:options.transformOrigin,noTextWrap:options.noTextWrap,title:globalize.translate("Quality"),hasItemSelectionState:!0}).then(function(id){id=parseInt(id);id!==selectedId&&playbackManager.setMaxStreamingBitrate({enableAutomaticBitrateDetection:!id,maxBitrate:id},player)})}function showSpeedMenu(options){var menuItems=[];let player=options.player;var currentValue=playbackManager.getPlaybackRate(player),values=[.25,.5,.75,1,1.25,1.5,1.75,2];for(let i=0,length=values.length;i<length;i++){var value=values[i];menuItems.push({name:1===value?globalize.translate("Normal"):numberToString(value)+"x",id:value.toString(),selected:currentValue===value})}return actionsheet.show({items:menuItems,positionTo:options.positionTo,positionX:options.positionX,positionY:options.positionY,transformOrigin:options.transformOrigin,noTextWrap:options.noTextWrap,title:globalize.translate("PlaybackSpeed"),hasItemSelectionState:!0}).then(function(result){result&&playbackManager.setPlaybackRate(result,player)})}function showRepeatModeMenu(player,options){var menuItems=[],currentValue=playbackManager.getRepeatMode(player);return menuItems.push({name:globalize.translate("RepeatAll"),id:"RepeatAll",selected:"RepeatAll"===currentValue,asideIcon:""}),menuItems.push({name:globalize.translate("RepeatOne"),id:"RepeatOne",selected:"RepeatOne"===currentValue,asideIcon:""}),menuItems.push({name:globalize.translate("None"),id:"RepeatNone",selected:"RepeatNone"===currentValue}),actionsheet.show({items:menuItems,positionTo:options.positionTo,positionX:options.positionX,positionY:options.positionY,transformOrigin:options.transformOrigin,noTextWrap:options.noTextWrap,title:globalize.translate("HeaderRepeatMode"),hasItemSelectionState:!0,hasItemAsideIcon:!0}).then(function(mode){mode&&playbackManager.setRepeatMode(mode,player)})}function getQualitySecondaryText(player){var videoStream=playbackManager.currentMediaSource(player).MediaStreams.filter(function(stream){return"Video"===stream.Type})[0],videoStream=videoStream?videoStream.Width:null,videoStream=qualityoptions.getVideoQualityOptions({currentMaxBitrate:playbackManager.getMaxStreamingBitrate(player),isAutomaticBitrateEnabled:playbackManager.enableAutomaticBitrateDetection(player),videoWidth:videoStream,enableAuto:!0}).filter(function(o){return o.selected});if(!videoStream.length)return null;let text=(videoStream=videoStream[0]).name;return videoStream.autoText&&((player=playbackManager.getPlayerState(player)).PlayState&&"Transcode"!==player.PlayState.PlayMethod?text+=" - Direct":text+=" "+videoStream.autoText),text}function showAspectRatioMenu(player,options){let currentId=playbackManager.getAspectRatio(player);var menuItems=playbackManager.getSupportedAspectRatios(player).map(function(i){return{id:i.id,name:i.name,selected:i.id===currentId}});return actionsheet.show({items:menuItems,positionTo:options.positionTo,positionX:options.positionX,positionY:options.positionY,transformOrigin:options.transformOrigin,noTextWrap:options.noTextWrap,title:globalize.translate("HeaderAspectRatio"),hasItemSelectionState:!0}).then(function(id){return id?(playbackManager.setAspectRatio(id,player),Promise.resolve()):Promise.reject()})}function numberToString(value){try{return new Intl.NumberFormat(globalize.getCurrentLocales(),{style:"decimal"}).format(value)}catch(err){return console.log("Error in NumberFormat: "+err),value}}function showWithUser(options,player,user){var supportedCommands=playbackManager.getSupportedCommands(player),menuItems=[];if("Video"===options.mediaType&&-1!==supportedCommands.indexOf("SetAspectRatio")){let currentAspectRatioId=playbackManager.getAspectRatio(player);var currentAspectRatio=playbackManager.getSupportedAspectRatios(player).filter(function(i){return i.id===currentAspectRatioId})[0];menuItems.push({name:globalize.translate("HeaderAspectRatio"),id:"aspectratio",asideText:currentAspectRatio?currentAspectRatio.name:null})}currentAspectRatio=playbackManager.currentMediaSource(player);return"Video"===options.mediaType&&user&&user.Policy.EnableVideoPlaybackTranscoding&¤tAspectRatio&¤tAspectRatio.SupportsTranscoding&&-1!==supportedCommands.indexOf("SetMaxStreamingBitrate")&&(user=getQualitySecondaryText(player),menuItems.push({name:globalize.translate("Quality"),id:"quality",asideText:user})),"Video"===options.mediaType&&-1!==supportedCommands.indexOf("SetRepeatMode")&¤tAspectRatio.RunTimeTicks&&(user=playbackManager.getRepeatMode(player),menuItems.push({name:globalize.translate("HeaderRepeatMode"),id:"repeatmode",asideText:"RepeatNone"===user?globalize.translate("None"):globalize.translate(""+user)})),-1!==supportedCommands.indexOf("SetPlaybackRate")&¤tAspectRatio.RunTimeTicks&&!1!==options.speed&&(user=playbackManager.getPlaybackRate(player),menuItems.push({name:globalize.translate("PlaybackSpeed"),id:"speed",asideText:1===user?globalize.translate("Normal"):numberToString(user)})),player.isLocalPlayer&&menuItems.push({name:globalize.translate("StatsForNerds"),id:"stats",asideText:null}),1<playbackManager.getCurrentPlaylistLength(player)&&menuItems.push({name:globalize.translate("HeaderSavePlayQueueToPlaylist"),id:"saveplayqueue",asideText:null}),actionsheet.show({items:menuItems,positionTo:options.positionTo,positionX:options.positionX,positionY:options.positionY,transformOrigin:options.transformOrigin,noTextWrap:options.noTextWrap,hasItemAsideText:!0}).then(function(id){return handleSelectedOption(id,options,player)})}function isValidForPlaylist(i){return i.Id&&i.ServerId}function savePlayQueue(player){return Emby.importModule("./modules/addtolist/addtolist.js").then(function(AddToList){playbackManager.getPlaylist(player).then(function(result){result=result.Items.filter(isValidForPlaylist);result.length&&(new AddToList).show({items:result,enableAddToPlayQueue:!1,defaultValue:"new",type:"Playlist"})})})}function show(options){let player=options.player;var currentItem=playbackManager.currentItem(player);return currentItem&¤tItem.ServerId?connectionManager.getApiClient(currentItem.ServerId).getCurrentUser().then(function(user){return showWithUser(options,player,user)}):showWithUser(options,player,null)}function handleSelectedOption(id,options,player){switch(id){case"quality":return showQualityMenu(player,options);case"aspectratio":return showAspectRatioMenu(player,options);case"repeatmode":return showRepeatModeMenu(player,options);case"speed":return showSpeedMenu(options);case"saveplayqueue":return savePlayQueue(player);default:return options.onOption&&options.onOption(id),Promise.resolve()}}export default{show:show,showSpeedMenu:showSpeedMenu,showSubMenu:handleSelectedOption}; |