Mercurial > public > geoquiz
annotate GeoQuiz/SettingsModalView.swift @ 17:8dac58bb4569
fix build bug
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Thu, 20 Oct 2022 18:07:51 +0200 |
parents | 136928bae534 |
children | f140bb277c96 |
rev | line source |
---|---|
5 | 1 // |
2 // SettingsModalView.swift | |
3 // GeoQuiz | |
4 // | |
5 // Created by Dennis Concepción Martín on 22/9/22. | |
6 // | |
7 | |
8 import SwiftUI | |
9 | |
10 struct SettingsModalView: View { | |
14 | 11 @ObservedObject var user: User |
5 | 12 @Environment(\.dismiss) var dismiss |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
9
diff
changeset
|
13 |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
9
diff
changeset
|
14 var lives: [Int] { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
9
diff
changeset
|
15 var lives = [Int]() |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
9
diff
changeset
|
16 for i in stride(from: 5, to: 55, by: 5) { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
9
diff
changeset
|
17 lives.append(i) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
9
diff
changeset
|
18 } |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
9
diff
changeset
|
19 |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
9
diff
changeset
|
20 return lives |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
9
diff
changeset
|
21 } |
5 | 22 |
23 var body: some View { | |
24 NavigationView { | |
25 Form { | |
7 | 26 Section { |
14 | 27 Picker("❤️ Lives", selection: $user.data.numberOfLives) { |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
9
diff
changeset
|
28 ForEach(lives, id: \.self) { numberOfLives in |
9 | 29 Text("\(numberOfLives)") |
30 .tag(numberOfLives) | |
31 } | |
32 } | |
7 | 33 } header: { |
34 Text("Game") | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
9
diff
changeset
|
35 } footer: { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
9
diff
changeset
|
36 Text("Number of lives at the beginning of each game.") |
7 | 37 } |
38 | |
39 Section { | |
14 | 40 Toggle("Haptics", isOn: $user.data.haptics) |
41 Toggle("Sound effects", isOn: $user.data.sound) | |
7 | 42 } header: { |
43 Text("Effects") | |
44 } | |
45 | |
46 Section { | |
9 | 47 LinkComponent( |
48 color: .mayaBlue, | |
49 iconName: "info.circle.fill", | |
50 text: "About", | |
51 url: URL(string: "https://dennistech.io")! | |
52 ) | |
53 | |
54 LinkComponent( | |
55 color: .atomicTangerine, | |
56 iconName: "ant.circle.fill", | |
57 text: "Report bugs", | |
58 url: URL(string: "mailto:dmartin@dennistech.io")! | |
59 ) | |
60 | |
61 LinkComponent( | |
62 color: .blueBell, | |
63 iconName: "message.circle.fill", | |
64 text: "Twitter", | |
65 url: URL(string: "https://twitter.com/dennistech_")! | |
66 ) | |
7 | 67 } header: { |
68 Text("Get in touch") | |
69 } | |
5 | 70 } |
71 .navigationTitle("Settings") | |
72 .toolbar { | |
73 ToolbarItem(placement: .cancellationAction) { | |
74 Button { | |
75 dismiss() | |
76 } label: { | |
77 Label("Exit", systemImage: "multiply") | |
78 } | |
79 } | |
80 } | |
81 } | |
82 } | |
83 } | |
84 | |
85 struct SettingsModalView_Previews: PreviewProvider { | |
86 static var previews: some View { | |
14 | 87 SettingsModalView(user: User()) |
5 | 88 } |
89 } |