// AppearancePrefsView.swift // Tusker // // Created by Shadowfacts on 6/13/19. // Copyright © 2019 Shadowfacts. All rights reserved. // import SwiftUI struct AppearancePrefsView : View { @ObservedObject var preferences = Preferences.shared var theme: Binding = Binding(get: { Preferences.shared.theme }, set: { Preferences.shared.theme = $0 NotificationCenter.default.post(name: .themePreferenceChanged, object: nil) }) var useCircularAvatars: Binding = Binding(get: { Preferences.shared.avatarStyle == .circle }) { Preferences.shared.avatarStyle = $0 ? .circle : .roundRect } var body: some View { List { Picker(selection: theme, label: Text("Theme")) { Text("Use System Theme").tag(UIUserInterfaceStyle.unspecified) Text("Light").tag(UIUserInterfaceStyle.light) Text("Dark").tag(UIUserInterfaceStyle.dark) } accountsSection postsSection } .listStyle(InsetGroupedListStyle()) .navigationBarTitle(Text("Appearance")) } private var accountsSection: some View { Section(header: Text("Accounts")) { Toggle(isOn: useCircularAvatars) { Text("Use Circular Avatars") } Toggle(isOn: $preferences.hideCustomEmojiInUsernames) { Text("Hide Custom Emoji in Usernames") } } } private var postsSection: some View { Section(header: Text("Posts")) { Toggle(isOn: $preferences.showIsStatusReplyIcon) { Text("Show Status Reply Icons") } Toggle(isOn: $preferences.alwaysShowStatusVisibilityIcon) { Text("Always Show Status Visibility Icons") } } } } #if DEBUG struct AppearancePrefsView_Previews : PreviewProvider { static var previews: some View { AppearancePrefsView() } } #endif