From 01381f9f255407d031733a1ad7cc859c012b5555 Mon Sep 17 00:00:00 2001 From: oliverhnat Date: Sat, 13 Jan 2024 00:07:14 +0100 Subject: [PATCH] Refactored image in TrashEvent --- TrashTrack.xcodeproj/project.pbxproj | 55 ++++++++++++- .../xcshareddata/swiftpm/Package.resolved | 23 ++++++ TrashTrack/ContentView.swift | 24 ------ TrashTrack/DayView.swift | 77 +++++++++---------- TrashTrack/MainView.swift | 32 ++++++++ TrashTrack/TrashModel.swift | 16 ++-- TrashTrack/TrashModelView.swift | 2 +- TrashTrack/TrashTrackApp.swift | 2 +- 8 files changed, 154 insertions(+), 77 deletions(-) create mode 100644 TrashTrack.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved delete mode 100644 TrashTrack/ContentView.swift create mode 100644 TrashTrack/MainView.swift diff --git a/TrashTrack.xcodeproj/project.pbxproj b/TrashTrack.xcodeproj/project.pbxproj index 94bb1e0..8dd355a 100644 --- a/TrashTrack.xcodeproj/project.pbxproj +++ b/TrashTrack.xcodeproj/project.pbxproj @@ -8,17 +8,28 @@ /* Begin PBXBuildFile section */ 6C264F9D2B51A22F002CBE12 /* TrashTrackApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C264F9C2B51A22F002CBE12 /* TrashTrackApp.swift */; }; - 6C264F9F2B51A22F002CBE12 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C264F9E2B51A22F002CBE12 /* ContentView.swift */; }; + 6C264F9F2B51A22F002CBE12 /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C264F9E2B51A22F002CBE12 /* MainView.swift */; }; 6C264FA12B51A230002CBE12 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6C264FA02B51A230002CBE12 /* Assets.xcassets */; }; 6C264FA42B51A230002CBE12 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6C264FA32B51A230002CBE12 /* Preview Assets.xcassets */; }; + 6C264FAB2B51A255002CBE12 /* TrashModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C264FAA2B51A255002CBE12 /* TrashModel.swift */; }; + 6C264FAD2B51A26F002CBE12 /* TrashModelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C264FAC2B51A26F002CBE12 /* TrashModelView.swift */; }; + 6C264FB02B51D58C002CBE12 /* ElegantCalendar in Frameworks */ = {isa = PBXBuildFile; productRef = 6C264FAF2B51D58C002CBE12 /* ElegantCalendar */; }; + 6C264FB22B51D59B002CBE12 /* CalendarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C264FB12B51D59B002CBE12 /* CalendarView.swift */; }; + 6C264FB42B51DA90002CBE12 /* ElegantCalendar.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6C264FB32B51DA90002CBE12 /* ElegantCalendar.xcassets */; }; + 6C264FB62B51EFDB002CBE12 /* DayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C264FB52B51EFDB002CBE12 /* DayView.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 6C264F992B51A22F002CBE12 /* TrashTrack.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TrashTrack.app; sourceTree = BUILT_PRODUCTS_DIR; }; 6C264F9C2B51A22F002CBE12 /* TrashTrackApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrashTrackApp.swift; sourceTree = ""; }; - 6C264F9E2B51A22F002CBE12 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 6C264F9E2B51A22F002CBE12 /* MainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainView.swift; sourceTree = ""; }; 6C264FA02B51A230002CBE12 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 6C264FA32B51A230002CBE12 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 6C264FAA2B51A255002CBE12 /* TrashModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrashModel.swift; sourceTree = ""; }; + 6C264FAC2B51A26F002CBE12 /* TrashModelView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrashModelView.swift; sourceTree = ""; }; + 6C264FB12B51D59B002CBE12 /* CalendarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalendarView.swift; sourceTree = ""; }; + 6C264FB32B51DA90002CBE12 /* ElegantCalendar.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = ElegantCalendar.xcassets; path = "../../../SourcePackages/checkouts/ElegantCalendar?tab=readme-ov-file#basic-usage/ElegantCalendar.xcassets"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6C264FB52B51EFDB002CBE12 /* DayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DayView.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -26,6 +37,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 6C264FB02B51D58C002CBE12 /* ElegantCalendar in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -52,7 +64,12 @@ isa = PBXGroup; children = ( 6C264F9C2B51A22F002CBE12 /* TrashTrackApp.swift */, - 6C264F9E2B51A22F002CBE12 /* ContentView.swift */, + 6C264FB52B51EFDB002CBE12 /* DayView.swift */, + 6C264F9E2B51A22F002CBE12 /* MainView.swift */, + 6C264FB12B51D59B002CBE12 /* CalendarView.swift */, + 6C264FAA2B51A255002CBE12 /* TrashModel.swift */, + 6C264FB32B51DA90002CBE12 /* ElegantCalendar.xcassets */, + 6C264FAC2B51A26F002CBE12 /* TrashModelView.swift */, 6C264FA02B51A230002CBE12 /* Assets.xcassets */, 6C264FA22B51A230002CBE12 /* Preview Content */, ); @@ -83,6 +100,9 @@ dependencies = ( ); name = TrashTrack; + packageProductDependencies = ( + 6C264FAF2B51D58C002CBE12 /* ElegantCalendar */, + ); productName = TrashTrack; productReference = 6C264F992B51A22F002CBE12 /* TrashTrack.app */; productType = "com.apple.product-type.application"; @@ -111,6 +131,9 @@ Base, ); mainGroup = 6C264F902B51A22F002CBE12; + packageReferences = ( + 6C264FAE2B51D58C002CBE12 /* XCRemoteSwiftPackageReference "ElegantCalendar" */, + ); productRefGroup = 6C264F9A2B51A22F002CBE12 /* Products */; projectDirPath = ""; projectRoot = ""; @@ -125,6 +148,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 6C264FB42B51DA90002CBE12 /* ElegantCalendar.xcassets in Resources */, 6C264FA42B51A230002CBE12 /* Preview Assets.xcassets in Resources */, 6C264FA12B51A230002CBE12 /* Assets.xcassets in Resources */, ); @@ -137,7 +161,11 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6C264F9F2B51A22F002CBE12 /* ContentView.swift in Sources */, + 6C264FB22B51D59B002CBE12 /* CalendarView.swift in Sources */, + 6C264FB62B51EFDB002CBE12 /* DayView.swift in Sources */, + 6C264F9F2B51A22F002CBE12 /* MainView.swift in Sources */, + 6C264FAD2B51A26F002CBE12 /* TrashModelView.swift in Sources */, + 6C264FAB2B51A255002CBE12 /* TrashModel.swift in Sources */, 6C264F9D2B51A22F002CBE12 /* TrashTrackApp.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -344,6 +372,25 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 6C264FAE2B51D58C002CBE12 /* XCRemoteSwiftPackageReference "ElegantCalendar" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/ThasianX/ElegantCalendar?tab=readme-ov-file#basic-usage"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 4.3.2; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 6C264FAF2B51D58C002CBE12 /* ElegantCalendar */ = { + isa = XCSwiftPackageProductDependency; + package = 6C264FAE2B51D58C002CBE12 /* XCRemoteSwiftPackageReference "ElegantCalendar" */; + productName = ElegantCalendar; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 6C264F912B51A22F002CBE12 /* Project object */; } diff --git a/TrashTrack.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/TrashTrack.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..eb60eaa --- /dev/null +++ b/TrashTrack.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,23 @@ +{ + "pins" : [ + { + "identity" : "elegantcalendar?tab=readme-ov-file#basic-usage", + "kind" : "remoteSourceControl", + "location" : "https://github.com/ThasianX/ElegantCalendar?tab=readme-ov-file#basic-usage", + "state" : { + "revision" : "d446234f27e60f5bef15f91c35d384f388ff2c7d", + "version" : "4.3.2" + } + }, + { + "identity" : "elegantpages", + "kind" : "remoteSourceControl", + "location" : "https://github.com/ThasianX/ElegantPages", + "state" : { + "revision" : "d598ce4824c40296decc84eae5b3c042d3dff842", + "version" : "1.4.2" + } + } + ], + "version" : 2 +} diff --git a/TrashTrack/ContentView.swift b/TrashTrack/ContentView.swift deleted file mode 100644 index 4281f36..0000000 --- a/TrashTrack/ContentView.swift +++ /dev/null @@ -1,24 +0,0 @@ -// -// ContentView.swift -// TrashTrack -// -// Created by Oliver Hnát on 12.01.2024. -// - -import SwiftUI - -struct ContentView: View { - var body: some View { - VStack { - Image(systemName: "globe") - .imageScale(.large) - .foregroundStyle(.tint) - Text("Hello, world!") - } - .padding() - } -} - -#Preview { - ContentView() -} diff --git a/TrashTrack/DayView.swift b/TrashTrack/DayView.swift index 24bf7cd..1af7b3f 100644 --- a/TrashTrack/DayView.swift +++ b/TrashTrack/DayView.swift @@ -8,26 +8,25 @@ import SwiftUI struct DayWidgetInfo { - var image: Image - var dayOfTheWeek: String - var date: Int - var color: Color } struct DayView: View { - var day: DayWidgetInfo + var image: String + var dayOfTheWeek: String + var date: Int + var color: Color var body: some View { ZStack { - Color.init(day.color) + Color.init(color) .cornerRadius(10) .scaledToFit() .frame(maxWidth: .infinity) VStack { - Text("\(day.dayOfTheWeek)") + Text("\(dayOfTheWeek)") .frame(maxWidth: .infinity, alignment: .leading) - Text("\(day.date).") + Text("\(date).") .font(.headline) - day.image + Image(systemName: image) .font(.caption) } } @@ -37,44 +36,44 @@ struct DayView: View { #Preview { VStack { HStack { - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mon", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "newspaper"), dayOfTheWeek: "Tue", date: 31, color: .blue)) - DayView(day: DayWidgetInfo(image: Image(systemName: "waterbottle"), dayOfTheWeek: "Wed", date: 31, color: .orange)) - DayView(day: DayWidgetInfo(image: Image(systemName: "trash"), dayOfTheWeek: "Thu", date: 31, color: .gray)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) + DayView(image: "tree", dayOfTheWeek: "Mon", date: 31, color: .green) + DayView(image: "newspaper", dayOfTheWeek: "Tue", date: 31, color: .blue) + DayView(image: "waterbottle", dayOfTheWeek: "Wed", date: 31, color: .orange) + DayView(image: "trash", dayOfTheWeek: "Thu", date: 31, color: .gray) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) } HStack { - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) } HStack { - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) } HStack { - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) } HStack { - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) - DayView(day: DayWidgetInfo(image: Image(systemName: "tree"), dayOfTheWeek: "Mo", date: 31, color: .green)) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) + DayView(image: "tree", dayOfTheWeek: "Mo", date: 31, color: .green) } } } diff --git a/TrashTrack/MainView.swift b/TrashTrack/MainView.swift new file mode 100644 index 0000000..03e82d8 --- /dev/null +++ b/TrashTrack/MainView.swift @@ -0,0 +1,32 @@ +// +// ContentView.swift +// TrashTrack +// +// Created by Oliver Hnát on 12.01.2024. +// + +import SwiftUI + +struct MainView: View { + var model = TrashModelView() + var body: some View { + VStack { + ForEach(model.getTrashEvents()) { trashEvent in + HStack { + Image(systemName: trashEvent.trash.image) + .imageScale(.large) + .foregroundStyle(.tint) + VStack { + Text(trashEvent.trash.type) + Text(trashEvent.date.ISO8601Format()) + } + } + } + } + .padding() + } +} + +#Preview { + MainView() +} diff --git a/TrashTrack/TrashModel.swift b/TrashTrack/TrashModel.swift index 3286521..5705d69 100644 --- a/TrashTrack/TrashModel.swift +++ b/TrashTrack/TrashModel.swift @@ -11,7 +11,7 @@ import SwiftUI struct Trash { var type: String var color: Color - var image: Image + var image: String } struct TrashEvent: Identifiable { @@ -21,15 +21,15 @@ struct TrashEvent: Identifiable { } struct TrashModel { - var trashTypes: [Trash] - var trashEvents: [TrashEvent] + private (set) var trashTypes: [Trash] + private var trashEvents: [TrashEvent] init() { self.trashTypes = [ - Trash(type: "plastic", color: Color.orange, image: Image(systemName: "waterbottle")), - Trash(type: "paper", color: Color.orange, image: Image(systemName: "newspaper")), - Trash(type: "bio", color: Color.orange, image: Image(systemName: "tree")), - Trash(type: "residual", color: Color.orange, image: Image(systemName: "trash")) + Trash(type: "plastic", color: Color.orange, image: "waterbottle"), + Trash(type: "paper", color: Color.orange, image: "newspaper"), + Trash(type: "bio", color: Color.orange, image: "tree"), + Trash(type: "residual", color: Color.orange, image: "trash") ] self.trashEvents = [] @@ -69,7 +69,7 @@ struct TrashModel { TrashEvent( id: i + 6 + 7, trash: self.trashTypes[3], - date: Calendar.current.date(byAdding: .day, value: 6 + 7 + 7*i, to: Date())! + date: Calendar.current.date(byAdding: .day, value: 6 + 7 + 7*i, to: Date())! ) ) } diff --git a/TrashTrack/TrashModelView.swift b/TrashTrack/TrashModelView.swift index aa5fa44..7982e38 100644 --- a/TrashTrack/TrashModelView.swift +++ b/TrashTrack/TrashModelView.swift @@ -11,7 +11,7 @@ class TrashModelView { let model = TrashModel() func getTrashEvents() -> [TrashEvent] { - return model.trashEvents + return model.getTrashEvents() } } diff --git a/TrashTrack/TrashTrackApp.swift b/TrashTrack/TrashTrackApp.swift index ee4ee70..5a8126a 100644 --- a/TrashTrack/TrashTrackApp.swift +++ b/TrashTrack/TrashTrackApp.swift @@ -11,7 +11,7 @@ import SwiftUI struct TrashTrackApp: App { var body: some Scene { WindowGroup { - ContentView() + MainView() } } }