diff --git a/dashboard-ui/css/site.css b/dashboard-ui/css/site.css index f77ea41bc3..efce771085 100644 --- a/dashboard-ui/css/site.css +++ b/dashboard-ui/css/site.css @@ -702,7 +702,7 @@ progress { } - #nowPlayingBar > *:not(#mediaElement) { + #nowPlayingBar > *:not(#mediaElement):not(.mediaFlyoutContainer) { margin: 0 1em; } @@ -872,6 +872,21 @@ input[type="range"]::-ms-fill-upper { } } +.mediaFlyoutContainer { + display: inline-block; +} + +.mediaPlayerFlyout { + width: 200px; + color: #000; + background-color: #fff; + border: 1px solid #999; + position: absolute; + z-index: 99999; + bottom: 55px; + margin-left: -50px; +} + .installedPluginTitle { max-width: 85px; overflow: hidden; diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js index 4dbe5752a8..67fa06a81b 100644 --- a/dashboard-ui/scripts/mediaplayer.js +++ b/dashboard-ui/scripts/mediaplayer.js @@ -315,6 +315,11 @@ $('#playlistButton', nowPlayingBar).show(); } + $('#qualityButton', nowPlayingBar).hide(); + $('#audioTracksButton', nowPlayingBar).hide(); + $('#subtitleButton', nowPlayingBar).hide(); + $('#chaptersButton', nowPlayingBar).hide(); + $('#mediaElement', nowPlayingBar).html(html); var audioElement = $("audio", nowPlayingBar); @@ -464,6 +469,23 @@ $('#nextTrackButton', nowPlayingBar).hide(); $('#mediaElement', nowPlayingBar).html(html); + $('#qualityButton', nowPlayingBar).show(); + $('#audioTracksButton', nowPlayingBar).show(); + + if (item.MediaStreams.filter(function (i) { + return i.Type == "Subtitle"; + }).length) { + $('#subtitleButton', nowPlayingBar).show(); + } else { + $('#subtitleButton', nowPlayingBar).hide(); + } + + if (item.Chapters.length) { + $('#chaptersButton', nowPlayingBar).show(); + } else { + $('#chaptersButton', nowPlayingBar).hide(); + } + if ($.browser.msie) { $('#fullscreenButton', nowPlayingBar).hide(); } else { @@ -885,6 +907,69 @@ self.isPlaying = function () { return currentMediaElement; }; + + function showFlyout(flyout, button) { + + $(document.body).off("mousedown.mediaflyout").on("mousedown.mediaflyout", function (e) { + + var elem = $(e.target); + + var flyoutId = flyout[0].id; + var safeItems = button + ',#' + flyoutId; + + if (!elem.is(safeItems) && !elem.parents(safeItems).length) { + flyout.hide(); + $(document.body).off("mousedown.hidesearchhints"); + } + + }); + + flyout.show(); + } + + self.showAudioTracksFlyout = function () { + + var flyout = $('#audioTracksFlyout'); + + if (!flyout.is(':visible')) { + + showFlyout(flyout, '#audioTracksButton'); + + } + }; + + self.showChaptersFlyout = function () { + + var flyout = $('#chaptersFlyout'); + + if (!flyout.is(':visible')) { + + showFlyout(flyout, '#chaptersButton'); + + } + }; + + self.showQualityFlyout = function () { + + var flyout = $('#qualityFlyout'); + + if (!flyout.is(':visible')) { + + showFlyout(flyout, '#qualityButton'); + + } + }; + + self.showSubtitleMenu = function () { + + var flyout = $('#subtitleFlyout'); + + if (!flyout.is(':visible')) { + + showFlyout(flyout, '#subtitleButton'); + + } + }; } window.MediaPlayer = new mediaPlayer(); diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 51dd9e7e47..02003eaff0 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -898,19 +898,19 @@ var Dashboard = { var url; - var type = cmd.ItemType.toLowerCase(); + var type = (cmd.ItemType || "").toLowerCase(); if (type == "genre") { - url = "itembynamedetails.html?genre=" + ApiClient.encodeName(cmd.ItemIdentifier) + "&context=" + context; + url = "itembynamedetails.html?genre=" + ApiClient.encodeName(cmd.ItemName) + "&context=" + context; } else if (type == "studio") { - url = "itembynamedetails.html?studio=" + ApiClient.encodeName(cmd.ItemIdentifier) + "&context=" + context; + url = "itembynamedetails.html?studio=" + ApiClient.encodeName(cmd.ItemName) + "&context=" + context; } else if (type == "person") { - url = "itembynamedetails.html?person=" + ApiClient.encodeName(cmd.ItemIdentifier) + "&context=" + context; + url = "itembynamedetails.html?person=" + ApiClient.encodeName(cmd.ItemName) + "&context=" + context; } else if (type == "artist") { - url = "itembynamedetails.html?artist=" + ApiClient.encodeName(cmd.ItemIdentifier) + "&context=" + (context || "music"); + url = "itembynamedetails.html?artist=" + ApiClient.encodeName(cmd.ItemName) + "&context=" + (context || "music"); } if (url) { @@ -918,7 +918,7 @@ var Dashboard = { return; } - ApiClient.getItem(Dashboard.getCurrentUserId(), cmd.ItemIdentifier).done(function (item) { + ApiClient.getItem(Dashboard.getCurrentUserId(), cmd.ItemId).done(function (item) { Dashboard.navigate(LibraryBrowser.getHref(item, context)); @@ -1114,12 +1114,24 @@ $(function () { footerHtml += '
'; footerHtml += ''; footerHtml += ''; - + footerHtml += ''; footerHtml += ''; footerHtml += ''; footerHtml += ''; + footerHtml += ''; + footerHtml += '