update playback components

This commit is contained in:
Luke Pulverenti 2017-01-05 15:18:09 -05:00
parent d6203e5246
commit 62590fc268
6 changed files with 140 additions and 17 deletions

View file

@ -514,8 +514,8 @@
}
console.log('cc: connect');
// Reset this so the next query doesn't make it appear like content is playing.
self.lastPlayerData = {};
// Reset this so that statechange will fire
self.lastPlayerData = null;
});
events.on(castPlayer, "playbackstart", function (e, data) {
@ -551,10 +551,16 @@
console.log('cc: volumechange');
var state = self.getPlayerStateInternal(data);
events.trigger(self, "volumechange", [state]);
});
events.on(castPlayer, "repeatmodechange", function (e, data) {
console.log('cc: repeatmodechange');
var state = self.getPlayerStateInternal(data);
events.trigger(self, "repeatmodechange", [state]);
});
events.on(castPlayer, "playstatechange", function (e, data) {
console.log('cc: playstatechange');
@ -611,6 +617,13 @@
});
};
self.playPause = function () {
castPlayer.sendMessage({
options: {},
command: 'PlayPause'
});
};
self.pause = function () {
castPlayer.sendMessage({
options: {},
@ -696,6 +709,12 @@
return state.PositionTicks;
};
self.duration = function() {
var state = self.lastPlayerData || {};
state = state.NowPlayingItem || {};
return state.RunTimeTicks;
};
self.paused = function () {
var state = self.lastPlayerData || {};
state = state.PlayState || {};
@ -723,6 +742,12 @@
}
};
self.getRepeatMode = function () {
var state = self.lastPlayerData || {};
state = state.PlayState || {};
return state.RepeatMode;
};
self.setRepeatMode = function (mode) {
castPlayer.sendMessage({
options: {
@ -809,10 +834,22 @@
});
};
self.getAudioStreamIndex = function () {
var state = self.lastPlayerData || {};
state = state.PlayState || {};
return state.AudioStreamIndex;
};
self.subtitleTracks = function () {
return [];
};
self.getSubtitleStreamIndex = function () {
var state = self.lastPlayerData || {};
state = state.PlayState || {};
return state.SubtitleStreamIndex;
};
self.setSubtitleStreamIndex = function (index) {
castPlayer.sendMessage({
options: {
@ -822,6 +859,31 @@
});
};
self.getMaxStreamingBitrate = function () {
var state = self.lastPlayerData || {};
state = state.PlayState || {};
return state.MaxStreamingBitrate;
};
self.setMaxStreamingBitrate = function (bitrate) {
castPlayer.sendMessage({
options: {
bitrate: bitrate
},
command: 'SetMaxStreamingBitrate'
});
};
self.isFullscreen = function () {
var state = self.lastPlayerData || {};
state = state.PlayState || {};
return state.IsFullscreen;
};
self.toggleFullscreen = function () {
// not supported
};
self.nextTrack = function () {
castPlayer.sendMessage({
options: {},
@ -892,18 +954,27 @@
self.getPlayerState = function () {
var result = self.getPlayerStateInternal();
return Promise.resolve(result);
return Promise.resolve(self.getPlayerStateInternal());
};
self.lastPlayerData = {};
self.getPlayerStateInternal = function (data) {
var triggerStateChange = false;
if (data && !self.lastPlayerData) {
triggerStateChange = true;
}
data = data || self.lastPlayerData;
self.lastPlayerData = data;
console.log(JSON.stringify(data));
//console.log(JSON.stringify(data));
if (triggerStateChange) {
events.trigger(self, "statechange", [data]);
}
return data;
};