// // AppearancePrefsView.swift // Tusker // // Created by Shadowfacts on 6/13/19. // Copyright © 2019 Shadowfacts. All rights reserved. // import SwiftUI import TuskerPreferences struct AppearancePrefsView: View { @ObservedObject private var preferences = Preferences.shared var body: some View { List { Section { MockStatusView() .padding(.top, 8) } .appGroupedListRowBackground() accountsSection postsSection mediaSection } .listStyle(.insetGrouped) .appGroupedListBackground(container: PreferencesNavigationController.self) .navigationTitle("Appearance") } private var accountsSection: some View { Section("Accounts") { Toggle(isOn: Binding(get: { preferences.avatarStyle == .circle }, set: { preferences.avatarStyle = $0 ? .circle : .roundRect })) { Text("Use Circular Avatars") } Toggle(isOn: $preferences.hideCustomEmojiInUsernames) { Text("Hide Custom Emoji in Usernames") } } .appGroupedListRowBackground() } private var postsSection: some View { Section("Posts") { Toggle(isOn: $preferences.showIsStatusReplyIcon) { Text("Show Status Reply Icons") } Toggle(isOn: $preferences.alwaysShowStatusVisibilityIcon) { Text("Always Show Status Visibility Icons") } Toggle(isOn: $preferences.showLinkPreviews) { Text("Show Link Previews") } Toggle(isOn: $preferences.showAttachmentsInTimeline) { Text("Show Attachments on Timeline") } Toggle(isOn: $preferences.hideActionsInTimeline) { Text("Hide Actions on Timeline") } Toggle(isOn: $preferences.underlineTextLinks) { Text("Underline Links") } // NavigationLink("Leading Swipe Actions") { // SwipeActionsPrefsView(selection: $preferences.leadingStatusSwipeActions) // .edgesIgnoringSafeArea(.all) // .navigationTitle("Leading Swipe Actions") // } // NavigationLink("Trailing Swipe Actions") { // SwipeActionsPrefsView(selection: $preferences.trailingStatusSwipeActions) // .edgesIgnoringSafeArea(.all) // .navigationTitle("Trailing Swipe Actions") } .appGroupedListRowBackground() } private var mediaSection: some View { Section("Media") { Picker(selection: $preferences.attachmentBlurMode) { ForEach(AttachmentBlurMode.allCases, id: \.self) { mode in Text(mode.displayName).tag(mode) } } label: { Text("Blur Media") } Toggle(isOn: $preferences.blurMediaBehindContentWarning) { Text("Blur Media Behind Content Warning") } .disabled(preferences.attachmentBlurMode != .useStatusSetting) Toggle(isOn: $preferences.automaticallyPlayGifs) { Text("Automatically Play GIFs") } Toggle(isOn: $preferences.showUncroppedMediaInline) { Text("Show Uncropped Media Inline") } Toggle(isOn: $preferences.showAttachmentBadges) { Text("Show GIF/\(Text("Alt").font(.body.lowercaseSmallCaps())) Badges") } Toggle(isOn: $preferences.attachmentAltBadgeInverted) { Text("Show Badge when Missing \(Text("Alt").font(.body.lowercaseSmallCaps()))") } .disabled(!preferences.showAttachmentBadges) } .appGroupedListRowBackground() } } #if DEBUG struct AppearancePrefsView_Previews : PreviewProvider { static var previews: some View { AppearancePrefsView() } } #endif