jellyfin-web/dashboard-ui/components/remotecontrol.js

833 lines
26 KiB
JavaScript
Raw Normal View History

2017-01-02 23:51:36 -07:00
define(['browser', 'datetime', 'libraryBrowser', 'listView', 'userdataButtons', 'imageLoader', 'playbackManager', 'nowPlayingHelper', 'events', 'apphost', 'cardStyle'], function (browser, datetime, libraryBrowser, listView, userdataButtons, imageLoader, playbackManager, nowPlayingHelper, events, appHost) {
2016-10-22 22:11:46 -07:00
'use strict';
function showSlideshowMenu(context) {
require(['scripts/slideshow'], function () {
SlideShow.showMenu();
});
}
function showAudioMenu(context, player, button, item, currentIndex) {
var streams = (item.MediaStreams || []).filter(function (i) {
return i.Type == 'Audio';
});
var menuItems = streams.map(function (s) {
var menuItem = {
2017-01-02 23:51:36 -07:00
name: s.DisplayTitle,
id: s.Index
};
if (s.Index == currentIndex) {
2016-05-15 09:30:32 -07:00
menuItem.selected = true;
}
return menuItem;
});
require(['actionsheet'], function (actionsheet) {
actionsheet.show({
items: menuItems,
positionTo: button,
callback: function (id) {
player.setAudioStreamIndex(parseInt(id));
}
});
});
}
function showSubtitleMenu(context, player, button, item, currentIndex) {
var streams = (item.MediaStreams || []).filter(function (i) {
return i.Type == 'Subtitle';
});
var menuItems = streams.map(function (s) {
var menuItem = {
2017-01-02 23:51:36 -07:00
name: s.DisplayTitle,
id: s.Index
};
if (s.Index == currentIndex) {
2016-05-15 09:30:32 -07:00
menuItem.selected = true;
}
return menuItem;
});
menuItems.unshift({
id: -1,
name: Globalize.translate('ButtonOff'),
2016-06-18 22:26:52 -07:00
selected: currentIndex == null
});
require(['actionsheet'], function (actionsheet) {
actionsheet.show({
items: menuItems,
positionTo: button,
callback: function (id) {
player.setSubtitleStreamIndex(parseInt(id));
}
});
});
}
function showButton(button) {
button.classList.remove('hide');
}
function hideButton(button) {
button.classList.add('hide');
}
function hasStreams(item, type) {
return item && item.MediaStreams && item.MediaStreams.filter(function (i) {
return i.Type == type;
}).length > 0;
}
2017-01-02 23:51:36 -07:00
function getNowPlayingNameHtml(nowPlayingItem, includeNonNameInfo) {
var names = nowPlayingHelper.getNowPlayingNames(nowPlayingItem, includeNonNameInfo);
return names.map(function (i) {
return i.text;
}).join('<br/>');
}
var currentImgUrl;
function updateNowPlayingInfo(context, state) {
var item = state.NowPlayingItem;
2017-01-02 23:51:36 -07:00
var displayName = item ? getNowPlayingNameHtml(item).replace('<br/>', ' - ') : '';
context.querySelector('.nowPlayingPageTitle').innerHTML = displayName;
if (displayName.length > 0) {
context.querySelector('.nowPlayingPageTitle').classList.remove('hide');
} else {
context.querySelector('.nowPlayingPageTitle').classList.add('hide');
}
var url;
var backdropUrl = null;
if (!item) {
}
else if (item.PrimaryImageTag) {
url = ApiClient.getScaledImageUrl(item.PrimaryImageItemId, {
type: "Primary",
maxHeight: 300,
tag: item.PrimaryImageTag
});
}
else if (item.BackdropImageTag) {
url = ApiClient.getScaledImageUrl(item.BackdropItemId, {
type: "Backdrop",
maxHeight: 300,
tag: item.BackdropImageTag,
index: 0
});
} else if (item.ThumbImageTag) {
url = ApiClient.getScaledImageUrl(item.ThumbImageItemId, {
type: "Thumb",
maxHeight: 300,
tag: item.ThumbImageTag
});
}
if (url == currentImgUrl) {
return;
}
if (item && item.BackdropImageTag) {
backdropUrl = ApiClient.getScaledImageUrl(item.BackdropItemId, {
type: "Backdrop",
maxHeight: 300,
tag: item.BackdropImageTag,
index: 0
});
}
setImageUrl(context, url);
if (item) {
// This should be outside of the IF
// But for now, if you change songs but keep the same artist, the backdrop will flicker because in-between songs it clears out the image
2016-08-06 07:07:44 -07:00
if (!browser.slow) {
// Exclude from mobile because it just doesn't perform well
2016-03-12 00:28:13 -07:00
require(['backdrop'], function (backdrop) {
backdrop.setBackdrop(backdropUrl);
});
}
ApiClient.getItem(Dashboard.getCurrentUserId(), item.Id).then(function (fullItem) {
2016-09-26 22:13:56 -07:00
userdataButtons.fill({
2016-07-17 23:45:29 -07:00
item: fullItem,
includePlayed: false,
2016-09-26 22:13:56 -07:00
style: 'fab-mini',
element: context.querySelector('.nowPlayingPageUserDataButtons')
2016-07-17 23:45:29 -07:00
});
});
} else {
2016-09-26 22:13:56 -07:00
userdataButtons.destroy({
element: context.querySelector('.nowPlayingPageUserDataButtons')
});
}
}
function setImageUrl(context, url) {
currentImgUrl = url;
if (url) {
2016-11-24 23:58:38 -07:00
imageLoader.lazyImage(context.querySelector('.nowPlayingPageImage'), url);
} else {
context.querySelector('.nowPlayingPageImage').style.backgroundImage = '';
}
}
function buttonEnabled(btn, enabled) {
btn.disabled = !enabled;
}
function updateSupportedCommands(context, commands) {
var all = context.querySelectorAll('.btnCommand');
for (var i = 0, length = all.length; i < length; i++) {
buttonEnabled(all[i], commands.indexOf(all[i].getAttribute('data-command')) != -1);
}
}
function hideChapterMenu(page) {
}
return function () {
var dlg;
var currentPlayer;
2017-01-02 23:51:36 -07:00
var currentPlayerSupportedCommands = [];
var lastPlayerState;
var lastUpdateTime = 0;
2017-01-02 23:51:36 -07:00
var currentRuntimeTicks = 0;
var self = this;
var playlistNeedsRefresh = true;
function toggleRepeat(player) {
2017-01-02 23:51:36 -07:00
if (player && lastPlayerState) {
var state = lastPlayerState;
switch ((state.PlayState || {}).RepeatMode) {
case 'RepeatNone':
2017-01-02 23:51:36 -07:00
playbackManager.setRepeatMode('RepeatAll', player);
break;
case 'RepeatAll':
2017-01-02 23:51:36 -07:00
playbackManager.setRepeatMode('RepeatOne', player);
break;
case 'RepeatOne':
2017-01-02 23:51:36 -07:00
playbackManager.setRepeatMode('RepeatNone', player);
break;
}
}
}
function updatePlayerState(context, state) {
lastPlayerState = state;
var item = state.NowPlayingItem;
2017-01-02 23:51:36 -07:00
var playerInfo = playbackManager.getPlayerInfo();
var supportedCommands = playerInfo.supportedCommands;
var playState = state.PlayState || {};
buttonEnabled(context.querySelector('.btnToggleFullscreen'), item && item.MediaType == 'Video' && supportedCommands.indexOf('ToggleFullscreen') != -1);
buttonEnabled(context.querySelector('.btnAudioTracks'), hasStreams(item, 'Audio') && supportedCommands.indexOf('SetAudioStreamIndex') != -1);
buttonEnabled(context.querySelector('.btnSubtitles'), hasStreams(item, 'Subtitle') && supportedCommands.indexOf('SetSubtitleStreamIndex') != -1);
if (item && item.Chapters && item.Chapters.length && playState.CanSeek) {
buttonEnabled(context.querySelector('.btnChapters'), true);
} else {
buttonEnabled(context.querySelector('.btnChapters'), false);
hideChapterMenu(context);
}
if (supportedCommands.indexOf('DisplayMessage') != -1) {
context.querySelector('.sendMessageSection').classList.remove('hide');
} else {
context.querySelector('.sendMessageSection').classList.add('hide');
}
if (supportedCommands.indexOf('SendString') != -1) {
context.querySelector('.sendTextSection').classList.remove('hide');
} else {
context.querySelector('.sendTextSection').classList.add('hide');
}
buttonEnabled(context.querySelector('.btnStop'), item != null);
buttonEnabled(context.querySelector('.btnNextTrack'), item != null);
buttonEnabled(context.querySelector('.btnPreviousTrack'), item != null);
var positionSlider = context.querySelector('.nowPlayingPositionSlider');
2017-01-02 23:51:36 -07:00
if (positionSlider && !positionSlider.dragging) {
positionSlider.disabled = !playState.CanSeek;
}
2017-01-02 23:51:36 -07:00
updatePlayPauseState(playState.IsPaused, item != null);
2017-01-02 23:51:36 -07:00
var runtimeTicks = item ? item.RunTimeTicks : null;
updateTimeDisplay(playState.PositionTicks, runtimeTicks);
updatePlayerVolumeState(playState.IsMuted, playState.VolumeLevel);
if (item && item.MediaType == 'Video') {
context.classList.remove('hideVideoButtons');
} else {
context.classList.add('hideVideoButtons');
}
2017-01-02 23:51:36 -07:00
if (playerInfo.isLocalPlayer && appHost.supports('physicalvolumecontrol')) {
context.classList.add('hideVolumeButtons');
} else {
context.classList.remove('hideVolumeButtons');
}
if (item && item.MediaType == 'Audio') {
context.querySelector('.buttonsRow2').classList.add('hide');
} else {
context.querySelector('.buttonsRow2').classList.remove('hide');
}
var toggleRepeatButton = context.querySelector('.repeatToggleButton');
if (playState.RepeatMode == 'RepeatAll') {
2016-06-18 13:31:22 -07:00
toggleRepeatButton.innerHTML = "<i class='md-icon'>repeat</i>";
toggleRepeatButton.classList.add('nowPlayingPageRepeatActive');
}
else if (playState.RepeatMode == 'RepeatOne') {
2016-06-18 13:31:22 -07:00
toggleRepeatButton.innerHTML = "<i class='md-icon'>repeat_one</i>";
toggleRepeatButton.classList.add('nowPlayingPageRepeatActive');
} else {
2016-06-18 13:31:22 -07:00
toggleRepeatButton.innerHTML = "<i class='md-icon'>repeat</i>";
toggleRepeatButton.classList.remove('nowPlayingPageRepeatActive');
}
updateNowPlayingInfo(context, state);
}
2017-01-02 23:51:36 -07:00
function updatePlayerVolumeState(isMuted, volumeLevel) {
}
function updatePlayPauseState(isPaused, isActive) {
var context = dlg;
var btnPause = context.querySelector('.btnPause');
var btnPlay = context.querySelector('.btnPlay');
buttonEnabled(btnPause, isActive);
buttonEnabled(btnPlay, isActive);
if (isPaused) {
hideButton(btnPause);
showButton(btnPlay);
} else {
showButton(btnPause);
hideButton(btnPlay);
}
}
function updateTimeDisplay(positionTicks, runtimeTicks) {
// See bindEvents for why this is necessary
var context = dlg;
var positionSlider = context.querySelector('.nowPlayingPositionSlider');
if (positionSlider && !positionSlider.dragging) {
if (runtimeTicks) {
var pct = positionTicks / runtimeTicks;
pct *= 100;
positionSlider.value = pct;
} else {
positionSlider.value = 0;
}
}
if (positionTicks == null) {
context.querySelector('.positionTime').innerHTML = '--:--';
} else {
context.querySelector('.positionTime').innerHTML = datetime.getDisplayRunningTime(positionTicks);
}
if (runtimeTicks != null) {
context.querySelector('.runtime').innerHTML = datetime.getDisplayRunningTime(runtimeTicks);
} else {
context.querySelector('.runtime').innerHTML = '--:--';
}
}
function loadPlaylist(context) {
var html = '';
//ApiClient.getItems(Dashboard.getCurrentUserId(), {
// SortBy: "SortName",
// SortOrder: "Ascending",
// IncludeItemTypes: "Audio",
// Recursive: true,
2016-08-01 22:55:52 -07:00
// Fields: "PrimaryImageAspectRatio,SortName,MediaSourceCount",
// StartIndex: 0,
// ImageTypeLimit: 1,
// EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
// Limit: 100
//}).then(function (result) {
2016-07-15 22:05:40 -07:00
// html += listView.getListViewHtml({
// items: result.Items,
// smallIcon: true
// });
2016-06-20 10:08:13 -07:00
// page(".playlist").html(html).lazyChildren();
//});
2016-07-15 22:05:40 -07:00
html += listView.getListViewHtml({
2017-01-02 23:51:36 -07:00
items: playbackManager.playlist(),
2016-07-16 11:02:39 -07:00
smallIcon: true,
2016-07-16 14:28:15 -07:00
action: 'setplaylistindex'
2016-05-19 12:57:30 -07:00
});
2016-05-19 12:57:30 -07:00
playlistNeedsRefresh = false;
var deps = [];
require(deps, function () {
var itemsContainer = context.querySelector('.playlist');
itemsContainer.innerHTML = html;
2017-01-02 23:51:36 -07:00
var index = playbackManager.currentPlaylistIndex();
2016-05-19 12:57:30 -07:00
if (index != -1) {
2016-05-19 12:57:30 -07:00
var item = itemsContainer.querySelectorAll('.listItem')[index];
if (item) {
2016-06-26 21:19:10 -07:00
var img = item.querySelector('.listItemImage');
2016-05-19 12:57:30 -07:00
img.classList.remove('lazy');
img.classList.add('playlistIndexIndicatorImage');
}
}
2016-11-24 23:58:38 -07:00
imageLoader.lazyChildren(itemsContainer);
});
}
2017-01-02 23:51:36 -07:00
function onPlaybackStart(e, state) {
2017-01-02 23:51:36 -07:00
console.log('remotecontrol event: ' + e.type);
2017-01-02 23:51:36 -07:00
var player = this;
playbackManager.beginPlayerUpdates(player);
onStateChanged.call(player, e, state);
2017-01-02 23:51:36 -07:00
loadPlaylist(dlg);
}
2017-01-02 23:51:36 -07:00
function onPlaybackStopped(e, state) {
2017-01-02 23:51:36 -07:00
console.log('remotecontrol event: ' + e.type);
var player = this;
2017-01-02 23:51:36 -07:00
playbackManager.endPlayerUpdates(player);
2016-05-19 12:57:30 -07:00
loadPlaylist(dlg);
}
2017-01-02 23:51:36 -07:00
function onPlayPauseStateChanged(e) {
var player = this;
updatePlayPauseState(player.paused(), true);
}
function onStateChanged(event, state) {
2017-01-02 23:51:36 -07:00
//console.log('nowplaying event: ' + e.type);
var player = this;
2017-01-02 23:51:36 -07:00
updatePlayerState(dlg, state);
}
function onTimeUpdate(e) {
2017-01-02 23:51:36 -07:00
// Try to avoid hammering the document with changes
var now = new Date().getTime();
if ((now - lastUpdateTime) < 700) {
2017-01-02 23:51:36 -07:00
return;
}
lastUpdateTime = now;
var player = this;
var state = lastPlayerState;
var nowPlayingItem = state.NowPlayingItem || {};
currentRuntimeTicks = playbackManager.duration(player);
updateTimeDisplay(playbackManager.currentTime(player), currentRuntimeTicks);
}
function onVolumeChanged(e) {
var player = this;
updatePlayerVolumeState(player.isMuted(), player.getVolume());
}
function releaseCurrentPlayer() {
2017-01-02 23:51:36 -07:00
var player = currentPlayer;
if (player) {
2017-01-02 23:51:36 -07:00
events.off(player, 'playbackstart', onPlaybackStart);
events.off(player, 'playbackstop', onPlaybackStopped);
events.off(player, 'volumechange', onVolumeChanged);
events.off(player, 'pause', onPlayPauseStateChanged);
events.off(player, 'playing', onPlayPauseStateChanged);
events.off(player, 'timeupdate', onTimeUpdate);
2017-01-02 23:51:36 -07:00
playbackManager.endPlayerUpdates(player);
currentPlayer = null;
}
}
function bindToPlayer(context, player) {
releaseCurrentPlayer();
currentPlayer = player;
2017-01-02 23:51:36 -07:00
if (!player) {
return;
}
playbackManager.getPlayerState(player).then(function (state) {
if (state.NowPlayingItem) {
2017-01-02 23:51:36 -07:00
playbackManager.beginPlayerUpdates(player);
}
onStateChanged.call(player, { type: 'init' }, state);
});
2017-01-02 23:51:36 -07:00
events.on(player, 'playbackstart', onPlaybackStart);
events.on(player, 'playbackstop', onPlaybackStopped);
events.on(player, 'volumechange', onVolumeChanged);
events.on(player, 'pause', onPlayPauseStateChanged);
events.on(player, 'playing', onPlayPauseStateChanged);
events.on(player, 'timeupdate', onTimeUpdate);
2017-01-02 23:51:36 -07:00
var playerInfo = playbackManager.getPlayerInfo();
var supportedCommands = playerInfo.supportedCommands;
2017-01-02 23:51:36 -07:00
currentPlayerSupportedCommands = supportedCommands;
updateSupportedCommands(context, supportedCommands);
}
function updateCastIcon(context) {
2017-01-02 23:51:36 -07:00
var info = playbackManager.getPlayerInfo();
var btnCast = context.querySelector('.nowPlayingCastIcon');
2017-01-02 23:51:36 -07:00
if (info && !info.isLocalPlayer) {
2016-08-08 22:10:17 -07:00
btnCast.querySelector('i').innerHTML = 'cast_connected';
btnCast.classList.add('btnActiveCast');
context.querySelector('.nowPlayingSelectedPlayer').innerHTML = info.deviceName || info.name;
2017-01-02 23:51:36 -07:00
} else {
btnCast.querySelector('i').innerHTML = 'cast';
btnCast.classList.remove('btnActiveCast');
context.querySelector('.nowPlayingSelectedPlayer').innerHTML = '';
}
}
2016-06-20 10:08:13 -07:00
function onBtnCommandClick() {
if (currentPlayer) {
2016-06-20 10:08:13 -07:00
if (this.classList.contains('repeatToggleButton')) {
toggleRepeat(currentPlayer);
} else {
2017-01-02 23:51:36 -07:00
playbackManager.sendCommand({
2016-06-20 10:08:13 -07:00
Name: this.getAttribute('data-command')
2016-06-20 10:08:13 -07:00
}, currentPlayer);
}
}
}
2016-06-20 10:08:13 -07:00
function bindEvents(context) {
2016-06-20 10:08:13 -07:00
var btnCommand = context.querySelectorAll('.btnCommand');
for (var i = 0, length = btnCommand.length; i < length; i++) {
btnCommand[i].addEventListener('click', onBtnCommandClick);
}
context.querySelector('.btnToggleFullscreen').addEventListener('click', function (e) {
if (currentPlayer) {
2017-01-02 23:51:36 -07:00
playbackManager.sendCommand({
Name: e.target.getAttribute('data-command')
}, currentPlayer);
}
});
context.querySelector('.btnAudioTracks').addEventListener('click', function (e) {
if (currentPlayer && lastPlayerState && lastPlayerState.PlayState) {
var currentIndex = lastPlayerState.PlayState.AudioStreamIndex;
showAudioMenu(context, currentPlayer, e.target, lastPlayerState.NowPlayingItem, currentIndex);
}
});
context.querySelector('.btnSubtitles').addEventListener('click', function (e) {
if (currentPlayer && lastPlayerState && lastPlayerState.PlayState) {
var currentIndex = lastPlayerState.PlayState.SubtitleStreamIndex;
showSubtitleMenu(context, currentPlayer, e.target, lastPlayerState.NowPlayingItem, currentIndex);
}
});
context.querySelector('.btnChapters').addEventListener('click', function () {
//if (currentPlayer && lastPlayerState) {
// var currentPositionTicks = lastPlayerState.PlayState.PositionTicks;
// showChapterMenu(context, lastPlayerState.NowPlayingItem, currentPositionTicks);
//}
});
context.querySelector('.btnStop').addEventListener('click', function () {
if (currentPlayer) {
2017-01-02 23:51:36 -07:00
playbackManager.stop(currentPlayer);
}
});
context.querySelector('.btnPlay').addEventListener('click', function () {
if (currentPlayer) {
currentPlayer.unpause();
}
});
context.querySelector('.btnPause').addEventListener('click', function () {
if (currentPlayer) {
currentPlayer.pause();
}
});
context.querySelector('.btnNextTrack').addEventListener('click', function () {
if (currentPlayer) {
2017-01-02 23:51:36 -07:00
playbackManager.nextTrack(currentPlayer);
}
});
context.querySelector('.btnPreviousTrack').addEventListener('click', function () {
if (currentPlayer) {
2017-01-02 23:51:36 -07:00
playbackManager.previousTrack(currentPlayer);
}
});
context.querySelector('.nowPlayingPositionSlider').addEventListener('change', function () {
var value = this.value;
2017-01-02 23:51:36 -07:00
if (currentPlayer) {
var newPercent = parseFloat(value);
2017-01-02 23:51:36 -07:00
playbackManager.seekPercent(newPercent, currentPlayer);
}
});
2016-06-13 23:40:21 -07:00
context.querySelector('.nowPlayingPositionSlider', context).getBubbleText = function (value) {
var state = lastPlayerState;
2017-01-02 23:51:36 -07:00
if (!state || !state.NowPlayingItem || !currentRuntimeTicks) {
2016-06-13 23:40:21 -07:00
return '--:--';
}
2017-01-02 23:51:36 -07:00
var ticks = currentRuntimeTicks;
ticks /= 100;
ticks *= value;
2016-06-13 23:40:21 -07:00
return datetime.getDisplayRunningTime(ticks);
};
}
function onPlayerChange() {
var context = dlg;
updateCastIcon(context);
2017-01-02 23:51:36 -07:00
bindToPlayer(context, playbackManager.getCurrentPlayer());
}
function onMessageSubmit(e) {
var form = e.target;
2017-01-02 23:51:36 -07:00
playbackManager.sendCommand({
Name: 'DisplayMessage',
Arguments: {
2016-06-20 10:08:13 -07:00
Header: form.querySelector('#txtMessageTitle').value,
Text: form.querySelector('#txtMessageText', form).value
}
}, currentPlayer);
2016-06-20 10:08:13 -07:00
form.querySelector('input').value = '';
2016-02-24 23:38:12 -07:00
require(['toast'], function (toast) {
toast('Message sent.');
});
e.preventDefault();
e.stopPropagation();
return false;
}
function onSendStringSubmit(e) {
var form = e.target;
2017-01-02 23:51:36 -07:00
playbackManager.sendCommand({
Name: 'SendString',
Arguments: {
2016-06-20 10:08:13 -07:00
String: form.querySelector('#txtTypeText', form).value
}
}, currentPlayer);
2016-06-20 10:08:13 -07:00
form.querySelector('input').value = '';
2016-02-24 23:38:12 -07:00
require(['toast'], function (toast) {
toast('Text sent.');
});
e.preventDefault();
e.stopPropagation();
return false;
}
2016-05-11 07:36:28 -07:00
function init(ownerView, context) {
2016-04-18 11:01:50 -07:00
require(['css!css/nowplaying.css']);
bindEvents(context);
context.querySelector('.sendMessageForm').addEventListener('submit', onMessageSubmit);
context.querySelector('.typeTextForm').addEventListener('submit', onSendStringSubmit);
context.querySelector('.nowPlayingCastIcon').addEventListener('click', function () {
2017-01-03 12:37:10 -07:00
var btn = this;
require(['playerSelectionMenu'], function (playerSelectionMenu) {
2017-01-03 12:37:10 -07:00
playerSelectionMenu.show(btn);
});
});
context.querySelector('.btnExitRemoteControl').addEventListener('click', function () {
history.back();
});
//context.querySelector('.btnSlideshow').addEventListener('click', function () {
// showSlideshowMenu(context);
//});
2016-05-15 09:30:32 -07:00
var mdlTabs = context.querySelector('.libraryViewNav');
2016-09-03 12:10:52 -07:00
context.querySelector('.libraryViewNav').classList.add('bottom');
2016-05-15 09:30:32 -07:00
libraryBrowser.configurePaperLibraryTabs(ownerView, mdlTabs, ownerView.querySelectorAll('.pageTabContent'));
2016-05-11 07:36:28 -07:00
2016-05-09 12:27:38 -07:00
mdlTabs.addEventListener('tabchange', function (e) {
2016-05-19 12:57:30 -07:00
2016-05-09 12:27:38 -07:00
if (e.detail.selectedTabIndex == 2 && playlistNeedsRefresh) {
loadPlaylist(context);
}
});
2017-01-02 23:51:36 -07:00
events.on(playbackManager, 'playerchange', onPlayerChange);
}
function onDialogClosed(e) {
releaseCurrentPlayer();
2017-01-02 23:51:36 -07:00
events.off(playbackManager, 'playerchange', onPlayerChange);
lastPlayerState = null;
}
function onShow(context, tab) {
currentImgUrl = null;
2017-01-02 23:51:36 -07:00
bindToPlayer(context, playbackManager.getCurrentPlayer());
updateCastIcon(context);
}
2016-05-11 07:36:28 -07:00
self.init = function (ownerView, context) {
dlg = context;
2016-05-11 07:36:28 -07:00
init(ownerView, dlg);
};
self.onShow = function () {
onShow(dlg, window.location.hash);
};
self.destroy = function () {
onDialogClosed();
};
};
});