annotate GeoQuiz/SettingsModalView.swift @ 9:3540c7efc216

implement UserSettings
author Dennis C. M. <dennis@denniscm.com>
date Fri, 07 Oct 2022 18:50:38 +0200
parents d945e52b0704
children a793f33f05fb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
1 //
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
2 // SettingsModalView.swift
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
3 // GeoQuiz
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
4 //
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 22/9/22.
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
6 //
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
7
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
8 import SwiftUI
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
9
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
10 struct SettingsModalView: View {
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
11 @Environment(\.dismiss) var dismiss
9
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
12 @StateObject var user = User()
5
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
13
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
14 var body: some View {
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
15 NavigationView {
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
16 Form {
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 5
diff changeset
17 Section {
9
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
18 Picker("Number of lives", selection: $user.settings.numberOfLives) {
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
19 ForEach(1..<11) { numberOfLives in
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
20 Text("\(numberOfLives)")
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
21 .tag(numberOfLives)
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
22 }
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
23 }
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 5
diff changeset
24 } header: {
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 5
diff changeset
25 Text("Game")
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 5
diff changeset
26 }
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 5
diff changeset
27
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 5
diff changeset
28 Section {
9
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
29 Toggle("Haptics", isOn: $user.settings.haptics)
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
30 Toggle("Sound effects", isOn: $user.settings.sound)
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 5
diff changeset
31 } header: {
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 5
diff changeset
32 Text("Effects")
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 5
diff changeset
33 }
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 5
diff changeset
34
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 5
diff changeset
35 Section {
9
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
36 LinkComponent(
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
37 color: .mayaBlue,
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
38 iconName: "info.circle.fill",
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
39 text: "About",
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
40 url: URL(string: "https://dennistech.io")!
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
41 )
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
42
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
43 LinkComponent(
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
44 color: .atomicTangerine,
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
45 iconName: "ant.circle.fill",
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
46 text: "Report bugs",
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
47 url: URL(string: "mailto:dmartin@dennistech.io")!
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
48 )
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
49
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
50 LinkComponent(
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
51 color: .blueBell,
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
52 iconName: "message.circle.fill",
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
53 text: "Twitter",
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
54 url: URL(string: "https://twitter.com/dennistech_")!
3540c7efc216 implement UserSettings
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
55 )
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 5
diff changeset
56 } header: {
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 5
diff changeset
57 Text("Get in touch")
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 5
diff changeset
58 }
5
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
59 }
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
60 .navigationTitle("Settings")
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
61 .toolbar {
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
62 ToolbarItem(placement: .cancellationAction) {
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
63 Button {
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
64 dismiss()
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
65 } label: {
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
66 Label("Exit", systemImage: "multiply")
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
67 }
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
68 }
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
69 }
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
70 }
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
71 }
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
72 }
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
73
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
74 struct SettingsModalView_Previews: PreviewProvider {
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
75 static var previews: some View {
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
76 SettingsModalView()
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
77 }
f31a61462e7a add sound effects
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
78 }