From 3c9a5257105a764fd3c9273125d9c92005bbfd93 Mon Sep 17 00:00:00 2001 From: Hari Rana Date: Mon, 23 Feb 2026 09:02:14 -0500 Subject: [PATCH] gui/calendar-management: Replace "context" property with context getter method Part-of: --- .../gcal-calendar-management-dialog.c | 134 ++++-------------- .../gcal-calendar-management-dialog.h | 2 +- .../gcal-calendar-management-page.c | 8 -- .../calendar-management/gcal-calendars-page.c | 79 ++--------- .../gcal-edit-calendar-page.c | 66 ++------- .../gcal-new-calendar-page.c | 56 +------- src/gui/gcal-window.c | 2 +- 7 files changed, 57 insertions(+), 290 deletions(-) diff --git a/src/gui/calendar-management/gcal-calendar-management-dialog.c b/src/gui/calendar-management/gcal-calendar-management-dialog.c index 4551e963..3417cd0f 100644 --- a/src/gui/calendar-management/gcal-calendar-management-dialog.c +++ b/src/gui/calendar-management/gcal-calendar-management-dialog.c @@ -64,8 +64,6 @@ struct _GcalCalendarManagementDialog /* auxiliary */ GcalCalendarManagementPage *pages[N_PAGES]; - - GcalContext *context; }; static void on_page_switched_cb (GcalCalendarManagementPage *page, @@ -75,15 +73,6 @@ static void on_page_switched_cb (GcalCalendarMa G_DEFINE_TYPE (GcalCalendarManagementDialog, gcal_calendar_management_dialog, ADW_TYPE_DIALOG) -enum -{ - PROP_0, - PROP_CONTEXT, - N_PROPS -}; - -static GParamSpec *properties[N_PROPS] = { NULL, }; - /* * Auxiliary methods @@ -109,45 +98,6 @@ set_page (GcalCalendarManagementDialog *self, adw_navigation_view_push (self->navigation_view, page); } -static void -setup_context (GcalCalendarManagementDialog *self) -{ - const struct { - GcalPageType page_type; - GType gtype; - } pages[] = { - { GCAL_PAGE_CALENDARS, GCAL_TYPE_CALENDARS_PAGE }, - { GCAL_PAGE_NEW_CALENDAR, GCAL_TYPE_NEW_CALENDAR_PAGE }, - { GCAL_PAGE_EDIT_CALENDAR, GCAL_TYPE_EDIT_CALENDAR_PAGE }, - }; - gint i; - - GCAL_ENTRY; - - for (i = 0; i < N_PAGES; i++) - { - GcalCalendarManagementPage *page; - - page = g_object_new (pages[i].gtype, - "context", self->context, - NULL); - - adw_navigation_view_add (self->navigation_view, ADW_NAVIGATION_PAGE (page)); - - g_signal_connect_object (page, - "switch-page", - G_CALLBACK (on_page_switched_cb), - self, - 0); - - self->pages[i] = page; - } - - set_page (self, "calendars", NULL); - - GCAL_EXIT; -} - /* * Callbacks @@ -196,67 +146,15 @@ gcal_calendar_management_dialog_hide (GtkWidget *widget) * GObject overrides */ -static void -gcal_calendar_management_dialog_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - GcalCalendarManagementDialog *self = (GcalCalendarManagementDialog *) object; - - switch (prop_id) - { - case PROP_CONTEXT: - g_value_set_object (value, self->context); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - } -} - -static void -gcal_calendar_management_dialog_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - GcalCalendarManagementDialog *self = (GcalCalendarManagementDialog *) object; - - switch (prop_id) - { - case PROP_CONTEXT: - g_assert (self->context == NULL); - self->context = g_value_dup_object (value); - setup_context (self); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - } -} - static void gcal_calendar_management_dialog_class_init (GcalCalendarManagementDialogClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); - GObjectClass *object_class = G_OBJECT_CLASS (klass); g_type_ensure (E_TYPE_SOURCE_LOCAL); - object_class->get_property = gcal_calendar_management_dialog_get_property; - object_class->set_property = gcal_calendar_management_dialog_set_property; - widget_class->hide = gcal_calendar_management_dialog_hide; - properties[PROP_CONTEXT] = g_param_spec_object ("context", - "Context", - "The context object of the application", - GCAL_TYPE_CONTEXT, - G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY); - - g_object_class_install_properties (object_class, N_PROPS, properties); - gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/ui/gui/calendar-management/gcal-calendar-management-dialog.ui"); gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, navigation_view); @@ -267,7 +165,35 @@ gcal_calendar_management_dialog_class_init (GcalCalendarManagementDialogClass *k static void gcal_calendar_management_dialog_init (GcalCalendarManagementDialog *self) { + const struct { + GcalPageType page_type; + GType gtype; + } pages[] = { + { GCAL_PAGE_CALENDARS, GCAL_TYPE_CALENDARS_PAGE }, + { GCAL_PAGE_NEW_CALENDAR, GCAL_TYPE_NEW_CALENDAR_PAGE }, + { GCAL_PAGE_EDIT_CALENDAR, GCAL_TYPE_EDIT_CALENDAR_PAGE }, + }; + gtk_widget_init_template (GTK_WIDGET (self)); + + for (gint i = 0; i < N_PAGES; i++) + { + GcalCalendarManagementPage *page; + + page = g_object_new (pages[i].gtype, NULL); + + adw_navigation_view_add (self->navigation_view, ADW_NAVIGATION_PAGE (page)); + + g_signal_connect_object (page, + "switch-page", + G_CALLBACK (on_page_switched_cb), + self, + 0); + + self->pages[i] = page; + } + + set_page (self, "calendars", NULL); } /* @@ -275,7 +201,7 @@ gcal_calendar_management_dialog_init (GcalCalendarManagementDialog *self) */ GcalCalendarManagementDialog* -gcal_calendar_management_dialog_new (GcalContext *context) +gcal_calendar_management_dialog_new (void) { - return g_object_new (GCAL_TYPE_CALENDAR_MANAGEMENT_DIALOG, "context", context, NULL); + return g_object_new (GCAL_TYPE_CALENDAR_MANAGEMENT_DIALOG, NULL); } diff --git a/src/gui/calendar-management/gcal-calendar-management-dialog.h b/src/gui/calendar-management/gcal-calendar-management-dialog.h index 06f1dd57..425fbed5 100644 --- a/src/gui/calendar-management/gcal-calendar-management-dialog.h +++ b/src/gui/calendar-management/gcal-calendar-management-dialog.h @@ -36,7 +36,7 @@ G_DECLARE_FINAL_TYPE (GcalCalendarManagementDialog, GCAL, CALENDAR_MANAGEMENT_DIALOG, AdwDialog) -GcalCalendarManagementDialog* gcal_calendar_management_dialog_new (GcalContext *context); +GcalCalendarManagementDialog* gcal_calendar_management_dialog_new (void); G_END_DECLS diff --git a/src/gui/calendar-management/gcal-calendar-management-page.c b/src/gui/calendar-management/gcal-calendar-management-page.c index daa02fab..72fb452a 100644 --- a/src/gui/calendar-management/gcal-calendar-management-page.c +++ b/src/gui/calendar-management/gcal-calendar-management-page.c @@ -22,7 +22,6 @@ #include "gcal-calendar-management-dialog.h" #include "gcal-calendar-management-page.h" -#include "gcal-context.h" G_DEFINE_INTERFACE (GcalCalendarManagementPage, gcal_calendar_management_page, ADW_TYPE_NAVIGATION_PAGE) @@ -37,13 +36,6 @@ static guint signals[N_SIGNALS] = { 0, }; static void gcal_calendar_management_page_default_init (GcalCalendarManagementPageInterface *iface) { - g_object_interface_install_property (iface, - g_param_spec_object ("context", - "Context", - "Context", - GCAL_TYPE_CONTEXT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - signals[SWITCH_PAGE] = g_signal_new ("switch-page", GCAL_TYPE_CALENDAR_MANAGEMENT_PAGE, G_SIGNAL_RUN_LAST, diff --git a/src/gui/calendar-management/gcal-calendars-page.c b/src/gui/calendar-management/gcal-calendars-page.c index 13856c22..0bf2acd7 100644 --- a/src/gui/calendar-management/gcal-calendars-page.c +++ b/src/gui/calendar-management/gcal-calendars-page.c @@ -37,8 +37,6 @@ struct _GcalCalendarsPage AdwToastOverlay *toast_overlay; AdwToast *toast; - - GcalContext *context; }; static void gcal_calendar_management_page_iface_init (GcalCalendarManagementPageInterface *iface); @@ -51,13 +49,6 @@ G_DEFINE_TYPE_WITH_CODE (GcalCalendarsPage, gcal_calendars_page, ADW_TYPE_NAVIGA G_IMPLEMENT_INTERFACE (GCAL_TYPE_CALENDAR_MANAGEMENT_PAGE, gcal_calendar_management_page_iface_init)) -enum -{ - PROP_0, - PROP_CONTEXT, - N_PROPS -}; - /* * Auxiliary methods @@ -382,64 +373,10 @@ gcal_calendars_page_finalize (GObject *object) GcalCalendarsPage *self = (GcalCalendarsPage *)object; g_clear_object (&self->toast); - g_clear_object (&self->context); G_OBJECT_CLASS (gcal_calendars_page_parent_class)->finalize (object); } -static void -gcal_calendars_page_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - GcalCalendarsPage *self = GCAL_CALENDARS_PAGE (object); - - switch (prop_id) - { - case PROP_CONTEXT: - g_value_set_object (value, self->context); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - } -} - -static void -gcal_calendars_page_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - GcalCalendarsPage *self = GCAL_CALENDARS_PAGE (object); - - switch (prop_id) - { - case PROP_CONTEXT: - { - g_autoptr (GList) calendars = NULL; - GcalManager *manager; - GList *l; - - self->context = g_value_dup_object (value); - g_assert (self->context != NULL); - - manager = gcal_context_get_manager (self->context); - g_signal_connect_object (manager, "calendar-added", G_CALLBACK (on_manager_calendar_added_cb), self, 0); - g_signal_connect_object (manager, "calendar-removed", G_CALLBACK (on_manager_calendar_removed_cb), self, 0); - - calendars = gcal_manager_get_calendars (manager); - for (l = calendars; l; l = l->next) - add_calendar (self, l->data); - } - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - } -} - static void gcal_calendars_page_class_init (GcalCalendarsPageClass *klass) { @@ -447,10 +384,6 @@ gcal_calendars_page_class_init (GcalCalendarsPageClass *klass) GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->finalize = gcal_calendars_page_finalize; - object_class->get_property = gcal_calendars_page_get_property; - object_class->set_property = gcal_calendars_page_set_property; - - g_object_class_override_property (object_class, PROP_CONTEXT, "context"); gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/ui/gui/calendar-management/gcal-calendars-page.ui"); @@ -464,10 +397,22 @@ gcal_calendars_page_class_init (GcalCalendarsPageClass *klass) static void gcal_calendars_page_init (GcalCalendarsPage *self) { + GcalContext *context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION); + GcalManager *manager = gcal_context_get_manager (context); + g_autoptr (GList) calendars = NULL; + GList *l; + gtk_widget_init_template (GTK_WIDGET (self)); gtk_list_box_set_sort_func (self->listbox, (GtkListBoxSortFunc) listbox_sort_func, NULL, NULL); + + g_signal_connect_object (manager, "calendar-added", G_CALLBACK (on_manager_calendar_added_cb), self, 0); + g_signal_connect_object (manager, "calendar-removed", G_CALLBACK (on_manager_calendar_removed_cb), self, 0); + + calendars = gcal_manager_get_calendars (manager); + for (l = calendars; l; l = l->next) + add_calendar (self, l->data); } diff --git a/src/gui/calendar-management/gcal-edit-calendar-page.c b/src/gui/calendar-management/gcal-edit-calendar-page.c index e57d5572..2ecabc06 100644 --- a/src/gui/calendar-management/gcal-edit-calendar-page.c +++ b/src/gui/calendar-management/gcal-edit-calendar-page.c @@ -40,8 +40,6 @@ struct _GcalEditCalendarPage GtkWidget *remove_button_row; GcalCalendar *calendar; - - GcalContext *context; }; static void gcal_calendar_management_page_iface_init (GcalCalendarManagementPageInterface *iface); @@ -50,13 +48,6 @@ G_DEFINE_TYPE_WITH_CODE (GcalEditCalendarPage, gcal_edit_calendar_page, ADW_TYPE G_IMPLEMENT_INTERFACE (GCAL_TYPE_CALENDAR_MANAGEMENT_PAGE, gcal_calendar_management_page_iface_init)) -enum -{ - PROP_0, - PROP_CONTEXT, - N_PROPS -}; - /* * Auxiliary methods @@ -67,12 +58,15 @@ is_goa_calendar (GcalEditCalendarPage *self, GcalCalendar *calendar) { g_autoptr (ESource) parent = NULL; + GcalContext *context; GcalManager *manager; ESource *source; g_assert (calendar && GCAL_IS_CALENDAR (calendar)); - manager = gcal_context_get_manager (self->context); + context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION); + manager = gcal_context_get_manager (context); + source = gcal_calendar_get_source (calendar); parent = gcal_manager_get_source (manager, e_source_get_parent (source)); @@ -374,13 +368,15 @@ on_settings_button_clicked_cb (GtkWidget *button, { g_autoptr (ESource) parent = NULL; GApplication *app; + GcalContext *context; GcalManager *manager; ESourceGoa *goa; ESource *source; GCAL_ENTRY; - manager = gcal_context_get_manager (self->context); + context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION); + manager = gcal_context_get_manager (context); source = gcal_calendar_get_source (self->calendar); parent = gcal_manager_get_source (manager, e_source_get_parent (source)); @@ -415,6 +411,7 @@ static void gcal_edit_calendar_page_deactivate (GcalCalendarManagementPage *page) { GcalEditCalendarPage *self; + GcalContext *context; GcalManager *manager; GCAL_ENTRY; @@ -423,7 +420,8 @@ gcal_edit_calendar_page_deactivate (GcalCalendarManagementPage *page) gcal_calendar_set_name (self->calendar, gtk_editable_get_text (GTK_EDITABLE (self->name_entry))); - manager = gcal_context_get_manager (self->context); + context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION); + manager = gcal_context_get_manager (context); gcal_manager_save_source (manager, gcal_calendar_get_source (self->calendar)); g_clear_object (&self->calendar); @@ -460,50 +458,10 @@ gcal_edit_calendar_page_finalize (GObject *object) GcalEditCalendarPage *self = (GcalEditCalendarPage *)object; g_clear_object (&self->calendar); - g_clear_object (&self->context); G_OBJECT_CLASS (gcal_edit_calendar_page_parent_class)->finalize (object); } -static void -gcal_edit_calendar_page_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - GcalEditCalendarPage *self = GCAL_EDIT_CALENDAR_PAGE (object); - - switch (prop_id) - { - case PROP_CONTEXT: - g_value_set_object (value, self->context); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - } -} - -static void -gcal_edit_calendar_page_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - GcalEditCalendarPage *self = GCAL_EDIT_CALENDAR_PAGE (object); - - switch (prop_id) - { - case PROP_CONTEXT: - self->context = g_value_dup_object (value); - g_assert (self->context != NULL); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - } -} - static void gcal_edit_calendar_page_class_init (GcalEditCalendarPageClass *klass) { @@ -512,10 +470,6 @@ gcal_edit_calendar_page_class_init (GcalEditCalendarPageClass *klass) object_class->dispose = gcal_edit_calendar_page_dispose; object_class->finalize = gcal_edit_calendar_page_finalize; - object_class->get_property = gcal_edit_calendar_page_get_property; - object_class->set_property = gcal_edit_calendar_page_set_property; - - g_object_class_override_property (object_class, PROP_CONTEXT, "context"); gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/ui/gui/calendar-management/gcal-edit-calendar-page.ui"); diff --git a/src/gui/calendar-management/gcal-new-calendar-page.c b/src/gui/calendar-management/gcal-new-calendar-page.c index 14a22f62..ea09bb73 100644 --- a/src/gui/calendar-management/gcal-new-calendar-page.c +++ b/src/gui/calendar-management/gcal-new-calendar-page.c @@ -63,8 +63,6 @@ struct _GcalNewCalendarPage GCancellable *cancellable; ESource *local_source; - - GcalContext *context; }; static gboolean pulse_web_entry (gpointer data); @@ -81,12 +79,6 @@ G_DEFINE_TYPE_WITH_CODE (GcalNewCalendarPage, gcal_new_calendar_page, ADW_TYPE_N G_IMPLEMENT_INTERFACE (GCAL_TYPE_CALENDAR_MANAGEMENT_PAGE, gcal_calendar_management_page_iface_init)) -enum -{ - PROP_0, - PROP_CONTEXT, - N_PROPS -}; /* * Auxiliary methods @@ -340,9 +332,11 @@ static void on_add_button_clicked_cb (GtkWidget *button, GcalNewCalendarPage *self) { + GcalContext *context; GcalManager *manager; - manager = gcal_context_get_manager (self->context); + context = gcal_application_get_context (GCAL_DEFAULT_APPLICATION); + manager = gcal_context_get_manager (context); /* Commit each new remote source */ if (self->remote_sources) @@ -524,50 +518,10 @@ gcal_new_calendar_page_finalize (GObject *object) g_cancellable_cancel (self->cancellable); g_clear_object (&self->cancellable); - g_clear_object (&self->context); G_OBJECT_CLASS (gcal_new_calendar_page_parent_class)->finalize (object); } -static void -gcal_new_calendar_page_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - GcalNewCalendarPage *self = GCAL_NEW_CALENDAR_PAGE (object); - - switch (prop_id) - { - case PROP_CONTEXT: - g_value_set_object (value, self->context); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - } -} - -static void -gcal_new_calendar_page_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - GcalNewCalendarPage *self = GCAL_NEW_CALENDAR_PAGE (object); - - switch (prop_id) - { - case PROP_CONTEXT: - self->context = g_value_dup_object (value); - g_assert (self->context != NULL); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - } -} - static void gcal_new_calendar_page_class_init (GcalNewCalendarPageClass *klass) { @@ -576,10 +530,6 @@ gcal_new_calendar_page_class_init (GcalNewCalendarPageClass *klass) object_class->dispose = gcal_new_calendar_page_dispose; object_class->finalize = gcal_new_calendar_page_finalize; - object_class->get_property = gcal_new_calendar_page_get_property; - object_class->set_property = gcal_new_calendar_page_set_property; - - g_object_class_override_property (object_class, PROP_CONTEXT, "context"); gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/ui/gui/calendar-management/gcal-new-calendar-page.ui"); diff --git a/src/gui/gcal-window.c b/src/gui/gcal-window.c index f2a94cc4..35fbfcc6 100644 --- a/src/gui/gcal-window.c +++ b/src/gui/gcal-window.c @@ -538,7 +538,7 @@ on_show_calendars_action_activated (GSimpleAction *action, gpointer user_data) { GcalWindow *self = GCAL_WINDOW (user_data); - GcalCalendarManagementDialog *dialog = gcal_calendar_management_dialog_new (self->context); + GcalCalendarManagementDialog *dialog = gcal_calendar_management_dialog_new (); adw_dialog_present (ADW_DIALOG (dialog), GTK_WIDGET (self)); }