' + 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;