# HG changeset patch # User Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> # Date 1615535666 -3600 # Node ID 73d31bcfa0b727ad3379b972e944d28a63f6e3ae # Parent 1c4da42d6b88b07c0e8da2c3ad035c626e7eb5d7 Implement ActionView diff -r 1c4da42d6b88 -r 73d31bcfa0b7 LazyBear.xcodeproj/project.pbxproj --- 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 = ""; }; 95DED9DA25F2B268000DFCBA /* InsiderSummary.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsiderSummary.swift; sourceTree = ""; }; 95E9D09625F6AA0400A947A1 /* ActionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionView.swift; sourceTree = ""; }; + 95EFAC2525FB51F70030A6BE /* CompanyType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompanyType.swift; sourceTree = ""; }; 95F045FA25E96A58006A5A17 /* newsLanguages.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = newsLanguages.json; sourceTree = ""; }; 95F045FD25E96AA1006A5A17 /* NewsLanguageModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewsLanguageModel.swift; sourceTree = ""; }; 95F0460225E96DBB006A5A17 /* UserSettings+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserSettings+CoreDataClass.swift"; sourceTree = ""; }; @@ -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 */, diff -r 1c4da42d6b88 -r 73d31bcfa0b7 LazyBear.xcodeproj/project.xcworkspace/xcuserdata/dennis.xcuserdatad/UserInterfaceState.xcuserstate Binary file LazyBear.xcodeproj/project.xcworkspace/xcuserdata/dennis.xcuserdatad/UserInterfaceState.xcuserstate has changed diff -r 1c4da42d6b88 -r 73d31bcfa0b7 LazyBear/CompanyType.swift --- /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 +} diff -r 1c4da42d6b88 -r 73d31bcfa0b7 LazyBear/UI/ActionView.swift --- 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 + } + } + } } diff -r 1c4da42d6b88 -r 73d31bcfa0b7 LazyBear/UI/CompanyView.swift --- 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 @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())