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

fix video player time display

This commit is contained in:
Luke Pulverenti 2015-06-25 17:50:56 -04:00
parent e88f66812d
commit 939e545723
21 changed files with 149 additions and 115 deletions

View file

@ -552,6 +552,13 @@ To change the drawer container when it's in the right side:
this._setPeeking(false); this._setPeeking(false);
} }
var dy = event.detail.dy;
var absDy = Math.abs(dy);
if (absDy >= 70) {
// Ignore trackx until we move past the edge peek.
return;
}
this._moveDrawer(this._translateXForDeltaX(dx)); this._moveDrawer(this._translateXForDeltaX(dx));
} }
}, },
@ -565,10 +572,14 @@ To change the drawer container when it's in the right side:
sharedPanel = null; sharedPanel = null;
this._moveDrawer(null); this._moveDrawer(null);
var dx = event.detail.dx;
var dy = event.detail.dy;
var absDy = Math.abs(dy);
if (this.rightDrawer) { if (this.rightDrawer) {
this[xDirection ? 'closeDrawer' : 'openDrawer'](); this[xDirection ? 'closeDrawer' : 'openDrawer']();
} else { } else {
this[xDirection || event.detail.dx > -80 ? 'openDrawer' : 'closeDrawer'](); this[xDirection || dx > -80 || absDy >= 70 ? 'openDrawer' : 'closeDrawer']();
} }
} }
}, },

View file

@ -3,9 +3,12 @@
// Reports media playback to the device for lock screen control // Reports media playback to the device for lock screen control
var currentPlayer; var currentPlayer;
var lastPlayerState;
var lastUpdateTime = 0; var lastUpdateTime = 0;
function allowLocalPlayer() {
return false;
}
function updatePlayerState(state, eventName) { function updatePlayerState(state, eventName) {
if (!state.NowPlayingItem) { if (!state.NowPlayingItem) {
@ -16,7 +19,7 @@
var isLocalPlayer = MediaController.getPlayerInfo().isLocalPlayer || false; var isLocalPlayer = MediaController.getPlayerInfo().isLocalPlayer || false;
// Local players do their own notifications // Local players do their own notifications
if (isLocalPlayer) { if (isLocalPlayer && !allowLocalPlayer()) {
return; return;
} }
@ -25,8 +28,6 @@
eventName = 'positionchange'; eventName = 'positionchange';
} }
lastPlayerState = state;
var playState = state.PlayState || {}; var playState = state.PlayState || {};
var nameHtml = MediaController.getNowPlayingNameHtml(state.NowPlayingItem) || ''; var nameHtml = MediaController.getNowPlayingNameHtml(state.NowPlayingItem) || '';
@ -135,6 +136,10 @@
releaseCurrentPlayer(); releaseCurrentPlayer();
if (player.isLocalPlayer && !allowLocalPlayer()) {
return;
}
currentPlayer = player; currentPlayer = player;
console.log('binding remotecontrols to MediaPlayer'); console.log('binding remotecontrols to MediaPlayer');

View file

@ -120,9 +120,12 @@
return false; return false;
}; };
self.destroy = function () { self.cleanup = function (destroyRenderer) {
if (destroyRenderer !== false) {
AndroidVlcPlayer.destroyVlc();
}
AndroidVlcPlayer.destroyVlc();
playerState = {}; playerState = {};
}; };

View file

@ -53,11 +53,17 @@
position: fixed !important; position: fixed !important;
bottom: 0; bottom: 0;
height: auto !important; height: auto !important;
/* Need to reset this because it causes the entire panel to be draggable in safari */
box-sizing: initial !important;
}
.verticalScrollingDrawer {
overflow-y: auto !important; overflow-y: auto !important;
-webkit-overflow-scrolling: touch; -webkit-overflow-scrolling: touch;
overflow-x: hidden; overflow-x: hidden;
/* Need to reset this because it causes the entire panel to be draggable in safari */ }
box-sizing: initial !important;
.dragging .mainDrawerPanel #drawer {
} }
.mainDrawerPanel #main { .mainDrawerPanel #main {

View file

@ -749,10 +749,6 @@ h1 .imageLink {
padding-bottom: 160px; padding-bottom: 160px;
} }
.dashboardPanel .ui-panel-inner {
padding: 0;
}
.appLinks a { .appLinks a {
text-decoration: none !important; text-decoration: none !important;
} }

