event-editor: Pass only attendees to the details page instead of event

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
This commit is contained in:
mindonwarp
2026-01-21 19:37:53 +00:00
committed by Marge Bot
parent 0149b7a042
commit 4fb5c1ebb3
3 changed files with 15 additions and 24 deletions
@@ -31,7 +31,6 @@ struct _GcalAttendeeDetailsPage
{
AdwNavigationPage parent_instance;
GcalEvent *event;
GListStore *attendees;
GtkFilterListModel *filter_list_accepted;
@@ -214,6 +213,8 @@ gcal_attendee_details_page_init (GcalAttendeeDetailsPage *instance)
{
g_assert (GCAL_IS_ATTENDEE_DETAILS_PAGE (instance));
instance->attendee_type = GCAL_EVENT_ATTENDEE_TYPE_NONE;
instance->attendees = g_list_store_new (GCAL_TYPE_EVENT_ATTENDEE);
gcal_attendee_details_page_init_filters (instance);
gcal_attendee_details_page_init_filter_models (instance);
@@ -318,34 +319,22 @@ gcal_attendee_details_page_class_init (GcalAttendeeDetailsPageClass *klass)
}
/**
* gcal_attendee_details_page_set_event:
* gcal_attendee_details_page_set_attendees:
* @self: a #GcalAttendeeDetailsPage instance.
* @event: a #GcalEvent to use for this page.
* @attendees: a list of #GcalEventAttendee to display.
*
* Sets the event for this page in a similar fashion to the #GcalEventEditorSection.
* Because this page is a reusable widget, the old event reference is replaced and
* the contents of this widget are reset while properly cleaning up resources.
* Sets the attendees for display.
*/
void
gcal_attendee_details_page_set_event (GcalAttendeeDetailsPage *self,
GcalEvent *event)
gcal_attendee_details_page_set_attendees (GcalAttendeeDetailsPage *self,
GSList *attendees)
{
g_assert (GCAL_IS_ATTENDEE_DETAILS_PAGE (self));
if (self->event == event)
return;
gcal_attendee_details_page_clear_list (self);
g_set_object (&self->event, event);
if (self->event == NULL)
return;
g_autoptr (GSList) attendees = NULL;
g_autoptr (GSList) iter = NULL;
attendees = gcal_event_get_attendees (self->event);
for (iter = attendees; iter != NULL; iter = iter->next)
{
g_list_store_append (self->attendees, iter->data);
@@ -21,15 +21,13 @@
#include <adwaita.h>
#include "gcal-event.h"
G_BEGIN_DECLS
#define GCAL_TYPE_ATTENDEE_DETAILS_PAGE (gcal_attendee_details_page_get_type ())
G_DECLARE_FINAL_TYPE (GcalAttendeeDetailsPage, gcal_attendee_details_page, GCAL, ATTENDEE_DETAILS_PAGE, AdwNavigationPage)
void gcal_attendee_details_page_set_event (GcalAttendeeDetailsPage *self,
GcalEvent *event);
void gcal_attendee_details_page_set_attendees (GcalAttendeeDetailsPage *self,
GSList *attendees);
G_END_DECLS
@@ -313,10 +313,14 @@ static void
on_attendees_summary_activated_cb (GcalAttendeesSection *section,
GcalEventEditorDialog *self)
{
g_autoptr (GSList) attendees = NULL;
g_assert (GCAL_IS_EVENT_EDITOR_DIALOG (self));
gcal_attendee_details_page_set_event (GCAL_ATTENDEE_DETAILS_PAGE (self->attendee_details_page),
self->event);
attendees = gcal_event_get_attendees (self->event);
gcal_attendee_details_page_set_attendees (GCAL_ATTENDEE_DETAILS_PAGE (self->attendee_details_page),
attendees);
adw_navigation_view_push (ADW_NAVIGATION_VIEW (self->nav_view),
ADW_NAVIGATION_PAGE (self->attendee_details_page));