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; AdwNavigationPage parent_instance;
GcalEvent *event;
GListStore *attendees; GListStore *attendees;
GtkFilterListModel *filter_list_accepted; GtkFilterListModel *filter_list_accepted;
@@ -214,6 +213,8 @@ gcal_attendee_details_page_init (GcalAttendeeDetailsPage *instance)
{ {
g_assert (GCAL_IS_ATTENDEE_DETAILS_PAGE (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); instance->attendees = g_list_store_new (GCAL_TYPE_EVENT_ATTENDEE);
gcal_attendee_details_page_init_filters (instance); gcal_attendee_details_page_init_filters (instance);
gcal_attendee_details_page_init_filter_models (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. * @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. * Sets the attendees for display.
* 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.
*/ */
void void
gcal_attendee_details_page_set_event (GcalAttendeeDetailsPage *self, gcal_attendee_details_page_set_attendees (GcalAttendeeDetailsPage *self,
GcalEvent *event) GSList *attendees)
{ {
g_assert (GCAL_IS_ATTENDEE_DETAILS_PAGE (self)); g_assert (GCAL_IS_ATTENDEE_DETAILS_PAGE (self));
if (self->event == event)
return;
gcal_attendee_details_page_clear_list (self); 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; g_autoptr (GSList) iter = NULL;
attendees = gcal_event_get_attendees (self->event);
for (iter = attendees; iter != NULL; iter = iter->next) for (iter = attendees; iter != NULL; iter = iter->next)
{ {
g_list_store_append (self->attendees, iter->data); g_list_store_append (self->attendees, iter->data);
@@ -21,15 +21,13 @@
#include <adwaita.h> #include <adwaita.h>
#include "gcal-event.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define GCAL_TYPE_ATTENDEE_DETAILS_PAGE (gcal_attendee_details_page_get_type ()) #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) G_DECLARE_FINAL_TYPE (GcalAttendeeDetailsPage, gcal_attendee_details_page, GCAL, ATTENDEE_DETAILS_PAGE, AdwNavigationPage)
void gcal_attendee_details_page_set_event (GcalAttendeeDetailsPage *self, void gcal_attendee_details_page_set_attendees (GcalAttendeeDetailsPage *self,
GcalEvent *event); GSList *attendees);
G_END_DECLS G_END_DECLS
@@ -313,10 +313,14 @@ static void
on_attendees_summary_activated_cb (GcalAttendeesSection *section, on_attendees_summary_activated_cb (GcalAttendeesSection *section,
GcalEventEditorDialog *self) GcalEventEditorDialog *self)
{ {
g_autoptr (GSList) attendees = NULL;
g_assert (GCAL_IS_EVENT_EDITOR_DIALOG (self)); g_assert (GCAL_IS_EVENT_EDITOR_DIALOG (self));
gcal_attendee_details_page_set_event (GCAL_ATTENDEE_DETAILS_PAGE (self->attendee_details_page), attendees = gcal_event_get_attendees (self->event);
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_view_push (ADW_NAVIGATION_VIEW (self->nav_view),
ADW_NAVIGATION_PAGE (self->attendee_details_page)); ADW_NAVIGATION_PAGE (self->attendee_details_page));