changeset 249:73d31bcfa0b7

Implement ActionView
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Fri, 12 Mar 2021 08:54:26 +0100
parents 1c4da42d6b88
children 8fec23e8f7c3
files LazyBear.xcodeproj/project.pbxproj LazyBear.xcodeproj/project.xcworkspace/xcuserdata/dennis.xcuserdatad/UserInterfaceState.xcuserstate LazyBear/CompanyType.swift LazyBear/UI/ActionView.swift LazyBear/UI/CompanyView.swift
diffstat 5 files changed, 47 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/LazyBear.xcodeproj/project.pbxproj	Fri Mar 12 08:54:13 2021 +0100
+++ b/LazyBear.xcodeproj/project.pbxproj	Fri Mar 12 08:54:26 2021 +0100
@@ -61,6 +61,7 @@
 		95DED9DB25F2B268000DFCBA /* InsiderSummary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95DED9DA25F2B268000DFCBA /* InsiderSummary.swift */; };
 		95DED9E425F2B4D6000DFCBA /* SwiftUICharts in Frameworks */ = {isa = PBXBuildFile; productRef = 95DED9E325F2B4D6000DFCBA /* SwiftUICharts */; };
 		95E9D09725F6AA0400A947A1 /* ActionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95E9D09625F6AA0400A947A1 /* ActionView.swift */; };
+		95EFAC2625FB51F70030A6BE /* CompanyType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95EFAC2525FB51F70030A6BE /* CompanyType.swift */; };
 		95F045FB25E96A58006A5A17 /* newsLanguages.json in Resources */ = {isa = PBXBuildFile; fileRef = 95F045FA25E96A58006A5A17 /* newsLanguages.json */; };
 		95F045FE25E96AA1006A5A17 /* NewsLanguageModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F045FD25E96AA1006A5A17 /* NewsLanguageModel.swift */; };
 		95F0460425E96DBB006A5A17 /* UserSettings+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F0460225E96DBB006A5A17 /* UserSettings+CoreDataClass.swift */; };
@@ -128,6 +129,7 @@
 		95DED9D725F2B1EF000DFCBA /* TopInsiderModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TopInsiderModel.swift; sourceTree = "<group>"; };
 		95DED9DA25F2B268000DFCBA /* InsiderSummary.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsiderSummary.swift; sourceTree = "<group>"; };
 		95E9D09625F6AA0400A947A1 /* ActionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionView.swift; sourceTree = "<group>"; };
+		95EFAC2525FB51F70030A6BE /* CompanyType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompanyType.swift; sourceTree = "<group>"; };
 		95F045FA25E96A58006A5A17 /* newsLanguages.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = newsLanguages.json; sourceTree = "<group>"; };
 		95F045FD25E96AA1006A5A17 /* NewsLanguageModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewsLanguageModel.swift; sourceTree = "<group>"; };
 		95F0460225E96DBB006A5A17 /* UserSettings+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserSettings+CoreDataClass.swift"; sourceTree = "<group>"; };
@@ -196,6 +198,7 @@
 				95672B9025DDA54700DCBE4A /* ContentView.swift */,
 				95BFAE4D25E2B0C200A70EC3 /* HudManager.swift */,
 				95672B9725DDA54700DCBE4A /* Persistence.swift */,
+				95EFAC2525FB51F70030A6BE /* CompanyType.swift */,
 				95B1874925DDAC4D0068A364 /* UI */,
 				95B1874825DDAC470068A364 /* Models */,
 				958A735525E01F7E00FD7ECA /* Functions */,
@@ -409,6 +412,7 @@
 				950B674F25E9A0AE00BF8593 /* IconModel.swift in Sources */,
 				958A733B25E00C3100FD7ECA /* Company+CoreDataProperties.swift in Sources */,
 				9517626325EEBD3800733235 /* IexAttribution.swift in Sources */,
+				95EFAC2625FB51F70030A6BE /* CompanyType.swift in Sources */,
 				95F90AB825F280190023A4B0 /* InsiderTransactions.swift in Sources */,
 				95ACB5AF25E03AA100A3CCC8 /* ThemeModel.swift in Sources */,
 				95672B8F25DDA54700DCBE4A /* LazyBearApp.swift in Sources */,
