diff --git a/dashboard-ui/css/librarybrowser.css b/dashboard-ui/css/librarybrowser.css index 040f0044a8..af5357bcbc 100644 --- a/dashboard-ui/css/librarybrowser.css +++ b/dashboard-ui/css/librarybrowser.css @@ -920,7 +920,7 @@ span.itemCommunityRating:not(:empty) + .userDataIcons { padding-top: 3px; border-radius: 50%; color: #fff; - background: rgba(51, 136, 204, .8); + background: rgba(82, 181, 75, .8); line-height: 16px; } @@ -928,6 +928,59 @@ span.itemCommunityRating:not(:empty) + .userDataIcons { background: rgba(255, 106, 0, .8); } +.pieIndicator { + height: 24px; + position: absolute; + top: 32px; + right: 29px; + text-align: center; + vertical-align: middle; +} + +.pieBackground { + background-color: rgb(82, 181, 75); + position: absolute; + width: 24px; + height: 24px; + -moz-border-radius: 50px; + -webkit-border-radius: 50px; + -o-border-radius: 50px; + border-radius: 50px; + z-index: 1; +} + +.pieIndicator .fa { + color: #fff; + z-index: 4; + position: absolute; + margin: 5px 0 0 6px; +} + +.pie { + position: absolute; + width: 24px; + height: 24px; + -moz-border-radius: 50px; + -webkit-border-radius: 50px; + -o-border-radius: 50px; + border-radius: 50px; + clip: rect(0px, 12px, 24px, 0px); + background-color: rgba(31, 31, 31, .8); + z-index: 2; +} + +.hold { + position: absolute; + width: 24px; + height: 24px; + -moz-border-radius: 50px; + -webkit-border-radius: 50px; + -o-border-radius: 50px; + border-radius: 50px; + clip: rect(0px, 24px, 24px, 12px); + z-index: 3; +} + .playedIndicator { display: block; position: absolute; @@ -1387,6 +1440,12 @@ span.itemCommunityRating:not(:empty) + .userDataIcons { .listItem a:first-child { margin-right: 0 !important; background-color: transparent !important; + padding-top: 0; + padding-bottom: 0; +} + +.listItem.ui-li-has-thumb .ui-btn { + padding-left: 5.9em !important; } .ui-page-theme-a .listItem a:first-child { @@ -1410,6 +1469,10 @@ span.itemCommunityRating:not(:empty) + .userDataIcons { background-color: rgba(51,51,51,.6) !important; } +.listviewSubLink:hover { + color: #2ad; +} + @media all and (max-width: 600px) { .itemsListview .ui-li-aside { diff --git a/dashboard-ui/css/site.css b/dashboard-ui/css/site.css index cff7082f3a..d4b42ea00a 100644 --- a/dashboard-ui/css/site.css +++ b/dashboard-ui/css/site.css @@ -154,17 +154,8 @@ h1 a:hover { bottom: 0; right: 0; overflow: hidden; - overflow-y: scroll; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: none; - overflow: -moz-scrollbars-none; } - .ui-panel-inner::-webkit-scrollbar { - width: 0 !important; - display: none; - } - .ui-slider-track.ui-mini .ui-slider-handle { height: 18px; width: 18px; @@ -189,15 +180,15 @@ h1 a:hover { } -.hiddenScrollY { - overflow-y: scroll; +.hiddenScrollY, .ui-panel-inner { + overflow-y: auto; -ms-overflow-style: none; overflow: -moz-scrollbars-none; -webkit-overflow-scrolling: touch; overflow-x: hidden; } - .hiddenScrollY::-webkit-scrollbar { + .touch .hiddenScrollY::-webkit-scrollbar, .touch .ui-panel-inner::-webkit-scrollbar { width: 0 !important; display: none; } diff --git a/dashboard-ui/scripts/itembynamedetailpage.js b/dashboard-ui/scripts/itembynamedetailpage.js index b851d69b1c..1d89079cf0 100644 --- a/dashboard-ui/scripts/itembynamedetailpage.js +++ b/dashboard-ui/scripts/itembynamedetailpage.js @@ -452,7 +452,6 @@ html = LibraryBrowser.getListViewHtml({ items: result.Items, - smallIcon: true, playFromHere: true, defaultAction: 'playallfromhere' }); @@ -504,8 +503,7 @@ else { html = LibraryBrowser.getListViewHtml({ - items: result.Items, - smallIcon: true + items: result.Items }); } diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index 52dd45e782..59d459ff6e 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -232,9 +232,9 @@ return html; }, - playInExternalPlayer: function(id) { - - Dashboard.loadExternalPlayer().done(function () { + playInExternalPlayer: function (id) { + + Dashboard.loadExternalPlayer().done(function () { ExternalPlayer.showMenu(id); }); }, @@ -811,11 +811,27 @@ } textlines.push(displayName); + var verticalTextLines = 2; + var enableSubLinks = !AppInfo.isTouchPreferred; + if (item.Type == 'Audio') { textlines.push(item.ArtistItems.map(function (a) { - return a.Name; + if (enableSubLinks) { + return '' + a.Name + ''; + } else { + return a.Name; + } }).join(', ') || ' '); + + if (item.Album && item.AlbumId && !options.smallIcon) { + verticalTextLines++; + if (enableSubLinks) { + textlines.push('' + item.Album + ''); + } else { + textlines.push(item.Album); + } + } } if (item.Type == 'Game') { @@ -836,14 +852,20 @@ html += textlines[0]; html += ''; - if (textlines.length > 1) { + if (textlines.length > 1 && verticalTextLines > 1) { html += '

'; html += textlines[1]; html += '

'; } + if (textlines.length > 2 && verticalTextLines > 2) { + html += '

'; + html += textlines[2]; + html += '

'; + } + html += '
'; - html += textlines[2] || LibraryBrowser.getRatingHtml(item, false); + html += textlines[verticalTextLines] || LibraryBrowser.getRatingHtml(item, false); html += '
'; if (item.Type == 'Series' || item.Type == 'Season' || item.Type == 'BoxSet' || item.MediaType == 'Video') { @@ -1852,6 +1874,16 @@ getSyncIndicator: function (item) { + if (item.SyncPercent) { + + if (item.SyncPercent >= 100) { + return '
'; + } + + var degree = (item.SyncPercent / 100) * 360; + return '
'; + } + if (item.SyncStatus) { if (item.SyncStatus == 'Queued' || item.SyncStatus == 'Converting' || item.SyncStatus == 'ReadyToTransfer' || item.SyncStatus == 'Transferring') { diff --git a/dashboard-ui/scripts/librarylist.js b/dashboard-ui/scripts/librarylist.js index b45c2fa346..854743c6b5 100644 --- a/dashboard-ui/scripts/librarylist.js +++ b/dashboard-ui/scripts/librarylist.js @@ -1049,6 +1049,13 @@ PlaylistManager.showPanel(selection); } + function onListviewSubLinkClick(e) { + + var elem = e.target; + Dashboard.navigate(elem.getAttribute('data-href')); + return false; + } + function onItemWithActionClick(e) { var elem = this; @@ -1129,7 +1136,7 @@ toggleSelections(page); - }).on('click', '.itemWithAction', onItemWithActionClick); + }).on('click', '.itemWithAction', onItemWithActionClick).on('click', '.listviewSubLink', onListviewSubLinkClick); $('.itemsContainer', page).createCardMenus(); diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js index 613a95aee7..45004c5582 100644 --- a/dashboard-ui/scripts/librarymenu.js +++ b/dashboard-ui/scripts/librarymenu.js @@ -56,7 +56,7 @@ $('.btnCast', header).show(); $('.headerSearchButton', header).show(); - requirejs(['scripts/voice'], function () { + requirejs(['voice/voice'], function () { if (VoiceInputManager.isSupported()) { $('.headerVoiceButton', header).show(); diff --git a/dashboard-ui/scripts/playlistedit.js b/dashboard-ui/scripts/playlistedit.js index a22ccf57fc..0235029cbb 100644 --- a/dashboard-ui/scripts/playlistedit.js +++ b/dashboard-ui/scripts/playlistedit.js @@ -98,7 +98,6 @@ showIndex: false, title: item.Name, showRemoveFromPlaylist: true, - smallIcon: true, playFromHere: true, defaultAction: 'playallfromhere' }); diff --git a/dashboard-ui/scripts/songs.js b/dashboard-ui/scripts/songs.js index 89183596c4..e54ab3eec2 100644 --- a/dashboard-ui/scripts/songs.js +++ b/dashboard-ui/scripts/songs.js @@ -63,7 +63,6 @@ html += LibraryBrowser.getListViewHtml({ items: result.Items, - smallIcon: true, showIndex: true, defaultAction: 'play' }); diff --git a/dashboard-ui/css/voice.css b/dashboard-ui/voice/voice.css similarity index 93% rename from dashboard-ui/css/voice.css rename to dashboard-ui/voice/voice.css index 45fe2198c4..a9ce669407 100644 --- a/dashboard-ui/css/voice.css +++ b/dashboard-ui/voice/voice.css @@ -1,5 +1,5 @@ .voiceInputHelp { - background-image: url(images/splash.jpg); + background-image: url(../css/images/splash.jpg); top: 50px; left: 0; right: 0; diff --git a/dashboard-ui/scripts/voice.js b/dashboard-ui/voice/voice.js similarity index 97% rename from dashboard-ui/scripts/voice.js rename to dashboard-ui/voice/voice.js index 0ab6c2b4d1..f26ba13630 100644 --- a/dashboard-ui/scripts/voice.js +++ b/dashboard-ui/voice/voice.js @@ -148,7 +148,7 @@ var words = text.toLowerCase().split(' '); - if (words.indexOf('show') != -1 || words.indexOf('pull') != -1 || words.indexOf('display') != -1) { + if (words.indexOf('show') != -1 || words.indexOf('pull') != -1 || words.indexOf('display') != -1 || words.indexOf('go') != -1) { if (words.indexOf('guide') != -1) { result.action = 'show'; @@ -164,6 +164,7 @@ result.removeWords.push('pull up'); result.removeWords.push('pull'); result.removeWords.push('display'); + result.removeWords.push('go to'); return result; } @@ -450,7 +451,7 @@ destroyCurrentRecognition(); require([ - 'css!/web/css/voice' + 'css!voice/voice' ], function () { startListeningInternal(); @@ -486,6 +487,12 @@ window.VoiceInputManager = { isSupported: function () { + + // Crashing. Don't want to fight it right now + if (AppInfo.isNativeApp && $.browser.safari) { + return false; + } + return window.SpeechRecognition || window.webkitSpeechRecognition; },