diff --git a/dashboard-ui/apiclient/apiclient.js b/dashboard-ui/apiclient/apiclient.js index baaedd9e3f..ac309ca1d5 100644 --- a/dashboard-ui/apiclient/apiclient.js +++ b/dashboard-ui/apiclient/apiclient.js @@ -265,7 +265,7 @@ return deferred.promise(); } - self.ajaxWithFailover = function (request, deferred, enableReconnection, replaceUrl) { + self.ajaxWithFailover = function (request, deferred, enableReconnection) { logger.log("Requesting " + request.url); @@ -287,12 +287,14 @@ logger.log("Attempting reconnection"); + var previousServerAddress = self.serverAddress(); + tryReconnect().done(function () { logger.log("Reconnect succeesed"); - request.url = request.url.replace("dddd", MediaBrowser.ServerInfo.getServerAddress(self.serverInfo(), self.serverInfo().LastConnectionMode)); + request.url = request.url.replace(previousServerAddress, self.serverAddress()); - self.ajaxWithFailover(request, deferred, false, true); + self.ajaxWithFailover(request, deferred, false); }).fail(function () { diff --git a/dashboard-ui/cordova/android/vlcplayer.js b/dashboard-ui/cordova/android/vlcplayer.js index 2cea11be71..2ca7bd9b40 100644 --- a/dashboard-ui/cordova/android/vlcplayer.js +++ b/dashboard-ui/cordova/android/vlcplayer.js @@ -1,6 +1,6 @@ (function () { - function vlcRenderer(type) { + function vlcRenderer(options) { var self = this; @@ -95,11 +95,11 @@ return; } - if (type == 'audio') { + if (options.type == 'audio') { AndroidVlcPlayer.playAudioVlc(val, JSON.stringify(item), JSON.stringify(mediaSource), posterUrl); } else { - AndroidVlcPlayer.playVideoVlc(val); + AndroidVlcPlayer.playVideoVlc(val, JSON.stringify(item), JSON.stringify(mediaSource), posterUrl); } playerState.currentSrc = val; @@ -129,6 +129,11 @@ playerState = {}; }; + self.enableCustomVideoControls = function () { + + return false; + }; + var posterUrl; self.setPoster = function (url) { posterUrl = url; @@ -163,9 +168,29 @@ } }; + self.init = function () { + + var deferred = DeferredBuilder.Deferred(); + deferred.resolve(); + return deferred.promise(); + }; + window.AudioRenderer.Current = self; + window.VideoRenderer.Current = self; } - window.AudioRenderer = vlcRenderer; + window.AudioRenderer = function (options) { + options = options || {}; + options.type = 'audio'; + + return new vlcRenderer(options); + }; + + window.VideoRenderer = function (options) { + options = options || {}; + options.type = 'video'; + + return new vlcRenderer(options); + }; })(); \ No newline at end of file diff --git a/dashboard-ui/css/librarymenu.css b/dashboard-ui/css/librarymenu.css index 744103a491..c7ccaba151 100644 --- a/dashboard-ui/css/librarymenu.css +++ b/dashboard-ui/css/librarymenu.css @@ -262,7 +262,7 @@ margin: 0 0; position: relative; font-weight: normal; - border-bottom: 4px solid transparent; + border-bottom: 3px solid transparent; } .libraryViewNav .ui-btn-active { diff --git a/dashboard-ui/css/site.css b/dashboard-ui/css/site.css index 93ff8a0dcf..fc2645769f 100644 --- a/dashboard-ui/css/site.css +++ b/dashboard-ui/css/site.css @@ -311,7 +311,7 @@ html { } body { - overflow-y: auto !important; + overflow-y: scroll !important; /* This is needed to prevent a horizontal scrollbar while neon-animated-pages are animating. */ overflow-x: hidden; font-size: 13px; @@ -495,13 +495,13 @@ h1 a:hover { } .libraryViewNav:not(.paperLibraryViewNav).headroom--unpinned:not(.headroomDisabled) { - -webkit-transform: translateY(-203.5%); - transform: translateY(-203.5%); + -webkit-transform: translateY(-208%); + transform: translateY(-208%); } .paperLibraryViewNav.headroom--unpinned:not(.headroomDisabled) { - -webkit-transform: translateY(-204%); - transform: translateY(-204%); + -webkit-transform: translateY(-205%); + transform: translateY(-205%); } .largePanel { diff --git a/dashboard-ui/scripts/htmlmediarenderer.js b/dashboard-ui/scripts/htmlmediarenderer.js index 4db601fe8d..ca1228b02b 100644 --- a/dashboard-ui/scripts/htmlmediarenderer.js +++ b/dashboard-ui/scripts/htmlmediarenderer.js @@ -125,7 +125,13 @@ .on('error', onError)[0]; } - function enableViblast() { + function enableViblast(src) { + + if (src) { + if (src.indexOf('.m3u8') == -1) { + return false; + } + } return MediaPlayer.canPlayHls() && !MediaPlayer.canPlayNativeHls(); } @@ -259,7 +265,7 @@ } else { - if (enableViblast()) { + if (enableViblast(val)) { viblast(elem).setup({ key: 'N8FjNTQ3NDdhZqZhNGI5NWU5ZTI=', diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index 5e408a3a29..e5cf14c411 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -86,6 +86,7 @@ } if (NavHelper.isBack()) { + Logger.log('Not refreshing data because IsBack=true'); return false; } @@ -104,6 +105,7 @@ } if ((now - last) < cacheDuration) { + Logger.log('Not refreshing data due to age'); return false; } @@ -160,6 +162,7 @@ }, enableFullPaperTabs: function () { + //return true; return AppInfo.isNativeApp; }, @@ -229,11 +232,20 @@ var selected = tabs.selected; if (selected == null) { - selected = parseInt(getParameterByName('tab') || '0'); - tabs.selected = selected; - page.querySelector('neon-animated-pages').selected = selected; - } else if (!LibraryBrowser.enableFullPaperTabs()) { + Logger.log('selected tab is null, checking query string'); + + selected = parseInt(getParameterByName('tab') || '0'); + + Logger.log('selected tab will be ' + selected); + + tabs.selected = selected; + + if (!LibraryBrowser.enableFullPaperTabs()) { + page.querySelector('neon-animated-pages').selected = selected; + } + + } else { Events.trigger(page.querySelector('neon-animated-pages'), 'tabchange'); } }, diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js index b4f8b19eb0..120aeffb06 100644 --- a/dashboard-ui/scripts/mediaplayer.js +++ b/dashboard-ui/scripts/mediaplayer.js @@ -937,7 +937,9 @@ if (item.MediaType === "Video") { - self.playVideo(item, self.currentMediaSource, startPosition); + requirejs(['videorenderer'], function () { + self.playVideo(item, self.currentMediaSource, startPosition); + }); } else if (item.MediaType === "Audio") { diff --git a/dashboard-ui/scripts/nowplayingpage.js b/dashboard-ui/scripts/nowplayingpage.js index 711c0016a1..823bdd30c2 100644 --- a/dashboard-ui/scripts/nowplayingpage.js +++ b/dashboard-ui/scripts/nowplayingpage.js @@ -362,7 +362,7 @@ player.beginPlayerUpdates(); onStateChanged.call(player, e, state); - loadPlaylist($.mobile.activePage); + loadPlaylist($($.mobile.activePage)[0]); } function onPlaybackStopped(e, state) { @@ -372,7 +372,7 @@ player.endPlayerUpdates(); onStateChanged.call(player, e, {}); - loadPlaylist($.mobile.activePage); + loadPlaylist($($.mobile.activePage)[0]); } function onStateChanged(e, state) { diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 779746d973..904b6ebe51 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -1971,8 +1971,7 @@ var AppInfo = {}; if (Dashboard.isRunningInCordova() && $.browser.android) { define("audiorenderer", ["cordova/android/vlcplayer"]); - //define("audiorenderer", ["scripts/htmlmediarenderer"]); - define("videorenderer", ["scripts/htmlmediarenderer"]); + define("videorenderer", ["cordova/android/vlcplayer"]); } else { define("audiorenderer", ["scripts/htmlmediarenderer"]);