diff --git a/Swiftfin tvOS/Components/EpisodesRowView.swift b/Swiftfin tvOS/Components/EpisodesRowView.swift index 735216a0..bf8dca08 100644 --- a/Swiftfin tvOS/Components/EpisodesRowView.swift +++ b/Swiftfin tvOS/Components/EpisodesRowView.swift @@ -84,7 +84,7 @@ struct EpisodesRowView: View { HStack(alignment: .top) { VStack(alignment: .leading) { - ImageView(src: episode.getBackdropImage(maxWidth: 445), + ImageView(src: episode.getBackdropImage(maxWidth: 500), bh: episode.getBackdropImageBlurHash()) .mask(Rectangle().frame(width: 500, height: 280)) .frame(width: 500, height: 280) diff --git a/Swiftfin tvOS/Views/ContinueWatchingView/ContinueWatchingCard.swift b/Swiftfin tvOS/Views/ContinueWatchingView/ContinueWatchingCard.swift index 93cf3fb0..99b400ff 100644 --- a/Swiftfin tvOS/Views/ContinueWatchingView/ContinueWatchingCard.swift +++ b/Swiftfin tvOS/Views/ContinueWatchingView/ContinueWatchingCard.swift @@ -22,8 +22,13 @@ struct ContinueWatchingCard: View { } label: { ZStack(alignment: .bottom) { - ImageView(src: item.getBackdropImage(maxWidth: 500)) - .frame(width: 500, height: 281.25) + if item.itemType == .episode { + ImageView(src: item.getSeriesBackdropImage(maxWidth: 500)) + .frame(width: 500, height: 281.25) + } else { + ImageView(src: item.getBackdropImage(maxWidth: 500)) + .frame(width: 500, height: 281.25) + } VStack(alignment: .leading, spacing: 0) { Text(item.getItemProgressString() ?? "") diff --git a/Swiftfin tvOS/Views/ItemView/CinematicItemView/CinematicEpisodeItemView.swift b/Swiftfin tvOS/Views/ItemView/CinematicItemView/CinematicEpisodeItemView.swift index 8d30bc43..3942ec11 100644 --- a/Swiftfin tvOS/Views/ItemView/CinematicItemView/CinematicEpisodeItemView.swift +++ b/Swiftfin tvOS/Views/ItemView/CinematicItemView/CinematicEpisodeItemView.swift @@ -31,6 +31,7 @@ struct CinematicEpisodeItemView: View { ImageView(src: viewModel.item.getBackdropImage(maxWidth: 1920), bh: viewModel.item.getBackdropImageBlurHash()) + .frame(height: UIScreen.main.bounds.height - 10) .ignoresSafeArea() ScrollView { diff --git a/Swiftfin tvOS/Views/LatestMediaView.swift b/Swiftfin tvOS/Views/LatestMediaView.swift index 5f5d14ea..68fbe395 100644 --- a/Swiftfin tvOS/Views/LatestMediaView.swift +++ b/Swiftfin tvOS/Views/LatestMediaView.swift @@ -16,10 +16,60 @@ struct LatestMediaView: View { @Default(.showPosterLabels) var showPosterLabels var body: some View { - PortraitItemsRowView(rowTitle: L10n.latestWithString(viewModel.library.name ?? ""), - items: viewModel.items, - showItemTitles: showPosterLabels) { item in - homeRouter.route(to: \.modalItem, item) + VStack(alignment: .leading) { + + L10n.latestWithString(viewModel.library.name ?? "").text + .font(.title3) + .padding(.horizontal, 50) + + ScrollView(.horizontal) { + HStack(alignment: .top) { + ForEach(viewModel.items, id: \.self) { item in + + VStack(spacing: 15) { + Button { + homeRouter.route(to: \.modalItem, item) + } label: { + ImageView(src: item.portraitHeaderViewURL(maxWidth: 257)) + .frame(width: 257, height: 380) + } + .frame(height: 380) + .buttonStyle(PlainButtonStyle()) + + if showPosterLabels { + Text(item.title) + .lineLimit(2) + .frame(width: 257) + } + } + } + + Button { + homeRouter.route(to: \.library, (viewModel: .init(parentID: viewModel.library.id!, + filters: LibraryFilters(filters: [], sortOrder: [.descending], sortBy: [.dateAdded])), + title: viewModel.library.name ?? "")) + } label: { + ZStack { + Color(UIColor.darkGray) + .opacity(0.5) + + VStack(spacing: 20) { + Image(systemName: "chevron.right") + .font(.title) + + L10n.seeAll.text + .font(.title3) + } + } + } + .frame(width: 257, height: 380) + .buttonStyle(PlainButtonStyle()) + } + .padding(.horizontal, 50) + .padding(.vertical) + } + .edgesIgnoringSafeArea(.horizontal) } + .focusSection() } } diff --git a/Swiftfin tvOS/Views/NextUpView/NextUpCard.swift b/Swiftfin tvOS/Views/NextUpView/NextUpCard.swift index b9668785..53094ac3 100644 --- a/Swiftfin tvOS/Views/NextUpView/NextUpCard.swift +++ b/Swiftfin tvOS/Views/NextUpView/NextUpCard.swift @@ -20,8 +20,13 @@ struct NextUpCard: View { Button { homeRouter.route(to: \.modalItem, item) } label: { - ImageView(src: item.getBackdropImage(maxWidth: 500)) - .frame(width: 500, height: 281.25) + if item.itemType == .episode { + ImageView(src: item.getSeriesBackdropImage(maxWidth: 500)) + .frame(width: 500, height: 281.25) + } else { + ImageView(src: item.getBackdropImage(maxWidth: 500)) + .frame(width: 500, height: 281.25) + } } .buttonStyle(CardButtonStyle()) .padding(.top) diff --git a/Swiftfin tvOS/Views/VideoPlayer/VLCPlayerViewController.swift b/Swiftfin tvOS/Views/VideoPlayer/VLCPlayerViewController.swift index ea106ca7..26f2eb80 100644 --- a/Swiftfin tvOS/Views/VideoPlayer/VLCPlayerViewController.swift +++ b/Swiftfin tvOS/Views/VideoPlayer/VLCPlayerViewController.swift @@ -204,20 +204,20 @@ class VLCPlayerViewController: UIViewController { hideConfirmCloseOverlay() if Defaults[.downActionShowsMenu] { - if !displayingContentOverlay { + if !displayingContentOverlay && !displayingOverlay { didSelectMenu() } } case .leftArrow: hideConfirmCloseOverlay() - if !displayingContentOverlay { + if !displayingContentOverlay && !displayingOverlay { didSelectBackward() } case .rightArrow: hideConfirmCloseOverlay() - if !displayingContentOverlay { + if !displayingContentOverlay && !displayingOverlay { didSelectForward() } case .pageUp: () @@ -239,9 +239,6 @@ class VLCPlayerViewController: UIViewController { hideOverlay() } else if displayingContentOverlay { hideOverlayContent() - - showOverlay() - restartOverlayDismissTimer() } else if viewModel.confirmClose && !displayingConfirmClose { showConfirmCloseOverlay() diff --git a/Swiftfin tvOS/Views/VideoPlayer/tvOSOverlay/tvOSVLCOverlay.swift b/Swiftfin tvOS/Views/VideoPlayer/tvOSOverlay/tvOSVLCOverlay.swift index 03c859cb..bce30b04 100644 --- a/Swiftfin tvOS/Views/VideoPlayer/tvOSOverlay/tvOSVLCOverlay.swift +++ b/Swiftfin tvOS/Views/VideoPlayer/tvOSOverlay/tvOSVLCOverlay.swift @@ -47,7 +47,7 @@ struct tvOSVLCOverlay: View { if let subtitle = viewModel.subtitle { Text(subtitle) .font(.subheadline) - .foregroundColor(.lightGray) + .foregroundColor(.white) } Text(viewModel.title) diff --git a/Swiftfin tvOS/Views/VideoPlayer/tvOSSLider/tvOSSlider.swift b/Swiftfin tvOS/Views/VideoPlayer/tvOSSLider/tvOSSlider.swift index 79db94e5..8405ffa8 100644 --- a/Swiftfin tvOS/Views/VideoPlayer/tvOSSLider/tvOSSlider.swift +++ b/Swiftfin tvOS/Views/VideoPlayer/tvOSSLider/tvOSSlider.swift @@ -527,12 +527,14 @@ public final class TvOSSlider: UIControl { @objc private func leftTapWasTriggered() { - setValue(value-stepValue, animated: true) +// setValue(value-stepValue, animated: true) + viewModel.playerOverlayDelegate?.didSelectBackward() } @objc private func rightTapWasTriggered() { - setValue(value+stepValue, animated: true) +// setValue(value+stepValue, animated: true) + viewModel.playerOverlayDelegate?.didSelectForward() } public override func pressesBegan(_ presses: Set, with event: UIPressesEvent?) {