From 6e5b7adbc477b7f0ad6163ab4d4c1e3ef484c290 Mon Sep 17 00:00:00 2001 From: neon443 <69979447+neon443@users.noreply.github.com> Date: Sat, 14 Jun 2025 10:24:03 +0100 Subject: [PATCH] fix editing events on mac - they now reload on he fly add search on mac fix symbolspicker on mac --- MacNearFuture/MacNearFutureApp.swift | 2 +- MacNearFuture/Views/HomeView.swift | 35 +++++++++++++++------- NearFuture/Views/Events/AddEventView.swift | 1 + Shared/Model/ColorCodable.swift | 2 +- Shared/Model/Events.swift | 2 +- 5 files changed, 28 insertions(+), 14 deletions(-) diff --git a/MacNearFuture/MacNearFutureApp.swift b/MacNearFuture/MacNearFutureApp.swift index 97938ad..618ffee 100644 --- a/MacNearFuture/MacNearFutureApp.swift +++ b/MacNearFuture/MacNearFutureApp.swift @@ -31,7 +31,7 @@ struct NearFutureApp: App { NearFutureCommands() } - WindowGroup("edit Event", for: Event.ID.self) { $eventID in + WindowGroup("Edit Event", for: Event.ID.self) { $eventID in EditEventView( viewModel: viewModel, event: Binding( diff --git a/MacNearFuture/Views/HomeView.swift b/MacNearFuture/Views/HomeView.swift index ef52949..f21b7c5 100644 --- a/MacNearFuture/Views/HomeView.swift +++ b/MacNearFuture/Views/HomeView.swift @@ -11,20 +11,33 @@ struct HomeView: View { @StateObject var viewModel: EventViewModel @StateObject var settingsModel: SettingsViewModel + @State private var searchInput: String = "" + var filteredEvents: [Event] { - switch settingsModel.settings.showCompletedInHome { - case true: - return viewModel.events - case false: - return viewModel.events.filter { !$0.complete } - } - } - var body: some View { - ScrollView { - ForEach(filteredEvents) { event in - EventListView(viewModel: viewModel, event: event) + if searchInput.isEmpty { + if settingsModel.settings.showCompletedInHome { + return viewModel.events + } else { + return viewModel.events.filter() { !$0.complete } + } + } else { + return viewModel.events.filter { + $0.name.localizedCaseInsensitiveContains(searchInput) || + $0.notes.localizedCaseInsensitiveContains(searchInput) } } + } + + var body: some View { + ScrollView { + ForEach(viewModel.events) { event in + if filteredEvents.contains(event) { + EventListView(viewModel: viewModel, event: event) + .id(event) + } + } + } + .searchable(text: $searchInput) .scrollContentBackground(.hidden) } } diff --git a/NearFuture/Views/Events/AddEventView.swift b/NearFuture/Views/Events/AddEventView.swift index 79fc57c..0a93270 100644 --- a/NearFuture/Views/Events/AddEventView.swift +++ b/NearFuture/Views/Events/AddEventView.swift @@ -59,6 +59,7 @@ struct AddEventView: View { searchLabel: "Search...", autoDismiss: true) .presentationDetents([.medium]) + .presentationSizing(.form) } TextField("Event Name", text: $event.name) .textFieldStyle(.roundedBorder) diff --git a/Shared/Model/ColorCodable.swift b/Shared/Model/ColorCodable.swift index 62bf696..0f58bd5 100644 --- a/Shared/Model/ColorCodable.swift +++ b/Shared/Model/ColorCodable.swift @@ -13,7 +13,7 @@ import UIKit import AppKit #endif -struct ColorCodable: Codable, Equatable { +struct ColorCodable: Codable, Equatable, Hashable { init(_ color: Color) { var r: CGFloat = 0, g: CGFloat = 0, b: CGFloat = 0, a: CGFloat = 1 diff --git a/Shared/Model/Events.swift b/Shared/Model/Events.swift index 5da37f5..78b9289 100644 --- a/Shared/Model/Events.swift +++ b/Shared/Model/Events.swift @@ -24,7 +24,7 @@ import AppKit // } //} -struct Event: Identifiable, Codable, Equatable, Animatable { +struct Event: Identifiable, Codable, Equatable, Animatable, Hashable { var id = UUID() var name: String var complete: Bool