InfoDisplaySettingsView.swift 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // LoopFollow
  2. // InfoDisplaySettingsView.swift
  3. // Created by Jonas Björkert on 2024-08-05.
  4. import SwiftUI
  5. struct InfoDisplaySettingsView: View {
  6. @ObservedObject var viewModel: InfoDisplaySettingsViewModel
  7. @Environment(\.presentationMode) var presentationMode
  8. var body: some View {
  9. NavigationView {
  10. Form {
  11. Section(header: Text("General")) {
  12. Toggle(isOn: Binding(
  13. get: { UserDefaultsRepository.hideInfoTable.value },
  14. set: { UserDefaultsRepository.hideInfoTable.value = $0 }
  15. )) {
  16. Text("Hide Information Table")
  17. }
  18. }
  19. Section(header: Text("Information Display Settings")) {
  20. List {
  21. ForEach(viewModel.infoSort, id: \.self) { sortedIndex in
  22. HStack {
  23. Text(viewModel.getName(for: sortedIndex))
  24. Spacer()
  25. Toggle("", isOn: Binding(
  26. get: { viewModel.infoVisible[sortedIndex] },
  27. set: { _ in
  28. viewModel.toggleVisibility(for: sortedIndex)
  29. }
  30. ))
  31. .labelsHidden()
  32. }
  33. }
  34. .onMove(perform: viewModel.move)
  35. }
  36. .environment(\.editMode, .constant(.active))
  37. }
  38. }
  39. .navigationBarItems(trailing: Button("Done") {
  40. presentationMode.wrappedValue.dismiss()
  41. })
  42. .onDisappear {
  43. NotificationCenter.default.post(name: NSNotification.Name("refresh"), object: nil)
  44. }
  45. }
  46. .preferredColorScheme(Storage.shared.forceDarkMode.value ? .dark : nil)
  47. }
  48. }