Update itemView
This commit is contained in:
parent
ca47292e3d
commit
6d32db6751
@ -19,7 +19,6 @@
|
|||||||
3D16FC3C2B2CDFB500E6D8B3 /* DashboardLibraryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D16FC3B2B2CDFB500E6D8B3 /* DashboardLibraryView.swift */; };
|
3D16FC3C2B2CDFB500E6D8B3 /* DashboardLibraryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D16FC3B2B2CDFB500E6D8B3 /* DashboardLibraryView.swift */; };
|
||||||
3D3816C92B4B5648006414D7 /* ItemGenresView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D3816C82B4B5648006414D7 /* ItemGenresView.swift */; };
|
3D3816C92B4B5648006414D7 /* ItemGenresView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D3816C82B4B5648006414D7 /* ItemGenresView.swift */; };
|
||||||
3D3816CE2B4B78BB006414D7 /* VisibilityTrackingScrollView in Frameworks */ = {isa = PBXBuildFile; productRef = 3D3816CD2B4B78BB006414D7 /* VisibilityTrackingScrollView */; };
|
3D3816CE2B4B78BB006414D7 /* VisibilityTrackingScrollView in Frameworks */ = {isa = PBXBuildFile; productRef = 3D3816CD2B4B78BB006414D7 /* VisibilityTrackingScrollView */; };
|
||||||
3D41D1F52B2C962500E58234 /* AppearancePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D41D1F42B2C962500E58234 /* AppearancePicker.swift */; };
|
|
||||||
3D41D1FA2B2CAE0000E58234 /* ItemIconView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D41D1F92B2CAE0000E58234 /* ItemIconView.swift */; };
|
3D41D1FA2B2CAE0000E58234 /* ItemIconView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D41D1F92B2CAE0000E58234 /* ItemIconView.swift */; };
|
||||||
3D4C15722B3CAA670035373E /* DashboardSectionTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D4C15712B3CAA670035373E /* DashboardSectionTitleView.swift */; };
|
3D4C15722B3CAA670035373E /* DashboardSectionTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D4C15712B3CAA670035373E /* DashboardSectionTitleView.swift */; };
|
||||||
3D7709392B29139700199889 /* Pulse in Frameworks */ = {isa = PBXBuildFile; productRef = 3D7709382B29139700199889 /* Pulse */; };
|
3D7709392B29139700199889 /* Pulse in Frameworks */ = {isa = PBXBuildFile; productRef = 3D7709382B29139700199889 /* Pulse */; };
|
||||||
@ -41,6 +40,7 @@
|
|||||||
3DAFA8EA2B39039900D71AD1 /* JellyfinKitExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAFA8E92B39039900D71AD1 /* JellyfinKitExtensions.swift */; };
|
3DAFA8EA2B39039900D71AD1 /* JellyfinKitExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAFA8E92B39039900D71AD1 /* JellyfinKitExtensions.swift */; };
|
||||||
3DAFA8EC2B394F9F00D71AD1 /* ViewConditionalMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAFA8EB2B394F9F00D71AD1 /* ViewConditionalMethod.swift */; };
|
3DAFA8EC2B394F9F00D71AD1 /* ViewConditionalMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAFA8EB2B394F9F00D71AD1 /* ViewConditionalMethod.swift */; };
|
||||||
3DAFA8EF2B3B707B00D71AD1 /* ItemMovieView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAFA8EE2B3B707B00D71AD1 /* ItemMovieView.swift */; };
|
3DAFA8EF2B3B707B00D71AD1 /* ItemMovieView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAFA8EE2B3B707B00D71AD1 /* ItemMovieView.swift */; };
|
||||||
|
3DBAC9E22B4C31BE005F8764 /* ItemPeopleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBAC9E12B4C31BE005F8764 /* ItemPeopleView.swift */; };
|
||||||
3DC6BA2D2B2A422300416B9F /* SettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DC6BA2C2B2A422300416B9F /* SettingsController.swift */; };
|
3DC6BA2D2B2A422300416B9F /* SettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DC6BA2C2B2A422300416B9F /* SettingsController.swift */; };
|
||||||
3DDD67932B293BC40026781E /* DashboardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DDD67922B293BC40026781E /* DashboardView.swift */; };
|
3DDD67932B293BC40026781E /* DashboardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DDD67922B293BC40026781E /* DashboardView.swift */; };
|
||||||
3DDD67962B29E28B0026781E /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DDD67952B29E28B0026781E /* SettingsView.swift */; };
|
3DDD67962B29E28B0026781E /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DDD67952B29E28B0026781E /* SettingsView.swift */; };
|
||||||
@ -88,7 +88,6 @@
|
|||||||
3D13F96E2B38A32500E91913 /* StickyHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickyHeaderView.swift; sourceTree = "<group>"; };
|
3D13F96E2B38A32500E91913 /* StickyHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickyHeaderView.swift; sourceTree = "<group>"; };
|
||||||
3D16FC3B2B2CDFB500E6D8B3 /* DashboardLibraryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardLibraryView.swift; sourceTree = "<group>"; };
|
3D16FC3B2B2CDFB500E6D8B3 /* DashboardLibraryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardLibraryView.swift; sourceTree = "<group>"; };
|
||||||
3D3816C82B4B5648006414D7 /* ItemGenresView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemGenresView.swift; sourceTree = "<group>"; };
|
3D3816C82B4B5648006414D7 /* ItemGenresView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemGenresView.swift; sourceTree = "<group>"; };
|
||||||
3D41D1F42B2C962500E58234 /* AppearancePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppearancePicker.swift; sourceTree = "<group>"; };
|
|
||||||
3D41D1F92B2CAE0000E58234 /* ItemIconView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemIconView.swift; sourceTree = "<group>"; };
|
3D41D1F92B2CAE0000E58234 /* ItemIconView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemIconView.swift; sourceTree = "<group>"; };
|
||||||
3D4C15712B3CAA670035373E /* DashboardSectionTitleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardSectionTitleView.swift; sourceTree = "<group>"; };
|
3D4C15712B3CAA670035373E /* DashboardSectionTitleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardSectionTitleView.swift; sourceTree = "<group>"; };
|
||||||
3D8AB2A42B36440D005BD7D0 /* BlurHashDecode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlurHashDecode.swift; sourceTree = "<group>"; };
|
3D8AB2A42B36440D005BD7D0 /* BlurHashDecode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlurHashDecode.swift; sourceTree = "<group>"; };
|
||||||
@ -111,6 +110,7 @@
|
|||||||
3DAFA8E92B39039900D71AD1 /* JellyfinKitExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinKitExtensions.swift; sourceTree = "<group>"; };
|
3DAFA8E92B39039900D71AD1 /* JellyfinKitExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinKitExtensions.swift; sourceTree = "<group>"; };
|
||||||
3DAFA8EB2B394F9F00D71AD1 /* ViewConditionalMethod.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewConditionalMethod.swift; sourceTree = "<group>"; };
|
3DAFA8EB2B394F9F00D71AD1 /* ViewConditionalMethod.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewConditionalMethod.swift; sourceTree = "<group>"; };
|
||||||
3DAFA8EE2B3B707B00D71AD1 /* ItemMovieView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemMovieView.swift; sourceTree = "<group>"; };
|
3DAFA8EE2B3B707B00D71AD1 /* ItemMovieView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemMovieView.swift; sourceTree = "<group>"; };
|
||||||
|
3DBAC9E12B4C31BE005F8764 /* ItemPeopleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemPeopleView.swift; sourceTree = "<group>"; };
|
||||||
3DC0E5802B2832B9001CCE96 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
3DC0E5802B2832B9001CCE96 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
3DC6BA2C2B2A422300416B9F /* SettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsController.swift; sourceTree = "<group>"; };
|
3DC6BA2C2B2A422300416B9F /* SettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsController.swift; sourceTree = "<group>"; };
|
||||||
3DDD67922B293BC40026781E /* DashboardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardView.swift; sourceTree = "<group>"; };
|
3DDD67922B293BC40026781E /* DashboardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardView.swift; sourceTree = "<group>"; };
|
||||||
@ -193,6 +193,7 @@
|
|||||||
3DAFA8E72B38AFED00D71AD1 /* ItemInfoView.swift */,
|
3DAFA8E72B38AFED00D71AD1 /* ItemInfoView.swift */,
|
||||||
3D13F9642B37EC7A00E91913 /* ItemHeaderView.swift */,
|
3D13F9642B37EC7A00E91913 /* ItemHeaderView.swift */,
|
||||||
3D3816C82B4B5648006414D7 /* ItemGenresView.swift */,
|
3D3816C82B4B5648006414D7 /* ItemGenresView.swift */,
|
||||||
|
3DBAC9E12B4C31BE005F8764 /* ItemPeopleView.swift */,
|
||||||
);
|
);
|
||||||
path = Item;
|
path = Item;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -308,7 +309,6 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
3DDD67952B29E28B0026781E /* SettingsView.swift */,
|
3DDD67952B29E28B0026781E /* SettingsView.swift */,
|
||||||
3D41D1F42B2C962500E58234 /* AppearancePicker.swift */,
|
|
||||||
);
|
);
|
||||||
path = Settings;
|
path = Settings;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -483,7 +483,7 @@
|
|||||||
3D1015E42B28000E00F5C29A /* AuthStateController.swift in Sources */,
|
3D1015E42B28000E00F5C29A /* AuthStateController.swift in Sources */,
|
||||||
3D13F95F2B375DB800E91913 /* ItemView.swift in Sources */,
|
3D13F95F2B375DB800E91913 /* ItemView.swift in Sources */,
|
||||||
3DDD67962B29E28B0026781E /* SettingsView.swift in Sources */,
|
3DDD67962B29E28B0026781E /* SettingsView.swift in Sources */,
|
||||||
3D41D1F52B2C962500E58234 /* AppearancePicker.swift in Sources */,
|
3DBAC9E22B4C31BE005F8764 /* ItemPeopleView.swift in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -7,38 +7,14 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
enum AppearanceState: Int, CaseIterable, Identifiable, CustomStringConvertible {
|
|
||||||
case automatic
|
|
||||||
case light
|
|
||||||
case dark
|
|
||||||
|
|
||||||
var id: Self { self }
|
|
||||||
|
|
||||||
var description: String {
|
|
||||||
switch self {
|
|
||||||
case .light:
|
|
||||||
return "Light"
|
|
||||||
case .dark:
|
|
||||||
return "Dark"
|
|
||||||
case .automatic:
|
|
||||||
return "Automatic"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class SettingsController: ObservableObject {
|
class SettingsController: ObservableObject {
|
||||||
static let shared: SettingsController = SettingsController()
|
static let shared: SettingsController = SettingsController()
|
||||||
|
|
||||||
@Published var appearance: AppearanceState = .automatic
|
|
||||||
|
|
||||||
private let defaults = UserDefaults.standard
|
private let defaults = UserDefaults.standard
|
||||||
|
|
||||||
func save() {
|
func save() {
|
||||||
defaults.set(self.appearance.rawValue, forKey: "Settings_appearance")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func load() {
|
func load() {
|
||||||
let oldAppearance = defaults.integer(forKey: "Settings_appearance")
|
|
||||||
self.appearance = AppearanceState(rawValue: oldAppearance) ?? .automatic
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,19 +25,9 @@ struct ContentView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.preferredColorScheme({
|
|
||||||
switch settingsController.appearance {
|
|
||||||
case .dark:
|
|
||||||
return ColorScheme.dark
|
|
||||||
case .light:
|
|
||||||
return ColorScheme.light
|
|
||||||
case .automatic:
|
|
||||||
return .none
|
|
||||||
}
|
|
||||||
}())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#Preview {
|
//#Preview {
|
||||||
ContentView()
|
// ContentView()
|
||||||
}
|
//}
|
||||||
|
@ -33,6 +33,7 @@ struct DashboardLibraryView: View {
|
|||||||
} label: {
|
} label: {
|
||||||
ItemIconView(item: library, height: 150)
|
ItemIconView(item: library, height: 150)
|
||||||
.setAspectRatio(library.primaryImageAspectRatio)
|
.setAspectRatio(library.primaryImageAspectRatio)
|
||||||
|
.showCaption()
|
||||||
}
|
}
|
||||||
.buttonStyle(PlainButtonStyle())
|
.buttonStyle(PlainButtonStyle())
|
||||||
}
|
}
|
||||||
|
@ -11,11 +11,13 @@ import JellyfinKit
|
|||||||
struct ItemHeaderView: View {
|
struct ItemHeaderView: View {
|
||||||
var item: BaseItemDto
|
var item: BaseItemDto
|
||||||
|
|
||||||
let overlayGradient = LinearGradient(gradient: Gradient(stops: [
|
let overlayGradientMask = LinearGradient(gradient: Gradient(stops: [
|
||||||
.init(color: .clear, location: 0),
|
.init(color: .clear, location: 0),
|
||||||
.init(color: .black, location: 0.5),
|
.init(color: .black, location: 0.3),
|
||||||
// .init(color: .black, location: 0.7),
|
]), startPoint: .bottom, endPoint: .top)
|
||||||
// .init(color: .clear, location: 1)
|
let overlayGradient = LinearGradient(gradient: Gradient(stops: [
|
||||||
|
.init(color: .black, location: 0),
|
||||||
|
.init(color: .clear, location: 0.5)
|
||||||
]), startPoint: .bottom, endPoint: .top)
|
]), startPoint: .bottom, endPoint: .top)
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
@ -23,12 +25,8 @@ struct ItemHeaderView: View {
|
|||||||
StickyHeaderView(minHeight: 300) {
|
StickyHeaderView(minHeight: 300) {
|
||||||
ItemIconView(item: item, imageType: "Backdrop", contentMode: .fill)
|
ItemIconView(item: item, imageType: "Backdrop", contentMode: .fill)
|
||||||
.setCornerRadius(0)
|
.setCornerRadius(0)
|
||||||
.mask(overlayGradient)
|
.overlay(overlayGradient.opacity(0.8))
|
||||||
.background {
|
.mask(overlayGradientMask)
|
||||||
ItemIconView(item: item, imageType: "Backdrop", contentMode: .fill)
|
|
||||||
.setCornerRadius(0)
|
|
||||||
.blur(radius: 50)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HStack {
|
HStack {
|
||||||
@ -38,7 +36,6 @@ struct ItemHeaderView: View {
|
|||||||
.frame(alignment: .leading)
|
.frame(alignment: .leading)
|
||||||
Spacer()
|
Spacer()
|
||||||
ItemInfoView(item: item)
|
ItemInfoView(item: item)
|
||||||
.foregroundStyle(.white)
|
|
||||||
}
|
}
|
||||||
.padding([.leading, .trailing])
|
.padding([.leading, .trailing])
|
||||||
}
|
}
|
||||||
|
@ -15,15 +15,24 @@ struct ItemInfoView: View {
|
|||||||
VStack(alignment: .leading) {
|
VStack(alignment: .leading) {
|
||||||
HStack {
|
HStack {
|
||||||
Text((item.productionYear != nil) ? String(item.productionYear!) : "---")
|
Text((item.productionYear != nil) ? String(item.productionYear!) : "---")
|
||||||
.shadow(color: .black, radius: 1)
|
|
||||||
Text("•")
|
Text("•")
|
||||||
.shadow(color: .black, radius: 1)
|
|
||||||
Text(item.genres?.first ?? "---")
|
Text(item.genres?.first ?? "---")
|
||||||
.shadow(color: .black, radius: 1)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HStack {
|
||||||
if item.type == .movie {
|
if item.type == .movie {
|
||||||
Text(item.getRuntime() ?? "-:--")
|
Text(item.getRuntime() ?? "-:--")
|
||||||
.shadow(color: .black, radius: 1)
|
}
|
||||||
|
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)
|
.font(.caption)
|
||||||
|
27
Jel/Views/Library/Item/ItemPeopleView.swift
Normal file
27
Jel/Views/Library/Item/ItemPeopleView.swift
Normal file
@ -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()
|
||||||
|
//}
|
@ -9,7 +9,8 @@ import SwiftUI
|
|||||||
import JellyfinKit
|
import JellyfinKit
|
||||||
|
|
||||||
struct ItemMovieView: View {
|
struct ItemMovieView: View {
|
||||||
@State var item: BaseItemDto
|
var item: BaseItemDto
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
VStack {
|
VStack {
|
||||||
ItemMediaView(item: item) {
|
ItemMediaView(item: item) {
|
||||||
@ -18,7 +19,10 @@ struct ItemMovieView: View {
|
|||||||
}
|
}
|
||||||
.buttonStyle(.borderedProminent)
|
.buttonStyle(.borderedProminent)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ItemPeopleView(item: item)
|
||||||
}
|
}
|
||||||
|
.padding()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,7 +88,8 @@ struct LibraryDetailView: View {
|
|||||||
.genres,
|
.genres,
|
||||||
.taglines,
|
.taglines,
|
||||||
.overview,
|
.overview,
|
||||||
.parentID]
|
.parentID,
|
||||||
|
.people]
|
||||||
)
|
)
|
||||||
let request = Paths.getItems(parameters: params)
|
let request = Paths.getItems(parameters: params)
|
||||||
|
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
//
|
|
||||||
// AppearancePicker.swift
|
|
||||||
// Jel
|
|
||||||
//
|
|
||||||
// Created by zerocool on 12/15/23.
|
|
||||||
//
|
|
||||||
|
|
||||||
import SwiftUI
|
|
||||||
|
|
||||||
struct AppearancePicker: View {
|
|
||||||
@ObservedObject var settingsController: SettingsController = SettingsController.shared
|
|
||||||
|
|
||||||
var body: some View {
|
|
||||||
Picker("Appearance", selection: $settingsController.appearance) {
|
|
||||||
ForEach(AppearanceState.allCases) { option in
|
|
||||||
Text(String(describing: option))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.pickerStyle(.menu)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#Preview {
|
|
||||||
AppearancePicker()
|
|
||||||
}
|
|
@ -43,12 +43,6 @@ struct SettingsView: View {
|
|||||||
Text("Current User")
|
Text("Current User")
|
||||||
}
|
}
|
||||||
|
|
||||||
Section() {
|
|
||||||
AppearancePicker()
|
|
||||||
} header: {
|
|
||||||
Text("Accessibility")
|
|
||||||
}
|
|
||||||
|
|
||||||
Section() {
|
Section() {
|
||||||
NavigationLink {
|
NavigationLink {
|
||||||
ConsoleView()
|
ConsoleView()
|
||||||
@ -72,16 +66,6 @@ struct SettingsView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.preferredColorScheme({
|
|
||||||
switch settingsController.appearance {
|
|
||||||
case .dark:
|
|
||||||
return ColorScheme.dark
|
|
||||||
case .light:
|
|
||||||
return ColorScheme.light
|
|
||||||
case .automatic:
|
|
||||||
return .none
|
|
||||||
}
|
|
||||||
}())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user