View file

@ -78,12 +78,3 @@
width: 30.5%; width: 30.5%;
} }
} }
.posterItemText {
text-overflow: ellipsis;
overflow: hidden;
text-wrap: none;
white-space: nowrap;
padding: 5px 4px 4px;
font-weight: 400;
}

View file

@ -4,7 +4,7 @@
<title></title> <title></title>
</head> </head>
<body> <body>
<div id="itemDetailPage" data-role="page" class="page libraryPage itemDetailPage" data-theme="b" data-require="scripts/itemdetailpage,paperbuttonstyle"> <div id="itemDetailPage" data-role="page" class="page libraryPage itemDetailPage" data-theme="b" data-require="scripts/itemdetailpage,paperbuttonstyle,tileitemcss">
<div class="itemTabs homeTabs" style="display: none;"> <div class="itemTabs homeTabs" style="display: none;">
<div class="libraryViewNav scopedLibraryViewNav"> <div class="libraryViewNav scopedLibraryViewNav">

View file

@ -94,12 +94,6 @@
setTimeout(function () { setTimeout(function () {
var dlg = document.getElementById(id); var dlg = document.getElementById(id);
if (options.visibleBackground) {
$(dlg).on('iron-overlay-opened', function(e) {
$('iron-overlay-backdrop').addClass('visibleBackground');
});
}
dlg.open(); dlg.open();
// Has to be assigned a z-index after the call to .open() // Has to be assigned a z-index after the call to .open()

View file

@ -1,7 +1,7 @@
(function (window, store) { (function (window) {
function update(key, val) { function update(key, val) {
store.setItem(key, val); appStorage.setItem(key, val);
Events.trigger(AppSettings, 'settingupdated', [key]); Events.trigger(AppSettings, 'settingupdated', [key]);
} }
@ -14,7 +14,7 @@
update('preferredVideoBitrate', val); update('preferredVideoBitrate', val);
} }
return parseInt(store.getItem('preferredVideoBitrate') || '') || 1500000; return parseInt(appStorage.getItem('preferredVideoBitrate') || '') || 1500000;
}, },
maxChromecastBitrate: function (val) { maxChromecastBitrate: function (val) {
@ -22,7 +22,7 @@
update('chromecastBitrate', val); update('chromecastBitrate', val);
} }
return parseInt(store.getItem('chromecastBitrate') || '') || 3000000; return parseInt(appStorage.getItem('chromecastBitrate') || '') || 3000000;
}, },
enableChromecastAc3: function (val) { enableChromecastAc3: function (val) {
@ -30,7 +30,7 @@
update('enablechromecastac3', val.toString()); update('enablechromecastac3', val.toString());
} }
return store.getItem('enablechromecastac3') == 'true'; return appStorage.getItem('enablechromecastac3') == 'true';
}, },
enableExternalPlayers: function (val) { enableExternalPlayers: function (val) {
@ -38,7 +38,7 @@
update('externalplayers', val.toString()); update('externalplayers', val.toString());
} }
return store.getItem('externalplayers') == 'true'; return appStorage.getItem('externalplayers') == 'true';
}, },
enableItemPreviews: function (val) { enableItemPreviews: function (val) {
@ -46,7 +46,7 @@
update('enableItemPreviews', val.toString()); update('enableItemPreviews', val.toString());
} }
return store.getItem('enableItemPreviews') == 'true'; return appStorage.getItem('enableItemPreviews') == 'true';
}, },
enableFullScreen: function (val) { enableFullScreen: function (val) {
@ -54,7 +54,7 @@
update('enableFullScreen', val.toString()); update('enableFullScreen', val.toString());
} }
return store.getItem('enableFullScreen') == 'true'; return appStorage.getItem('enableFullScreen') == 'true';
}, },
syncPath: function (val) { syncPath: function (val) {
@ -62,10 +62,10 @@
update('syncPath', val.toString()); update('syncPath', val.toString());
} }
return store.getItem('syncPath'); return appStorage.getItem('syncPath');
} }
}; };
})(window, window.appStorage); })(window);

View file

