fix editing events on mac and ios

toolbar label()s instead of buton("label")s
fix event add/delete/tick animation
fix event complete progress on ios and mac and that it just spazzed out
browsing true for symbols browsing (not picking)
This commit is contained in:
neon443
2025-06-15 21:18:58 +01:00
parent 0cffe243eb
commit 5ec16dd67a
9 changed files with 46 additions and 30 deletions

View File

@@ -44,12 +44,7 @@ struct NearFutureApp: App {
viewModel.events.first(where: {$0.id == eventID}) ?? viewModel.template
},
set: { newValue in
if let eventIndex = viewModel.events.firstIndex(where: {
$0.id == eventID
}) {
viewModel.events[eventIndex] = newValue
}
viewModel.saveEvents()
viewModel.editEvent(newValue)
}
)
)

View File

@@ -37,7 +37,8 @@ struct ContentView: View {
}
NavigationLink {
SymbolsPicker(
selection: $symbolSearchInput
selection: .constant(""),
browsing: true
)
} label: {
Image(systemName: "star.circle")

View File

@@ -23,18 +23,31 @@ struct ArchiveView: View {
} else {
ScrollView {
ForEach(filteredEvents) { event in
NavigationLink() {
EditEventView(
viewModel: viewModel,
event: Binding(
get: { event },
set: { newValue in
viewModel.editEvent(newValue)
}
)
)
} label: {
EventListView(viewModel: viewModel, event: event)
.transition(.moveAndFadeReversed)
.id(event.complete)
}
.transition(.moveAndFadeReversed)
}
.padding(.horizontal)
}
.animation(.default, value: filteredEvents)
}
}
.transition(.opacity)
.scrollContentBackground(.hidden)
.toolbar {
ToolbarItem(placement: .topBarTrailing) {
ToolbarItem(placement: .primaryAction) {
AddEventButton(showingAddEventView: $showAddEvent)
}
}

View File

@@ -35,7 +35,8 @@ struct ContentView: View {
}
.tag(Tab.archive)
SymbolsPicker(
selection: .constant("")
selection: .constant(""),
browsing: true
)
.tabItem {
Label("Symbols", systemImage: "star.circle")

View File

@@ -155,10 +155,7 @@ struct AddEventView: View {
bye.toggle()
resetAddEventView()
} label: {
Text("Save")
.font(.headline)
.cornerRadius(10)
.buttonStyle(BorderedProminentButtonStyle())
Label("Save", systemImage: "checkmark")
}
.tint(.accent)
.modifier(hapticSuccess(trigger: bye))
@@ -184,9 +181,7 @@ struct AddEventView: View {
viewModel.editEvent(event)
dismiss()
} label: {
Text("Done")
.bold()
.foregroundStyle(.blue)
Label("Done", systemImage: "checkmark")
}
.disabled(event.name == "")
}

View File

@@ -80,7 +80,6 @@ struct EventListView: View {
event: $event
)
}
.transition(.opacity)
.fixedSize(horizontal: false, vertical: true)
}
.onHover { isHovering in
@@ -170,7 +169,6 @@ struct EventListView: View {
event: $event
)
}
.transition(.opacity)
.padding(.vertical, 5)
.overlay(
RoundedRectangle(cornerRadius: 15)

View File

@@ -48,12 +48,20 @@ struct HomeView: View {
// LazyVStack {
ForEach(filteredEvents) { event in
NavigationLink() {
EditEventView(
viewModel: viewModel,
event: Binding(
get: { event },
set: { newValue in
viewModel.editEvent(newValue)
}
)
)
} label: {
EventListView(viewModel: viewModel, event: event)
.transition(.moveAndFade)
.id(event.complete)
}
.transition(.moveAndFade)
}
.padding(.horizontal)
// }
@@ -77,7 +85,7 @@ struct HomeView: View {
)
}
.toolbar {
ToolbarItem(placement: .topBarTrailing) {
ToolbarItem(placement: .primaryAction) {
AddEventButton(showingAddEventView: $showingAddEventView)
}
}

View File

@@ -40,11 +40,11 @@ struct CompleteEventButton: View {
let elapsed = Date().timeIntervalSince(completeStartTime)
progress = min(1, elapsed)
if progress > 1 {
timer.invalidate()
progress = 0
if progress >= 1 {
withAnimation { completeInProgress = false }
viewModel.completeEvent(&event)
timer.invalidate()
progress = 0
}
}
RunLoop.main.add(timer!, forMode: .common)

View File

@@ -14,6 +14,7 @@ struct SymbolsPicker: View {
@FocusState var searchfocuesd: Bool
@State var searchInput: String = ""
@State var browsing: Bool = false
@Environment(\.dismiss) var dismiss
var symbols: [String] {
@@ -69,9 +70,13 @@ struct SymbolsPicker: View {
.searchable(text: $searchInput)
.toolbar {
ToolbarItem(placement: .cancellationAction) {
Button("Cancel") {
if !browsing {
Button() {
searchInput = ""
dismiss()
} label: {
Label("Cancel", systemImage: "xmark")
}
}
}
}