From 6d32db67511ca83312d3f8dcd971e48b9b59c9e9 Mon Sep 17 00:00:00 2001 From: Shav Kinderlehrer Date: Mon, 8 Jan 2024 12:57:25 -0500 Subject: Update itemView --- Jel/Views/Library/Item/ItemHeaderView.swift | 19 +++++++---------- Jel/Views/Library/Item/ItemInfoView.swift | 21 ++++++++++++------ Jel/Views/Library/Item/ItemPeopleView.swift | 27 ++++++++++++++++++++++++ Jel/Views/Library/Item/Types/ItemMovieView.swift | 6 +++++- 4 files changed, 55 insertions(+), 18 deletions(-) create mode 100644 Jel/Views/Library/Item/ItemPeopleView.swift (limited to 'Jel/Views/Library/Item') diff --git a/Jel/Views/Library/Item/ItemHeaderView.swift b/Jel/Views/Library/Item/ItemHeaderView.swift index 3b5769a..afcc21e 100644 --- a/Jel/Views/Library/Item/ItemHeaderView.swift +++ b/Jel/Views/Library/Item/ItemHeaderView.swift @@ -11,11 +11,13 @@ import JellyfinKit struct ItemHeaderView: View { var item: BaseItemDto - let overlayGradient = LinearGradient(gradient: Gradient(stops: [ + let overlayGradientMask = LinearGradient(gradient: Gradient(stops: [ .init(color: .clear, location: 0), - .init(color: .black, location: 0.5), - // .init(color: .black, location: 0.7), - // .init(color: .clear, location: 1) + .init(color: .black, location: 0.3), + ]), startPoint: .bottom, endPoint: .top) + let overlayGradient = LinearGradient(gradient: Gradient(stops: [ + .init(color: .black, location: 0), + .init(color: .clear, location: 0.5) ]), startPoint: .bottom, endPoint: .top) var body: some View { @@ -23,12 +25,8 @@ struct ItemHeaderView: View { StickyHeaderView(minHeight: 300) { ItemIconView(item: item, imageType: "Backdrop", contentMode: .fill) .setCornerRadius(0) - .mask(overlayGradient) - .background { - ItemIconView(item: item, imageType: "Backdrop", contentMode: .fill) - .setCornerRadius(0) - .blur(radius: 50) - } + .overlay(overlayGradient.opacity(0.8)) + .mask(overlayGradientMask) } HStack { @@ -38,7 +36,6 @@ struct ItemHeaderView: View { .frame(alignment: .leading) Spacer() ItemInfoView(item: item) - .foregroundStyle(.white) } .padding([.leading, .trailing]) } diff --git a/Jel/Views/Library/Item/ItemInfoView.swift b/Jel/Views/Library/Item/ItemInfoView.swift index 0e1ce11..bafbc9f 100644 --- a/Jel/Views/Library/Item/ItemInfoView.swift +++ b/Jel/Views/Library/Item/ItemInfoView.swift @@ -15,15 +15,24 @@ struct ItemInfoView: View { VStack(alignment: .leading) { HStack { Text((item.productionYear != nil) ? String(item.productionYear!) : "---") - .shadow(color: .black, radius: 1) Text("•") - .shadow(color: .black, radius: 1) Text(item.genres?.first ?? "---") - .shadow(color: .black, radius: 1) } - if item.type == .movie { - Text(item.getRuntime() ?? "-:--") - .shadow(color: .black, radius: 1) + + HStack { + if item.type == .movie { + Text(item.getRuntime() ?? "-:--") + } + if let officialRating = item.officialRating { + Text(officialRating) + .bold() + .padding(2) + .overlay { + RoundedRectangle(cornerSize: CGSize(width: 2, height: 2), style: .continuous) + .stroke(.gray) + } + .foregroundStyle(.gray) + } } } .font(.caption) diff --git a/Jel/Views/Library/Item/ItemPeopleView.swift b/Jel/Views/Library/Item/ItemPeopleView.swift new file mode 100644 index 0000000..b8b0846 --- /dev/null +++ b/Jel/Views/Library/Item/ItemPeopleView.swift @@ -0,0 +1,27 @@ +// +// ItemPeopleView.swift +// Jel +// +// Created by zerocool on 1/8/24. +// + +import SwiftUI +import JellyfinKit + +struct ItemPeopleView: View { + var item: BaseItemDto + + var body: some View { + ScrollView(.horizontal) { + HStack { + ForEach(item.people ?? []) {person in + Text(person.name ?? "---") + } + } + } + } +} + +//#Preview { +// ItemPeopleView() +//} diff --git a/Jel/Views/Library/Item/Types/ItemMovieView.swift b/Jel/Views/Library/Item/Types/ItemMovieView.swift index 5a9100b..b621d2e 100644 --- a/Jel/Views/Library/Item/Types/ItemMovieView.swift +++ b/Jel/Views/Library/Item/Types/ItemMovieView.swift @@ -9,7 +9,8 @@ import SwiftUI import JellyfinKit struct ItemMovieView: View { - @State var item: BaseItemDto + var item: BaseItemDto + var body: some View { VStack { ItemMediaView(item: item) { @@ -18,7 +19,10 @@ struct ItemMovieView: View { } .buttonStyle(.borderedProminent) } + + ItemPeopleView(item: item) } + .padding() } } -- cgit v1.2.3