@ -423,6 +423,10 @@
}); });
}).on('pageinitdepends', ".metadataEditorPage", function () {
Dashboard.importCss('css/metadataeditor.css');
}).on('pagebeforehide', ".metadataEditorPage", function () { }).on('pagebeforehide', ".metadataEditorPage", function () {
var page = this; var page = this;

View file

@ -1,4 +1,4 @@
(function (window, store) { (function (window) {
function getDeviceProfile(serverAddress, deviceId, item, startPositionTicks, maxBitrate, mediaSourceId, audioStreamIndex, subtitleStreamIndex) { function getDeviceProfile(serverAddress, deviceId, item, startPositionTicks, maxBitrate, mediaSourceId, audioStreamIndex, subtitleStreamIndex) {
@ -484,4 +484,4 @@
showPlayerSelectionMenu: showPlayerSelectionMenu showPlayerSelectionMenu: showPlayerSelectionMenu
}; };
})(window, window.appStorage); })(window);

View file

@ -128,7 +128,7 @@
var elem = $('.itemVideo'); var elem = $('.itemVideo');
return $(elem) return elem
.one('.loadedmetadata') .one('.loadedmetadata')
.one('playing', onOneVideoPlaying) .one('playing', onOneVideoPlaying)
.on('timeupdate', onTimeUpdate) .on('timeupdate', onTimeUpdate)
@ -146,11 +146,11 @@
if (mediaElement) { if (mediaElement) {
if (val != null) { if (val != null) {
mediaElement.currentTime = val; mediaElement.currentTime = val / 1000;
return; return;
} }
return mediaElement.currentTime; return (mediaElement.currentTime || 0) * 1000;
} }
}; };
@ -239,7 +239,7 @@
return false; return false;
}; };
self.destroy = function () { self.cleanup = function (destroyRenderer) {
self.setCurrentSrc(null); self.setCurrentSrc(null);

View file

@ -1,11 +1,11 @@
var LibraryBrowser = (function (window, document, $, screen, store) { var LibraryBrowser = (function (window, document, $, screen) {
var pageSizeKey = 'pagesize_v4'; var pageSizeKey = 'pagesize_v4';
return { return {
getDefaultPageSize: function (key, defaultValue) { getDefaultPageSize: function (key, defaultValue) {
var saved = store.getItem(key || pageSizeKey); var saved = appStorage.getItem(key || pageSizeKey);
if (saved) { if (saved) {
return parseInt(saved); return parseInt(saved);
@ -29,7 +29,7 @@
loadSavedQueryValues: function (key, query) { loadSavedQueryValues: function (key, query) {
var values = store.getItem(key + '_' + Dashboard.getCurrentUserId()); var values = appStorage.getItem(key + '_' + Dashboard.getCurrentUserId());
if (values) { if (values) {
@ -53,7 +53,7 @@
} }
try { try {
store.setItem(key + '_' + Dashboard.getCurrentUserId(), JSON.stringify(values)); appStorage.setItem(key + '_' + Dashboard.getCurrentUserId(), JSON.stringify(values));
} catch (e) { } catch (e) {
} }
@ -62,7 +62,7 @@
saveViewSetting: function (key, value) { saveViewSetting: function (key, value) {
try { try {
store.setItem(key + '_' + Dashboard.getCurrentUserId() + '_view', value); appStorage.setItem(key + '_' + Dashboard.getCurrentUserId() + '_view', value);
} catch (e) { } catch (e) {
} }
@ -71,7 +71,7 @@
getSavedViewSetting: function (key) { getSavedViewSetting: function (key) {
var deferred = $.Deferred(); var deferred = $.Deferred();
var val = store.getItem(key + '_' + Dashboard.getCurrentUserId() + '_view'); var val = appStorage.getItem(key + '_' + Dashboard.getCurrentUserId() + '_view');
deferred.resolveWith(null, [val]); deferred.resolveWith(null, [val]);
return deferred.promise(); return deferred.promise();
@ -469,6 +469,7 @@
ActionSheetElement.show({ ActionSheetElement.show({
items: items, items: items,
positionTo: positionTo,
callback: function (id) { callback: function (id) {
switch (id) { switch (id) {
@ -2159,7 +2160,7 @@
if (limit && options.updatePageSizeSetting !== false) { if (limit && options.updatePageSizeSetting !== false) {
try { try {
store.setItem(options.pageSizeKey || pageSizeKey, limit); appStorage.setItem(options.pageSizeKey || pageSizeKey, limit);
} catch (e) { } catch (e) {
} }
@ -3023,4 +3024,4 @@
} }
}; };
})(window, document, jQuery, screen, window.appStorage); })(window, document, jQuery, screen);

View file

@ -203,10 +203,13 @@
updateLibraryNavLinks($.mobile.activePage); updateLibraryNavLinks($.mobile.activePage);
}); });
$('.mainDrawerPanel #drawer').addClass('verticalScrollingDrawer');
} }
function onMainDrawerClosed() { function onMainDrawerClosed() {
$(document.body).removeClass('bodyWithPopupOpen'); $(document.body).removeClass('bodyWithPopupOpen');
$('.mainDrawerPanel #drawer').removeClass('verticalScrollingDrawer');
} }
function closeMainDrawer() { function closeMainDrawer() {

View file

@ -1,14 +1,14 @@
(function ($, window, store) { (function ($, window) {
function setMirrorModeEnabled(enabled) { function setMirrorModeEnabled(enabled) {
var val = enabled ? '1' : '0'; var val = enabled ? '1' : '0';
store.setItem('displaymirror--' + Dashboard.getCurrentUserId(), val); appStorage.setItem('displaymirror--' + Dashboard.getCurrentUserId(), val);
} }
function isMirrorModeEnabled() { function isMirrorModeEnabled() {
return (store.getItem('displaymirror--' + Dashboard.getCurrentUserId()) || '') != '0'; return (appStorage.getItem('displaymirror--' + Dashboard.getCurrentUserId()) || '') != '0';
} }
var currentDisplayInfo; var currentDisplayInfo;
@ -891,4 +891,4 @@
mirrorIfEnabled(info); mirrorIfEnabled(info);
}); });
})(jQuery, window, window.appStorage); })(jQuery, window);

View file

@ -494,13 +494,13 @@
$('.videoSubtitlePopup').popup('close'); $('.videoSubtitlePopup').popup('close');
}; };
$(function () { $(Dashboard).on('footercreated', function () {
var parent = $("#mediaPlayer"); var parent = $("#mediaPlayer");
muteButton = $('.muteButton', parent); muteButton = $('.muteButton', parent);
unmuteButton = $('.unmuteButton', parent); unmuteButton = $('.unmuteButton', parent);
currentTimeElement = $('.currentTime', parent); currentTimeElement = $('.currentTime', parent);
positionSlider = $(".positionSlider", parent).on('slidestart', function (e) { positionSlider = $(".positionSlider", parent).on('slidestart', function (e) {
isPositionSliderActive = true; isPositionSliderActive = true;

View file

@ -1,4 +1,4 @@
(function (document, setTimeout, clearTimeout, screen, store, $, setInterval, window) { (function (document, setTimeout, clearTimeout, screen, $, setInterval, window) {
function mediaPlayer() { function mediaPlayer() {
@ -431,7 +431,7 @@
self.getCurrentTicks = function (mediaRenderer) { self.getCurrentTicks = function (mediaRenderer) {
var playerTime = Math.floor(10000000 * (mediaRenderer || self.currentMediaRenderer).currentTime()); var playerTime = Math.floor(10000 * (mediaRenderer || self.currentMediaRenderer).currentTime());
playerTime += self.startTimeTicksOffset; playerTime += self.startTimeTicksOffset;
@ -510,7 +510,7 @@
if (canClientSeek && params == null) { if (canClientSeek && params == null) {
mediaRenderer.currentTime(ticks / (1000 * 10000)); mediaRenderer.currentTime(ticks / 10000);
return; return;
} }
@ -855,7 +855,7 @@
} }
if (self.isPlaying()) { if (self.isPlaying()) {
self.stop(); self.stop(false);
} }
if (item.MediaType !== 'Audio' && item.MediaType !== 'Video') { if (item.MediaType !== 'Audio' && item.MediaType !== 'Video') {
@ -1220,13 +1220,13 @@
self.saveVolume = function (val) { self.saveVolume = function (val) {
if (val) { if (val) {
store.setItem("volume", val); appStorage.setItem("volume", val);
} }
}; };
self.getSavedVolume = function () { self.getSavedVolume = function () {
return store.getItem("volume") || 0.5; return appStorage.getItem("volume") || 0.5;
}; };
self.shuffle = function (id) { self.shuffle = function (id) {
@ -1344,7 +1344,7 @@
}; };
self.stop = function () { self.stop = function (destroyRenderer) {
var mediaRenderer = self.currentMediaRenderer; var mediaRenderer = self.currentMediaRenderer;
@ -1356,7 +1356,8 @@
$(this).off(); $(this).off();
this.destroy(); this.cleanup(destroyRenderer);
self.currentMediaRenderer = null; self.currentMediaRenderer = null;
self.currentItem = null; self.currentItem = null;
self.currentMediaSource = null; self.currentMediaSource = null;
@ -1728,4 +1729,4 @@
}); });
})(document, setTimeout, clearTimeout, screen, window.appStorage, $, setInterval, window); })(document, setTimeout, clearTimeout, screen, $, setInterval, window);

View file

@ -366,10 +366,10 @@
} }
}); });
$(page).on('swipedown', function () { //$(page).on('swipedown', function () {
history.back(); // history.back();
}); //});
$(page).on('click', '.lnkPlayFromIndex', function () { $(page).on('click', '.lnkPlayFromIndex', function () {
@ -396,6 +396,7 @@
player.beginPlayerUpdates(); player.beginPlayerUpdates();
onStateChanged.call(player, e, state); onStateChanged.call(player, e, state);
loadPlaylist($.mobile.activePage);
} }
function onPlaybackStopped(e, state) { function onPlaybackStopped(e, state) {
@ -405,6 +406,7 @@
player.endPlayerUpdates(); player.endPlayerUpdates();
onStateChanged.call(player, e, {}); onStateChanged.call(player, e, {});
loadPlaylist($.mobile.activePage);
} }
function onStateChanged(e, state) { function onStateChanged(e, state) {
@ -632,13 +634,13 @@
var expected = '2'; var expected = '2';
if (appStorage.getItem('remotecontrolswipedown') != expected) { //if (appStorage.getItem('remotecontrolswipedown') != expected) {
Dashboard.alert({ // Dashboard.alert({
message: Globalize.translate('MessageSwipeDownOnRemoteControl'), // message: Globalize.translate('MessageSwipeDownOnRemoteControl'),
title: Globalize.translate('HeaderAlert') // title: Globalize.translate('HeaderAlert')
}); // });
appStorage.setItem('remotecontrolswipedown', expected); // appStorage.setItem('remotecontrolswipedown', expected);
} //}
} }

View file

@ -589,39 +589,39 @@ var Dashboard = {
confirmInternal: function (message, title, showCancel, callback) { confirmInternal: function (message, title, showCancel, callback) {
$('.confirmFlyout').popup("close").remove(); require(['paperbuttonstyle'], function () {
var html = '<div data-role="popup" class="confirmFlyout" style="max-width:500px;" data-theme="a">'; var id = 'paperdlg' + new Date().getTime();
html += '<div class="ui-bar-a" style="text-align:center;">'; var html = '<paper-dialog id="' + id + '" role="alertdialog" entry-animation="fade-in-animation" exit-animation="fade-out-animation" with-backdrop>';
html += '<h3 style="padding: 0 1em;">' + title + '</h3>'; html += '<h2>' + title + '</h2>';
html += '</div>'; html += '<div>' + message + '</div>';
html += '<div class="buttons">';
html += '<div style="padding: 1em;">'; if (showCancel) {
html += '<paper-button dialog-dismiss>' + Globalize.translate('ButtonCancel') + '</paper-button>';
html += '<div style="padding: 1em .25em;margin: 0;">';
html += message;
html += '</div>';
html += '<p><button type="button" data-icon="check" onclick="$(\'.confirmFlyout\')[0].confirm=true;$(\'.confirmFlyout\').popup(\'close\');" data-theme="b">' + Globalize.translate('ButtonOk') + '</button></p>';
if (showCancel) {
html += '<p><button type="button" data-icon="delete" onclick="$(\'.confirmFlyout\').popup(\'close\');" data-theme="a">' + Globalize.translate('ButtonCancel') + '</button></p>';
}
html += '</div>';
html += '</div>';
$(document.body).append(html);
$('.confirmFlyout').popup({ history: false }).trigger('create').popup("open").on("popupafterclose", function () {
if (callback) {
callback(this.confirm == true);
} }
$(this).off("popupafterclose").remove(); html += '<paper-button dialog-confirm autofocus>' + Globalize.translate('ButtonOk') + '</paper-button>';
html += '</div>';
html += '</paper-dialog>';
$(document.body).append(html);
// This timeout is obviously messy but it's unclear how to determine when the webcomponent is ready for use
// element onload never fires
setTimeout(function () {
var dlg = document.getElementById(id);
dlg.open();
// Has to be assigned a z-index after the call to .open()
$(dlg).on('iron-overlay-closed', function (e) {
$(this).remove();
});
}, 300);
}); });
}, },
@ -1914,6 +1914,8 @@ var AppInfo = {};
$(document.body).append(footerHtml); $(document.body).append(footerHtml);
$(Dashboard).trigger('footercreated');
$(window).on("beforeunload", function () { $(window).on("beforeunload", function () {
var apiClient = window.ApiClient; var apiClient = window.ApiClient;
@ -2044,6 +2046,10 @@ var AppInfo = {};
Dashboard.importCss('css/detailtable.css'); Dashboard.importCss('css/detailtable.css');
return {}; return {};
}); });
define("tileitemcss", [], function () {
Dashboard.importCss('css/tileitem.css');
return {};
});
if (Dashboard.isRunningInCordova() && $.browser.safari) { if (Dashboard.isRunningInCordova() && $.browser.safari) {
define("actionsheet", ["cordova/ios/actionsheet"]); define("actionsheet", ["cordova/ios/actionsheet"]);
@ -2061,7 +2067,7 @@ var AppInfo = {};
drawer.forceNarrow = true; drawer.forceNarrow = true;
drawer.drawerWidth = screen.availWidth >= 330 ? "310px" : "270px"; drawer.drawerWidth = screen.availWidth >= 330 ? "310px" : "270px";
if ($.browser.safari && !AppInfo.isNativeApp) { if ($.browser.safari) {
drawer.disableEdgeSwipe = true; drawer.disableEdgeSwipe = true;
} }

View file

@ -230,11 +230,11 @@ iron-overlay-backdrop {
padding: 0 12px; padding: 0 12px;
} }
paper-dialog > *:last-child { paper-dialog > *:last-child:not(.buttons) {
margin-bottom: 12px; margin-bottom: 12px;
} }
paper-dialog > *:first-child { paper-dialog > *:first-child:not(h2) {
margin-top: 12px; margin-top: 12px;
} }
@ -242,10 +242,10 @@ paper-icon-button paper-ripple {
color: inherit !important; color: inherit !important;
} }
iron-overlay-backdrop { paper-dialog + iron-overlay-backdrop {
background-color: transparent !important; background-color: transparent !important;
} }
iron-overlay-backdrop.visibleBackground { paper-dialog[role="alertdialog"] + iron-overlay-backdrop {
background-color: #000 !important; background-color: #000 !important;
} }

View file

@ -13440,6 +13440,13 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
this._setPeeking(false); this._setPeeking(false);
} }
var dy = event.detail.dy;
var absDy = Math.abs(dy);
if (absDy >= 70) {
// Ignore trackx until we move past the edge peek.
return;
}
this._moveDrawer(this._translateXForDeltaX(dx)); this._moveDrawer(this._translateXForDeltaX(dx));
} }
}, },
@ -13453,10 +13460,14 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
sharedPanel = null; sharedPanel = null;
this._moveDrawer(null); this._moveDrawer(null);
var dx = event.detail.dx;
var dy = event.detail.dy;
var absDy = Math.abs(dy);
if (this.rightDrawer) { if (this.rightDrawer) {
this[xDirection ? 'closeDrawer' : 'openDrawer'](); this[xDirection ? 'closeDrawer' : 'openDrawer']();
} else { } else {
this[xDirection || event.detail.dx > -80 ? 'openDrawer' : 'closeDrawer'](); this[xDirection || dx > -80 || absDy >= 70 ? 'openDrawer' : 'closeDrawer']();
} }
} }
}, },