// // AddLocalAccountView.swift // Multiplatform macOS // // Created by Stuart Breckenridge on 02/12/2020. // Copyright © 2020 Ranchero Software. All rights reserved. // import SwiftUI import Account import RSCore struct AddLocalAccountView: View { @State private var newAccountName: String = "" @Environment (\.presentationMode) var presentationMode var body: some View { #if os(macOS) macBody #else NavigationView { iosBody } #endif } #if os(iOS) var iosBody: some View { List { Section(header: formHeader, content: { TextField("Account Name", text: $newAccountName) }) Section(footer: formFooter, content: { Button(action: { let newAccount = AccountManager.shared.createAccount(type: .onMyMac) newAccount.name = newAccountName presentationMode.wrappedValue.dismiss() }, label: { HStack { Spacer() Text("Add Account") Spacer() } }) }) }.navigationBarItems(leading: Button(action: { presentationMode.wrappedValue.dismiss() }, label: { Text("Cancel") }) ) .navigationBarTitleDisplayMode(.inline) .navigationTitle(Text(AccountType.onMyMac.localizedAccountName())) .listStyle(InsetGroupedListStyle()) } #endif #if os(macOS) var macBody: some View { VStack { HStack(spacing: 16) { VStack(alignment: .leading) { AccountType.onMyMac.image() .resizable() .frame(width: 50, height: 50) Spacer() } VStack(alignment: .leading, spacing: 8) { Text("Create a local account on your Mac.") .font(.headline) Text("Local accounts store their data on your Mac. They do not sync across your devices.") .font(.callout) .foregroundColor(.secondary) HStack { Text("Name: ") TextField("Account Name", text: $newAccountName) }.padding(.top, 8) Spacer() HStack(spacing: 8) { Spacer() Button(action: { presentationMode.wrappedValue.dismiss() }, label: { Text("Cancel") .frame(width: 60) }).keyboardShortcut(.cancelAction) Button(action: { let newAccount = AccountManager.shared.createAccount(type: .onMyMac) newAccount.name = newAccountName presentationMode.wrappedValue.dismiss() }, label: { Text("Create") .frame(width: 60) }).keyboardShortcut(.defaultAction) } } } } .padding() .frame(minWidth: 400, maxWidth: 400, minHeight: 230, maxHeight: 260) .textFieldStyle(RoundedBorderTextFieldStyle()) } #endif var formHeader: some View { HStack { Spacer() VStack(alignment: .center) { AccountType.onMyMac.image() .resizable() .frame(width: 50, height: 50) } Spacer() }.padding(.vertical) } var formFooter: some View { HStack { Spacer() VStack(spacing: 8) { Text("Local accounts do not sync your feeds across devices.").foregroundColor(.secondary) } .multilineTextAlignment(.center) .font(.caption) Spacer() }.padding(.vertical) } } struct AddLocalAccount_Previews: PreviewProvider { static var previews: some View { AddLocalAccountView() } }