diff --git a/src/components/cardbuilder/card.css b/src/components/cardbuilder/card.css index 75943a0c45..ef5ea6604c 100644 --- a/src/components/cardbuilder/card.css +++ b/src/components/cardbuilder/card.css @@ -193,9 +193,14 @@ button::-moz-focus-inner { /* Needed in case this is a button */ display: block; - - /* Needed in case this is a button */ margin: 0 !important; + border: 0 !important; + padding: 0 !important; + cursor: pointer; + color: inherit; + width: 100%; + font-family: inherit; + font-size: inherit; /* Needed in safari */ height: 100%; @@ -204,19 +209,12 @@ button::-moz-focus-inner { contain: strict; } -.cardContent-button { - border: 0 !important; - padding: 0 !important; - cursor: pointer; - color: inherit; - width: 100%; - vertical-align: middle; - font-family: inherit; - font-size: inherit; +.cardContent:not(.defaultCardBackground) { + background-color: transparent; } -.cardContent-button:not(.defaultCardBackground) { - background-color: transparent; +.cardBox:not(.visualCardBox) .cardPadder { + background-color: #242424; } .visualCardBox .cardContent { @@ -224,7 +222,8 @@ button::-moz-focus-inner { border-bottom-right-radius: 0; } -.cardContent-shadow { +.cardContent-shadow, +.cardBox:not(.visualCardBox) .cardPadder { box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); } diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index b08e5024aa..1307a89ca0 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -1367,9 +1367,6 @@ import 'programStyles'; let cardScalableClose = ''; let cardContentClass = 'cardContent'; - if (!options.cardLayout) { - cardContentClass += ' cardContent-shadow'; - } let blurhashAttrib = ''; if (blurhash && blurhash.length > 0) { @@ -1377,21 +1374,20 @@ import 'programStyles'; } if (layoutManager.tv) { - // Don't use the IMG tag with safari because it puts a white border around it cardImageContainerOpen = imgUrl ? ('
') : ('
'); cardImageContainerClose = '
'; } else { // Don't use the IMG tag with safari because it puts a white border around it - cardImageContainerOpen = imgUrl ? (''; } let cardScalableClass = 'cardScalable'; - cardImageContainerOpen = '
' + cardImageContainerOpen; + cardImageContainerOpen = '
' + cardImageContainerOpen; cardBoxClose = '
'; cardScalableClose = '
'; diff --git a/src/components/images/style.css b/src/components/images/style.css index a20d242efa..2b09da2da4 100644 --- a/src/components/images/style.css +++ b/src/components/images/style.css @@ -1,11 +1,11 @@ .lazy-image-fadein { opacity: 1; - transition: opacity 0.7s; + transition: opacity 0.5s; } .lazy-image-fadein-fast { opacity: 1; - transition: opacity 0.2s; + transition: opacity 0.1s; } .lazy-hidden { diff --git a/src/components/playback/mediasession.js b/src/components/playback/mediasession.js index 5eac56b5ce..0f275c88f7 100644 --- a/src/components/playback/mediasession.js +++ b/src/components/playback/mediasession.js @@ -241,6 +241,15 @@ import connectionManager from 'connectionManager'; navigator.mediaSession.setActionHandler('seekforward', function () { execute('fastForward'); }); + + /* eslint-disable-next-line compat/compat */ + navigator.mediaSession.setActionHandler('seekto', function (object) { + let item = playbackManager.getPlayerState(currentPlayer).NowPlayingItem; + // Convert to ms + let duration = parseInt(item.RunTimeTicks ? (item.RunTimeTicks / 10000) : 0); + let wantedTime = object.seekTime * 1000; + playbackManager.seekPercent(wantedTime / duration * 100, currentPlayer); + }); } events.on(playbackManager, 'playerchange', function () { diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js index 89598d09a8..b9c2c9eb87 100644 --- a/src/components/remotecontrol/remotecontrol.js +++ b/src/components/remotecontrol/remotecontrol.js @@ -227,7 +227,7 @@ define(['browser', 'datetime', 'backdrop', 'libraryBrowser', 'listView', 'imageL context.querySelector('.nowPlayingPageImage').classList.remove('nowPlayingPageImageAudio'); } } else { - imgContainer.innerHTML = '
'; + imgContainer.innerHTML = '
'; } } diff --git a/src/components/syncPlay/timeSyncManager.js b/src/components/syncPlay/timeSyncManager.js index 6c151b3683..d3b59589ee 100644 --- a/src/components/syncPlay/timeSyncManager.js +++ b/src/components/syncPlay/timeSyncManager.js @@ -65,8 +65,6 @@ class TimeSyncManager { this.pings = 0; // number of pings this.measurement = null; // current time sync this.measurements = []; - - this.startPing(); } /** diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index 1a0628ac12..a055530442 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -834,6 +834,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' var headerAudioPlayerButton; var headerSyncButton; var enableLibraryNavDrawer = layoutManager.desktop; + var enableLibraryNavDrawerHome = !layoutManager.tv; var skinHeader = document.querySelector('.skinHeader'); var requiresUserRefresh = true; var lastOpenTime = new Date().getTime(); @@ -920,7 +921,7 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', ' refreshDashboardInfoInDrawer(apiClient); } else { if (mainDrawerButton) { - if (enableLibraryNavDrawer || isHomePage) { + if (enableLibraryNavDrawer || (isHomePage && enableLibraryNavDrawerHome)) { mainDrawerButton.classList.remove('hide'); } else { mainDrawerButton.classList.add('hide'); diff --git a/src/strings/de.json b/src/strings/de.json index 6e5d4cb187..2318cf8104 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1573,10 +1573,18 @@ "EnableBlurhashHelp": "Bilder, die noch nicht fertig geladen wurden, werden mit einem verschwommenen Platzhalter dargestellt", "EnableBlurhash": "Verschwommene Platzhalter für Bilder erlauben", "EnableFasterAnimations": "Schnellere Animationen", - "EnableDecodingColorDepth10Vp9": "Aktiviere 10-Bit-Hardware-Dekodierung für Vp9", + "EnableDecodingColorDepth10Vp9": "Aktiviere 10-Bit-Hardware-Dekodierung für VP9", "EnableDecodingColorDepth10Hevc": "Aktiviere 10-Bit-Hardware-Dekodierung für HEVC", "MessageNoGenresAvailable": "Aktiviere einige Metadaten-Anbieter um Genres aus dem Internet zu holen.", "EnableFasterAnimationsHelp": "Benutze schnellere Animationen und Übergänge", "ButtonCast": "Besetzung", - "ButtonSyncPlay": "SyncPlay" + "ButtonSyncPlay": "SyncPlay", + "TabRepositories": "Repositories", + "MessageAddRepository": "Wenn Sie ein Repository hinzufügen möchten, klicken Sie auf die Schaltfläche neben der Kopfzeile und füllen Sie die angeforderten Informationen aus.", + "LabelRepositoryUrlHelp": "Der Speicherort des Repository-Manifests, das Sie aufnehmen möchten.", + "LabelRepositoryNameHelp": "Ein benutzerdefinierter Name zur Unterscheidung dieses Repositorys von den anderen, die zu Ihrem Server hinzugefügt wurden.", + "LabelRepositoryName": "Name des Repository", + "LabelRepositoryUrl": "URL des Repository", + "HeaderNewRepository": "Neues Repository", + "MessageNoRepositories": "Keine Repositories." } diff --git a/src/strings/is-is.json b/src/strings/is-is.json index 1042737ae2..f0d39a1d06 100644 --- a/src/strings/is-is.json +++ b/src/strings/is-is.json @@ -543,5 +543,9 @@ "LabelAllowServerAutoRestart": "Leyfa netþjóni að endurræsa sig sjálfkrafa til þess að uppfæra sig", "LabelAllowHWTranscoding": "Leyfa vélbúnaðarumkóðun", "Label3DFormat": "3D snið:", - "HeaderIdentification": "Auðkenning" + "HeaderIdentification": "Auðkenning", + "ConfirmDeleteItems": "Ef þessum skrám er eytt verða þær fjarlægðar úr bæði stýrikerfinu og miðlasafninu. Ertu viss um að þú viljir halda áfram?", + "CommunityRating": "Mat samfélagsins", + "ButtonStart": "Byrja", + "BoxSet": "Kassasett" } diff --git a/src/themes/appletv/theme.css b/src/themes/appletv/theme.css index 8b6b3e1902..579a0e1de5 100644 --- a/src/themes/appletv/theme.css +++ b/src/themes/appletv/theme.css @@ -122,8 +122,8 @@ html { } .paperList, -.visualCardBox { - background-color: #fff; +.visualCardBox, +.cardBox:not(.visualCardBox) .cardPadder { background-color: rgba(0, 0, 0, 0.1); } @@ -459,7 +459,6 @@ html { border-color: #00a4dc !important; } -.cardContent-button, .itemDetailImage, .cardOverlayContainer { border-radius: 0.5rem; diff --git a/src/themes/blueradiance/theme.css b/src/themes/blueradiance/theme.css index d8d7525d3c..a01a310c1d 100644 --- a/src/themes/blueradiance/theme.css +++ b/src/themes/blueradiance/theme.css @@ -454,6 +454,10 @@ html { color: #4285f4 !important; } +.cardBox:not(.visualCardBox) .cardPadder { + background-color: rgba(0, 0, 0, 0.5); +} + .card:focus .cardBox.visualCardBox, .card:focus .cardBox:not(.visualCardBox) .cardScalable { border-color: #00a4dc !important; diff --git a/src/themes/light/theme.css b/src/themes/light/theme.css index abb5a58fb4..74d4c93af2 100644 --- a/src/themes/light/theme.css +++ b/src/themes/light/theme.css @@ -436,6 +436,10 @@ html { color: #4285f4 !important; } +.cardBox:not(.visualCardBox) .cardPadder { + background-color: #fff; +} + .card:focus .cardBox.visualCardBox, .card:focus .cardBox:not(.visualCardBox) .cardScalable { border-color: #00a4dc !important; diff --git a/src/themes/purplehaze/theme.css b/src/themes/purplehaze/theme.css index ca8fe1fdfa..9bc9f05f0f 100644 --- a/src/themes/purplehaze/theme.css +++ b/src/themes/purplehaze/theme.css @@ -552,15 +552,25 @@ a[data-role=button] { } .personCard .cardScalable { - border-radius: 50%; + border-radius: 50% !important; border: 1px solid rgb(255, 255, 255); } +.cardBox:not(.visualCardBox) .cardPadder { + background-color: rgba(0, 0, 0, 0.5); + border-radius: 1em; +} + .card:focus .cardBox.visualCardBox, .card:focus .cardBox:not(.visualCardBox) .cardScalable { border-color: #ff77f1 !important; } +.card.show-focus:not(.show-animation) .cardBox.visualCardBox, +.card.show-focus:not(.show-animation) .cardBox:not(.visualCardBox) .cardScalable { + border-radius: 1.5em; +} + .layout-desktop, .scrollY { scrollbar-width: thin; @@ -606,12 +616,6 @@ a[data-role=button] { width: 40vw; } -.personCard .cardPadder-overflowPortrait, -.personCard .cardPadder-portrait { - padding-bottom: 100%; - contain: strict; -} - .personCard .coveredImage { clip-path: circle(50% at 50% 50%); } @@ -623,3 +627,10 @@ a[data-role=button] { .personCard .cardOverlayButton-br { right: 20%; } + +.personCard .cardPadder-overflowPortrait, +.personCard .cardPadder-portrait { + padding-bottom: 100%; + contain: strict; + border-radius: 50% !important; +} diff --git a/src/themes/wmc/theme.css b/src/themes/wmc/theme.css index 7def8215fe..7725cb5b27 100644 --- a/src/themes/wmc/theme.css +++ b/src/themes/wmc/theme.css @@ -434,6 +434,10 @@ html { color: #4285f4 !important; } +.cardBox:not(.visualCardBox) .cardPadder { + background-color: #0f3562; +} + .card:focus .cardBox.visualCardBox, .card:focus .cardBox:not(.visualCardBox) .cardScalable { border-color: #fff !important;