views/week: Port week header to GListModel

Rework the add/remove functions to make them internal. The remove
function can now operate on GcalEvent* instead of gchar* uuid,
since it's not bound to GcalTimelineSubscriber anymore.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
This commit is contained in:
Georges Basile Stavracas Neto
2026-05-03 16:57:52 +00:00
committed by Marge Bot
parent c635db3495
commit 34e28e31fe
3 changed files with 215 additions and 166 deletions
+17 -5
View File
@@ -498,9 +498,7 @@ gcal_week_view_add_event (GcalTimelineSubscriber *subscriber,
GCAL_ENTRY;
if (gcal_event_is_multiday (event) || gcal_event_get_all_day (event))
gcal_week_header_add_event (GCAL_WEEK_HEADER (self->header), event);
else
if (!gcal_event_is_multiday (event) && !gcal_event_get_all_day (event))
gcal_week_grid_add_event (GCAL_WEEK_GRID (self->week_grid), event);
GCAL_EXIT;
@@ -517,7 +515,6 @@ gcal_week_view_update_event (GcalTimelineSubscriber *subscriber,
GCAL_ENTRY;
event_id = gcal_event_get_uid (old_event);
gcal_week_header_remove_event (GCAL_WEEK_HEADER (self->header), event_id);
gcal_week_grid_remove_event (GCAL_WEEK_GRID (self->week_grid), event_id);
gcal_week_view_add_event (subscriber, event);
@@ -534,12 +531,26 @@ gcal_week_view_remove_event (GcalTimelineSubscriber *subscriber,
GCAL_ENTRY;
gcal_week_header_remove_event (GCAL_WEEK_HEADER (self->header), uuid);
gcal_week_grid_remove_event (GCAL_WEEK_GRID (self->week_grid), uuid);
GCAL_EXIT;
}
static void
gcal_week_view_set_model (GcalTimelineSubscriber *subscriber,
GListModel *model)
{
GcalWeekView *self;
GCAL_ENTRY;
self = GCAL_WEEK_VIEW (subscriber);
gcal_week_header_set_model (GCAL_WEEK_HEADER (self->header), model);
GCAL_EXIT;
}
static void
gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
{
@@ -547,6 +558,7 @@ gcal_timeline_subscriber_interface_init (GcalTimelineSubscriberInterface *iface)
iface->add_event = gcal_week_view_add_event;
iface->update_event = gcal_week_view_update_event;
iface->remove_event = gcal_week_view_remove_event;
iface->set_model = gcal_week_view_set_model;
}