Mercurial > public > lazybear
annotate LazyBear/ContentView.swift @ 287:22eba376075e
Add custom haptics
author | Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> |
---|---|
date | Sat, 20 Mar 2021 15:01:05 +0100 |
parents | 9e23e9b0ab36 |
children | b481783c32c0 |
rev | line source |
---|---|
163
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
1 // |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
2 // ContentView.swift |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
3 // LazyBear |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
4 // |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
5 // Created by Dennis Concepción Martín on 17/2/21. |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
6 // |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
7 |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
8 import SwiftUI |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
9 |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
10 struct ContentView: View { |
248
1c4da42d6b88
Change vars to EnvironmentObject
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
246
diff
changeset
|
11 @EnvironmentObject var hudManager: HudManager |
272
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
12 @EnvironmentObject var deviceSize: DeviceSize |
287
22eba376075e
Add custom haptics
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
272
diff
changeset
|
13 @EnvironmentObject var hapticsManager: HapticsManager |
178
c1aa75608c27
Implement HUD
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
165
diff
changeset
|
14 |
244
724916624385
Implement Insider View
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
193
diff
changeset
|
15 // Fetch user appearence settings |
181
9533f6a60531
User can change theme color
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
178
diff
changeset
|
16 @FetchRequest(entity: UserSettings.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \UserSettings.changedAt, ascending: false)]) |
9533f6a60531
User can change theme color
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
178
diff
changeset
|
17 var userSettings: FetchedResults<UserSettings> |
9533f6a60531
User can change theme color
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
178
diff
changeset
|
18 |
163
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
19 var body: some View { |
272
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
20 GeometryReader { geo in |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
21 ZStack(alignment: .top) { |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
22 TabView { |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
23 // First view |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
24 Watchlist() |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
25 .tabItem { |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
26 Label("Watchlist", systemImage: "list.dash") |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
27 } |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
28 |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
29 // First view |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
30 Search() |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
31 .tabItem { |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
32 Label("Search", systemImage: "magnifyingglass") |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
33 } |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
34 |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
35 // First view |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
36 Settings() |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
37 .tabItem { |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
38 Label("Settings", systemImage: "gear") |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
39 } |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
40 } |
178
c1aa75608c27
Implement HUD
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
165
diff
changeset
|
41 |
272
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
42 // Show HUDs |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
43 // Notification |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
44 Notification(text: "Company saved", image: "checkmark.circle") |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
45 .offset(y: hudManager.showNotification ? 0 : -100) |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
46 .animation(.easeInOut) |
178
c1aa75608c27
Implement HUD
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
165
diff
changeset
|
47 |
272
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
48 // Action sheet |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
49 ZStack(alignment: .bottom) { |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
50 Color(.black) |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
51 .edgesIgnoringSafeArea(.all) |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
52 .opacity(hudManager.showAction ? 0.2: 0) |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
53 .animation(.easeInOut) |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
54 .onTapGesture { hudManager.showAction = false } |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
55 |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
56 ActionView() |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
57 .offset(y: hudManager.showAction ? 0 : 250) |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
58 .animation(.easeInOut) |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
59 .padding() |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
60 } |
178
c1aa75608c27
Implement HUD
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
165
diff
changeset
|
61 } |
272
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
62 .accentColor(Color("\(userSettings.first?.theme?.lowercased() ?? "default")Accent")) |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
63 // If this value is not optional it will cause a crash |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
64 .onAppear { |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
65 // Assign device screen size to the class |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
66 self.deviceSize.width = geo.size.width |
9e23e9b0ab36
Implementing Custom Line Chart
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
258
diff
changeset
|
67 self.deviceSize.height = geo.size.height |
287
22eba376075e
Add custom haptics
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
272
diff
changeset
|
68 hapticsManager.prepareHaptics() |
246
35be981ccb31
Implementing CustomAction view
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
244
diff
changeset
|
69 } |
163
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
70 } |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
71 } |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
72 } |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
73 |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
74 |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
75 struct ContentView_Previews: PreviewProvider { |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
76 static var previews: some View { |
165
125d268db489
Update UI
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
164
diff
changeset
|
77 ContentView() |
258
471906e56feb
Changing NewsView on iPad
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
250
diff
changeset
|
78 .environmentObject(HudManager()) |
163
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
79 } |
9d519f230f26
Start clean project
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
80 } |