Binary file LazyBear.xcodeproj/project.xcworkspace/xcuserdata/dennis.xcuserdatad/UserInterfaceState.xcuserstate has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LazyBear/CompanyType.swift	Fri Mar 12 08:54:26 2021 +0100
@@ -0,0 +1,16 @@
+//
+//  CompanyType.swift
+//  LazyBear
+//
+//  Created by Dennis Concepción Martín on 12/3/21.
+//
+
+import SwiftUI
+
+class CompanyType: ObservableObject {
+    @Published var view = ViewType.stock
+}
+
+enum ViewType {
+    case stock, insiders
+}
--- a/LazyBear/UI/ActionView.swift	Fri Mar 12 08:54:13 2021 +0100
+++ b/LazyBear/UI/ActionView.swift	Fri Mar 12 08:54:26 2021 +0100
@@ -8,12 +8,14 @@
 import SwiftUI
 
 struct ActionView: View {
+    @EnvironmentObject var companyType: CompanyType
+    @EnvironmentObject var hudManager: HudManager
     
     var body: some View {
         VStack {
             VStack {
                 Group {
-                    Button(action: {  }) {
+                    Button(action: { changeViewTo(.stock) }) {
                         Image(systemName: "chart.bar")
                         Text("Stock & news")
                         Spacer()
@@ -21,7 +23,7 @@
                     Divider()
                         .offset(x: 45)
                     
-                    Button(action: {  }) {
+                    Button(action: { changeViewTo(.insiders) }) {
                         Image(systemName: "chart.pie")
                         Text("Insider transactions")
                         Spacer()
@@ -35,7 +37,7 @@
                     .cornerRadius(20)
             )
             
-            Button(action: {  }) {
+            Button(action: { self.hudManager.showAction = false }) {
                 Spacer()
                 Text("Cancel")
                 Spacer()
@@ -49,6 +51,23 @@
         }
         .frame(maxWidth: 600)
     }
+    
+    private func changeViewTo(_ view: ViewType ) {
+        // Show view after one second.
+        // Give time to dismiss the Action View
+        self.hudManager.showAction = false
+        
+        if view == .stock {
+            DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
+                self.companyType.view = .stock
+                
+            }
+        } else if view == .insiders {
+            DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
+                self.companyType.view = .insiders
+            }
+        }
+    }
 }
 
 
--- a/LazyBear/UI/CompanyView.swift	Fri Mar 12 08:54:13 2021 +0100
+++ b/LazyBear/UI/CompanyView.swift	Fri Mar 12 08:54:26 2021 +0100
@@ -7,29 +7,24 @@
 
 import SwiftUI
 
-enum ViewType {
-    case stock, insiders
-}
-
 struct CompanyView: View {
     var name: String
     var symbol: String
     
-    @ObservedObject var hudManager: HudManager
+    @EnvironmentObject var hudManager: HudManager
+    @EnvironmentObject var companyType: CompanyType
     @FetchRequest(entity: Company.entity(), sortDescriptors: []) var companies: FetchedResults<Company>
     @Environment(\.managedObjectContext) private var moc
-
-    @State var viewState = ViewType.stock
     
     var body: some View {
         GeometryReader { geo in
             ScrollView {
-                if viewState == .stock {
+                if companyType.view == .stock {
                         PriceView(symbol: symbol)
                         ChartView(symbol: symbol, chartHeight: geo.size.width / 2)
                         NewsView(symbol: symbol)
                         
-                } else if viewState == .insiders {
+                } else if companyType.view == .insiders {
                     InsiderSummary(symbol: symbol)
                     InsiderTransactions(symbol: symbol)
                 }
@@ -74,7 +69,7 @@
 struct CompanyView_Previews: PreviewProvider {
     static var previews: some View {
         NavigationView {
-            CompanyView(name: "apple inc", symbol: "aapl", hudManager: HudManager())
+            CompanyView(name: "apple inc", symbol: "aapl")
                 .navigationTitle("APPL")
         }
         .navigationViewStyle(StackNavigationViewStyle())