[gnome-calendar/gbsneto/timeline: 23/36] manager: Update event gathering API



commit 9cb29b6dc59be52202695896ecd0333e70d13627
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Fri Mar 27 10:43:41 2020 -0300

    manager: Update event gathering API

 src/core/gcal-manager.c        | 27 ++++++---------------------
 src/core/gcal-manager.h        |  6 +++---
 src/views/gcal-month-popover.c | 18 +++++-------------
 3 files changed, 14 insertions(+), 37 deletions(-)
---
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 ();


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]