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 viewModel.events.first(where: {$0.id == eventID}) ?? viewModel.template
}, },
set: { newValue in set: { newValue in
if let eventIndex = viewModel.events.firstIndex(where: { viewModel.editEvent(newValue)
$0.id == eventID
}) {
viewModel.events[eventIndex] = newValue
}
viewModel.saveEvents()
} }
) )
) )

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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