mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
unify video osd
This commit is contained in:
parent
b3a664583a
commit
407f137095
24 changed files with 713 additions and 6466 deletions
|
@ -167,7 +167,7 @@ var Dashboard = {
|
|||
url = '/' + url;
|
||||
}
|
||||
}
|
||||
Emby.Page.show(url);
|
||||
return Emby.Page.show(url);
|
||||
},
|
||||
|
||||
showLoadingMsg: function () {
|
||||
|
@ -584,11 +584,6 @@ var Dashboard = {
|
|||
|
||||
},
|
||||
|
||||
isServerlessPage: function () {
|
||||
var url = window.location.href.toLowerCase();
|
||||
return url.indexOf('connectlogin.html') != -1 || url.indexOf('selectserver.html') != -1 || url.indexOf('login.html') != -1 || url.indexOf('forgotpassword.html') != -1 || url.indexOf('forgotpasswordpin.html') != -1;
|
||||
},
|
||||
|
||||
capabilities: function () {
|
||||
|
||||
var caps = {
|
||||
|
@ -844,20 +839,7 @@ var Dashboard = {
|
|||
|
||||
require(['browserdeviceprofile', 'qualityoptions', 'appSettings'], function (profileBuilder, qualityoptions, appSettings) {
|
||||
|
||||
var supportsCustomSeeking = false;
|
||||
if (!browserInfo.mobile) {
|
||||
supportsCustomSeeking = true;
|
||||
} else if (AppInfo.isNativeApp && browserInfo.safari) {
|
||||
if (navigator.userAgent.toLowerCase().indexOf('ipad') == -1) {
|
||||
// Need to disable it in order to support picture in picture
|
||||
supportsCustomSeeking = true;
|
||||
}
|
||||
} else if (AppInfo.isNativeApp) {
|
||||
supportsCustomSeeking = true;
|
||||
}
|
||||
|
||||
var profile = profileBuilder(Object.assign(profileOptions || {}, {
|
||||
supportsCustomSeeking: supportsCustomSeeking
|
||||
}));
|
||||
|
||||
if (!(AppInfo.isNativeApp && browserInfo.android) && !browserInfo.edge && !browserInfo.msie) {
|
||||
|
@ -935,8 +917,6 @@ var AppInfo = {};
|
|||
// This currently isn't working on android, unfortunately
|
||||
AppInfo.supportsFileInput = !(AppInfo.isNativeApp && isAndroid);
|
||||
|
||||
AppInfo.hasPhysicalVolumeButtons = isCordova || browserInfo.mobile;
|
||||
|
||||
if (isCordova && isIOS) {
|
||||
AppInfo.moreIcon = 'more-horiz';
|
||||
} else {
|
||||
|
@ -1204,7 +1184,10 @@ var AppInfo = {};
|
|||
itemHelper: embyWebComponentsBowerPath + '/itemhelper',
|
||||
itemShortcuts: embyWebComponentsBowerPath + "/shortcuts",
|
||||
serverNotifications: embyWebComponentsBowerPath + '/servernotifications',
|
||||
playbackManager: embyWebComponentsBowerPath + '/playback/playbackmanager',
|
||||
nowPlayingHelper: embyWebComponentsBowerPath + '/playback/nowplayinghelper',
|
||||
pluginManager: embyWebComponentsBowerPath + '/pluginmanager',
|
||||
packageManager: embyWebComponentsBowerPath + '/packagemanager',
|
||||
webAnimations: bowerPath + '/web-animations-js/web-animations-next-lite.min'
|
||||
};
|
||||
|
||||
|
@ -1287,6 +1270,8 @@ var AppInfo = {};
|
|||
define("peoplecardbuilder", [embyWebComponentsBowerPath + "/cardbuilder/peoplecardbuilder"], returnFirstDependency);
|
||||
define("chaptercardbuilder", [embyWebComponentsBowerPath + "/cardbuilder/chaptercardbuilder"], returnFirstDependency);
|
||||
|
||||
define("mouseManager", [embyWebComponentsBowerPath + "/input/mouse"], returnFirstDependency);
|
||||
|
||||
define("deleteHelper", [embyWebComponentsBowerPath + "/deletehelper"], returnFirstDependency);
|
||||
define("tvguide", [embyWebComponentsBowerPath + "/guide/guide"], returnFirstDependency);
|
||||
define("programStyles", ['css!' + embyWebComponentsBowerPath + "/guide/programs"], returnFirstDependency);
|
||||
|
@ -1447,6 +1432,8 @@ var AppInfo = {};
|
|||
return dialoghelper;
|
||||
});
|
||||
|
||||
define("inputmanager", ['inputManager'], returnFirstDependency);
|
||||
|
||||
// alias
|
||||
define("historyManager", ['embyRouter'], returnFirstDependency);
|
||||
|
||||
|
@ -1454,60 +1441,6 @@ var AppInfo = {};
|
|||
define("hammer-main", ['hammer'], createMainContentHammer);
|
||||
define("appfooter-shared", ['appfooter'], createSharedAppFooter);
|
||||
|
||||
// mock this for now. not used in this app
|
||||
define("playbackManager", [], function () {
|
||||
return {
|
||||
isPlaying: function () {
|
||||
return MediaPlayer.currentItem != null;
|
||||
},
|
||||
isPlayingVideo: function () {
|
||||
return MediaPlayer.currentItem != null;
|
||||
},
|
||||
play: function (options) {
|
||||
|
||||
if (options.fullscreen === false) {
|
||||
// theme backdrops - not supported
|
||||
if (!options.items || options.items[0].MediaType == 'Video') {
|
||||
return Promise.reject();
|
||||
}
|
||||
}
|
||||
|
||||
return MediaController.play(options);
|
||||
},
|
||||
queue: function (options) {
|
||||
|
||||
MediaController.queue(options);
|
||||
},
|
||||
currentPlaylistIndex: function (options) {
|
||||
return MediaController.currentPlaylistIndex(options);
|
||||
},
|
||||
canQueueMediaType: function (mediaType) {
|
||||
return MediaController.canQueueMediaType(mediaType);
|
||||
},
|
||||
canPlay: function (item) {
|
||||
return MediaController.canPlay(item);
|
||||
},
|
||||
canQueue: function (item) {
|
||||
return MediaController.canQueueMediaType(item.MediaType, item.Type);
|
||||
},
|
||||
instantMix: function (item) {
|
||||
return MediaController.instantMix(item);
|
||||
},
|
||||
shuffle: function (item) {
|
||||
return MediaController.shuffle(item);
|
||||
},
|
||||
pause: function () {
|
||||
return MediaController.pause();
|
||||
},
|
||||
stop: function () {
|
||||
return MediaController.stop();
|
||||
},
|
||||
seek: function (ticks) {
|
||||
return MediaController.seek(ticks);
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
// mock this for now. not used in this app
|
||||
define("skinManager", [], function () {
|
||||
|
||||
|
@ -1519,18 +1452,6 @@ var AppInfo = {};
|
|||
};
|
||||
});
|
||||
|
||||
// mock this for now. not used in this app
|
||||
define("playbackManager", [], function () {
|
||||
return {
|
||||
};
|
||||
});
|
||||
|
||||
// mock this for now. not used in this app
|
||||
define("pluginManager", [], function () {
|
||||
return {
|
||||
};
|
||||
});
|
||||
|
||||
define("connectionManager", [], function () {
|
||||
return ConnectionManager;
|
||||
});
|
||||
|
@ -1547,6 +1468,10 @@ var AppInfo = {};
|
|||
Dashboard.navigate('login.html?serverid=' + serverId);
|
||||
};
|
||||
|
||||
embyRouter.showVideoOsd = function () {
|
||||
return Dashboard.navigate('videoosd.html');
|
||||
};
|
||||
|
||||
embyRouter.showSelectServer = function () {
|
||||
Dashboard.navigate('selectserver.html');
|
||||
};
|
||||
|
@ -1720,18 +1645,12 @@ var AppInfo = {};
|
|||
|
||||
if (Dashboard.isRunningInCordova() && browserInfo.android) {
|
||||
|
||||
//define("audiorenderer", ["scripts/htmlmediarenderer"]);
|
||||
window.VlcAudio = true;
|
||||
define("audiorenderer", ["cordova/android/vlcplayer"]);
|
||||
define("videorenderer", ["cordova/android/vlcplayer"]);
|
||||
}
|
||||
else if (Dashboard.isRunningInCordova() && browserInfo.safari) {
|
||||
define("audiorenderer", ["cordova/audioplayer"]);
|
||||
define("videorenderer", ["scripts/htmlmediarenderer"]);
|
||||
}
|
||||
else {
|
||||
define("audiorenderer", ["scripts/htmlmediarenderer"]);
|
||||
define("videorenderer", ["scripts/htmlmediarenderer"]);
|
||||
}
|
||||
|
||||
if (Dashboard.isRunningInCordova() && browserInfo.android) {
|
||||
|
@ -1747,14 +1666,7 @@ var AppInfo = {};
|
|||
|
||||
define("buttonenabled", ["legacy/buttonenabled"]);
|
||||
|
||||
var deps = [];
|
||||
|
||||
deps.push('scripts/mediacontroller');
|
||||
|
||||
require(deps, function () {
|
||||
|
||||
initAfterDependencies();
|
||||
});
|
||||
initAfterDependencies();
|
||||
}
|
||||
|
||||
function getRequirePromise(deps) {
|
||||
|
@ -1794,7 +1706,6 @@ var AppInfo = {};
|
|||
createConnectionManager().then(function () {
|
||||
|
||||
console.log('initAfterDependencies promises resolved');
|
||||
MediaController.init();
|
||||
|
||||
require(['globalize'], function (globalize) {
|
||||
|
||||
|
@ -1850,7 +1761,7 @@ var AppInfo = {};
|
|||
|
||||
document.title = Globalize.translateDocument(document.title, 'core');
|
||||
|
||||
onAppReady();
|
||||
loadPlugins([], browserInfo).then(onAppReady);
|
||||
}
|
||||
|
||||
function defineRoute(newRoute, dictionary) {
|
||||
|
@ -2619,6 +2530,16 @@ var AppInfo = {};
|
|||
anonymous: true
|
||||
});
|
||||
|
||||
defineRoute({
|
||||
path: '/videoosd.html',
|
||||
dependencies: [],
|
||||
transition: 'fade',
|
||||
controller: 'scripts/videoosd',
|
||||
autoFocus: false,
|
||||
type: 'video-osd',
|
||||
supportsThemeMedia: true
|
||||
});
|
||||
|
||||
defineRoute({
|
||||
path: '/configurationpage',
|
||||
dependencies: ['jQuery'],
|
||||
|
@ -2636,12 +2557,75 @@ var AppInfo = {};
|
|||
});
|
||||
}
|
||||
|
||||
function onAppReady() {
|
||||
function loadPlugins(externalPlugins, browser, shell) {
|
||||
|
||||
require(['scripts/mediaplayer'], function () {
|
||||
console.log('Loading installed plugins');
|
||||
|
||||
MediaPlayer.init();
|
||||
// Load installed plugins
|
||||
|
||||
var list = [
|
||||
//'plugins/defaultskin/plugin',
|
||||
//'plugins/logoscreensaver/plugin',
|
||||
//'plugins/backdropscreensaver/plugin',
|
||||
//'plugins/defaultsoundeffects/plugin',
|
||||
//'plugins/playbackvalidation/plugin'
|
||||
];
|
||||
|
||||
list.push('bower_components/emby-webcomponents/htmlaudioplayer/plugin');
|
||||
list.push('bower_components/emby-webcomponents/htmlvideoplayer/plugin');
|
||||
list.push('bower_components/emby-webcomponents/sessionplayer');
|
||||
|
||||
if (browser.chrome) {
|
||||
list.push('bower_components/emby-webcomponents/chromecastplayer');
|
||||
}
|
||||
|
||||
list.push('bower_components/emby-webcomponents/youtubeplayer/plugin');
|
||||
|
||||
//if (globalScope.webapis && webapis.avplay) {
|
||||
// list.push('plugins/tizenavplayer/plugin');
|
||||
//} else {
|
||||
// list.push('plugins/htmlvideoplayer/plugin');
|
||||
//}
|
||||
|
||||
//if (!browser.tv) {
|
||||
// list.push('plugins/confirmstillplaying/plugin');
|
||||
//}
|
||||
|
||||
//if (!browser.keyboard) {
|
||||
// list.push('plugins/keyboard/plugin');
|
||||
//}
|
||||
|
||||
for (var i = 0, length = externalPlugins.length; i < length; i++) {
|
||||
list.push(externalPlugins[i]);
|
||||
}
|
||||
|
||||
//if (shell.canExec) {
|
||||
// list.push('plugins/externalplayer/plugin');
|
||||
//}
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
Promise.all(list.map(loadPlugin)).then(function () {
|
||||
|
||||
require(['packageManager'], function (packageManager) {
|
||||
packageManager.init().then(resolve, reject);
|
||||
});
|
||||
|
||||
}, reject);
|
||||
});
|
||||
}
|
||||
|
||||
function loadPlugin(url) {
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
require(['pluginManager'], function (pluginManager) {
|
||||
pluginManager.loadPlugin(url).then(resolve, reject);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function onAppReady() {
|
||||
|
||||
console.log('Begin onAppReady');
|
||||
|
||||
|
@ -2689,7 +2673,6 @@ var AppInfo = {};
|
|||
var postInitDependencies = [];
|
||||
|
||||
postInitDependencies.push('bower_components/emby-webcomponents/thememediaplayer');
|
||||
postInitDependencies.push('scripts/remotecontrol');
|
||||
postInitDependencies.push('css!css/chromecast.css');
|
||||
postInitDependencies.push('scripts/autobackdrops');
|
||||
|
||||
|
@ -2708,9 +2691,6 @@ var AppInfo = {};
|
|||
|
||||
//postInitDependencies.push('cordova/backgroundfetch');
|
||||
}
|
||||
|
||||
} else if (browserInfo.chrome) {
|
||||
postInitDependencies.push('scripts/chromecast');
|
||||
}
|
||||
|
||||
postInitDependencies.push('scripts/nowplayingbar');
|
||||
|
@ -2724,6 +2704,7 @@ var AppInfo = {};
|
|||
}
|
||||
|
||||
postInitDependencies.push('bower_components/emby-webcomponents/input/api');
|
||||
postInitDependencies.push('mouseManager');
|
||||
|
||||
if (!browserInfo.tv) {
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue