InfoDisplaySettingsView.swift 2.0 KB

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