// // MacPreferencesView.swift // macOS // // Created by Stuart Breckenridge on 27/6/20. // import SwiftUI enum PreferencePane: Int, CaseIterable { case general = 0 case accounts = 1 case viewing = 2 case advanced = 3 var description: String { switch self { case .general: return "General" case .accounts: return "Accounts" case .viewing: return "Appearance" case .advanced: return "Advanced" } } } struct MacPreferencesView: View { @EnvironmentObject var defaults: AppDefaults @State private var preferencePane: PreferencePane = .general var body: some View { VStack { switch preferencePane { case .general: GeneralPreferencesView() .environmentObject(defaults) case .accounts: AccountsPreferencesView() .environmentObject(defaults) case .viewing: LayoutPreferencesView() .environmentObject(defaults) case .advanced: AdvancedPreferencesView() .environmentObject(defaults) } } .toolbar { ToolbarItem { HStack { Button(action: { preferencePane = .general }, label: { VStack { Image(systemName: "gearshape") .font(.title2) Text("General") }.foregroundColor( preferencePane == .general ? Color("AccentColor") : Color.gray ) }).frame(width: 70, height: 50) Button(action: { preferencePane = .accounts }, label: { VStack { Image(systemName: "at") .font(.title2) Text("Accounts") }.foregroundColor( preferencePane == .accounts ? Color("AccentColor") : Color.gray ) }).frame(width: 70, height: 50) Button(action: { preferencePane = .viewing }, label: { VStack { Image(systemName: "eyeglasses") .font(.title2) Text("Viewing") }.foregroundColor( preferencePane == .viewing ? Color("AccentColor") : Color.gray ) }).frame(width: 70, height: 50) Button(action: { preferencePane = .advanced }, label: { VStack { Image(systemName: "scale.3d") .font(.title2) Text("Advanced") }.foregroundColor( preferencePane == .advanced ? Color("AccentColor") : Color.gray ) }).frame(width: 70, height: 50) } } } } } struct MacPreferencesView_Previews: PreviewProvider { static var previews: some View { MacPreferencesView() } }