diff --git a/src/core/gcal-manager.c b/src/core/gcal-manager.c index 1b869952..1b18eac1 100644 --- a/src/core/gcal-manager.c +++ b/src/core/gcal-manager.c @@ -1465,35 +1465,20 @@ gcal_manager_move_event_to_source (GcalManager *self, * * Returns: (nullable)(transfer full)(content-type GcalEvent):a #GList */ -GList* +GPtrArray* gcal_manager_get_events (GcalManager *self, - ICalTime *start_date, - ICalTime *end_date) + GDateTime *start_date, + GDateTime *end_date) { - time_t range_start, range_end; - GTimeZone *zone; - ICalTimezone *tz; - GatherEventData data = { - .manager = self, - .events = NULL, - }; + g_autoptr (GPtrArray) events_at_range = NULL; GCAL_ENTRY; g_return_val_if_fail (GCAL_IS_MANAGER (self), NULL); - zone = gcal_context_get_timezone (self->context); - tz = gcal_timezone_to_icaltimezone (zone); - range_start = i_cal_time_as_timet_with_zone (start_date, tz); - range_end = i_cal_time_as_timet_with_zone (end_date, tz); + events_at_range = gcal_timeline_get_events_at_range (self->timeline, start_date, end_date); - e_cal_data_model_foreach_component (self->e_data_model, - range_start, - range_end, - gather_events, - &data); - - GCAL_RETURN (data.events); + GCAL_RETURN (g_steal_pointer (&events_at_range)); } /** diff --git a/src/core/gcal-manager.h b/src/core/gcal-manager.h index 44190ccf..e4f91392 100644 --- a/src/core/gcal-manager.h +++ b/src/core/gcal-manager.h @@ -85,9 +85,9 @@ gchar* gcal_manager_add_source (GcalManager void gcal_manager_save_source (GcalManager *self, ESource *source); -GList* gcal_manager_get_events (GcalManager *self, - ICalTime *range_start, - ICalTime *range_end); +GPtrArray* gcal_manager_get_events (GcalManager *self, + GDateTime *range_start, + GDateTime *range_end); /* GNOME Shell-related functions */ GcalEvent* gcal_manager_get_event_from_shell_search (GcalManager *self, diff --git a/src/views/gcal-month-popover.c b/src/views/gcal-month-popover.c index dc9b3184..be03bfac 100644 --- a/src/views/gcal-month-popover.c +++ b/src/views/gcal-month-popover.c @@ -295,12 +295,10 @@ reposition_popover (GcalMonthPopover *self, static void update_event_list (GcalMonthPopover *self) { - g_autoptr (ICalTime) start = NULL; - g_autoptr (ICalTime) end = NULL; g_autoptr (GDateTime) start_dt = NULL; g_autoptr (GDateTime) end_dt = NULL; - g_autoptr (GList) events = NULL; - GList *l; + g_autoptr (GPtrArray) events = NULL; + guint i; gtk_container_foreach (GTK_CONTAINER (self->listbox), (GtkCallback) gtk_widget_destroy, NULL); @@ -317,15 +315,9 @@ update_event_list (GcalMonthPopover *self) 0, 0, 0); end_dt = g_date_time_add_days (start_dt, 1); - start = gcal_date_time_to_icaltime (start_dt); - end = gcal_date_time_to_icaltime (end_dt); + events = gcal_manager_get_events (gcal_context_get_manager (self->context), start_dt, end_dt); - events = gcal_manager_get_events (gcal_context_get_manager (self->context), start, end); - - g_clear_object (&start); - g_clear_object (&end); - - for (l = events; l; l = l->next) + for (i = 0; events && i < events->len; i++) { g_autoptr (GDateTime) event_start = NULL; g_autoptr (GDateTime) event_end = NULL; @@ -333,7 +325,7 @@ update_event_list (GcalMonthPopover *self) GtkWidget *event_widget; GcalEvent *event; - event = l->data; + event = g_ptr_array_index (events, i); if (gcal_event_get_all_day (event)) tz = g_time_zone_new_utc ();