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

control remote players with now playing bar

This commit is contained in:
Luke Pulverenti 2014-04-12 13:27:53 -04:00
parent 85a08beb3e
commit 2835534c6d
6 changed files with 342 additions and 91 deletions

View file

@ -169,7 +169,7 @@
});
if (currentItem.MediaType == "Video") {
ApiClient.stopActiveEncodings().done(function() {
ApiClient.stopActiveEncodings().done(function () {
self.startTimeTicksOffset = ticks;
element.src = currentSrc;
@ -213,7 +213,7 @@
currentTimeElement.html(timeText);
}
var state = self.getPlayerState(currentMediaElement, currentItem, currentMediaSource);
var state = self.getPlayerStateInternal(currentMediaElement, currentItem, currentMediaSource);
$(self).trigger('positionchange', [state]);
};
@ -481,7 +481,7 @@
var mediaControls = $("#videoControls");
var state = self.getPlayerState(currentMediaElement, item, currentMediaSource);
var state = self.getPlayerStateInternal(currentMediaElement, item, currentMediaSource);
var url = "";
@ -865,6 +865,8 @@
elem.pause();
var isVideo = currentItem.MediaType == "Video";
$(elem).off("ended.playnext").on("ended", function () {
$(this).off();
@ -875,10 +877,12 @@
elem.src = "";
currentMediaElement = null;
currentItem = null;
currentMediaSource = null;
}).trigger("ended");
if (currentItem.MediaType == "Video") {
if (isVideo) {
if (self.isFullScreen()) {
self.exitFullScreen();
}
@ -890,13 +894,46 @@
return currentMediaElement;
};
self.getPlayerState = function (playerElement, item, mediaSource) {
self.getPlayerState = function() {
var itemName = '';
var itemSubName = '';
var deferred = $.Deferred();
var result = self.getPlayerStateInternal(currentMediaElement, currentItem, currentMediaSource);
deferred.resolveWith(null, [result]);
return deferred.promise();
};
self.getPlayerStateInternal = function (playerElement, item, mediaSource) {
var state = {};
if (playerElement) {
state.volumeLevel = playerElement.volume * 100;
state.isMuted = playerElement.volume == 0;
state.isPaused = playerElement.paused;
state.positionTicks = self.getCurrentTicks(playerElement);
}
if (mediaSource) {
state.mediaSourceId = mediaSource.Id;
state.runtimeTicks = mediaSource.RunTimeTicks;
state.canSeek = mediaSource.RunTimeTicks && mediaSource.RunTimeTicks > 0;
}
if (item) {
state.itemId = item.Id;
state.mediaType = item.MediaType;
state.itemType = item.Type;
var itemName = '';
var itemSubName = '';
var name = item.Name;
var seriesName = '';
@ -928,46 +965,42 @@
if (!itemSubName && item.ProductionYear) {
itemSubName = item.ProductionYear;
}
}
var state = {
itemId: item.Id,
mediaSourceId: mediaSource.Id,
volumeLevel: playerElement.volume * 100,
isMuted: playerElement.volume == 0,
isPaused: playerElement.paused,
runtimeTicks: mediaSource.RunTimeTicks,
positionTicks: self.getCurrentTicks(playerElement),
canSeek: mediaSource.RunTimeTicks && mediaSource.RunTimeTicks > 0,
mediaType: item.MediaType,
itemName: itemName,
itemSubName: itemSubName,
itemType: item.Type
};
var imageTags = item.ImageTags || {};
var imageTags = item.ImageTags || {};
if (imageTags.Primary) {
if (imageTags.Primary) {
state.primaryImageItemId = item.Id;
state.primaryImageTag = imageTags.Primary;
}
state.primaryImageItemId = item.Id;
state.primaryImageTag = imageTags.Primary;
}
if (item.BackdropImageTags && item.BackdropImageTags.length) {
if (item.BackdropImageTags && item.BackdropImageTags.length) {
state.backdropItemId = item.Id;
state.backdropImageTag = item.BackdropImageTags[0];
}
state.backdropItemId = item.Id;
state.backdropImageTag = item.BackdropImageTags[0];
}
if (imageTags.Thumb) {
if (imageTags.Thumb) {
state.thumbItemId = item.Id;
state.thumbImageTag = imageTags.Thumb;
}
state.thumbItemId = item.Id;
state.thumbImageTag = imageTags.Thumb;
state.itemName = itemName;
state.itemSubName = itemSubName;
}
return state;
};
self.beginPlayerUpdates = function () {
// Nothing to setup here
};
self.endPlayerUpdates = function () {
// Nothing to setup here
};
self.onPlaybackStart = function (playerElement, item, mediaSource) {
self.updateCanClientSeek(playerElement);
@ -976,7 +1009,7 @@
self.startProgressInterval(item.Id, mediaSource.Id);
var state = self.getPlayerState(playerElement, item, mediaSource);
var state = self.getPlayerStateInternal(playerElement, item, mediaSource);
$(self).trigger('playbackstart', [state]);
};
@ -985,7 +1018,7 @@
self.saveVolume(playerElement.volume);
var state = self.getPlayerState(playerElement, currentItem, currentMediaSource);
var state = self.getPlayerStateInternal(playerElement, currentItem, currentMediaSource);
$(self).trigger('volumechange', [state]);
};
@ -1017,14 +1050,14 @@
self.resetEnhancements();
}
var state = self.getPlayerState(playerElement, item, mediaSource);
var state = self.getPlayerStateInternal(playerElement, item, mediaSource);
$(self).trigger('playbackstop', [state]);
};
self.onPlaystateChange = function (playerElement) {
var state = self.getPlayerState(playerElement, currentItem, currentMediaSource);
var state = self.getPlayerStateInternal(playerElement, currentItem, currentMediaSource);
$(self).trigger('playstatechange', [state]);
};