// Copyright (C) 2024 Rubén Beltrán del Río // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see https://map.tranquil.systems. import SwiftUI struct MapPreferencesView: View { @AppStorage("showMapBackground") private var showBackground = true @AppStorage("useSmartEditor") private var useSmartEditor = false @AppStorage("useCustomFont") private var useCustomFont = false @AppStorage("customFontName") private var customFontName = "Helvetica" var body: some View { VStack(alignment: .center, spacing: Dimensions.Spacing.loose) { HStack(alignment: .firstTextBaseline, spacing: Dimensions.Spacing.regular) { Text("preferences.map.map_style.title") .font(.Theme.Body.emphasized) .frame(maxWidth: .infinity, alignment: .trailing) VStack(alignment: .leading, spacing: Dimensions.Spacing.cozy) { Toggle(isOn: $showBackground, label: { Text("preferences.map.map_style.show_background") .font(.Theme.Body.regular) }) Toggle(isOn: $useCustomFont, label: { Text("preferences.map.map_style.use_custom_font") .font(.Theme.Body.regular) }) Picker("", selection: $customFontName) { ForEach(NSFontManager.shared.availableFontFamilies, id: \.self) { fontFamily in Text(fontFamily).tag(fontFamily) } } .pickerStyle(MenuPickerStyle()) .disabled(!useCustomFont) } .frame(maxWidth: .infinity, alignment: .leading) } Divider() HStack(alignment: .firstTextBaseline, spacing: Dimensions.Spacing.regular) { Text("preferences.map.editor.title") .font(.Theme.Body.emphasized) .frame(maxWidth: .infinity, alignment: .trailing) VStack(alignment: .leading, spacing: Dimensions.Spacing.cozy) { Toggle(String(localized: "preferences.map.editor.use_smart_editor"), isOn: $useSmartEditor) } .frame(maxWidth: .infinity, alignment: .leading) } Spacer() } .padding() } } #Preview { MapPreferencesView() }