From 6cd8d631f5cbcf259666fde71f0940abdd4a87ae Mon Sep 17 00:00:00 2001 From: Hari Rana Date: Wed, 8 Apr 2026 17:45:19 -0400 Subject: [PATCH] event-editor/event-editor-dialog: Rename `set_event()` to `present_event()` This allows us to avoid using `adw_dialog_present()` every time `set_event()` is being invoked. All the files using `set_event()` are updated accordingly. Part-of: --- .../event-editor/gcal-event-editor-dialog.c | 145 ++++++++++-------- .../event-editor/gcal-event-editor-dialog.h | 3 +- src/gui/gcal-window.c | 12 +- 3 files changed, 85 insertions(+), 75 deletions(-) diff --git a/src/gui/event-editor/gcal-event-editor-dialog.c b/src/gui/event-editor/gcal-event-editor-dialog.c index f0634d8c..18722cfe 100644 --- a/src/gui/event-editor/gcal-event-editor-dialog.c +++ b/src/gui/event-editor/gcal-event-editor-dialog.c @@ -124,10 +124,78 @@ set_writable (GcalEventEditorDialog *self, g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_WRITABLE]); } +static void +set_event (GcalEventEditorDialog *self, + GcalEvent *event, + gboolean new_event) +{ + + g_autoptr (GdkPaintable) paintable = NULL; + g_autoptr (GcalEvent) cloned_event = NULL; + GcalEventEditorFlags flags; + GcalCalendar *calendar; + gint i; + + GCAL_ENTRY; + + g_clear_object (&self->event); + + /* If we just set the event to NULL, simply send a property notify */ + if (!event) + GCAL_GOTO (out); + + cloned_event = gcal_event_new_from_event (event); + self->event = g_object_ref (cloned_event); + + calendar = gcal_event_get_calendar (cloned_event); + + /* dialog's title */ + if (new_event) + adw_navigation_page_set_title (ADW_NAVIGATION_PAGE (self->main_page), _("New Event")); + else if (gcal_calendar_is_read_only (calendar)) + adw_navigation_page_set_title (ADW_NAVIGATION_PAGE (self->main_page), _("Event Details")); + else + adw_navigation_page_set_title (ADW_NAVIGATION_PAGE (self->main_page), _("Edit Event")); + + g_list_store_remove_all (self->read_only_calendar_model); + if (gcal_calendar_is_read_only (calendar)) + g_list_store_append (self->read_only_calendar_model, calendar); + + gcal_calendar_combo_row_set_calendar (self->calendar_combo_row, calendar); + + /* recurrence_changed */ + self->recurrence_changed = FALSE; + + set_writable (self, !gcal_calendar_is_read_only (calendar)); + gboolean has_participants = gcal_event_get_organizer (self->event) != NULL; + gtk_widget_set_visible (GTK_WIDGET (self->attendees_section), has_participants); + + gtk_widget_set_visible (self->cancel_button, self->writable); + + self->event_is_new = new_event; + gtk_widget_set_visible (self->delete_group, !new_event && self->writable); + + /* fill attendees list */ + self->attendees_model = gcal_event_get_attendees (self->event); + +out: + flags = GCAL_EVENT_EDITOR_FLAG_NONE; + + if (new_event) + flags |= GCAL_EVENT_EDITOR_FLAG_NEW_EVENT; + + for (i = 0; i < G_N_ELEMENTS (self->sections); i++) + gcal_event_editor_section_set_event (self->sections[i], cloned_event, flags); + + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_EVENT]); + + GCAL_EXIT; +} + static void clear_and_hide_dialog (GcalEventEditorDialog *self) { - gcal_event_editor_dialog_set_event (self, NULL, FALSE); + set_event (self, NULL, FALSE); adw_dialog_close (ADW_DIALOG (self)); } @@ -628,83 +696,28 @@ gcal_event_editor_dialog_new (void) } /** - * gcal_event_editor_dialog_set_event: + * gcal_event_editor_dialog_present_event: (set-property event) * @dialog: a #GcalDialog + * @parent: a widget within the toplevel * @event: (nullable): a #GcalEvent + * @new_event: whether to treat @event as a new event * - * Sets the event of the @dialog. When @event is - * %NULL, the current event information is unset. + * Updates @self to operate on @event and then presents itself. */ void -gcal_event_editor_dialog_set_event (GcalEventEditorDialog *self, - GcalEvent *event, - gboolean new_event) +gcal_event_editor_dialog_present_event (GcalEventEditorDialog *self, + GtkWidget *parent, + GcalEvent *event, + gboolean new_event) { - g_autoptr (GdkPaintable) paintable = NULL; - g_autoptr (GcalEvent) cloned_event = NULL; - GcalEventEditorFlags flags; - GcalCalendar *calendar; - gint i; - - GCAL_ENTRY; - g_return_if_fail (GCAL_IS_EVENT_EDITOR_DIALOG (self)); - g_clear_object (&self->event); + set_event (self, event, new_event); - /* If we just set the event to NULL, simply send a property notify */ - if (!event) - GCAL_GOTO (out); - - cloned_event = gcal_event_new_from_event (event); - self->event = g_object_ref (cloned_event); - - calendar = gcal_event_get_calendar (cloned_event); - - /* dialog's title */ - if (new_event) - adw_navigation_page_set_title (ADW_NAVIGATION_PAGE (self->main_page), _("New Event")); - else if (gcal_calendar_is_read_only (calendar)) - adw_navigation_page_set_title (ADW_NAVIGATION_PAGE (self->main_page), _("Event Details")); - else - adw_navigation_page_set_title (ADW_NAVIGATION_PAGE (self->main_page), _("Edit Event")); - - g_list_store_remove_all (self->read_only_calendar_model); - if (gcal_calendar_is_read_only (calendar)) - g_list_store_append (self->read_only_calendar_model, calendar); - - gcal_calendar_combo_row_set_calendar (self->calendar_combo_row, calendar); - - /* recurrence_changed */ - self->recurrence_changed = FALSE; - - set_writable (self, !gcal_calendar_is_read_only (calendar)); - gboolean has_participants = gcal_event_get_organizer (self->event) != NULL; - gtk_widget_set_visible (GTK_WIDGET (self->attendees_section), has_participants); - - gtk_widget_set_visible (self->cancel_button, self->writable); - - self->event_is_new = new_event; - gtk_widget_set_visible (self->delete_group, !new_event && self->writable); - - /* fill attendees list */ - self->attendees_model = gcal_event_get_attendees (self->event); - -out: - flags = GCAL_EVENT_EDITOR_FLAG_NONE; - - if (new_event) - flags |= GCAL_EVENT_EDITOR_FLAG_NEW_EVENT; - - for (i = 0; i < G_N_ELEMENTS (self->sections); i++) - gcal_event_editor_section_set_event (self->sections[i], cloned_event, flags); - - g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_EVENT]); + adw_dialog_present (ADW_DIALOG (self), parent); if (self->writable) gtk_widget_grab_focus (GTK_WIDGET (self->summary_section)); else gtk_widget_grab_focus (self->done_button); - - GCAL_EXIT; } diff --git a/src/gui/event-editor/gcal-event-editor-dialog.h b/src/gui/event-editor/gcal-event-editor-dialog.h index fcc50e3d..d3eb7978 100644 --- a/src/gui/event-editor/gcal-event-editor-dialog.h +++ b/src/gui/event-editor/gcal-event-editor-dialog.h @@ -32,7 +32,8 @@ G_DECLARE_FINAL_TYPE (GcalEventEditorDialog, gcal_event_editor_dialog, GCAL, EVE GtkWidget* gcal_event_editor_dialog_new (void); -void gcal_event_editor_dialog_set_event (GcalEventEditorDialog *self, +void gcal_event_editor_dialog_present_event (GcalEventEditorDialog *self, + GtkWidget *parent, GcalEvent *event, gboolean new_event); diff --git a/src/gui/gcal-window.c b/src/gui/gcal-window.c index d089b24d..61fae4ce 100644 --- a/src/gui/gcal-window.c +++ b/src/gui/gcal-window.c @@ -650,8 +650,7 @@ on_window_new_event_cb (GSimpleAction *action, default_calendar = gcal_manager_get_default_calendar (manager); event = gcal_event_new (default_calendar, comp, NULL); - adw_dialog_present (ADW_DIALOG (self->event_editor), GTK_WIDGET (self)); - gcal_event_editor_dialog_set_event (self->event_editor, event, TRUE); + gcal_event_editor_dialog_present_event (self->event_editor, GTK_WIDGET (self), event, TRUE); } static void @@ -889,8 +888,7 @@ edit_event (GcalQuickAddPopover *popover, GcalEvent *event, GcalWindow *self) { - adw_dialog_present (ADW_DIALOG (self->event_editor), GTK_WIDGET (self)); - gcal_event_editor_dialog_set_event (self->event_editor, event, TRUE); + gcal_event_editor_dialog_present_event (self->event_editor, GTK_WIDGET (self), event, TRUE); } static void @@ -913,8 +911,7 @@ create_event_detailed_cb (GcalView *view, default_calendar = gcal_manager_get_default_calendar (manager); event = gcal_event_new (default_calendar, comp, NULL); - adw_dialog_present (ADW_DIALOG (self->event_editor), GTK_WIDGET (self)); - gcal_event_editor_dialog_set_event (self->event_editor, event, TRUE); + gcal_event_editor_dialog_present_event (self->event_editor, GTK_WIDGET (self), event, TRUE); g_clear_object (&comp); } @@ -931,8 +928,7 @@ event_preview_cb (GcalEventWidget *event_widget, { case GCAL_EVENT_PREVIEW_ACTION_EDIT: event = gcal_event_widget_get_event (event_widget); - adw_dialog_present (ADW_DIALOG (self->event_editor), GTK_WIDGET (self)); - gcal_event_editor_dialog_set_event (self->event_editor, event, FALSE); + gcal_event_editor_dialog_present_event (self->event_editor, GTK_WIDGET (self), event, FALSE); break; case GCAL_EVENT_PREVIEW_ACTION_NONE: