From 785dda0e2b6aaa96c2839c5d84a80f6558c6068d Mon Sep 17 00:00:00 2001 From: neon443 <69979447+neon443@users.noreply.github.com> Date: Tue, 6 May 2025 21:49:21 +0100 Subject: [PATCH] reorg -- long overdue lol --- Images/appstore.png | Bin 13318 -> 0 bytes NearFuture.xcodeproj/project.pbxproj | 156 ++++++++++------ NearFuture/{ => Home}/EventListView.swift | 0 NearFuture/{ => Misc}/HelpView.swift | 0 .../{ => Views/Archive}/ArchiveView.swift | 0 .../{ => Views/Events}/AddEventView.swift | 0 .../{ => Views/Events}/EditEventView.swift | 0 NearFuture/{ => Views/Home}/ContentView.swift | 0 NearFuture/Views/Home/EventListView.swift | 169 ++++++++++++++++++ NearFuture/Views/Home/HelpView.swift | 112 ++++++++++++ .../{ => Views/Settings}/ExportView.swift | 0 .../{ => Views/Settings}/ImportView.swift | 0 .../{ => Views/Settings}/SettingsView.swift | 0 .../Settings}/iCloudSettingsView.swift | 0 NearFuture/{ => Views/Stats}/StatsView.swift | 0 .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/NearFutureIcon.png | Bin .../AppIcon.appiconset/NearFutureIconDark.png | Bin .../AppIcon.appiconset/NearFutureIconTint.png | Bin .../Assets.xcassets/Contents.json | 0 .../bgTop.colorset/Contents.json | 0 .../one.colorset/Contents.json | 0 .../two.colorset/Contents.json | 0 .../Assets.xcassets/uiColors/Contents.json | 0 .../uiColors/basic.colorset/Contents.json | 0 .../uiColors/blue.colorset/Contents.json | 0 .../uiColors/green.colorset/Contents.json | 0 .../uiColors/indigo.colorset/Contents.json | 0 .../uiColors/orange.colorset/Contents.json | 0 .../uiColors/pink.colorset/Contents.json | 0 .../uiColors/red.colorset/Contents.json | 0 .../uiColors/yellow.colorset/Contents.json | 0 {Images => Resources}/NearFutureIcon.pxd | Bin {Images => Resources}/NearFutureIconDark.pxd | Bin {Images => Resources}/NearFutureIconTint.pxd | Bin 36 files changed, 386 insertions(+), 51 deletions(-) delete mode 100644 Images/appstore.png rename NearFuture/{ => Home}/EventListView.swift (100%) rename NearFuture/{ => Misc}/HelpView.swift (100%) rename NearFuture/{ => Views/Archive}/ArchiveView.swift (100%) rename NearFuture/{ => Views/Events}/AddEventView.swift (100%) rename NearFuture/{ => Views/Events}/EditEventView.swift (100%) rename NearFuture/{ => Views/Home}/ContentView.swift (100%) create mode 100644 NearFuture/Views/Home/EventListView.swift create mode 100644 NearFuture/Views/Home/HelpView.swift rename NearFuture/{ => Views/Settings}/ExportView.swift (100%) rename NearFuture/{ => Views/Settings}/ImportView.swift (100%) rename NearFuture/{ => Views/Settings}/SettingsView.swift (100%) rename NearFuture/{ => Views/Settings}/iCloudSettingsView.swift (100%) rename NearFuture/{ => Views/Stats}/StatsView.swift (100%) rename {NearFuture => Resources}/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename {NearFuture => Resources}/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {NearFuture => Resources}/Assets.xcassets/AppIcon.appiconset/NearFutureIcon.png (100%) rename {NearFuture => Resources}/Assets.xcassets/AppIcon.appiconset/NearFutureIconDark.png (100%) rename {NearFuture => Resources}/Assets.xcassets/AppIcon.appiconset/NearFutureIconTint.png (100%) rename {NearFuture => Resources}/Assets.xcassets/Contents.json (100%) rename {NearFuture => Resources}/Assets.xcassets/bgTop.colorset/Contents.json (100%) rename {NearFuture => Resources}/Assets.xcassets/one.colorset/Contents.json (100%) rename {NearFuture => Resources}/Assets.xcassets/two.colorset/Contents.json (100%) rename {NearFuture => Resources}/Assets.xcassets/uiColors/Contents.json (100%) rename {NearFuture => Resources}/Assets.xcassets/uiColors/basic.colorset/Contents.json (100%) rename {NearFuture => Resources}/Assets.xcassets/uiColors/blue.colorset/Contents.json (100%) rename {NearFuture => Resources}/Assets.xcassets/uiColors/green.colorset/Contents.json (100%) rename {NearFuture => Resources}/Assets.xcassets/uiColors/indigo.colorset/Contents.json (100%) rename {NearFuture => Resources}/Assets.xcassets/uiColors/orange.colorset/Contents.json (100%) rename {NearFuture => Resources}/Assets.xcassets/uiColors/pink.colorset/Contents.json (100%) rename {NearFuture => Resources}/Assets.xcassets/uiColors/red.colorset/Contents.json (100%) rename {NearFuture => Resources}/Assets.xcassets/uiColors/yellow.colorset/Contents.json (100%) rename {Images => Resources}/NearFutureIcon.pxd (100%) rename {Images => Resources}/NearFutureIconDark.pxd (100%) rename {Images => Resources}/NearFutureIconTint.pxd (100%) diff --git a/Images/appstore.png b/Images/appstore.png deleted file mode 100644 index 2beabe010fd87b333f2ff76af25ce236d7d13bee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13318 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
&-lXIt+$@qTuerSRAnPf|&rd`hM1Nz94~vXS^!c z1O1U?lGgjq4dg$zfrW6 zkArXBa%FHNC>dX5a=f4v7x4Oguj9?MN(_pu#m8CozuuoDWO@hTsMv5rfJCg(HskBf zKUom^zN{fRN?a6?oOa_csI&wlk&t^%#Uq*QJueF8A08D8hdOFJEmOtpI?EZ1u7iiP zb>ZVGS-d3RNEUloLI!*@qH!pGD3(i~e^6Fb)NG+W?t5{6duTh5E~jAb==eNDboJRV zDR@Q%X`%e~EbT}` zx*9=zwORBo3+DjSdR=RpT<(7hN)v&Dy+$B)nf!@mI3w2&L!Q|YjM}%8xM+#V@0ES2?6F7u z%u#n{k3!~Fsy{?UsbygLB89W2%+Zl?!6Ta zc#3IcC&{rMTOqD%Pz?Hr@1)ykgGIt?Me}1u=;ujQ`G3?$Wv^lRj$S>a&r;nsv@xUyVT_-QRM0XsJ>@d zK+dU%fE&?0!+JbQih5Ma-pmoH6MHM2CT<}caN`X&sjS3+0AfhrIj*s2&zEl|vpnj>9dcmVLBe7nz+N?mXMW+WamkZO@Hr&_hNP(bKp3HrRbAH!vG^ zE$j6V^Lf84A?M!62Pz7z24v@4g4mmy8yFS&uR?1@NNM!uV9vJ+a+JQ^=0EW|F8_!} z-&&SN45U-xyH{a4zSRL2k(^-TL&HMXKd#N^BxH5I&90IYujaj5i2F}a#f)~=Hzy

^xY$I!jb3zgkCitwSgNt+t1p>X)}x+DA`t=g zFAfu5=90d=9UWt^WzBbO``f`2WUUVt!$OzWQif>~%fa|U@f;r7oJ;Qz)K&yv^%Qf2 zy6}@135i(W1!vK7eQ{IIr$guIcnSVfB$W)??bvaEj7I~!o&Biu7C_o27kR;%AcA{Fd8}Ka2UXXP4Rl-t5t<{za-O&Bm8?~Qn}ftIwjNa{ z>-87FF`a}0GUL^?6Ef`5v_Tl@#^oMIfF~<3QtOCYTM#-~? z(fKhVS3Nz2mV=4vwn^`LH#&c^_56{})afnX27l-4P-}%V7!Db9lI4$>5j6zHTz+Rd z*I{8Vz60A0D@7VS`HQcyf_)7i&J5)-p8+Je(y6#6f~t8q>hS#|+-QM3#9OC_Di+BUUzz6Oa9+Q@MiY8QIQ6 zyiVezYDZY3wtwuf;NE-uBT$O)8r16bMe;*sDCtJzeT6=Jv1~x7R{1Pa|K42+J3GWW z=t}YSOkQv-H#(YMuK0F)_$L@=n%tVJXpoKw#O8N`k8=I&1)kOtOix`ws;h5fc|Z7G zrcuzs?pS;k3WK2GcXJY3<>&Ig-gVB{-{QRDW#*>s2uD?3 zWOuqZ-x6Nb>C8fD9?E|KM= z&@vs0MBmHE)*EY>uP;|nclq&K# diff --git a/NearFuture.xcodeproj/project.pbxproj b/NearFuture.xcodeproj/project.pbxproj index 9f7e251..514e7b7 100644 --- a/NearFuture.xcodeproj/project.pbxproj +++ b/NearFuture.xcodeproj/project.pbxproj @@ -11,18 +11,20 @@ A920C28C2D24011400E4F9B1 /* Item.swift in Sources */ = {isa = PBXBuildFile; fileRef = A920C28B2D24011400E4F9B1 /* Item.swift */; }; A920C28E2D24011A00E4F9B1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A920C28D2D24011A00E4F9B1 /* Assets.xcassets */; }; A920C2922D24011A00E4F9B1 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A920C2912D24011A00E4F9B1 /* Preview Assets.xcassets */; }; - A920C2B82D2401A300E4F9B1 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A920C2B42D2401A100E4F9B1 /* SettingsView.swift */; }; - A920C2BB2D2401A400E4F9B1 /* AddEventView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A920C2B72D2401A300E4F9B1 /* AddEventView.swift */; }; A920C2BE2D24021A00E4F9B1 /* SFSymbolsPicker in Frameworks */ = {isa = PBXBuildFile; productRef = A920C2BD2D24021A00E4F9B1 /* SFSymbolsPicker */; }; - A920C2C12D2403CA00E4F9B1 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A920C2C02D2403CA00E4F9B1 /* ContentView.swift */; }; - A93BC0942D2B18A3002E8BBD /* StatsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A93BC0932D2B18A3002E8BBD /* StatsView.swift */; }; - A949F8022DCAA0440064DCA0 /* NearFutureIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = A949F8012DCAA0440064DCA0 /* NearFutureIcon.png */; }; - A973B26C2DC551310028F8A2 /* ImportView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A973B26B2DC551310028F8A2 /* ImportView.swift */; }; - A973B2702DC552EB0028F8A2 /* ExportView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A973B26F2DC552EB0028F8A2 /* ExportView.swift */; }; - A973B2712DC553050028F8A2 /* ExportView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A973B26F2DC552EB0028F8A2 /* ExportView.swift */; }; - A977CC922DBBB48000DED8C0 /* ArchiveView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A977CC912DBBB48000DED8C0 /* ArchiveView.swift */; }; - A977CC9A2DBD74FE00DED8C0 /* HelpView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A977CC992DBD74FE00DED8C0 /* HelpView.swift */; }; - A979F57F2D26B1300094C0B3 /* EditEventView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A979F57E2D26B1300094C0B3 /* EditEventView.swift */; }; + A949F8322DCAAA8A0064DCA0 /* NearFutureIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = A949F8312DCAAA8A0064DCA0 /* NearFutureIcon.png */; }; + A949F84B2DCAABE00064DCA0 /* ArchiveView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A949F83A2DCAABE00064DCA0 /* ArchiveView.swift */; }; + A949F84C2DCAABE00064DCA0 /* AddEventView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A949F83C2DCAABE00064DCA0 /* AddEventView.swift */; }; + A949F84D2DCAABE00064DCA0 /* EditEventView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A949F83D2DCAABE00064DCA0 /* EditEventView.swift */; }; + A949F84E2DCAABE00064DCA0 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A949F83F2DCAABE00064DCA0 /* ContentView.swift */; }; + A949F84F2DCAABE00064DCA0 /* EventListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A949F8402DCAABE00064DCA0 /* EventListView.swift */; }; + A949F8502DCAABE00064DCA0 /* HelpView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A949F8412DCAABE00064DCA0 /* HelpView.swift */; }; + A949F8512DCAABE00064DCA0 /* ExportView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A949F8432DCAABE00064DCA0 /* ExportView.swift */; }; + A949F8522DCAABE00064DCA0 /* iCloudSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A949F8442DCAABE00064DCA0 /* iCloudSettingsView.swift */; }; + A949F8532DCAABE00064DCA0 /* ImportView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A949F8452DCAABE00064DCA0 /* ImportView.swift */; }; + A949F8542DCAABE00064DCA0 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A949F8462DCAABE00064DCA0 /* SettingsView.swift */; }; + A949F8552DCAABE00064DCA0 /* StatsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A949F8482DCAABE00064DCA0 /* StatsView.swift */; }; + A949F8562DCAABE00064DCA0 /* ExportView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A949F8432DCAABE00064DCA0 /* ExportView.swift */; }; A979F6052D270AF00094C0B3 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A979F6042D270AF00094C0B3 /* WidgetKit.framework */; }; A979F6072D270AF00094C0B3 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A979F6062D270AF00094C0B3 /* SwiftUI.framework */; }; A979F60A2D270AF00094C0B3 /* NearFutureWidgetsBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = A979F6092D270AF00094C0B3 /* NearFutureWidgetsBundle.swift */; }; @@ -30,8 +32,6 @@ A979F6102D270AF90094C0B3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A979F60F2D270AF80094C0B3 /* Assets.xcassets */; }; A979F6142D270AF90094C0B3 /* NearFutureWidgetsExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = A979F6022D270AF00094C0B3 /* NearFutureWidgetsExtension.appex */; platformFilter = ios; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; A979F6182D2714310094C0B3 /* Item.swift in Sources */ = {isa = PBXBuildFile; fileRef = A920C28B2D24011400E4F9B1 /* Item.swift */; }; - A985104E2DB256430013D5FF /* iCloudSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A985104D2DB256430013D5FF /* iCloudSettingsView.swift */; }; - A98510502DB263F00013D5FF /* EventListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A985104F2DB263F00013D5FF /* EventListView.swift */; }; A9FC7EEA2D2823920020D75B /* NearFutureWidgets.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9FC7EE92D28238A0020D75B /* NearFutureWidgets.swift */; }; /* End PBXBuildFile section */ @@ -74,16 +74,21 @@ A920C28D2D24011A00E4F9B1 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; A920C28F2D24011A00E4F9B1 /* NearFuture.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NearFuture.entitlements; sourceTree = ""; }; A920C2912D24011A00E4F9B1 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - A920C2B42D2401A100E4F9B1 /* SettingsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; - A920C2B72D2401A300E4F9B1 /* AddEventView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddEventView.swift; sourceTree = ""; }; - A920C2C02D2403CA00E4F9B1 /* ContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; - A93BC0932D2B18A3002E8BBD /* StatsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatsView.swift; sourceTree = ""; }; - A949F8012DCAA0440064DCA0 /* NearFutureIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = NearFutureIcon.png; path = NearFuture/Assets.xcassets/AppIcon.appiconset/NearFutureIcon.png; sourceTree = SOURCE_ROOT; }; - A973B26B2DC551310028F8A2 /* ImportView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportView.swift; sourceTree = ""; }; - A973B26F2DC552EB0028F8A2 /* ExportView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportView.swift; sourceTree = ""; }; - A977CC912DBBB48000DED8C0 /* ArchiveView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArchiveView.swift; sourceTree = ""; }; - A977CC992DBD74FE00DED8C0 /* HelpView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HelpView.swift; sourceTree = ""; }; - A979F57E2D26B1300094C0B3 /* EditEventView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditEventView.swift; sourceTree = ""; }; + A949F82E2DCAAA640064DCA0 /* NearFutureIcon.pxd */ = {isa = PBXFileReference; lastKnownFileType = file; path = NearFutureIcon.pxd; sourceTree = ""; }; + A949F82F2DCAAA640064DCA0 /* NearFutureIconDark.pxd */ = {isa = PBXFileReference; lastKnownFileType = file; path = NearFutureIconDark.pxd; sourceTree = ""; }; + A949F8302DCAAA640064DCA0 /* NearFutureIconTint.pxd */ = {isa = PBXFileReference; lastKnownFileType = file; path = NearFutureIconTint.pxd; sourceTree = ""; }; + A949F8312DCAAA8A0064DCA0 /* NearFutureIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = NearFutureIcon.png; path = Assets.xcassets/AppIcon.appiconset/NearFutureIcon.png; sourceTree = ""; }; + A949F83A2DCAABE00064DCA0 /* ArchiveView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArchiveView.swift; sourceTree = ""; }; + A949F83C2DCAABE00064DCA0 /* AddEventView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddEventView.swift; sourceTree = ""; }; + A949F83D2DCAABE00064DCA0 /* EditEventView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditEventView.swift; sourceTree = ""; }; + A949F83F2DCAABE00064DCA0 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + A949F8402DCAABE00064DCA0 /* EventListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventListView.swift; sourceTree = ""; }; + A949F8412DCAABE00064DCA0 /* HelpView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HelpView.swift; sourceTree = ""; }; + A949F8432DCAABE00064DCA0 /* ExportView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportView.swift; sourceTree = ""; }; + A949F8442DCAABE00064DCA0 /* iCloudSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iCloudSettingsView.swift; sourceTree = ""; }; + A949F8452DCAABE00064DCA0 /* ImportView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportView.swift; sourceTree = ""; }; + A949F8462DCAABE00064DCA0 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; + A949F8482DCAABE00064DCA0 /* StatsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatsView.swift; sourceTree = ""; }; A979F58B2D2700680094C0B3 /* NearFutureWidgetsBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NearFutureWidgetsBundle.swift; sourceTree = ""; }; A979F58D2D2700680094C0B3 /* NearFutureWidgetsLiveActivity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NearFutureWidgetsLiveActivity.swift; sourceTree = ""; }; A979F58F2D2700680094C0B3 /* NearFutureWidgets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NearFutureWidgets.swift; sourceTree = ""; }; @@ -99,8 +104,6 @@ A979F6112D270AF90094C0B3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; A980FC302D920097006A778F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; A980FC372D93FB2B006A778F /* NearFutureTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NearFutureTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - A985104D2DB256430013D5FF /* iCloudSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iCloudSettingsView.swift; sourceTree = ""; }; - A985104F2DB263F00013D5FF /* EventListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EventListView.swift; sourceTree = ""; }; A9C05E412D2805D7007DC497 /* NearFutureWidgetsExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NearFutureWidgetsExtension.entitlements; sourceTree = ""; }; A9FC7EE92D28238A0020D75B /* NearFutureWidgets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NearFutureWidgets.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -165,19 +168,8 @@ children = ( A920C2872D24011400E4F9B1 /* NearFutureApp.swift */, A920C28B2D24011400E4F9B1 /* Item.swift */, - A920C2C02D2403CA00E4F9B1 /* ContentView.swift */, - A985104F2DB263F00013D5FF /* EventListView.swift */, - A920C2B72D2401A300E4F9B1 /* AddEventView.swift */, - A979F57E2D26B1300094C0B3 /* EditEventView.swift */, - A977CC912DBBB48000DED8C0 /* ArchiveView.swift */, - A93BC0932D2B18A3002E8BBD /* StatsView.swift */, - A977CC992DBD74FE00DED8C0 /* HelpView.swift */, - A920C2B42D2401A100E4F9B1 /* SettingsView.swift */, - A973B26B2DC551310028F8A2 /* ImportView.swift */, - A973B26F2DC552EB0028F8A2 /* ExportView.swift */, - A985104D2DB256430013D5FF /* iCloudSettingsView.swift */, + A949F84A2DCAABE00064DCA0 /* Views */, A980FC302D920097006A778F /* Info.plist */, - A920C28D2D24011A00E4F9B1 /* Assets.xcassets */, A920C28F2D24011A00E4F9B1 /* NearFuture.entitlements */, A920C2902D24011A00E4F9B1 /* Preview Content */, ); @@ -196,11 +188,73 @@ A949F8002DCAA0340064DCA0 /* Resources */ = { isa = PBXGroup; children = ( - A949F8012DCAA0440064DCA0 /* NearFutureIcon.png */, + A949F8312DCAAA8A0064DCA0 /* NearFutureIcon.png */, + A920C28D2D24011A00E4F9B1 /* Assets.xcassets */, + A949F82E2DCAAA640064DCA0 /* NearFutureIcon.pxd */, + A949F82F2DCAAA640064DCA0 /* NearFutureIconDark.pxd */, + A949F8302DCAAA640064DCA0 /* NearFutureIconTint.pxd */, ); path = Resources; sourceTree = ""; }; + A949F83B2DCAABE00064DCA0 /* Archive */ = { + isa = PBXGroup; + children = ( + A949F83A2DCAABE00064DCA0 /* ArchiveView.swift */, + ); + path = Archive; + sourceTree = ""; + }; + A949F83E2DCAABE00064DCA0 /* Events */ = { + isa = PBXGroup; + children = ( + A949F83C2DCAABE00064DCA0 /* AddEventView.swift */, + A949F83D2DCAABE00064DCA0 /* EditEventView.swift */, + ); + path = Events; + sourceTree = ""; + }; + A949F8422DCAABE00064DCA0 /* Home */ = { + isa = PBXGroup; + children = ( + A949F83F2DCAABE00064DCA0 /* ContentView.swift */, + A949F8402DCAABE00064DCA0 /* EventListView.swift */, + A949F8412DCAABE00064DCA0 /* HelpView.swift */, + ); + path = Home; + sourceTree = ""; + }; + A949F8472DCAABE00064DCA0 /* Settings */ = { + isa = PBXGroup; + children = ( + A949F8432DCAABE00064DCA0 /* ExportView.swift */, + A949F8442DCAABE00064DCA0 /* iCloudSettingsView.swift */, + A949F8452DCAABE00064DCA0 /* ImportView.swift */, + A949F8462DCAABE00064DCA0 /* SettingsView.swift */, + ); + path = Settings; + sourceTree = ""; + }; + A949F8492DCAABE00064DCA0 /* Stats */ = { + isa = PBXGroup; + children = ( + A949F8482DCAABE00064DCA0 /* StatsView.swift */, + ); + path = Stats; + sourceTree = ""; + }; + A949F84A2DCAABE00064DCA0 /* Views */ = { + isa = PBXGroup; + children = ( + A949F83B2DCAABE00064DCA0 /* Archive */, + A949F83E2DCAABE00064DCA0 /* Events */, + A949F8422DCAABE00064DCA0 /* Home */, + A949F8472DCAABE00064DCA0 /* Settings */, + A949F8492DCAABE00064DCA0 /* Stats */, + ); + path = Views; + sourceTree = ""; + }; A979F58A2D2700680094C0B3 /* NearFutureWidgets */ = { isa = PBXGroup; children = ( @@ -352,7 +406,7 @@ buildActionMask = 2147483647; files = ( A920C2922D24011A00E4F9B1 /* Preview Assets.xcassets in Resources */, - A949F8022DCAA0440064DCA0 /* NearFutureIcon.png in Resources */, + A949F8322DCAAA8A0064DCA0 /* NearFutureIcon.png in Resources */, A920C28E2D24011A00E4F9B1 /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -379,19 +433,19 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A920C2BB2D2401A400E4F9B1 /* AddEventView.swift in Sources */, - A973B26C2DC551310028F8A2 /* ImportView.swift in Sources */, - A98510502DB263F00013D5FF /* EventListView.swift in Sources */, - A920C2C12D2403CA00E4F9B1 /* ContentView.swift in Sources */, - A973B2712DC553050028F8A2 /* ExportView.swift in Sources */, - A920C2B82D2401A300E4F9B1 /* SettingsView.swift in Sources */, - A977CC9A2DBD74FE00DED8C0 /* HelpView.swift in Sources */, A920C28C2D24011400E4F9B1 /* Item.swift in Sources */, + A949F84B2DCAABE00064DCA0 /* ArchiveView.swift in Sources */, + A949F84C2DCAABE00064DCA0 /* AddEventView.swift in Sources */, + A949F84D2DCAABE00064DCA0 /* EditEventView.swift in Sources */, + A949F84E2DCAABE00064DCA0 /* ContentView.swift in Sources */, + A949F84F2DCAABE00064DCA0 /* EventListView.swift in Sources */, + A949F8502DCAABE00064DCA0 /* HelpView.swift in Sources */, + A949F8512DCAABE00064DCA0 /* ExportView.swift in Sources */, + A949F8522DCAABE00064DCA0 /* iCloudSettingsView.swift in Sources */, + A949F8532DCAABE00064DCA0 /* ImportView.swift in Sources */, + A949F8542DCAABE00064DCA0 /* SettingsView.swift in Sources */, + A949F8552DCAABE00064DCA0 /* StatsView.swift in Sources */, A920C2882D24011400E4F9B1 /* NearFutureApp.swift in Sources */, - A93BC0942D2B18A3002E8BBD /* StatsView.swift in Sources */, - A977CC922DBBB48000DED8C0 /* ArchiveView.swift in Sources */, - A979F57F2D26B1300094C0B3 /* EditEventView.swift in Sources */, - A985104E2DB256430013D5FF /* iCloudSettingsView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -410,7 +464,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A973B2702DC552EB0028F8A2 /* ExportView.swift in Sources */, + A949F8562DCAABE00064DCA0 /* ExportView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/NearFuture/EventListView.swift b/NearFuture/Home/EventListView.swift similarity index 100% rename from NearFuture/EventListView.swift rename to NearFuture/Home/EventListView.swift diff --git a/NearFuture/HelpView.swift b/NearFuture/Misc/HelpView.swift similarity index 100% rename from NearFuture/HelpView.swift rename to NearFuture/Misc/HelpView.swift diff --git a/NearFuture/ArchiveView.swift b/NearFuture/Views/Archive/ArchiveView.swift similarity index 100% rename from NearFuture/ArchiveView.swift rename to NearFuture/Views/Archive/ArchiveView.swift diff --git a/NearFuture/AddEventView.swift b/NearFuture/Views/Events/AddEventView.swift similarity index 100% rename from NearFuture/AddEventView.swift rename to NearFuture/Views/Events/AddEventView.swift diff --git a/NearFuture/EditEventView.swift b/NearFuture/Views/Events/EditEventView.swift similarity index 100% rename from NearFuture/EditEventView.swift rename to NearFuture/Views/Events/EditEventView.swift diff --git a/NearFuture/ContentView.swift b/NearFuture/Views/Home/ContentView.swift similarity index 100% rename from NearFuture/ContentView.swift rename to NearFuture/Views/Home/ContentView.swift diff --git a/NearFuture/Views/Home/EventListView.swift b/NearFuture/Views/Home/EventListView.swift new file mode 100644 index 0000000..49d576c --- /dev/null +++ b/NearFuture/Views/Home/EventListView.swift @@ -0,0 +1,169 @@ +// +// EventListView.swift +// NearFuture +// +// Created by neon443 on 18/04/2025. +// + +import SwiftUI +import SwiftData + +struct EventListView: View { + @ObservedObject var viewModel: EventViewModel + @State var event: Event + + var body: some View { + NavigationLink() { + EditEventView( + viewModel: viewModel, + event: $event + ) + } label: { + ZStack { + HStack { + RoundedRectangle(cornerRadius: 5) + .frame(width: 7) + .foregroundStyle( + event.color.color.opacity( + event.complete ? 0.5 : 1 + ) + ) + VStack(alignment: .leading) { + HStack { + Image(systemName: event.symbol) + .resizable() + .scaledToFit() + .frame(width: 20, height: 20) + .shadow(radius: 5) + .foregroundStyle( + .one.opacity( + event.complete ? 0.5 : 1 + ) + ) + Text("\(event.name)") + .font(.headline) + .foregroundStyle(.one) + .strikethrough(event.complete) + .multilineTextAlignment(.leading) + } + if !event.notes.isEmpty { + Text(event.notes) + .font(.subheadline) + .foregroundStyle(.one.opacity(0.8)) + .multilineTextAlignment(.leading) + } + Text( + event.date.formatted( + date: .long, + time: .shortened + ) + ) + .font(.subheadline) + .foregroundStyle( + .one.opacity( + event.complete ? 0.5 : 1 + ) + ) + if event.recurrence != .none { + Text("Occurs \(event.recurrence.rawValue)") + .font(.subheadline) + .foregroundStyle( + .one.opacity(event.complete ? 0.5 : 1)) + } + } + Spacer() + VStack { + Text("\(daysUntilEvent(event.date).long)") + .font(.subheadline) + .foregroundStyle(.one) + } + Button() { + withAnimation { + event.complete.toggle() + } + let eventToModify = viewModel.events.firstIndex() { currEvent in + currEvent.id == event.id + } + if let eventToModify = eventToModify { + viewModel.events[eventToModify] = event + viewModel.saveEvents() + } + } label: { + if event.complete { + ZStack { + Circle() + .foregroundStyle(.green) + Image(systemName: "checkmark") + .resizable() + .foregroundStyle(.white) + .scaledToFit() + .bold() + .frame(width: 15) + } + } else { + Image(systemName: "circle") + .resizable() + .scaledToFit() + .foregroundStyle(event.color.color) + } + } + .buttonStyle(.borderless) + .frame(maxWidth: 25, maxHeight: 25) + .shadow(radius: 5) + .padding(.trailing, 5) + } + .padding(.vertical, 5) + .background(.ultraThinMaterial) + .overlay( + RoundedRectangle(cornerRadius: 10) + .stroke( + .one.opacity(appearance == .dark ? 0.5 : 1), + lineWidth: 1 + ) + ) + .clipShape( + RoundedRectangle(cornerRadius: 10) + ) + .fixedSize(horizontal: false, vertical: true) + } + .contextMenu() { + Button(role: .destructive) { + let eventToModify = viewModel.events.firstIndex() { currEvent in + currEvent.id == event.id + } + if let eventToModify = eventToModify { + viewModel.events.remove(at: eventToModify) + viewModel.saveEvents() + } + } label: { + Label("Delete", systemImage: "trash") + } + } + } + } +} + +#Preview("EventListView") { + let vm = dummyEventViewModel() + ZStack { + Color.black + VStack { + ForEach(0..<50) { _ in + Rectangle() + .foregroundStyle(randomColor().opacity(0.5)) + .padding(-10) + } + .ignoresSafeArea(.all) + .blur(radius: 5) + } + VStack { + ForEach(vm.events) { event in + EventListView( + viewModel: vm, + event: event + ) + } + } + .padding(.horizontal, 10) + } +} diff --git a/NearFuture/Views/Home/HelpView.swift b/NearFuture/Views/Home/HelpView.swift new file mode 100644 index 0000000..24d4909 --- /dev/null +++ b/NearFuture/Views/Home/HelpView.swift @@ -0,0 +1,112 @@ +// +// ArchiveHelp.swift +// NearFuture +// +// Created by neon443 on 26/04/2025. +// + + +import SwiftUI + +enum HelpType { + case Search + case Archive +} + +struct HelpView: View { + /// initialises a Search HelpView + /// + init(searchInput: Binding, focusedField: Field?) { + _searchInput = searchInput + self.helpType = .Search + _showAddEvent = .constant(false) + } + + /// initialises an Archive HelpView + /// + init(showAddEvent: Binding) { + _showAddEvent = showAddEvent + self.helpType = .Archive + _searchInput = .constant("") + self.focusedField = nil + } + + @Binding var searchInput: String + @FocusState var focusedField: Field? + + @Binding var showAddEvent: Bool + + var helpType: HelpType + var details: ( + symbol: String, + title: String, + body: String, + buttonAction: () -> (), + buttonSymbol: String, + buttonText: String + ) { + switch helpType { + case .Search: + return ( + symbol: "questionmark.app.dashed", + title: "Looking for something?", + body: "Tip: The Search bar searches event names and notes.", + buttonAction: { + searchInput = "" + focusedField = nil + }, + buttonSymbol: "xmark", + buttonText: "Clear Filters" + ) + case .Archive: + return ( + symbol: "eyes", + title: "Nothing to see here...", + body: "The Archive contains events that have been marked as complete.", + buttonAction: { + showAddEvent.toggle() + }, + buttonSymbol: "plus", + buttonText: "Create an event" + ) + } + } + var body: some View { + List { + ZStack { + Color(.tintColor) + .opacity(0.4) + .padding(.horizontal, -15) + .blur(radius: 5) + HStack { + Image(systemName: details.symbol) + .resizable() + .scaledToFit() + .frame(width: 30, height: 30) + .padding(.trailing) + Text(details.title) + .bold() + .font(.title2) + } + } + .listRowSeparator(.hidden) + Text(details.body) + Button() { + details.buttonAction() + } label: { + HStack { + Image(systemName: details.buttonSymbol) + .bold() + Text(details.buttonText) + } + .foregroundStyle(Color.accentColor) + } + } + .scrollContentBackground(.hidden) + } +} + +#Preview { + HelpView(searchInput: .constant(""), focusedField: nil) + HelpView(showAddEvent: .constant(false)) +} diff --git a/NearFuture/ExportView.swift b/NearFuture/Views/Settings/ExportView.swift similarity index 100% rename from NearFuture/ExportView.swift rename to NearFuture/Views/Settings/ExportView.swift diff --git a/NearFuture/ImportView.swift b/NearFuture/Views/Settings/ImportView.swift similarity index 100% rename from NearFuture/ImportView.swift rename to NearFuture/Views/Settings/ImportView.swift diff --git a/NearFuture/SettingsView.swift b/NearFuture/Views/Settings/SettingsView.swift similarity index 100% rename from NearFuture/SettingsView.swift rename to NearFuture/Views/Settings/SettingsView.swift diff --git a/NearFuture/iCloudSettingsView.swift b/NearFuture/Views/Settings/iCloudSettingsView.swift similarity index 100% rename from NearFuture/iCloudSettingsView.swift rename to NearFuture/Views/Settings/iCloudSettingsView.swift diff --git a/NearFuture/StatsView.swift b/NearFuture/Views/Stats/StatsView.swift similarity index 100% rename from NearFuture/StatsView.swift rename to NearFuture/Views/Stats/StatsView.swift diff --git a/NearFuture/Assets.xcassets/AccentColor.colorset/Contents.json b/Resources/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from NearFuture/Assets.xcassets/AccentColor.colorset/Contents.json rename to Resources/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/NearFuture/Assets.xcassets/AppIcon.appiconset/Contents.json b/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from NearFuture/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Resources/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/NearFuture/Assets.xcassets/AppIcon.appiconset/NearFutureIcon.png b/Resources/Assets.xcassets/AppIcon.appiconset/NearFutureIcon.png similarity index 100% rename from NearFuture/Assets.xcassets/AppIcon.appiconset/NearFutureIcon.png rename to Resources/Assets.xcassets/AppIcon.appiconset/NearFutureIcon.png diff --git a/NearFuture/Assets.xcassets/AppIcon.appiconset/NearFutureIconDark.png b/Resources/Assets.xcassets/AppIcon.appiconset/NearFutureIconDark.png similarity index 100% rename from NearFuture/Assets.xcassets/AppIcon.appiconset/NearFutureIconDark.png rename to Resources/Assets.xcassets/AppIcon.appiconset/NearFutureIconDark.png diff --git a/NearFuture/Assets.xcassets/AppIcon.appiconset/NearFutureIconTint.png b/Resources/Assets.xcassets/AppIcon.appiconset/NearFutureIconTint.png similarity index 100% rename from NearFuture/Assets.xcassets/AppIcon.appiconset/NearFutureIconTint.png rename to Resources/Assets.xcassets/AppIcon.appiconset/NearFutureIconTint.png diff --git a/NearFuture/Assets.xcassets/Contents.json b/Resources/Assets.xcassets/Contents.json similarity index 100% rename from NearFuture/Assets.xcassets/Contents.json rename to Resources/Assets.xcassets/Contents.json diff --git a/NearFuture/Assets.xcassets/bgTop.colorset/Contents.json b/Resources/Assets.xcassets/bgTop.colorset/Contents.json similarity index 100% rename from NearFuture/Assets.xcassets/bgTop.colorset/Contents.json rename to Resources/Assets.xcassets/bgTop.colorset/Contents.json diff --git a/NearFuture/Assets.xcassets/one.colorset/Contents.json b/Resources/Assets.xcassets/one.colorset/Contents.json similarity index 100% rename from NearFuture/Assets.xcassets/one.colorset/Contents.json rename to Resources/Assets.xcassets/one.colorset/Contents.json diff --git a/NearFuture/Assets.xcassets/two.colorset/Contents.json b/Resources/Assets.xcassets/two.colorset/Contents.json similarity index 100% rename from NearFuture/Assets.xcassets/two.colorset/Contents.json rename to Resources/Assets.xcassets/two.colorset/Contents.json diff --git a/NearFuture/Assets.xcassets/uiColors/Contents.json b/Resources/Assets.xcassets/uiColors/Contents.json similarity index 100% rename from NearFuture/Assets.xcassets/uiColors/Contents.json rename to Resources/Assets.xcassets/uiColors/Contents.json diff --git a/NearFuture/Assets.xcassets/uiColors/basic.colorset/Contents.json b/Resources/Assets.xcassets/uiColors/basic.colorset/Contents.json similarity index 100% rename from NearFuture/Assets.xcassets/uiColors/basic.colorset/Contents.json rename to Resources/Assets.xcassets/uiColors/basic.colorset/Contents.json diff --git a/NearFuture/Assets.xcassets/uiColors/blue.colorset/Contents.json b/Resources/Assets.xcassets/uiColors/blue.colorset/Contents.json similarity index 100% rename from NearFuture/Assets.xcassets/uiColors/blue.colorset/Contents.json rename to Resources/Assets.xcassets/uiColors/blue.colorset/Contents.json diff --git a/NearFuture/Assets.xcassets/uiColors/green.colorset/Contents.json b/Resources/Assets.xcassets/uiColors/green.colorset/Contents.json similarity index 100% rename from NearFuture/Assets.xcassets/uiColors/green.colorset/Contents.json rename to Resources/Assets.xcassets/uiColors/green.colorset/Contents.json diff --git a/NearFuture/Assets.xcassets/uiColors/indigo.colorset/Contents.json b/Resources/Assets.xcassets/uiColors/indigo.colorset/Contents.json similarity index 100% rename from NearFuture/Assets.xcassets/uiColors/indigo.colorset/Contents.json rename to Resources/Assets.xcassets/uiColors/indigo.colorset/Contents.json diff --git a/NearFuture/Assets.xcassets/uiColors/orange.colorset/Contents.json b/Resources/Assets.xcassets/uiColors/orange.colorset/Contents.json similarity index 100% rename from NearFuture/Assets.xcassets/uiColors/orange.colorset/Contents.json rename to Resources/Assets.xcassets/uiColors/orange.colorset/Contents.json diff --git a/NearFuture/Assets.xcassets/uiColors/pink.colorset/Contents.json b/Resources/Assets.xcassets/uiColors/pink.colorset/Contents.json similarity index 100% rename from NearFuture/Assets.xcassets/uiColors/pink.colorset/Contents.json rename to Resources/Assets.xcassets/uiColors/pink.colorset/Contents.json diff --git a/NearFuture/Assets.xcassets/uiColors/red.colorset/Contents.json b/Resources/Assets.xcassets/uiColors/red.colorset/Contents.json similarity index 100% rename from NearFuture/Assets.xcassets/uiColors/red.colorset/Contents.json rename to Resources/Assets.xcassets/uiColors/red.colorset/Contents.json diff --git a/NearFuture/Assets.xcassets/uiColors/yellow.colorset/Contents.json b/Resources/Assets.xcassets/uiColors/yellow.colorset/Contents.json similarity index 100% rename from NearFuture/Assets.xcassets/uiColors/yellow.colorset/Contents.json rename to Resources/Assets.xcassets/uiColors/yellow.colorset/Contents.json diff --git a/Images/NearFutureIcon.pxd b/Resources/NearFutureIcon.pxd similarity index 100% rename from Images/NearFutureIcon.pxd rename to Resources/NearFutureIcon.pxd diff --git a/Images/NearFutureIconDark.pxd b/Resources/NearFutureIconDark.pxd similarity index 100% rename from Images/NearFutureIconDark.pxd rename to Resources/NearFutureIconDark.pxd diff --git a/Images/NearFutureIconTint.pxd b/Resources/NearFutureIconTint.pxd similarity index 100% rename from Images/NearFutureIconTint.pxd rename to Resources/NearFutureIconTint.pxd