diff options
Diffstat (limited to 'Hotline/macOS/SettingsView.swift')
| -rw-r--r-- | Hotline/macOS/SettingsView.swift | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/Hotline/macOS/SettingsView.swift b/Hotline/macOS/SettingsView.swift new file mode 100644 index 0000000..2b11ecc --- /dev/null +++ b/Hotline/macOS/SettingsView.swift @@ -0,0 +1,94 @@ +import SwiftUI + +struct GeneralSettingsView: View { + @Environment(Prefs.self) private var preferences: Prefs + + var body: some View { + @Bindable var preferences = preferences + + Form { + TextField("Your Name", text: $preferences.username, prompt: Text("guest")) + Toggle("Refuse private messages", isOn: $preferences.refusePrivateMessages) + Toggle("Refuse private chat", isOn: $preferences.refusePrivateChat) + Toggle("Automatic Response", isOn: $preferences.enableAutomaticMessage) + if preferences.enableAutomaticMessage { + TextField("", text: $preferences.automaticMessage, prompt: Text("Write a response message")) + .lineLimit(2) + .multilineTextAlignment(.leading) +// .fixedSize(horizontal: true, vertical: false) + .frame(maxWidth: .infinity) +// .lineLimit(2, reservesSpace: true) + } + } + .padding(20) + .frame(width: 350) + } +} + +struct IconSettingsView: View { + @Environment(Prefs.self) private var preferences: Prefs + +// @AppStorage(Prefs.userIconID) private var userIconID: Int = Prefs.defaultIconID + + var body: some View { + @Bindable var preferences = preferences + + Form { + ScrollView { + LazyVGrid(columns: [ + GridItem(.flexible(minimum: 20, maximum: 50)), + GridItem(.flexible(minimum: 20, maximum: 50)), + GridItem(.flexible(minimum: 20, maximum: 50)), + GridItem(.flexible(minimum: 20, maximum: 50)), + GridItem(.flexible(minimum: 20, maximum: 50)), + GridItem(.flexible(minimum: 20, maximum: 50)), + GridItem(.flexible(minimum: 20, maximum: 50)) + ]) { + ForEach(Hotline.defaultIconSet.sorted(by: >), id: \.key) { iconID, iconText in + Text(iconText) + .font(.largeTitle) + .frame(maxWidth: .infinity) + .padding(4) + .background(iconID == preferences.userIconID ? .blue : .clear) + .clipShape(RoundedRectangle(cornerRadius: 5)) + .onTapGesture { + preferences.userIconID = iconID + } + } + } + .padding() + } +// for (iconID, iconText) in Hotline.defaultIconSet { + +// Text(iconText) +// } + } + .frame(width: 350, height: 300) + + } +} + +struct SettingsView: View { + private enum Tabs: Hashable { + case general, icon + } + + var body: some View { + TabView { + GeneralSettingsView() + .tabItem { + Label("General", systemImage: "gear") + } + .tag(Tabs.general) + IconSettingsView() + .tabItem { + Label("Icon", systemImage: "person.crop.circle") + } + .tag(Tabs.icon) + } + } +} + +#Preview { + SettingsView() +} |