[gnome-calendar/gbsneto/timeline: 9/18] manager: Update event gathering API
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar/gbsneto/timeline: 9/18] manager: Update event gathering API
- Date: Wed, 1 Apr 2020 21:10:15 +0000 (UTC)
commit 38ce81f60c2e5fc72c6d82e0f726ddc62664ef64
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]