Merge pull request #174 from Ebullioscopic/feature/calendar

Hide all day events thingy
This commit is contained in:
Hariharan Mudaliar 2025-12-14 11:21:08 +05:30 • committed by GitHub
commit d451ea34fd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 39 additions and 8 deletions

View file

@ -2734,6 +2734,10 @@
}
}
},
"All-Day Events" : {
"comment" : "A section header that allows the user to hide all-day events from the calendar view.",
"isCommentAutoGenerated" : true
},
"Allow Access" : {
"localizations" : {
"ar" : {
@ -19127,6 +19131,10 @@
}
}
},
"Turn this off to include all-day entries in the notch calendar and reminder live activity." : {
"comment" : "A description of why the user can disable the \"Hide all-day events\" toggle.",
"isCommentAutoGenerated" : true
},
"Two-finger swipe up on notch to close, two-finger swipe down on notch to open when **Open notch on hover** option is disabled" : {
"comment" : "A footer text explaining the gesture control functionality.",
"isCommentAutoGenerated" : true,

View file

@ -173,6 +173,8 @@ struct CalendarView: View {
@EnvironmentObject var vm: DynamicIslandViewModel
@ObservedObject private var calendarManager = CalendarManager.shared
@State private var selectedDate = Date()
@Default(.hideAllDayEvents) private var hideAllDayEvents
@Default(.hideCompletedReminders) private var hideCompletedReminders
var body: some View {
VStack(spacing: 0) {
@ -205,7 +207,9 @@ struct CalendarView: View {
}
let filteredEvents = EventListView.filteredEvents(
events: calendarManager.events
events: calendarManager.events,
hideCompletedReminders: hideCompletedReminders,
hideAllDayEvents: hideAllDayEvents
)
if filteredEvents.isEmpty {
EmptyEventsView(selectedDate: selectedDate)
@ -260,15 +264,21 @@ struct EventListView: View {
let events: [EventModel]
@Default(.autoScrollToNextEvent) private var autoScrollToNextEvent
@Default(.showFullEventTitles) private var showFullEventTitles
@Default(.hideCompletedReminders) private var hideCompletedReminders
@Default(.hideAllDayEvents) private var hideAllDayEvents
static func filteredEvents(events: [EventModel]) -> [EventModel] {
static func filteredEvents(
events: [EventModel],
hideCompletedReminders: Bool,
hideAllDayEvents: Bool
) -> [EventModel] {
events.filter { event in
if event.type.isReminder {
if case .reminder(let completed) = event.type {
return !completed || !Defaults[.hideCompletedReminders]
return !completed || !hideCompletedReminders
}
}
if event.isAllDay && Defaults[.hideAllDayEvents] {
if event.isAllDay && hideAllDayEvents {
return false
}
return true
@ -276,7 +286,11 @@ struct EventListView: View {
}
private var filteredEvents: [EventModel] {
Self.filteredEvents(events: events)
Self.filteredEvents(
events: events,
hideCompletedReminders: hideCompletedReminders,
hideAllDayEvents: hideAllDayEvents
)
}
private func scrollToRelevantEvent(proxy: ScrollViewProxy) {

View file

@ -1731,8 +1731,6 @@ struct CalendarSettings: View {
.settingsHighlight(id: highlightID("Show calendar"))
Section(header: Text("Event List")) {
Toggle("Hide all-day events", isOn: $hideAllDayEvents)
.settingsHighlight(id: highlightID("Hide all-day events"))
Toggle("Hide completed reminders", isOn: $hideCompletedReminders)
.settingsHighlight(id: highlightID("Hide completed reminders"))
Toggle("Show full event titles", isOn: $showFullEventTitles)
@ -1740,6 +1738,17 @@ struct CalendarSettings: View {
Toggle("Auto-scroll to next event", isOn: $autoScrollToNextEvent)
.settingsHighlight(id: highlightID("Auto-scroll to next event"))
}
Section(header: Text("All-Day Events")) {
Toggle("Hide all-day events", isOn: $hideAllDayEvents)
.settingsHighlight(id: highlightID("Hide all-day events"))
.disabled(!showCalendar)
Text("Turn this off to include all-day entries in the notch calendar and reminder live activity.")
.font(.caption)
.foregroundStyle(.secondary)
.fixedSize(horizontal: false, vertical: true)
}
Section(header: Text("Reminder Live Activity")) {
Defaults.Toggle("Enable reminder live activity", key: .enableReminderLiveActivity)