mirror of
https://github.com/neon443/NearFuture.git
synced 2026-03-11 06:49:12 +00:00
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:
@@ -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()
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
@@ -23,18 +23,31 @@ struct ArchiveView: View {
|
|||||||
} else {
|
} else {
|
||||||
ScrollView {
|
ScrollView {
|
||||||
ForEach(filteredEvents) { event in
|
ForEach(filteredEvents) { event in
|
||||||
|
NavigationLink() {
|
||||||
|
EditEventView(
|
||||||
|
viewModel: viewModel,
|
||||||
|
event: Binding(
|
||||||
|
get: { event },
|
||||||
|
set: { newValue in
|
||||||
|
viewModel.editEvent(newValue)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
} label: {
|
||||||
EventListView(viewModel: viewModel, event: event)
|
EventListView(viewModel: viewModel, event: event)
|
||||||
.transition(.moveAndFadeReversed)
|
|
||||||
.id(event.complete)
|
.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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
@@ -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 == "")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
Button() {
|
||||||
searchInput = ""
|
searchInput = ""
|
||||||
dismiss()
|
dismiss()
|
||||||
|
} label: {
|
||||||
|
Label("Cancel", systemImage: "xmark")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user